From f4ca77e0600dc6ad4fffb3819abbeb835aa92427 Mon Sep 17 00:00:00 2001 From: Kevin DeJong Date: Thu, 4 Apr 2024 13:34:45 -0700 Subject: [PATCH 1/3] Patch dynamodb tables to check schemas --- scripts/update_schemas_manually.py | 58 ++ ...5a0d14c62111ff864923fc7b7960dda6.meta.json | 2 +- ...2b6653d7edfe98a64577daae0b481c38.meta.json | 2 +- ...5e4752bbc10d9552de8df8f81348c42b.meta.json | 2 +- ...63a1bf4413531ad420ff60a5a0d7965d.meta.json | 2 +- ...4cfc32461d10e077e7e5de1fc25d8b8f.meta.json | 2 +- ...d3fe2e7838c23f6acd054944cb2b1618.meta.json | 2 +- ...7e9907e4a512c10ddae70b98b4dada43.meta.json | 2 +- ...3fbf0a0fb76625ba46dbe42abd34333c.meta.json | 2 +- ...376aa3fe15197e3bb0e9290ff8719b4e.meta.json | 2 +- ...f60a7b5acfc406ebb10d5748cbb8ed41.meta.json | 2 +- ...f35136af536e92a84ccbaf062c315066.meta.json | 2 +- ...04470222e5e4c690bacef5312891581d.meta.json | 2 +- ...646b563d773e34b020d0ddeab2fe195b.meta.json | 2 +- ...548d44cc32e246ec9d7742088a2c17f8.meta.json | 2 +- ...98ac34d4109512e0e0947ef752dcb9c9.meta.json | 2 +- ...7e4a4542365d35fd75466abcf306eeca.meta.json | 2 +- ...69b7533eabab32ecfc0a00cb19e55a5f.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 +- ...972142778e1ff452383ede2ad4bac3d7.meta.json | 2 +- ...26b315ef6f38515840537c02de23abe2.meta.json | 2 +- ...cf908a34e6b4c3fb3e97e2b584f651ca.meta.json | 2 +- ...318c41c71c21b0a17d4f68d82c5aee21.meta.json | 2 +- ...6cd7e4ced378cacdb93f76ed227b5c5d.meta.json | 2 +- ...b9e2e4d5e38136a5be83b6a55e7a82a1.meta.json | 2 +- ...41c64a9c91b2fa5b4928c0d9b2f780b0.meta.json | 2 +- ...e50a1638ffe0a5dba0d8805c190a05f8.meta.json | 2 +- ...3b69878d351cffd417dc9a457df808af.meta.json | 2 +- .../all/aws_dynamodb_globaltable/__init__.py | 0 .../all/aws_dynamodb_globaltable/manual.json | 27 + .../all/aws_dynamodb_table/manual.json | 27 + .../all/aws_rds_dbinstance/manual.json | 5 - .../all/aws_dynamodb_globaltable/__init__.py | 0 .../attributedefinitions.json | 9 + .../aws_dynamodb_globaltable/keyschema.json | 96 ++ .../all/aws_dynamodb_table/__init__.py | 0 .../attributedefinitions.json | 9 + .../all/aws_dynamodb_table/keyschema.json | 93 ++ .../all/aws_ec2_securitygroup/__init__.py | 0 .../deprecatedproperties.json | 6 + .../schemas/providers/af_south_1/__init__.py | 18 +- .../aws-acmpca-certificateauthority.json | 429 ++++++++ .../af_south_1/aws-dynamodb-globaltable.json | 113 ++- .../af_south_1/aws-dynamodb-table.json | 111 ++- .../af_south_1/aws-ec2-instance.json | 571 ----------- .../aws-ec2-securitygroupegress.json | 98 ++ ...2-transitgatewayroutetableassociation.json | 29 + .../aws-ec2-vpccidrblock.json | 1 + .../aws-lambda-eventsourcemapping.json | 15 +- .../af_south_1/aws-redshift-cluster.json | 332 ------- .../aws-redshift-clusterparametergroup.json | 136 --- .../aws-sagemaker-appimageconfig.json | 238 +++++ .../schemas/providers/ap_east_1/__init__.py | 18 +- .../aws-acmpca-certificateauthority.json | 429 ++++++++ .../ap_east_1/aws-config-conformancepack.json | 140 --- .../ap_east_1/aws-dynamodb-globaltable.json | 113 ++- .../ap_east_1/aws-dynamodb-table.json | 111 ++- .../providers/ap_east_1/aws-ec2-instance.json | 571 ----------- .../aws-ec2-networkinterfaceattachment.json | 84 -- .../aws-ec2-securitygroupegress.json | 98 ++ ...2-transitgatewayroutetableassociation.json | 29 + .../aws-lambda-eventsourcemapping.json | 15 +- .../ap_east_1/aws-redshift-cluster.json | 332 ------- .../aws-redshift-clusterparametergroup.json | 136 --- .../aws-sagemaker-appimageconfig.json | 238 +++++ .../providers/ap_northeast_1/__init__.py | 59 +- .../aws-acmpca-certificateauthority.json | 429 ++++++++ ...ws-codestarconnections-repositorylink.json | 142 --- ...codestarconnections-syncconfiguration.json | 117 --- ...ws-config-organizationconformancepack.json | 151 --- .../aws-connect-predefinedattribute.json | 105 -- .../aws-docdbelastic-cluster.json | 209 ---- .../aws-ec2-customergateway.json | 113 +++ .../ap_northeast_1/aws-ec2-instance.json | 571 ----------- .../aws-ec2-securitygroupingress.json | 121 +++ .../ap_northeast_1/aws-elasticache-user.json | 166 ---- .../aws-iotsitewise-gateway.json | 179 ---- .../aws-lambda-eventsourcemapping.json | 15 +- .../ap_northeast_1/aws-rds-integration.json | 144 --- .../aws-sagemaker-appimageconfig.json | 238 +++++ .../aws-securityhub-delegatedadmin.json | 32 - .../aws-securityhub-productsubscription.json | 28 - .../aws-signer-profilepermission.json | 75 -- ...ws-verifiedpermissions-identitysource.json | 221 +++++ .../providers/ap_northeast_2/__init__.py | 38 +- .../aws-acmpca-certificateauthority.json | 429 ++++++++ .../aws-config-conformancepack.json | 140 --- .../aws-docdbelastic-cluster.json | 200 ---- .../aws-dynamodb-globaltable.json | 113 ++- .../ap_northeast_2/aws-dynamodb-table.json | 111 ++- .../ap_northeast_2/aws-ec2-instance.json | 571 ----------- .../aws-ec2-securitygroupegress.json | 98 ++ ...2-transitgatewayroutetableassociation.json | 29 + .../ap_northeast_2/aws-gamelift-fleet.json | 523 ++++++++++ .../aws-iotsitewise-gateway.json | 179 ---- .../aws-lambda-eventsourcemapping.json | 353 +++++++ .../aws-sagemaker-appimageconfig.json | 238 +++++ .../aws-securityhub-delegatedadmin.json | 32 - .../aws-securityhub-insight.json | 844 ---------------- .../aws-securityhub-productsubscription.json | 28 - ...ws-verifiedpermissions-identitysource.json | 221 +++++ .../providers/ap_northeast_3/__init__.py | 28 +- .../aws-acmpca-certificateauthority.json | 429 ++++++++ .../aws-dynamodb-globaltable.json | 113 ++- .../ap_northeast_3/aws-dynamodb-table.json | 111 ++- .../ap_northeast_3/aws-ec2-instance.json | 571 ----------- .../aws-ec2-securitygroupegress.json | 98 ++ .../aws-lambda-eventsourcemapping.json | 353 +++++++ .../ap_northeast_3/aws-redshift-cluster.json | 332 ------- .../aws-redshift-clusterparametergroup.json | 136 --- .../aws-sagemaker-appimageconfig.json | 238 +++++ .../ap_northeast_3/aws-sagemaker-domain.json | 739 ++++++++++++++ .../aws-sagemaker-userprofile.json | 524 ++++++++++ .../aws-securityhub-delegatedadmin.json | 32 - .../aws-securityhub-insight.json | 844 ---------------- .../aws-securityhub-productsubscription.json | 28 - .../schemas/providers/ap_south_1/__init__.py | 37 +- .../aws-connect-integrationassociation.json | 142 --- .../ap_south_1/aws-docdbelastic-cluster.json | 200 ---- .../ap_south_1/aws-dynamodb-globaltable.json | 673 +++++++++++++ .../ap_south_1/aws-dynamodb-table.json | 625 ++++++++++++ .../ap_south_1/aws-ec2-instance.json | 571 ----------- .../aws-ec2-securitygroupegress.json | 98 ++ .../ap_south_1/aws-elasticache-user.json | 166 ---- .../ap_south_1/aws-gamelift-fleet.json | 523 ++++++++++ .../ap_south_1/aws-iotsitewise-gateway.json | 179 ---- .../aws-lambda-eventsourcemapping.json | 353 +++++++ .../aws-sagemaker-appimageconfig.json | 238 +++++ ...ws-verifiedpermissions-identitysource.json | 221 +++++ .../schemas/providers/ap_south_2/__init__.py | 42 +- .../aws-acmpca-certificateauthority.json | 429 ++++++++ .../ap_south_2/aws-dynamodb-globaltable.json | 113 ++- .../ap_south_2/aws-dynamodb-table.json | 111 ++- .../ap_south_2/aws-ec2-instance.json | 571 ----------- .../aws-ec2-securitygroupegress.json | 98 ++ ...2-transitgatewayroutetableassociation.json | 29 + .../ap_south_2/aws-elasticache-user.json | 166 ---- .../aws-lambda-eventsourcemapping.json | 353 +++++++ .../ap_south_2/aws-redshift-cluster.json | 184 ---- .../aws-redshift-clusterparametergroup.json | 77 -- .../aws-redshift-clustersubnetgroup.json | 54 - .../providers/ap_southeast_1/__init__.py | 47 +- .../aws-acmpca-certificateauthority.json | 429 ++++++++ ...ws-config-organizationconformancepack.json | 151 --- .../ap_southeast_1/aws-ec2-instance.json | 571 ----------- .../aws-ec2-securitygroupingress.json | 121 +++ .../aws-gammadilithium-jobdefinition.json | 22 + .../aws-iotsitewise-gateway.json | 179 ---- .../aws-lambda-eventsourcemapping.json | 353 +++++++ .../aws-sagemaker-appimageconfig.json | 238 +++++ .../ap_southeast_1/aws-sagemaker-domain.json | 739 ++++++++++++++ .../aws-sagemaker-userprofile.json | 524 ++++++++++ .../aws-securityhub-delegatedadmin.json | 32 - .../aws-securityhub-insight.json | 844 ---------------- .../aws-securityhub-productsubscription.json | 28 - ...ws-verifiedpermissions-identitysource.json | 221 +++++ .../providers/ap_southeast_2/__init__.py | 48 +- .../aws-dynamodb-globaltable.json | 673 +++++++++++++ .../ap_southeast_2/aws-dynamodb-table.json | 625 ++++++++++++ .../ap_southeast_2/aws-ec2-instance.json | 571 ----------- .../aws-ec2-securitygroupegress.json | 98 ++ .../aws-lambda-eventsourcemapping.json | 353 +++++++ .../aws-sagemaker-appimageconfig.json | 238 +++++ ...ws-verifiedpermissions-identitysource.json | 221 +++++ .../providers/ap_southeast_3/__init__.py | 57 +- .../aws-acmpca-certificateauthority.json | 429 ++++++++ .../aws-cognito-userpoolidentityprovider.json | 104 -- .../aws-cognito-userpooluser.json | 133 --- .../aws-dynamodb-globaltable.json | 113 ++- .../ap_southeast_3/aws-dynamodb-table.json | 111 ++- .../ap_southeast_3/aws-ec2-instance.json | 571 ----------- .../aws-ec2-securitygroupegress.json | 98 ++ ...2-transitgatewayroutetableassociation.json | 29 + .../ap_southeast_3/aws-ec2-vpccidrblock.json | 102 ++ .../ap_southeast_3/aws-elasticache-user.json | 166 ---- .../aws-lambda-eventsourcemapping.json | 353 +++++++ .../ap_southeast_3/aws-redshift-cluster.json | 184 ---- .../aws-redshift-clusterparametergroup.json | 77 -- .../aws-redshift-clustersubnetgroup.json | 54 - .../aws-sagemaker-appimageconfig.json | 238 +++++ .../providers/ap_southeast_4/__init__.py | 26 +- .../aws-acmpca-certificateauthority.json | 429 ++++++++ .../aws-cloudfront-originaccesscontrol.json | 88 ++ .../aws-config-conformancepack.json | 140 --- .../aws-dynamodb-globaltable.json | 113 ++- .../ap_southeast_4/aws-dynamodb-table.json | 111 ++- .../ap_southeast_4/aws-ec2-instance.json | 571 ----------- .../aws-ec2-securitygroupegress.json | 98 ++ ...2-transitgatewayroutetableassociation.json | 29 + .../aws-lambda-eventsourcemapping.json | 353 +++++++ .../ap_southeast_4/aws-redshift-cluster.json | 184 ---- .../aws-redshift-clusterparametergroup.json | 77 -- .../aws-redshift-clustersubnetgroup.json | 54 - .../providers/ca_central_1/__init__.py | 22 +- .../aws-acmpca-certificateauthority.json | 429 ++++++++ .../aws-dynamodb-globaltable.json | 113 ++- .../ca_central_1/aws-dynamodb-table.json | 111 ++- .../ca_central_1/aws-ec2-instance.json | 571 ----------- .../aws-ec2-securitygroupegress.json | 98 ++ .../ca_central_1/aws-iotsitewise-gateway.json | 179 ---- .../aws-lambda-eventsourcemapping.json | 353 +++++++ ...ws-verifiedpermissions-identitysource.json | 221 +++++ .../schemas/providers/ca_west_1/__init__.py | 22 +- .../aws-acmpca-certificateauthority.json | 429 ++++++++ .../aws-cloudwatch-compositealarm.json | 115 +++ .../ca_west_1/aws-dynamodb-globaltable.json | 113 ++- .../ca_west_1/aws-dynamodb-table.json | 111 ++- .../ca_west_1/aws-ec2-securitygroup.json | 234 +++++ .../aws-ec2-securitygroupegress.json | 98 ++ ...c2-transitgatewaymulticastgroupmember.json | 14 +- ...2-transitgatewayroutetableassociation.json | 67 -- .../ca_west_1/aws-ecs-taskdefinition.json | 935 ++++++++++++++++++ .../ca_west_1/aws-elasticache-user.json | 166 ---- .../ca_west_1/aws-elasticache-usergroup.json | 126 --- .../aws-stepfunctions-statemachine.json | 256 ----- .../schemas/providers/cn_north_1/__init__.py | 30 +- .../cn_north_1/aws-appconfig-environment.json | 152 +++ .../aws-config-aggregationauthorization.json | 54 - .../cn_north_1/aws-ec2-instance.json | 571 ----------- .../aws-ec2-securitygroupingress.json | 121 +++ .../cn_north_1/aws-iotsitewise-gateway.json | 179 ---- .../aws-lambda-eventsourcemapping.json | 353 +++++++ ...rkfirewall-tlsinspectionconfiguration.json | 285 ------ .../cn_north_1/aws-redshift-cluster.json | 184 ---- .../aws-redshift-clusterparametergroup.json | 77 -- .../aws-redshift-clustersubnetgroup.json | 54 - .../aws-sagemaker-appimageconfig.json | 238 +++++ .../cn_north_1/aws-sagemaker-domain.json | 739 ++++++++++++++ .../cn_north_1/aws-sagemaker-userprofile.json | 524 ++++++++++ .../cn_north_1/aws-ssm-association.json | 260 ----- .../providers/cn_northwest_1/__init__.py | 23 +- .../aws-appconfig-environment.json | 152 +++ .../aws-config-aggregationauthorization.json | 54 - .../aws-dynamodb-globaltable.json | 113 ++- .../cn_northwest_1/aws-dynamodb-table.json | 111 ++- .../cn_northwest_1/aws-ec2-instance.json | 571 ----------- .../aws-ec2-securitygroupegress.json | 98 ++ ...2-transitgatewayroutetableassociation.json | 29 + .../cn_northwest_1/aws-ec2-vpccidrblock.json | 102 ++ .../cn_northwest_1/aws-elasticache-user.json | 166 ---- .../aws-elasticache-usergroup.json | 126 --- .../cn_northwest_1/aws-emr-studio.json | 189 ---- .../aws-lambda-eventsourcemapping.json | 353 +++++++ ...rkfirewall-tlsinspectionconfiguration.json | 285 ------ .../aws-sagemaker-appimageconfig.json | 238 +++++ .../cn_northwest_1/aws-ssm-association.json | 260 ----- .../providers/eu_central_1/__init__.py | 72 +- ...ws-codestarconnections-repositorylink.json | 142 --- ...codestarconnections-syncconfiguration.json | 117 --- ...ws-config-organizationconformancepack.json | 151 --- .../aws-connect-predefinedattribute.json | 105 -- .../aws-docdbelastic-cluster.json | 209 ---- .../eu_central_1/aws-ec2-customergateway.json | 113 +++ .../eu_central_1/aws-ec2-instance.json | 571 ----------- .../aws-ec2-securitygroupingress.json | 121 +++ .../eu_central_1/aws-ec2-subnet.json | 184 ---- ...2-transitgatewayroutetableassociation.json | 67 -- .../aws-ecr-pullthroughcacherule.json | 128 --- .../eu_central_1/aws-ecr-registrypolicy.json | 62 -- .../aws-ecr-replicationconfiguration.json | 152 --- .../eu_central_1/aws-ecr-repository.json | 215 ---- .../eu_central_1/aws-elasticache-user.json | 166 ---- .../aws-elasticache-usergroup.json | 126 --- ...s-elasticloadbalancingv2-loadbalancer.json | 194 ++++ ...balaccelerator-crossaccountattachment.json | 116 --- .../eu_central_1/aws-iotsitewise-gateway.json | 179 ---- .../aws-lambda-eventsourcemapping.json | 353 +++++++ .../eu_central_1/aws-rds-integration.json | 144 --- .../eu_central_1/aws-s3-storagelens.json | 447 +++++++++ .../eu_central_1/aws-s3outposts-bucket.json | 279 ++++++ .../aws-sagemaker-appimageconfig.json | 238 +++++ .../aws-signer-profilepermission.json | 75 -- ...ws-verifiedpermissions-identitysource.json | 221 +++++ .../providers/eu_central_2/__init__.py | 31 +- .../aws-acmpca-certificateauthority.json | 429 ++++++++ .../aws-cloudfront-originaccesscontrol.json | 88 ++ .../eu_central_2/aws-cloudwatch-alarm.json | 318 ++++++ .../aws-cloudwatch-compositealarm.json | 115 +++ .../aws-dynamodb-globaltable.json | 113 ++- .../eu_central_2/aws-dynamodb-table.json | 111 ++- .../eu_central_2/aws-ec2-instance.json | 571 ----------- .../aws-ec2-securitygroupegress.json | 98 ++ ...2-transitgatewayroutetableassociation.json | 29 + .../aws-lambda-eventsourcemapping.json | 353 +++++++ .../aws-redshift-eventsubscription.json | 181 ++++ .../schemas/providers/eu_north_1/__init__.py | 26 +- .../eu_north_1/aws-dynamodb-globaltable.json | 113 ++- .../eu_north_1/aws-dynamodb-table.json | 111 ++- .../eu_north_1/aws-ec2-instance.json | 571 ----------- .../aws-ec2-securitygroupegress.json | 98 ++ ...2-transitgatewayroutetableassociation.json | 29 + .../aws-lambda-eventsourcemapping.json | 353 +++++++ .../aws-sagemaker-appimageconfig.json | 238 +++++ ...ws-verifiedpermissions-identitysource.json | 221 +++++ .../schemas/providers/eu_south_1/__init__.py | 19 +- .../aws-acmpca-certificateauthority.json | 429 ++++++++ .../eu_south_1/aws-dynamodb-globaltable.json | 113 ++- .../eu_south_1/aws-dynamodb-table.json | 111 ++- .../eu_south_1/aws-ec2-instance.json | 571 ----------- .../aws-ec2-securitygroupegress.json | 98 ++ ...2-transitgatewayroutetableassociation.json | 29 + .../eu_south_1/aws-redshift-cluster.json | 332 ------- .../aws-redshift-clusterparametergroup.json | 136 --- .../aws-sagemaker-appimageconfig.json | 238 +++++ ...ws-verifiedpermissions-identitysource.json | 221 +++++ .../schemas/providers/eu_south_2/__init__.py | 26 +- .../aws-acmpca-certificateauthority.json | 429 ++++++++ .../eu_south_2/aws-dynamodb-globaltable.json | 113 ++- .../eu_south_2/aws-dynamodb-table.json | 111 ++- .../eu_south_2/aws-ec2-instance.json | 571 ----------- .../aws-ec2-securitygroupegress.json | 98 ++ .../aws-lambda-eventsourcemapping.json | 353 +++++++ .../eu_south_2/aws-redshift-cluster.json | 184 ---- .../aws-redshift-clusterparametergroup.json | 77 -- .../aws-redshift-clustersubnetgroup.json | 54 - .../aws-sagemaker-appimageconfig.json | 238 +++++ .../eu_south_2/aws-sagemaker-domain.json | 739 ++++++++++++++ .../eu_south_2/aws-sagemaker-userprofile.json | 524 ++++++++++ .../schemas/providers/eu_west_1/__init__.py | 57 +- .../eu_west_1/aws-dynamodb-globaltable.json | 673 +++++++++++++ .../eu_west_1/aws-dynamodb-table.json | 625 ++++++++++++ .../providers/eu_west_1/aws-ec2-instance.json | 571 ----------- .../aws-ec2-securitygroupegress.json | 98 ++ .../eu_west_1/aws-gamelift-fleet.json | 523 ++++++++++ .../eu_west_1/aws-iotsitewise-gateway.json | 179 ---- .../aws-sagemaker-appimageconfig.json | 238 +++++ .../eu_west_1/aws-sagemaker-domain.json | 739 ++++++++++++++ .../eu_west_1/aws-sagemaker-userprofile.json | 524 ++++++++++ ...ws-verifiedpermissions-identitysource.json | 221 +++++ .../schemas/providers/eu_west_2/__init__.py | 27 +- .../aws-acmpca-certificateauthority.json | 429 ++++++++ .../eu_west_2/aws-dynamodb-globaltable.json | 113 ++- .../eu_west_2/aws-dynamodb-table.json | 111 ++- .../providers/eu_west_2/aws-ec2-instance.json | 571 ----------- .../aws-ec2-securitygroupegress.json | 98 ++ .../eu_west_2/aws-gamelift-fleet.json | 523 ++++++++++ .../aws-lambda-eventsourcemapping.json | 353 +++++++ .../aws-securityhub-delegatedadmin.json | 32 - .../eu_west_2/aws-securityhub-insight.json | 844 ---------------- .../aws-securityhub-productsubscription.json | 28 - ...ws-verifiedpermissions-identitysource.json | 221 +++++ .../schemas/providers/eu_west_3/__init__.py | 27 +- .../aws-acmpca-certificateauthority.json | 429 ++++++++ .../eu_west_3/aws-dynamodb-globaltable.json | 113 ++- .../eu_west_3/aws-dynamodb-table.json | 111 ++- .../providers/eu_west_3/aws-ec2-instance.json | 571 ----------- .../aws-ec2-securitygroupegress.json | 98 ++ ...2-transitgatewayroutetableassociation.json | 29 + .../aws-lambda-eventsourcemapping.json | 353 +++++++ .../aws-sagemaker-appimageconfig.json | 238 +++++ .../eu_west_3/aws-sagemaker-domain.json | 739 ++++++++++++++ .../eu_west_3/aws-sagemaker-userprofile.json | 524 ++++++++++ ...ws-verifiedpermissions-identitysource.json | 221 +++++ .../providers/me_central_1/__init__.py | 59 +- .../aws-acmpca-certificateauthority.json | 429 ++++++++ .../aws-dynamodb-globaltable.json | 113 ++- .../me_central_1/aws-dynamodb-table.json | 111 ++- .../me_central_1/aws-ec2-instance.json | 571 ----------- .../aws-ec2-securitygroupegress.json | 98 ++ ...2-transitgatewayroutetableassociation.json | 29 + .../me_central_1/aws-emr-studio.json | 189 ---- .../aws-lambda-eventsourcemapping.json | 353 +++++++ .../aws-networkfirewall-rulegroup.json | 707 ------------- .../me_central_1/aws-redshift-cluster.json | 184 ---- .../aws-redshift-clusterparametergroup.json | 77 -- .../aws-redshift-clustersubnetgroup.json | 54 - .../aws-sagemaker-appimageconfig.json | 238 +++++ .../me_central_1/aws-sagemaker-domain.json | 739 ++++++++++++++ .../aws-sagemaker-userprofile.json | 524 ++++++++++ .../schemas/providers/me_south_1/__init__.py | 18 +- .../aws-acmpca-certificateauthority.json | 429 ++++++++ .../aws-cloudfront-originaccesscontrol.json | 88 ++ .../aws-config-conformancepack.json | 140 --- .../me_south_1/aws-dynamodb-globaltable.json | 113 ++- .../me_south_1/aws-dynamodb-table.json | 111 ++- .../me_south_1/aws-ec2-instance.json | 571 ----------- .../aws-ec2-securitygroupegress.json | 98 ++ ...2-transitgatewayroutetableassociation.json | 29 + .../aws-lambda-eventsourcemapping.json | 353 +++++++ .../me_south_1/aws-redshift-cluster.json | 332 ------- .../aws-redshift-clusterparametergroup.json | 136 --- ...ws-verifiedpermissions-identitysource.json | 221 +++++ .../schemas/providers/sa_east_1/__init__.py | 27 +- .../aws-acmpca-certificateauthority.json | 429 ++++++++ .../sa_east_1/aws-docdbelastic-cluster.json | 200 ---- .../sa_east_1/aws-dynamodb-globaltable.json | 673 +++++++++++++ .../sa_east_1/aws-dynamodb-table.json | 625 ++++++++++++ .../providers/sa_east_1/aws-ec2-instance.json | 571 ----------- .../aws-ec2-securitygroupegress.json | 98 ++ .../sa_east_1/aws-gamelift-fleet.json | 523 ++++++++++ .../aws-lambda-eventsourcemapping.json | 353 +++++++ .../aws-sagemaker-appimageconfig.json | 238 +++++ .../sa_east_1/aws-sagemaker-domain.json | 739 ++++++++++++++ .../sa_east_1/aws-sagemaker-userprofile.json | 524 ++++++++++ .../aws-securityhub-delegatedadmin.json | 32 - .../sa_east_1/aws-securityhub-insight.json | 844 ---------------- .../aws-securityhub-productsubscription.json | 28 - ...ws-verifiedpermissions-identitysource.json | 221 +++++ .../schemas/providers/us_east_1/__init__.py | 28 + .../aws-acmpca-certificateauthority.json | 7 + .../us_east_1/aws-amplify-domain.json | 9 +- .../us_east_1/aws-appconfig-environment.json | 8 + .../providers/us_east_1/aws-aps-scraper.json | 233 +++++ ...onalshift-zonalautoshiftconfiguration.json | 3 +- .../us_east_1/aws-bcmdataexports-export.json | 295 ++++++ .../us_east_1/aws-bedrock-agent.json | 479 +++++++++ .../us_east_1/aws-bedrock-agentalias.json | 198 ++++ .../us_east_1/aws-bedrock-datasource.json | 225 +++++ .../us_east_1/aws-bedrock-knowledgebase.json | 452 +++++++++ .../aws-cleanrooms-configuredtable.json | 45 +- .../aws-cleanroomsml-trainingdataset.json | 253 +++++ .../aws-cloudfront-originaccesscontrol.json | 2 +- .../us_east_1/aws-cloudwatch-alarm.json | 44 +- .../aws-cloudwatch-compositealarm.json | 51 +- .../aws-codeconnections-connection.json | 120 +++ ...ws-codestarconnections-repositorylink.json | 8 +- ...codestarconnections-syncconfiguration.json | 22 +- ...ws-config-organizationconformancepack.json | 7 + .../aws-connect-predefinedattribute.json | 11 + .../us_east_1/aws-deadline-farm.json | 98 ++ .../us_east_1/aws-deadline-fleet.json | 546 ++++++++++ .../aws-deadline-licenseendpoint.json | 114 +++ .../aws-deadline-meteredproduct.json | 85 ++ .../us_east_1/aws-deadline-queue.json | 238 +++++ .../aws-deadline-queueenvironment.json | 117 +++ .../aws-deadline-queuefleetassociation.json | 79 ++ .../aws-deadline-storageprofile.json | 138 +++ .../us_east_1/aws-docdbelastic-cluster.json | 15 + .../us_east_1/aws-dynamodb-globaltable.json | 137 ++- .../us_east_1/aws-dynamodb-table.json | 139 ++- .../us_east_1/aws-ec2-launchtemplate.json | 3 - .../us_east_1/aws-ec2-securitygroup.json | 14 +- .../aws-ec2-securitygroupegress.json | 5 + .../providers/us_east_1/aws-ec2-subnet.json | 4 + ...2-transitgatewayroutetableassociation.json | 52 +- .../us_east_1/aws-ec2-vpccidrblock.json | 1 - .../aws-ecr-pullthroughcacherule.json | 4 +- .../us_east_1/aws-ecr-registrypolicy.json | 3 + .../aws-ecr-replicationconfiguration.json | 3 + .../us_east_1/aws-ecr-repository.json | 7 + .../us_east_1/aws-ecs-taskdefinition.json | 38 + .../aws-elasticache-serverlesscache.json | 10 +- .../us_east_1/aws-elasticache-user.json | 3 +- .../us_east_1/aws-elasticache-usergroup.json | 3 +- .../aws-emr-studiosessionmapping.json | 1 + .../aws-entityresolution-idnamespace.json} | 174 ++-- .../aws-entityresolution-policystatement.json | 130 +++ ...balaccelerator-crossaccountattachment.json | 0 .../aws-ivs-encoderconfiguration.json | 136 +++ .../aws-ivs-playbackrestrictionpolicy.json} | 97 +- .../aws-ivs-storageconfiguration.json | 132 +++ .../aws-lambda-eventsourcemapping.json | 15 +- .../us_east_1/aws-mediatailor-channel.json | 6 + ...rkfirewall-tlsinspectionconfiguration.json | 1 + .../aws-rds-customdbengineversion.json | 25 +- .../us_east_1/aws-rds-integration.json | 17 +- .../aws-sagemaker-appimageconfig.json | 12 + .../us_east_1/aws-sagemaker-domain.json | 9 + .../us_east_1/aws-sagemaker-userprofile.json | 9 + .../aws-securityhub-delegatedadmin.json | 70 ++ .../aws-securityhub-insight.json | 353 ++++++- .../aws-securityhub-productsubscription.json | 57 ++ .../aws-securitylake-awslogsource.json | 91 ++ .../us_east_1/aws-securitylake-datalake.json | 210 ++++ .../aws-securitylake-subscriber.json | 295 ++++++ .../aws-signer-profilepermission.json | 10 + .../schemas/providers/us_east_2/__init__.py | 50 +- .../aws-cleanrooms-configuredtable.json | 578 ----------- .../us_east_2/aws-dynamodb-globaltable.json | 113 ++- .../us_east_2/aws-dynamodb-table.json | 111 ++- .../us_east_2/aws-ec2-customergateway.json | 113 +++ .../providers/us_east_2/aws-ec2-instance.json | 571 ----------- .../aws-ec2-securitygroupegress.json | 98 ++ .../aws-elasticache-usergroup.json | 3 +- .../us_east_2/aws-gamelift-fleet.json | 523 ++++++++++ .../us_east_2/aws-iotsitewise-gateway.json | 179 ---- .../aws-lambda-eventsourcemapping.json | 353 +++++++ ...ws-verifiedpermissions-identitysource.json | 221 +++++ .../providers/us_gov_east_1/__init__.py | 29 +- .../aws-acmpca-certificateauthority.json | 429 ++++++++ .../aws-appconfig-deployment.json | 74 -- .../aws-appconfig-environment.json | 152 +++ .../aws-config-conformancepack.json | 140 --- .../aws-dynamodb-globaltable.json | 113 ++- .../us_gov_east_1/aws-dynamodb-table.json | 111 ++- .../aws-ec2-securitygroupegress.json | 98 ++ ...2-transitgatewayroutetableassociation.json | 29 + .../us_gov_east_1/aws-ecs-cluster.json | 173 ---- .../aws-elasticache-serverlesscache.json | 243 +++++ .../aws-elasticache-user.json | 3 +- .../aws-elasticache-usergroup.json | 3 +- .../aws-gammadilithium-jobdefinition.json | 22 + .../us_gov_east_1/aws-guardduty-detector.json | 155 --- .../aws-lambda-eventsourcemapping.json | 353 +++++++ ...rkfirewall-tlsinspectionconfiguration.json | 1 - .../aws-sagemaker-appimageconfig.json | 238 +++++ .../aws-signer-profilepermission.json | 75 -- .../providers/us_gov_west_1/__init__.py | 37 +- .../aws-acmpca-certificateauthority.json | 429 ++++++++ .../aws-appconfig-deployment.json | 74 -- .../aws-appconfig-environment.json | 152 +++ .../us_gov_west_1/aws-cloudwatch-alarm.json | 318 ++++++ .../aws-cloudwatch-compositealarm.json | 115 +++ .../aws-config-conformancepack.json | 140 --- .../aws-dynamodb-globaltable.json | 113 ++- .../us_gov_west_1/aws-dynamodb-table.json | 111 ++- .../aws-ec2-securitygroupegress.json | 98 ++ ...2-transitgatewayroutetableassociation.json | 29 + .../us_gov_west_1/aws-ecs-cluster.json | 173 ---- .../aws-elasticache-serverlesscache.json | 243 +++++ .../aws-elasticache-user.json | 3 +- .../aws-elasticache-usergroup.json | 3 +- .../aws-gammadilithium-jobdefinition.json | 22 + .../us_gov_west_1/aws-guardduty-detector.json | 155 --- .../aws-iotsitewise-gateway.json | 179 ---- .../aws-lambda-eventsourcemapping.json | 353 +++++++ ...rkfirewall-tlsinspectionconfiguration.json | 1 - .../aws-sagemaker-appimageconfig.json | 238 +++++ .../aws-signer-profilepermission.json | 75 -- .../us_gov_west_1/aws-ssm-association.json | 260 ----- .../schemas/providers/us_west_1/__init__.py | 18 +- .../us_west_1/aws-dynamodb-globaltable.json | 113 ++- .../us_west_1/aws-dynamodb-table.json | 111 ++- .../providers/us_west_1/aws-ec2-instance.json | 571 ----------- .../aws-ec2-securitygroupegress.json | 98 ++ .../aws-gammadilithium-jobdefinition.json | 22 + .../aws-lambda-eventsourcemapping.json | 353 +++++++ .../aws-sagemaker-appimageconfig.json | 238 +++++ .../aws-securityhub-delegatedadmin.json | 32 - .../us_west_1/aws-securityhub-insight.json | 844 ---------------- .../aws-securityhub-productsubscription.json | 28 - ...ws-verifiedpermissions-identitysource.json | 221 +++++ .../schemas/providers/us_west_2/__init__.py | 59 +- .../aws-acmpca-certificateauthority.json | 429 ++++++++ ...ws-config-organizationconformancepack.json | 151 --- .../us_west_2/aws-docdbelastic-cluster.json | 209 ---- .../aws-ec2-securitygroupingress.json | 121 +++ .../us_west_2/aws-iam-managedpolicy.json | 150 --- .../aws-lambda-eventsourcemapping.json | 353 +++++++ ...ws-verifiedpermissions-identitysource.json | 221 +++++ src/cfnlint/jsonschema/_validators.py | 13 + src/cfnlint/jsonschema/validators.py | 1 + .../rules/resources/properties/PrefixItems.py | 16 + .../rules/resources/properties/Properties.py | 1 + .../transforms/_language_extensions.py | 4 +- .../providers/base.definition.schema.v1.json | 6 + 551 files changed, 65333 insertions(+), 40161 deletions(-) create mode 100644 src/cfnlint/data/schemas/patches/extensions/all/aws_dynamodb_globaltable/__init__.py create mode 100644 src/cfnlint/data/schemas/patches/extensions/all/aws_dynamodb_globaltable/manual.json create mode 100644 src/cfnlint/data/schemas/patches/extensions/all/aws_dynamodb_table/manual.json create mode 100644 src/cfnlint/data/schemas/patches/providers/all/aws_dynamodb_globaltable/__init__.py create mode 100644 src/cfnlint/data/schemas/patches/providers/all/aws_dynamodb_globaltable/attributedefinitions.json create mode 100644 src/cfnlint/data/schemas/patches/providers/all/aws_dynamodb_globaltable/keyschema.json create mode 100644 src/cfnlint/data/schemas/patches/providers/all/aws_dynamodb_table/__init__.py create mode 100644 src/cfnlint/data/schemas/patches/providers/all/aws_dynamodb_table/attributedefinitions.json create mode 100644 src/cfnlint/data/schemas/patches/providers/all/aws_dynamodb_table/keyschema.json create mode 100644 src/cfnlint/data/schemas/patches/providers/all/aws_ec2_securitygroup/__init__.py create mode 100644 src/cfnlint/data/schemas/patches/providers/all/aws_ec2_securitygroup/deprecatedproperties.json create mode 100644 src/cfnlint/data/schemas/providers/af_south_1/aws-acmpca-certificateauthority.json delete mode 100644 src/cfnlint/data/schemas/providers/af_south_1/aws-ec2-instance.json create mode 100644 src/cfnlint/data/schemas/providers/af_south_1/aws-ec2-securitygroupegress.json create mode 100644 src/cfnlint/data/schemas/providers/af_south_1/aws-ec2-transitgatewayroutetableassociation.json rename src/cfnlint/data/schemas/providers/{eu_central_1 => af_south_1}/aws-ec2-vpccidrblock.json (97%) rename src/cfnlint/data/schemas/providers/{ca_west_1 => af_south_1}/aws-lambda-eventsourcemapping.json (93%) delete mode 100644 src/cfnlint/data/schemas/providers/af_south_1/aws-redshift-cluster.json delete mode 100644 src/cfnlint/data/schemas/providers/af_south_1/aws-redshift-clusterparametergroup.json create mode 100644 src/cfnlint/data/schemas/providers/af_south_1/aws-sagemaker-appimageconfig.json create mode 100644 src/cfnlint/data/schemas/providers/ap_east_1/aws-acmpca-certificateauthority.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_east_1/aws-config-conformancepack.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_east_1/aws-ec2-instance.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_east_1/aws-ec2-networkinterfaceattachment.json create mode 100644 src/cfnlint/data/schemas/providers/ap_east_1/aws-ec2-securitygroupegress.json create mode 100644 src/cfnlint/data/schemas/providers/ap_east_1/aws-ec2-transitgatewayroutetableassociation.json rename src/cfnlint/data/schemas/providers/{eu_south_1 => ap_east_1}/aws-lambda-eventsourcemapping.json (93%) delete mode 100644 src/cfnlint/data/schemas/providers/ap_east_1/aws-redshift-cluster.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_east_1/aws-redshift-clusterparametergroup.json create mode 100644 src/cfnlint/data/schemas/providers/ap_east_1/aws-sagemaker-appimageconfig.json create mode 100644 src/cfnlint/data/schemas/providers/ap_northeast_1/aws-acmpca-certificateauthority.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_northeast_1/aws-codestarconnections-repositorylink.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_northeast_1/aws-codestarconnections-syncconfiguration.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_northeast_1/aws-config-organizationconformancepack.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_northeast_1/aws-connect-predefinedattribute.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_northeast_1/aws-docdbelastic-cluster.json create mode 100644 src/cfnlint/data/schemas/providers/ap_northeast_1/aws-ec2-customergateway.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_northeast_1/aws-ec2-instance.json create mode 100644 src/cfnlint/data/schemas/providers/ap_northeast_1/aws-ec2-securitygroupingress.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_northeast_1/aws-elasticache-user.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_northeast_1/aws-iotsitewise-gateway.json rename src/cfnlint/data/schemas/providers/{eu_west_1 => ap_northeast_1}/aws-lambda-eventsourcemapping.json (93%) delete mode 100644 src/cfnlint/data/schemas/providers/ap_northeast_1/aws-rds-integration.json create mode 100644 src/cfnlint/data/schemas/providers/ap_northeast_1/aws-sagemaker-appimageconfig.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_northeast_1/aws-securityhub-delegatedadmin.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_northeast_1/aws-securityhub-productsubscription.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_northeast_1/aws-signer-profilepermission.json create mode 100644 src/cfnlint/data/schemas/providers/ap_northeast_1/aws-verifiedpermissions-identitysource.json create mode 100644 src/cfnlint/data/schemas/providers/ap_northeast_2/aws-acmpca-certificateauthority.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_northeast_2/aws-config-conformancepack.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_northeast_2/aws-docdbelastic-cluster.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_northeast_2/aws-ec2-instance.json create mode 100644 src/cfnlint/data/schemas/providers/ap_northeast_2/aws-ec2-securitygroupegress.json create mode 100644 src/cfnlint/data/schemas/providers/ap_northeast_2/aws-ec2-transitgatewayroutetableassociation.json create mode 100644 src/cfnlint/data/schemas/providers/ap_northeast_2/aws-gamelift-fleet.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_northeast_2/aws-iotsitewise-gateway.json create mode 100644 src/cfnlint/data/schemas/providers/ap_northeast_2/aws-lambda-eventsourcemapping.json create mode 100644 src/cfnlint/data/schemas/providers/ap_northeast_2/aws-sagemaker-appimageconfig.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_northeast_2/aws-securityhub-delegatedadmin.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_northeast_2/aws-securityhub-insight.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_northeast_2/aws-securityhub-productsubscription.json create mode 100644 src/cfnlint/data/schemas/providers/ap_northeast_2/aws-verifiedpermissions-identitysource.json create mode 100644 src/cfnlint/data/schemas/providers/ap_northeast_3/aws-acmpca-certificateauthority.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_northeast_3/aws-ec2-instance.json create mode 100644 src/cfnlint/data/schemas/providers/ap_northeast_3/aws-ec2-securitygroupegress.json create mode 100644 src/cfnlint/data/schemas/providers/ap_northeast_3/aws-lambda-eventsourcemapping.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_northeast_3/aws-redshift-cluster.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_northeast_3/aws-redshift-clusterparametergroup.json create mode 100644 src/cfnlint/data/schemas/providers/ap_northeast_3/aws-sagemaker-appimageconfig.json create mode 100644 src/cfnlint/data/schemas/providers/ap_northeast_3/aws-sagemaker-domain.json create mode 100644 src/cfnlint/data/schemas/providers/ap_northeast_3/aws-sagemaker-userprofile.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_northeast_3/aws-securityhub-delegatedadmin.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_northeast_3/aws-securityhub-insight.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_northeast_3/aws-securityhub-productsubscription.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_south_1/aws-connect-integrationassociation.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_south_1/aws-docdbelastic-cluster.json create mode 100644 src/cfnlint/data/schemas/providers/ap_south_1/aws-dynamodb-globaltable.json create mode 100644 src/cfnlint/data/schemas/providers/ap_south_1/aws-dynamodb-table.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_south_1/aws-ec2-instance.json create mode 100644 src/cfnlint/data/schemas/providers/ap_south_1/aws-ec2-securitygroupegress.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_south_1/aws-elasticache-user.json create mode 100644 src/cfnlint/data/schemas/providers/ap_south_1/aws-gamelift-fleet.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_south_1/aws-iotsitewise-gateway.json create mode 100644 src/cfnlint/data/schemas/providers/ap_south_1/aws-lambda-eventsourcemapping.json create mode 100644 src/cfnlint/data/schemas/providers/ap_south_1/aws-sagemaker-appimageconfig.json create mode 100644 src/cfnlint/data/schemas/providers/ap_south_1/aws-verifiedpermissions-identitysource.json create mode 100644 src/cfnlint/data/schemas/providers/ap_south_2/aws-acmpca-certificateauthority.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_south_2/aws-ec2-instance.json create mode 100644 src/cfnlint/data/schemas/providers/ap_south_2/aws-ec2-securitygroupegress.json create mode 100644 src/cfnlint/data/schemas/providers/ap_south_2/aws-ec2-transitgatewayroutetableassociation.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_south_2/aws-elasticache-user.json create mode 100644 src/cfnlint/data/schemas/providers/ap_south_2/aws-lambda-eventsourcemapping.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_south_2/aws-redshift-cluster.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_south_2/aws-redshift-clusterparametergroup.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_south_2/aws-redshift-clustersubnetgroup.json create mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_1/aws-acmpca-certificateauthority.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_1/aws-config-organizationconformancepack.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_1/aws-ec2-instance.json create mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_1/aws-ec2-securitygroupingress.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_1/aws-iotsitewise-gateway.json create mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_1/aws-lambda-eventsourcemapping.json create mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_1/aws-sagemaker-appimageconfig.json create mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_1/aws-sagemaker-domain.json create mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_1/aws-sagemaker-userprofile.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_1/aws-securityhub-delegatedadmin.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_1/aws-securityhub-insight.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_1/aws-securityhub-productsubscription.json create mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_1/aws-verifiedpermissions-identitysource.json create mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_2/aws-dynamodb-globaltable.json create mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_2/aws-dynamodb-table.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_2/aws-ec2-instance.json create mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_2/aws-ec2-securitygroupegress.json create mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_2/aws-lambda-eventsourcemapping.json create mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_2/aws-sagemaker-appimageconfig.json create mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_2/aws-verifiedpermissions-identitysource.json create mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_3/aws-acmpca-certificateauthority.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_3/aws-cognito-userpoolidentityprovider.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_3/aws-cognito-userpooluser.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_3/aws-ec2-instance.json create mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_3/aws-ec2-securitygroupegress.json create mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_3/aws-ec2-transitgatewayroutetableassociation.json create mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_3/aws-ec2-vpccidrblock.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_3/aws-elasticache-user.json create mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_3/aws-lambda-eventsourcemapping.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_3/aws-redshift-cluster.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_3/aws-redshift-clusterparametergroup.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_3/aws-redshift-clustersubnetgroup.json create mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_3/aws-sagemaker-appimageconfig.json create mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_4/aws-acmpca-certificateauthority.json create mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_4/aws-cloudfront-originaccesscontrol.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_4/aws-config-conformancepack.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_4/aws-ec2-instance.json create mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_4/aws-ec2-securitygroupegress.json create mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_4/aws-ec2-transitgatewayroutetableassociation.json create mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_4/aws-lambda-eventsourcemapping.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_4/aws-redshift-cluster.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_4/aws-redshift-clusterparametergroup.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_4/aws-redshift-clustersubnetgroup.json create mode 100644 src/cfnlint/data/schemas/providers/ca_central_1/aws-acmpca-certificateauthority.json delete mode 100644 src/cfnlint/data/schemas/providers/ca_central_1/aws-ec2-instance.json create mode 100644 src/cfnlint/data/schemas/providers/ca_central_1/aws-ec2-securitygroupegress.json delete mode 100644 src/cfnlint/data/schemas/providers/ca_central_1/aws-iotsitewise-gateway.json create mode 100644 src/cfnlint/data/schemas/providers/ca_central_1/aws-lambda-eventsourcemapping.json create mode 100644 src/cfnlint/data/schemas/providers/ca_central_1/aws-verifiedpermissions-identitysource.json create mode 100644 src/cfnlint/data/schemas/providers/ca_west_1/aws-acmpca-certificateauthority.json create mode 100644 src/cfnlint/data/schemas/providers/ca_west_1/aws-cloudwatch-compositealarm.json create mode 100644 src/cfnlint/data/schemas/providers/ca_west_1/aws-ec2-securitygroup.json create mode 100644 src/cfnlint/data/schemas/providers/ca_west_1/aws-ec2-securitygroupegress.json delete mode 100644 src/cfnlint/data/schemas/providers/ca_west_1/aws-ec2-transitgatewayroutetableassociation.json create mode 100644 src/cfnlint/data/schemas/providers/ca_west_1/aws-ecs-taskdefinition.json delete mode 100644 src/cfnlint/data/schemas/providers/ca_west_1/aws-elasticache-user.json delete mode 100644 src/cfnlint/data/schemas/providers/ca_west_1/aws-elasticache-usergroup.json delete mode 100644 src/cfnlint/data/schemas/providers/ca_west_1/aws-stepfunctions-statemachine.json create mode 100644 src/cfnlint/data/schemas/providers/cn_north_1/aws-appconfig-environment.json delete mode 100644 src/cfnlint/data/schemas/providers/cn_north_1/aws-config-aggregationauthorization.json delete mode 100644 src/cfnlint/data/schemas/providers/cn_north_1/aws-ec2-instance.json create mode 100644 src/cfnlint/data/schemas/providers/cn_north_1/aws-ec2-securitygroupingress.json delete mode 100644 src/cfnlint/data/schemas/providers/cn_north_1/aws-iotsitewise-gateway.json create mode 100644 src/cfnlint/data/schemas/providers/cn_north_1/aws-lambda-eventsourcemapping.json delete mode 100644 src/cfnlint/data/schemas/providers/cn_north_1/aws-networkfirewall-tlsinspectionconfiguration.json delete mode 100644 src/cfnlint/data/schemas/providers/cn_north_1/aws-redshift-cluster.json delete mode 100644 src/cfnlint/data/schemas/providers/cn_north_1/aws-redshift-clusterparametergroup.json delete mode 100644 src/cfnlint/data/schemas/providers/cn_north_1/aws-redshift-clustersubnetgroup.json create mode 100644 src/cfnlint/data/schemas/providers/cn_north_1/aws-sagemaker-appimageconfig.json create mode 100644 src/cfnlint/data/schemas/providers/cn_north_1/aws-sagemaker-domain.json create mode 100644 src/cfnlint/data/schemas/providers/cn_north_1/aws-sagemaker-userprofile.json delete mode 100644 src/cfnlint/data/schemas/providers/cn_north_1/aws-ssm-association.json create mode 100644 src/cfnlint/data/schemas/providers/cn_northwest_1/aws-appconfig-environment.json delete mode 100644 src/cfnlint/data/schemas/providers/cn_northwest_1/aws-config-aggregationauthorization.json delete mode 100644 src/cfnlint/data/schemas/providers/cn_northwest_1/aws-ec2-instance.json create mode 100644 src/cfnlint/data/schemas/providers/cn_northwest_1/aws-ec2-securitygroupegress.json create mode 100644 src/cfnlint/data/schemas/providers/cn_northwest_1/aws-ec2-transitgatewayroutetableassociation.json create mode 100644 src/cfnlint/data/schemas/providers/cn_northwest_1/aws-ec2-vpccidrblock.json delete mode 100644 src/cfnlint/data/schemas/providers/cn_northwest_1/aws-elasticache-user.json delete mode 100644 src/cfnlint/data/schemas/providers/cn_northwest_1/aws-elasticache-usergroup.json delete mode 100644 src/cfnlint/data/schemas/providers/cn_northwest_1/aws-emr-studio.json create mode 100644 src/cfnlint/data/schemas/providers/cn_northwest_1/aws-lambda-eventsourcemapping.json delete mode 100644 src/cfnlint/data/schemas/providers/cn_northwest_1/aws-networkfirewall-tlsinspectionconfiguration.json create mode 100644 src/cfnlint/data/schemas/providers/cn_northwest_1/aws-sagemaker-appimageconfig.json delete mode 100644 src/cfnlint/data/schemas/providers/cn_northwest_1/aws-ssm-association.json delete mode 100644 src/cfnlint/data/schemas/providers/eu_central_1/aws-codestarconnections-repositorylink.json delete mode 100644 src/cfnlint/data/schemas/providers/eu_central_1/aws-codestarconnections-syncconfiguration.json delete mode 100644 src/cfnlint/data/schemas/providers/eu_central_1/aws-config-organizationconformancepack.json delete mode 100644 src/cfnlint/data/schemas/providers/eu_central_1/aws-connect-predefinedattribute.json delete mode 100644 src/cfnlint/data/schemas/providers/eu_central_1/aws-docdbelastic-cluster.json create mode 100644 src/cfnlint/data/schemas/providers/eu_central_1/aws-ec2-customergateway.json delete mode 100644 src/cfnlint/data/schemas/providers/eu_central_1/aws-ec2-instance.json create mode 100644 src/cfnlint/data/schemas/providers/eu_central_1/aws-ec2-securitygroupingress.json delete mode 100644 src/cfnlint/data/schemas/providers/eu_central_1/aws-ec2-subnet.json delete mode 100644 src/cfnlint/data/schemas/providers/eu_central_1/aws-ec2-transitgatewayroutetableassociation.json delete mode 100644 src/cfnlint/data/schemas/providers/eu_central_1/aws-ecr-pullthroughcacherule.json delete mode 100644 src/cfnlint/data/schemas/providers/eu_central_1/aws-ecr-registrypolicy.json delete mode 100644 src/cfnlint/data/schemas/providers/eu_central_1/aws-ecr-replicationconfiguration.json delete mode 100644 src/cfnlint/data/schemas/providers/eu_central_1/aws-ecr-repository.json delete mode 100644 src/cfnlint/data/schemas/providers/eu_central_1/aws-elasticache-user.json delete mode 100644 src/cfnlint/data/schemas/providers/eu_central_1/aws-elasticache-usergroup.json create mode 100644 src/cfnlint/data/schemas/providers/eu_central_1/aws-elasticloadbalancingv2-loadbalancer.json delete mode 100644 src/cfnlint/data/schemas/providers/eu_central_1/aws-globalaccelerator-crossaccountattachment.json delete mode 100644 src/cfnlint/data/schemas/providers/eu_central_1/aws-iotsitewise-gateway.json create mode 100644 src/cfnlint/data/schemas/providers/eu_central_1/aws-lambda-eventsourcemapping.json delete mode 100644 src/cfnlint/data/schemas/providers/eu_central_1/aws-rds-integration.json create mode 100644 src/cfnlint/data/schemas/providers/eu_central_1/aws-s3-storagelens.json create mode 100644 src/cfnlint/data/schemas/providers/eu_central_1/aws-s3outposts-bucket.json create mode 100644 src/cfnlint/data/schemas/providers/eu_central_1/aws-sagemaker-appimageconfig.json delete mode 100644 src/cfnlint/data/schemas/providers/eu_central_1/aws-signer-profilepermission.json create mode 100644 src/cfnlint/data/schemas/providers/eu_central_1/aws-verifiedpermissions-identitysource.json create mode 100644 src/cfnlint/data/schemas/providers/eu_central_2/aws-acmpca-certificateauthority.json create mode 100644 src/cfnlint/data/schemas/providers/eu_central_2/aws-cloudfront-originaccesscontrol.json create mode 100644 src/cfnlint/data/schemas/providers/eu_central_2/aws-cloudwatch-alarm.json create mode 100644 src/cfnlint/data/schemas/providers/eu_central_2/aws-cloudwatch-compositealarm.json delete mode 100644 src/cfnlint/data/schemas/providers/eu_central_2/aws-ec2-instance.json create mode 100644 src/cfnlint/data/schemas/providers/eu_central_2/aws-ec2-securitygroupegress.json create mode 100644 src/cfnlint/data/schemas/providers/eu_central_2/aws-ec2-transitgatewayroutetableassociation.json create mode 100644 src/cfnlint/data/schemas/providers/eu_central_2/aws-lambda-eventsourcemapping.json create mode 100644 src/cfnlint/data/schemas/providers/eu_central_2/aws-redshift-eventsubscription.json delete mode 100644 src/cfnlint/data/schemas/providers/eu_north_1/aws-ec2-instance.json create mode 100644 src/cfnlint/data/schemas/providers/eu_north_1/aws-ec2-securitygroupegress.json create mode 100644 src/cfnlint/data/schemas/providers/eu_north_1/aws-ec2-transitgatewayroutetableassociation.json create mode 100644 src/cfnlint/data/schemas/providers/eu_north_1/aws-lambda-eventsourcemapping.json create mode 100644 src/cfnlint/data/schemas/providers/eu_north_1/aws-sagemaker-appimageconfig.json create mode 100644 src/cfnlint/data/schemas/providers/eu_north_1/aws-verifiedpermissions-identitysource.json create mode 100644 src/cfnlint/data/schemas/providers/eu_south_1/aws-acmpca-certificateauthority.json delete mode 100644 src/cfnlint/data/schemas/providers/eu_south_1/aws-ec2-instance.json create mode 100644 src/cfnlint/data/schemas/providers/eu_south_1/aws-ec2-securitygroupegress.json create mode 100644 src/cfnlint/data/schemas/providers/eu_south_1/aws-ec2-transitgatewayroutetableassociation.json delete mode 100644 src/cfnlint/data/schemas/providers/eu_south_1/aws-redshift-cluster.json delete mode 100644 src/cfnlint/data/schemas/providers/eu_south_1/aws-redshift-clusterparametergroup.json create mode 100644 src/cfnlint/data/schemas/providers/eu_south_1/aws-sagemaker-appimageconfig.json create mode 100644 src/cfnlint/data/schemas/providers/eu_south_1/aws-verifiedpermissions-identitysource.json create mode 100644 src/cfnlint/data/schemas/providers/eu_south_2/aws-acmpca-certificateauthority.json delete mode 100644 src/cfnlint/data/schemas/providers/eu_south_2/aws-ec2-instance.json create mode 100644 src/cfnlint/data/schemas/providers/eu_south_2/aws-ec2-securitygroupegress.json create mode 100644 src/cfnlint/data/schemas/providers/eu_south_2/aws-lambda-eventsourcemapping.json delete mode 100644 src/cfnlint/data/schemas/providers/eu_south_2/aws-redshift-cluster.json delete mode 100644 src/cfnlint/data/schemas/providers/eu_south_2/aws-redshift-clusterparametergroup.json delete mode 100644 src/cfnlint/data/schemas/providers/eu_south_2/aws-redshift-clustersubnetgroup.json create mode 100644 src/cfnlint/data/schemas/providers/eu_south_2/aws-sagemaker-appimageconfig.json create mode 100644 src/cfnlint/data/schemas/providers/eu_south_2/aws-sagemaker-domain.json create mode 100644 src/cfnlint/data/schemas/providers/eu_south_2/aws-sagemaker-userprofile.json create mode 100644 src/cfnlint/data/schemas/providers/eu_west_1/aws-dynamodb-globaltable.json create mode 100644 src/cfnlint/data/schemas/providers/eu_west_1/aws-dynamodb-table.json delete mode 100644 src/cfnlint/data/schemas/providers/eu_west_1/aws-ec2-instance.json create mode 100644 src/cfnlint/data/schemas/providers/eu_west_1/aws-ec2-securitygroupegress.json create mode 100644 src/cfnlint/data/schemas/providers/eu_west_1/aws-gamelift-fleet.json delete mode 100644 src/cfnlint/data/schemas/providers/eu_west_1/aws-iotsitewise-gateway.json create mode 100644 src/cfnlint/data/schemas/providers/eu_west_1/aws-sagemaker-appimageconfig.json create mode 100644 src/cfnlint/data/schemas/providers/eu_west_1/aws-sagemaker-domain.json create mode 100644 src/cfnlint/data/schemas/providers/eu_west_1/aws-sagemaker-userprofile.json create mode 100644 src/cfnlint/data/schemas/providers/eu_west_1/aws-verifiedpermissions-identitysource.json create mode 100644 src/cfnlint/data/schemas/providers/eu_west_2/aws-acmpca-certificateauthority.json delete mode 100644 src/cfnlint/data/schemas/providers/eu_west_2/aws-ec2-instance.json create mode 100644 src/cfnlint/data/schemas/providers/eu_west_2/aws-ec2-securitygroupegress.json create mode 100644 src/cfnlint/data/schemas/providers/eu_west_2/aws-gamelift-fleet.json create mode 100644 src/cfnlint/data/schemas/providers/eu_west_2/aws-lambda-eventsourcemapping.json delete mode 100644 src/cfnlint/data/schemas/providers/eu_west_2/aws-securityhub-delegatedadmin.json delete mode 100644 src/cfnlint/data/schemas/providers/eu_west_2/aws-securityhub-insight.json delete mode 100644 src/cfnlint/data/schemas/providers/eu_west_2/aws-securityhub-productsubscription.json create mode 100644 src/cfnlint/data/schemas/providers/eu_west_2/aws-verifiedpermissions-identitysource.json create mode 100644 src/cfnlint/data/schemas/providers/eu_west_3/aws-acmpca-certificateauthority.json delete mode 100644 src/cfnlint/data/schemas/providers/eu_west_3/aws-ec2-instance.json create mode 100644 src/cfnlint/data/schemas/providers/eu_west_3/aws-ec2-securitygroupegress.json create mode 100644 src/cfnlint/data/schemas/providers/eu_west_3/aws-ec2-transitgatewayroutetableassociation.json create mode 100644 src/cfnlint/data/schemas/providers/eu_west_3/aws-lambda-eventsourcemapping.json create mode 100644 src/cfnlint/data/schemas/providers/eu_west_3/aws-sagemaker-appimageconfig.json create mode 100644 src/cfnlint/data/schemas/providers/eu_west_3/aws-sagemaker-domain.json create mode 100644 src/cfnlint/data/schemas/providers/eu_west_3/aws-sagemaker-userprofile.json create mode 100644 src/cfnlint/data/schemas/providers/eu_west_3/aws-verifiedpermissions-identitysource.json create mode 100644 src/cfnlint/data/schemas/providers/me_central_1/aws-acmpca-certificateauthority.json delete mode 100644 src/cfnlint/data/schemas/providers/me_central_1/aws-ec2-instance.json create mode 100644 src/cfnlint/data/schemas/providers/me_central_1/aws-ec2-securitygroupegress.json create mode 100644 src/cfnlint/data/schemas/providers/me_central_1/aws-ec2-transitgatewayroutetableassociation.json delete mode 100644 src/cfnlint/data/schemas/providers/me_central_1/aws-emr-studio.json create mode 100644 src/cfnlint/data/schemas/providers/me_central_1/aws-lambda-eventsourcemapping.json delete mode 100644 src/cfnlint/data/schemas/providers/me_central_1/aws-networkfirewall-rulegroup.json delete mode 100644 src/cfnlint/data/schemas/providers/me_central_1/aws-redshift-cluster.json delete mode 100644 src/cfnlint/data/schemas/providers/me_central_1/aws-redshift-clusterparametergroup.json delete mode 100644 src/cfnlint/data/schemas/providers/me_central_1/aws-redshift-clustersubnetgroup.json create mode 100644 src/cfnlint/data/schemas/providers/me_central_1/aws-sagemaker-appimageconfig.json create mode 100644 src/cfnlint/data/schemas/providers/me_central_1/aws-sagemaker-domain.json create mode 100644 src/cfnlint/data/schemas/providers/me_central_1/aws-sagemaker-userprofile.json create mode 100644 src/cfnlint/data/schemas/providers/me_south_1/aws-acmpca-certificateauthority.json create mode 100644 src/cfnlint/data/schemas/providers/me_south_1/aws-cloudfront-originaccesscontrol.json delete mode 100644 src/cfnlint/data/schemas/providers/me_south_1/aws-config-conformancepack.json delete mode 100644 src/cfnlint/data/schemas/providers/me_south_1/aws-ec2-instance.json create mode 100644 src/cfnlint/data/schemas/providers/me_south_1/aws-ec2-securitygroupegress.json create mode 100644 src/cfnlint/data/schemas/providers/me_south_1/aws-ec2-transitgatewayroutetableassociation.json create mode 100644 src/cfnlint/data/schemas/providers/me_south_1/aws-lambda-eventsourcemapping.json delete mode 100644 src/cfnlint/data/schemas/providers/me_south_1/aws-redshift-cluster.json delete mode 100644 src/cfnlint/data/schemas/providers/me_south_1/aws-redshift-clusterparametergroup.json create mode 100644 src/cfnlint/data/schemas/providers/me_south_1/aws-verifiedpermissions-identitysource.json create mode 100644 src/cfnlint/data/schemas/providers/sa_east_1/aws-acmpca-certificateauthority.json delete mode 100644 src/cfnlint/data/schemas/providers/sa_east_1/aws-docdbelastic-cluster.json create mode 100644 src/cfnlint/data/schemas/providers/sa_east_1/aws-dynamodb-globaltable.json create mode 100644 src/cfnlint/data/schemas/providers/sa_east_1/aws-dynamodb-table.json delete mode 100644 src/cfnlint/data/schemas/providers/sa_east_1/aws-ec2-instance.json create mode 100644 src/cfnlint/data/schemas/providers/sa_east_1/aws-ec2-securitygroupegress.json create mode 100644 src/cfnlint/data/schemas/providers/sa_east_1/aws-gamelift-fleet.json create mode 100644 src/cfnlint/data/schemas/providers/sa_east_1/aws-lambda-eventsourcemapping.json create mode 100644 src/cfnlint/data/schemas/providers/sa_east_1/aws-sagemaker-appimageconfig.json create mode 100644 src/cfnlint/data/schemas/providers/sa_east_1/aws-sagemaker-domain.json create mode 100644 src/cfnlint/data/schemas/providers/sa_east_1/aws-sagemaker-userprofile.json delete mode 100644 src/cfnlint/data/schemas/providers/sa_east_1/aws-securityhub-delegatedadmin.json delete mode 100644 src/cfnlint/data/schemas/providers/sa_east_1/aws-securityhub-insight.json delete mode 100644 src/cfnlint/data/schemas/providers/sa_east_1/aws-securityhub-productsubscription.json create mode 100644 src/cfnlint/data/schemas/providers/sa_east_1/aws-verifiedpermissions-identitysource.json create mode 100644 src/cfnlint/data/schemas/providers/us_east_1/aws-aps-scraper.json create mode 100644 src/cfnlint/data/schemas/providers/us_east_1/aws-bcmdataexports-export.json create mode 100644 src/cfnlint/data/schemas/providers/us_east_1/aws-bedrock-agent.json create mode 100644 src/cfnlint/data/schemas/providers/us_east_1/aws-bedrock-agentalias.json create mode 100644 src/cfnlint/data/schemas/providers/us_east_1/aws-bedrock-datasource.json create mode 100644 src/cfnlint/data/schemas/providers/us_east_1/aws-bedrock-knowledgebase.json create mode 100644 src/cfnlint/data/schemas/providers/us_east_1/aws-cleanroomsml-trainingdataset.json create mode 100644 src/cfnlint/data/schemas/providers/us_east_1/aws-codeconnections-connection.json create mode 100644 src/cfnlint/data/schemas/providers/us_east_1/aws-deadline-farm.json create mode 100644 src/cfnlint/data/schemas/providers/us_east_1/aws-deadline-fleet.json create mode 100644 src/cfnlint/data/schemas/providers/us_east_1/aws-deadline-licenseendpoint.json create mode 100644 src/cfnlint/data/schemas/providers/us_east_1/aws-deadline-meteredproduct.json create mode 100644 src/cfnlint/data/schemas/providers/us_east_1/aws-deadline-queue.json create mode 100644 src/cfnlint/data/schemas/providers/us_east_1/aws-deadline-queueenvironment.json create mode 100644 src/cfnlint/data/schemas/providers/us_east_1/aws-deadline-queuefleetassociation.json create mode 100644 src/cfnlint/data/schemas/providers/us_east_1/aws-deadline-storageprofile.json rename src/cfnlint/data/schemas/providers/{us_east_2/aws-entityresolution-idmappingworkflow.json => us_east_1/aws-entityresolution-idnamespace.json} (50%) create mode 100644 src/cfnlint/data/schemas/providers/us_east_1/aws-entityresolution-policystatement.json rename src/cfnlint/data/schemas/providers/{ap_northeast_1 => us_east_1}/aws-globalaccelerator-crossaccountattachment.json (100%) create mode 100644 src/cfnlint/data/schemas/providers/us_east_1/aws-ivs-encoderconfiguration.json rename src/cfnlint/data/schemas/providers/{ap_northeast_1/aws-elasticache-usergroup.json => us_east_1/aws-ivs-playbackrestrictionpolicy.json} (50%) create mode 100644 src/cfnlint/data/schemas/providers/us_east_1/aws-ivs-storageconfiguration.json create mode 100644 src/cfnlint/data/schemas/providers/us_east_1/aws-securityhub-delegatedadmin.json rename src/cfnlint/data/schemas/providers/{ap_northeast_1 => us_east_1}/aws-securityhub-insight.json (67%) create mode 100644 src/cfnlint/data/schemas/providers/us_east_1/aws-securityhub-productsubscription.json create mode 100644 src/cfnlint/data/schemas/providers/us_east_1/aws-securitylake-awslogsource.json create mode 100644 src/cfnlint/data/schemas/providers/us_east_1/aws-securitylake-datalake.json create mode 100644 src/cfnlint/data/schemas/providers/us_east_1/aws-securitylake-subscriber.json delete mode 100644 src/cfnlint/data/schemas/providers/us_east_2/aws-cleanrooms-configuredtable.json create mode 100644 src/cfnlint/data/schemas/providers/us_east_2/aws-ec2-customergateway.json delete mode 100644 src/cfnlint/data/schemas/providers/us_east_2/aws-ec2-instance.json create mode 100644 src/cfnlint/data/schemas/providers/us_east_2/aws-ec2-securitygroupegress.json rename src/cfnlint/data/schemas/providers/{ap_northeast_3 => us_east_2}/aws-elasticache-usergroup.json (96%) create mode 100644 src/cfnlint/data/schemas/providers/us_east_2/aws-gamelift-fleet.json delete mode 100644 src/cfnlint/data/schemas/providers/us_east_2/aws-iotsitewise-gateway.json create mode 100644 src/cfnlint/data/schemas/providers/us_east_2/aws-lambda-eventsourcemapping.json create mode 100644 src/cfnlint/data/schemas/providers/us_east_2/aws-verifiedpermissions-identitysource.json create mode 100644 src/cfnlint/data/schemas/providers/us_gov_east_1/aws-acmpca-certificateauthority.json delete mode 100644 src/cfnlint/data/schemas/providers/us_gov_east_1/aws-appconfig-deployment.json create mode 100644 src/cfnlint/data/schemas/providers/us_gov_east_1/aws-appconfig-environment.json delete mode 100644 src/cfnlint/data/schemas/providers/us_gov_east_1/aws-config-conformancepack.json create mode 100644 src/cfnlint/data/schemas/providers/us_gov_east_1/aws-ec2-securitygroupegress.json create mode 100644 src/cfnlint/data/schemas/providers/us_gov_east_1/aws-ec2-transitgatewayroutetableassociation.json delete mode 100644 src/cfnlint/data/schemas/providers/us_gov_east_1/aws-ecs-cluster.json create mode 100644 src/cfnlint/data/schemas/providers/us_gov_east_1/aws-elasticache-serverlesscache.json rename src/cfnlint/data/schemas/providers/{ap_northeast_3 => us_gov_east_1}/aws-elasticache-user.json (97%) rename src/cfnlint/data/schemas/providers/{ap_south_1 => us_gov_east_1}/aws-elasticache-usergroup.json (96%) delete mode 100644 src/cfnlint/data/schemas/providers/us_gov_east_1/aws-guardduty-detector.json create mode 100644 src/cfnlint/data/schemas/providers/us_gov_east_1/aws-lambda-eventsourcemapping.json rename src/cfnlint/data/schemas/providers/{ap_southeast_2 => us_gov_east_1}/aws-networkfirewall-tlsinspectionconfiguration.json (99%) create mode 100644 src/cfnlint/data/schemas/providers/us_gov_east_1/aws-sagemaker-appimageconfig.json delete mode 100644 src/cfnlint/data/schemas/providers/us_gov_east_1/aws-signer-profilepermission.json create mode 100644 src/cfnlint/data/schemas/providers/us_gov_west_1/aws-acmpca-certificateauthority.json delete mode 100644 src/cfnlint/data/schemas/providers/us_gov_west_1/aws-appconfig-deployment.json create mode 100644 src/cfnlint/data/schemas/providers/us_gov_west_1/aws-appconfig-environment.json create mode 100644 src/cfnlint/data/schemas/providers/us_gov_west_1/aws-cloudwatch-alarm.json create mode 100644 src/cfnlint/data/schemas/providers/us_gov_west_1/aws-cloudwatch-compositealarm.json delete mode 100644 src/cfnlint/data/schemas/providers/us_gov_west_1/aws-config-conformancepack.json create mode 100644 src/cfnlint/data/schemas/providers/us_gov_west_1/aws-ec2-securitygroupegress.json create mode 100644 src/cfnlint/data/schemas/providers/us_gov_west_1/aws-ec2-transitgatewayroutetableassociation.json delete mode 100644 src/cfnlint/data/schemas/providers/us_gov_west_1/aws-ecs-cluster.json create mode 100644 src/cfnlint/data/schemas/providers/us_gov_west_1/aws-elasticache-serverlesscache.json rename src/cfnlint/data/schemas/providers/{af_south_1 => us_gov_west_1}/aws-elasticache-user.json (97%) rename src/cfnlint/data/schemas/providers/{ap_south_2 => us_gov_west_1}/aws-elasticache-usergroup.json (96%) delete mode 100644 src/cfnlint/data/schemas/providers/us_gov_west_1/aws-guardduty-detector.json delete mode 100644 src/cfnlint/data/schemas/providers/us_gov_west_1/aws-iotsitewise-gateway.json create mode 100644 src/cfnlint/data/schemas/providers/us_gov_west_1/aws-lambda-eventsourcemapping.json rename src/cfnlint/data/schemas/providers/{eu_central_1 => us_gov_west_1}/aws-networkfirewall-tlsinspectionconfiguration.json (99%) create mode 100644 src/cfnlint/data/schemas/providers/us_gov_west_1/aws-sagemaker-appimageconfig.json delete mode 100644 src/cfnlint/data/schemas/providers/us_gov_west_1/aws-signer-profilepermission.json delete mode 100644 src/cfnlint/data/schemas/providers/us_gov_west_1/aws-ssm-association.json delete mode 100644 src/cfnlint/data/schemas/providers/us_west_1/aws-ec2-instance.json create mode 100644 src/cfnlint/data/schemas/providers/us_west_1/aws-ec2-securitygroupegress.json create mode 100644 src/cfnlint/data/schemas/providers/us_west_1/aws-lambda-eventsourcemapping.json create mode 100644 src/cfnlint/data/schemas/providers/us_west_1/aws-sagemaker-appimageconfig.json delete mode 100644 src/cfnlint/data/schemas/providers/us_west_1/aws-securityhub-delegatedadmin.json delete mode 100644 src/cfnlint/data/schemas/providers/us_west_1/aws-securityhub-insight.json delete mode 100644 src/cfnlint/data/schemas/providers/us_west_1/aws-securityhub-productsubscription.json create mode 100644 src/cfnlint/data/schemas/providers/us_west_1/aws-verifiedpermissions-identitysource.json create mode 100644 src/cfnlint/data/schemas/providers/us_west_2/aws-acmpca-certificateauthority.json delete mode 100644 src/cfnlint/data/schemas/providers/us_west_2/aws-config-organizationconformancepack.json delete mode 100644 src/cfnlint/data/schemas/providers/us_west_2/aws-docdbelastic-cluster.json create mode 100644 src/cfnlint/data/schemas/providers/us_west_2/aws-ec2-securitygroupingress.json delete mode 100644 src/cfnlint/data/schemas/providers/us_west_2/aws-iam-managedpolicy.json create mode 100644 src/cfnlint/data/schemas/providers/us_west_2/aws-lambda-eventsourcemapping.json create mode 100644 src/cfnlint/data/schemas/providers/us_west_2/aws-verifiedpermissions-identitysource.json create mode 100644 src/cfnlint/rules/resources/properties/PrefixItems.py diff --git a/scripts/update_schemas_manually.py b/scripts/update_schemas_manually.py index 749de697b3..21c28be984 100755 --- a/scripts/update_schemas_manually.py +++ b/scripts/update_schemas_manually.py @@ -634,6 +634,64 @@ ), ], ), + ResourcePatch( + resource_type="AWS::DynamoDB::Table", + patches=[ + Patch( + values={ + "allOf": [ + { + "if": { + "type": "object", + "required": ["LocalSecondaryIndexes"], + }, + "then": { + "type": "object", + "properties": { + "KeySchema": { + "minItems": 2, + }, + "AttributeDefinitions": { + "minItems": 2, + }, + }, + }, + } + ] + }, + path="/", + ), + ], + ), + ResourcePatch( + resource_type="AWS::DynamoDB::GlobalTable", + patches=[ + Patch( + values={ + "allOf": [ + { + "if": { + "required": ["LocalSecondaryIndexes"], + "type": "object", + }, + "then": { + "properties": { + "KeySchema": { + "minItems": 2, + }, + "AttributeDefinitions": { + "minItems": 2, + }, + }, + "type": "object", + }, + } + ] + }, + path="/", + ), + ], + ), ResourcePatch( resource_type="AWS::EC2::DHCPOptions", patches=[ diff --git a/src/cfnlint/data/DownloadsMetadata/123ba181485ae293d5bd09722af0c19d5a0d14c62111ff864923fc7b7960dda6.meta.json b/src/cfnlint/data/DownloadsMetadata/123ba181485ae293d5bd09722af0c19d5a0d14c62111ff864923fc7b7960dda6.meta.json index 4f8aa8d337..86a321fcc1 100644 --- a/src/cfnlint/data/DownloadsMetadata/123ba181485ae293d5bd09722af0c19d5a0d14c62111ff864923fc7b7960dda6.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/123ba181485ae293d5bd09722af0c19d5a0d14c62111ff864923fc7b7960dda6.meta.json @@ -1 +1 @@ -{"etag": "\"e73b6822e0de7b75f9f34ea748ea2565\"", "url": "https://schema.cloudformation.eu-south-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"2ebe5d5fa13d16181b7d09a9935f4fda\"", "url": "https://schema.cloudformation.eu-south-1.amazonaws.com/CloudformationSchema.zip"} diff --git a/src/cfnlint/data/DownloadsMetadata/164e1bfc2823fbd49d8d0e7163ebf32b2b6653d7edfe98a64577daae0b481c38.meta.json b/src/cfnlint/data/DownloadsMetadata/164e1bfc2823fbd49d8d0e7163ebf32b2b6653d7edfe98a64577daae0b481c38.meta.json index 4d72f69068..62bf2ca384 100644 --- a/src/cfnlint/data/DownloadsMetadata/164e1bfc2823fbd49d8d0e7163ebf32b2b6653d7edfe98a64577daae0b481c38.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/164e1bfc2823fbd49d8d0e7163ebf32b2b6653d7edfe98a64577daae0b481c38.meta.json @@ -1 +1 @@ -{"etag": "\"30035f1418fbb20bf499a3fcd6002c07\"", "url": "https://schema.cloudformation.cn-north-1.amazonaws.com.cn/CloudformationSchema.zip"} +{"etag": "\"e7e148497e625af6d2b2009898098db5\"", "url": "https://schema.cloudformation.cn-north-1.amazonaws.com.cn/CloudformationSchema.zip"} diff --git a/src/cfnlint/data/DownloadsMetadata/18624fcc4a1c571691d10b2508e6be565e4752bbc10d9552de8df8f81348c42b.meta.json b/src/cfnlint/data/DownloadsMetadata/18624fcc4a1c571691d10b2508e6be565e4752bbc10d9552de8df8f81348c42b.meta.json index be6887ba3e..e16562d37b 100644 --- a/src/cfnlint/data/DownloadsMetadata/18624fcc4a1c571691d10b2508e6be565e4752bbc10d9552de8df8f81348c42b.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/18624fcc4a1c571691d10b2508e6be565e4752bbc10d9552de8df8f81348c42b.meta.json @@ -1 +1 @@ -{"etag": "\"208e5ea3fb318a2a2fa351e2fba32063\"", "url": "https://schema.cloudformation.us-gov-east-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"386e71d9efa53fa88ff3cea36ea83a8c\"", "url": "https://schema.cloudformation.us-gov-east-1.amazonaws.com/CloudformationSchema.zip"} diff --git a/src/cfnlint/data/DownloadsMetadata/227d6e59c86482f7153466759080e65963a1bf4413531ad420ff60a5a0d7965d.meta.json b/src/cfnlint/data/DownloadsMetadata/227d6e59c86482f7153466759080e65963a1bf4413531ad420ff60a5a0d7965d.meta.json index ec6f4adf81..45201fad9b 100644 --- a/src/cfnlint/data/DownloadsMetadata/227d6e59c86482f7153466759080e65963a1bf4413531ad420ff60a5a0d7965d.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/227d6e59c86482f7153466759080e65963a1bf4413531ad420ff60a5a0d7965d.meta.json @@ -1 +1 @@ -{"etag": "\"b255ebac2df2657f7b3853cdda4672c8\"", "url": "https://schema.cloudformation.me-south-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"30c62c1375c87666435fb0e3c0bbc883\"", "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 5f4ef34fc0..eade48e2b6 100644 --- a/src/cfnlint/data/DownloadsMetadata/23be708e675cb6098b08969e4dbbc3f54cfc32461d10e077e7e5de1fc25d8b8f.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/23be708e675cb6098b08969e4dbbc3f54cfc32461d10e077e7e5de1fc25d8b8f.meta.json @@ -1 +1 @@ -{"etag": "\"f0daba625b77368f810a2ec78b51620b\"", "url": "https://schema.cloudformation.us-gov-west-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"27266e32ed432c4a9dfb8cf654d20cc5\"", "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 657136e415..9f53277b12 100644 --- a/src/cfnlint/data/DownloadsMetadata/26cf4521b683d3267844178a6bcd1d0ad3fe2e7838c23f6acd054944cb2b1618.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/26cf4521b683d3267844178a6bcd1d0ad3fe2e7838c23f6acd054944cb2b1618.meta.json @@ -1 +1 @@ -{"etag": "\"ba9de912dec295b215e37f3abd89acd1\"", "url": "https://schema.cloudformation.me-central-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"4683bbce4d3af1e717610bc383d8f700\"", "url": "https://schema.cloudformation.me-central-1.amazonaws.com/CloudformationSchema.zip"} diff --git a/src/cfnlint/data/DownloadsMetadata/276cecfeb1ec5e608e2aaa06925a2da57e9907e4a512c10ddae70b98b4dada43.meta.json b/src/cfnlint/data/DownloadsMetadata/276cecfeb1ec5e608e2aaa06925a2da57e9907e4a512c10ddae70b98b4dada43.meta.json index 9315bb77c5..0a78e980db 100644 --- a/src/cfnlint/data/DownloadsMetadata/276cecfeb1ec5e608e2aaa06925a2da57e9907e4a512c10ddae70b98b4dada43.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/276cecfeb1ec5e608e2aaa06925a2da57e9907e4a512c10ddae70b98b4dada43.meta.json @@ -1 +1 @@ -{"etag": "\"88be1fa534b8a396909134313ec12038\"", "url": "https://schema.cloudformation.eu-west-2.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"50286e663a50f9dc8ab75d445b2392ac\"", "url": "https://schema.cloudformation.eu-west-2.amazonaws.com/CloudformationSchema.zip"} diff --git a/src/cfnlint/data/DownloadsMetadata/371e40c90b2e47c99f6e275e060ee83a3fbf0a0fb76625ba46dbe42abd34333c.meta.json b/src/cfnlint/data/DownloadsMetadata/371e40c90b2e47c99f6e275e060ee83a3fbf0a0fb76625ba46dbe42abd34333c.meta.json index d37aab5fb9..11805023c7 100644 --- a/src/cfnlint/data/DownloadsMetadata/371e40c90b2e47c99f6e275e060ee83a3fbf0a0fb76625ba46dbe42abd34333c.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/371e40c90b2e47c99f6e275e060ee83a3fbf0a0fb76625ba46dbe42abd34333c.meta.json @@ -1 +1 @@ -{"etag": "\"a77483ff0cf7093429e5aa4b1b75db81\"", "url": "https://schema.cloudformation.cn-northwest-1.amazonaws.com.cn/CloudformationSchema.zip"} +{"etag": "\"3b3729d44f0d9f57ccd2fe307e20401e\"", "url": "https://schema.cloudformation.cn-northwest-1.amazonaws.com.cn/CloudformationSchema.zip"} diff --git a/src/cfnlint/data/DownloadsMetadata/42155835f382d82337be3d2bf832bada376aa3fe15197e3bb0e9290ff8719b4e.meta.json b/src/cfnlint/data/DownloadsMetadata/42155835f382d82337be3d2bf832bada376aa3fe15197e3bb0e9290ff8719b4e.meta.json index 562d2d376a..881cdc6817 100644 --- a/src/cfnlint/data/DownloadsMetadata/42155835f382d82337be3d2bf832bada376aa3fe15197e3bb0e9290ff8719b4e.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/42155835f382d82337be3d2bf832bada376aa3fe15197e3bb0e9290ff8719b4e.meta.json @@ -1 +1 @@ -{"etag": "\"3c2d1d8188e041ecaa9893f34faf31a3\"", "url": "https://schema.cloudformation.af-south-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"9004b04be022bd377cad611a057512f0\"", "url": "https://schema.cloudformation.af-south-1.amazonaws.com/CloudformationSchema.zip"} diff --git a/src/cfnlint/data/DownloadsMetadata/42e9df95722b6524cd001503b6750b86f60a7b5acfc406ebb10d5748cbb8ed41.meta.json b/src/cfnlint/data/DownloadsMetadata/42e9df95722b6524cd001503b6750b86f60a7b5acfc406ebb10d5748cbb8ed41.meta.json index 64a28c1603..a37a61a686 100644 --- a/src/cfnlint/data/DownloadsMetadata/42e9df95722b6524cd001503b6750b86f60a7b5acfc406ebb10d5748cbb8ed41.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/42e9df95722b6524cd001503b6750b86f60a7b5acfc406ebb10d5748cbb8ed41.meta.json @@ -1 +1 @@ -{"etag": "\"23521059871e438fe48cc99ee88be57a\"", "url": "https://schema.cloudformation.us-west-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"7732e27012782c733f6865ad0dba34b7\"", "url": "https://schema.cloudformation.us-west-1.amazonaws.com/CloudformationSchema.zip"} diff --git a/src/cfnlint/data/DownloadsMetadata/4fbb29b69678acdd32c5758ed43ead9bf35136af536e92a84ccbaf062c315066.meta.json b/src/cfnlint/data/DownloadsMetadata/4fbb29b69678acdd32c5758ed43ead9bf35136af536e92a84ccbaf062c315066.meta.json index c4d360bdf8..b6b8545157 100644 --- a/src/cfnlint/data/DownloadsMetadata/4fbb29b69678acdd32c5758ed43ead9bf35136af536e92a84ccbaf062c315066.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/4fbb29b69678acdd32c5758ed43ead9bf35136af536e92a84ccbaf062c315066.meta.json @@ -1 +1 @@ -{"etag": "\"1224999cf325dae249742c5870a983fc\"", "url": "https://schema.cloudformation.eu-central-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"64bfad570c83ada336c53fcba5bd113f\"", "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 4affd9eb60..9805ed5349 100644 --- a/src/cfnlint/data/DownloadsMetadata/56584c7d00e444de640bef01fc2c630804470222e5e4c690bacef5312891581d.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/56584c7d00e444de640bef01fc2c630804470222e5e4c690bacef5312891581d.meta.json @@ -1 +1 @@ -{"etag": "\"180743f536912d18f24c8de42811f9bf\"", "url": "https://schema.cloudformation.ap-south-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"4106b258ed514d54f8e715d0f190fb75\"", "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 053878b2aa..b35f48ca92 100644 --- a/src/cfnlint/data/DownloadsMetadata/583721567eccd1d5855daa623819df1a646b563d773e34b020d0ddeab2fe195b.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/583721567eccd1d5855daa623819df1a646b563d773e34b020d0ddeab2fe195b.meta.json @@ -1 +1 @@ -{"etag": "\"8bb759456e9b3f4c6e418aab0fdbb69d\"", "url": "https://schema.cloudformation.ap-southeast-4.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"8019a0070e5f1529dafb7259ca68c54b\"", "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 8311ba9309..2a44c4e36e 100644 --- a/src/cfnlint/data/DownloadsMetadata/6316ae24f21cb620947aa250bebbee69548d44cc32e246ec9d7742088a2c17f8.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/6316ae24f21cb620947aa250bebbee69548d44cc32e246ec9d7742088a2c17f8.meta.json @@ -1 +1 @@ -{"etag": "\"2354e3507f6c305a5b2cda1e0a7588ae\"", "url": "https://schema.cloudformation.us-east-2.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"2bb20fe6918d551316c72306f5b31791\"", "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 982c785ac8..117c336540 100644 --- a/src/cfnlint/data/DownloadsMetadata/81e1cc73ff2daf7d1e1eca393c2d1fdd98ac34d4109512e0e0947ef752dcb9c9.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/81e1cc73ff2daf7d1e1eca393c2d1fdd98ac34d4109512e0e0947ef752dcb9c9.meta.json @@ -1 +1 @@ -{"etag": "\"cd0871def8a08f7ea64c4ff3a1059aaf\"", "url": "https://schema.cloudformation.ap-southeast-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"7a1a68b4fdcd113b4c4216dcc208a1e0\"", "url": "https://schema.cloudformation.ap-southeast-1.amazonaws.com/CloudformationSchema.zip"} diff --git a/src/cfnlint/data/DownloadsMetadata/8adeabf0a09b37a8ed924aea799005947e4a4542365d35fd75466abcf306eeca.meta.json b/src/cfnlint/data/DownloadsMetadata/8adeabf0a09b37a8ed924aea799005947e4a4542365d35fd75466abcf306eeca.meta.json index 8241c74a52..5ff2a990cd 100644 --- a/src/cfnlint/data/DownloadsMetadata/8adeabf0a09b37a8ed924aea799005947e4a4542365d35fd75466abcf306eeca.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/8adeabf0a09b37a8ed924aea799005947e4a4542365d35fd75466abcf306eeca.meta.json @@ -1 +1 @@ -{"etag": "\"38021be45ce7cd3b4893468b231a7a94\"", "url": "https://schema.cloudformation.ap-northeast-2.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"f6f75465d5679f3f467e67318825c4b7\"", "url": "https://schema.cloudformation.ap-northeast-2.amazonaws.com/CloudformationSchema.zip"} diff --git a/src/cfnlint/data/DownloadsMetadata/8b8b0cee4df1ef0947a8289e8ec0c67869b7533eabab32ecfc0a00cb19e55a5f.meta.json b/src/cfnlint/data/DownloadsMetadata/8b8b0cee4df1ef0947a8289e8ec0c67869b7533eabab32ecfc0a00cb19e55a5f.meta.json index bc673e53fd..a7b2bdddd7 100644 --- a/src/cfnlint/data/DownloadsMetadata/8b8b0cee4df1ef0947a8289e8ec0c67869b7533eabab32ecfc0a00cb19e55a5f.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/8b8b0cee4df1ef0947a8289e8ec0c67869b7533eabab32ecfc0a00cb19e55a5f.meta.json @@ -1 +1 @@ -{"etag": "\"8249cfee6234994a4026dc176aab480e\"", "url": "https://schema.cloudformation.ap-southeast-3.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"42e6403ecb202793d20a5e2ef99e6dbe\"", "url": "https://schema.cloudformation.ap-southeast-3.amazonaws.com/CloudformationSchema.zip"} diff --git a/src/cfnlint/data/DownloadsMetadata/b1f069477cd577cde04dfe1b323c0bb0e783fe32b6bb6b13774c32fcca1d303a.meta.json b/src/cfnlint/data/DownloadsMetadata/b1f069477cd577cde04dfe1b323c0bb0e783fe32b6bb6b13774c32fcca1d303a.meta.json index c53c760579..c12509013a 100644 --- a/src/cfnlint/data/DownloadsMetadata/b1f069477cd577cde04dfe1b323c0bb0e783fe32b6bb6b13774c32fcca1d303a.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/b1f069477cd577cde04dfe1b323c0bb0e783fe32b6bb6b13774c32fcca1d303a.meta.json @@ -1 +1 @@ -{"etag": "\"99281665906d90b0378f063d753b4979\"", "url": "https://schema.cloudformation.ap-east-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"cc8649b6f2d092ab26b469ca6b3aa1ab\"", "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 c9c467be37..d33dc087ee 100644 --- a/src/cfnlint/data/DownloadsMetadata/c7ada205073390b33b7593ef8f304b9705f2567698dfdfa979bf0ccdb68cb856.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/c7ada205073390b33b7593ef8f304b9705f2567698dfdfa979bf0ccdb68cb856.meta.json @@ -1 +1 @@ -{"etag": "\"4f1616bbc9831f36c11596763ab4a5af\"", "url": "https://schema.cloudformation.sa-east-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"41274ec24a0ae4abade30ee039232e48\"", "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 94556d2a54..423fcf8902 100644 --- a/src/cfnlint/data/DownloadsMetadata/d24ce9a45a014b1ff04d479422ea956e92030ae5c03d7451980a15735e557edb.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/d24ce9a45a014b1ff04d479422ea956e92030ae5c03d7451980a15735e557edb.meta.json @@ -1 +1 @@ -{"etag": "\"6660486ee0fb2bd0200c2760409425bb\"", "url": "https://schema.cloudformation.ap-southeast-2.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"fca8c0efb51dbdd2307040ff79fa561b\"", "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 0a305a793e..7f663912a4 100644 --- a/src/cfnlint/data/DownloadsMetadata/d85e2e061cacfcffe4902adb1074a04e6bb7f975b606f8db57532faddfcdd8c8.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/d85e2e061cacfcffe4902adb1074a04e6bb7f975b606f8db57532faddfcdd8c8.meta.json @@ -1 +1 @@ -{"etag": "\"b5d70c06c84568cbed74890c1d033548\"", "url": "https://schema.cloudformation.ca-west-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"ca8b6babd6f5e5fb59a4082a06108161\"", "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 3118f039b0..eca1ab204b 100644 --- a/src/cfnlint/data/DownloadsMetadata/d8e41d35f4f8922b66525dea2c66d72a73ff097c685cda0a63c08a6416dc58ed.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/d8e41d35f4f8922b66525dea2c66d72a73ff097c685cda0a63c08a6416dc58ed.meta.json @@ -1 +1 @@ -{"etag": "\"99d3a231ec6eede3617dd16d2c25e508\"", "url": "https://schema.cloudformation.eu-central-2.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"cbf9ffb996863524d8668a54da7dff9d\"", "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 98797b5c6a..8daa4d2e08 100644 --- a/src/cfnlint/data/DownloadsMetadata/dd98171253ebc36f5b78e247f3132b5f25c8d66a1f84939600616bab42579541.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/dd98171253ebc36f5b78e247f3132b5f25c8d66a1f84939600616bab42579541.meta.json @@ -1 +1 @@ -{"etag": "\"0bf600ed39651d8beda9a78ba24088fd\"", "url": "https://schema.cloudformation.eu-north-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"2462c38c8b0fe97afddd86bcc4c27405\"", "url": "https://schema.cloudformation.eu-north-1.amazonaws.com/CloudformationSchema.zip"} diff --git a/src/cfnlint/data/DownloadsMetadata/df4945435575c690a2651bb31e7a9b48972142778e1ff452383ede2ad4bac3d7.meta.json b/src/cfnlint/data/DownloadsMetadata/df4945435575c690a2651bb31e7a9b48972142778e1ff452383ede2ad4bac3d7.meta.json index d7a67f7dd0..cbe403508e 100644 --- a/src/cfnlint/data/DownloadsMetadata/df4945435575c690a2651bb31e7a9b48972142778e1ff452383ede2ad4bac3d7.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/df4945435575c690a2651bb31e7a9b48972142778e1ff452383ede2ad4bac3d7.meta.json @@ -1 +1 @@ -{"etag": "\"6c11b29e10a25425a8443ad8ee8bd360\"", "url": "https://schema.cloudformation.eu-south-2.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"eed9277f55608503f4a9b51c5c1be9fb\"", "url": "https://schema.cloudformation.eu-south-2.amazonaws.com/CloudformationSchema.zip"} diff --git a/src/cfnlint/data/DownloadsMetadata/e5301e07e25fa2c35d2c7e1f9dcf720826b315ef6f38515840537c02de23abe2.meta.json b/src/cfnlint/data/DownloadsMetadata/e5301e07e25fa2c35d2c7e1f9dcf720826b315ef6f38515840537c02de23abe2.meta.json index 9f4146c459..2080c99d53 100644 --- a/src/cfnlint/data/DownloadsMetadata/e5301e07e25fa2c35d2c7e1f9dcf720826b315ef6f38515840537c02de23abe2.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/e5301e07e25fa2c35d2c7e1f9dcf720826b315ef6f38515840537c02de23abe2.meta.json @@ -1 +1 @@ -{"etag": "\"fee502948b8818ca03753aa2856602e1\"", "url": "https://schema.cloudformation.ca-central-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"c665fb1332437114b6116f46e2a3f2e0\"", "url": "https://schema.cloudformation.ca-central-1.amazonaws.com/CloudformationSchema.zip"} diff --git a/src/cfnlint/data/DownloadsMetadata/e8b3dacc1675b478e8c7392b51f41467cf908a34e6b4c3fb3e97e2b584f651ca.meta.json b/src/cfnlint/data/DownloadsMetadata/e8b3dacc1675b478e8c7392b51f41467cf908a34e6b4c3fb3e97e2b584f651ca.meta.json index 6af454feb7..9d9e68d6e1 100644 --- a/src/cfnlint/data/DownloadsMetadata/e8b3dacc1675b478e8c7392b51f41467cf908a34e6b4c3fb3e97e2b584f651ca.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/e8b3dacc1675b478e8c7392b51f41467cf908a34e6b4c3fb3e97e2b584f651ca.meta.json @@ -1 +1 @@ -{"etag": "\"a70bcd8b7a25f0ef70831f88d983b108\"", "url": "https://schema.cloudformation.eu-west-3.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"806815fd98a18f5606711ac6b1e1828f\"", "url": "https://schema.cloudformation.eu-west-3.amazonaws.com/CloudformationSchema.zip"} diff --git a/src/cfnlint/data/DownloadsMetadata/ea0f7b8f144feb225afe73a24dfdf993318c41c71c21b0a17d4f68d82c5aee21.meta.json b/src/cfnlint/data/DownloadsMetadata/ea0f7b8f144feb225afe73a24dfdf993318c41c71c21b0a17d4f68d82c5aee21.meta.json index 4bc70be9e6..036a48bef7 100644 --- a/src/cfnlint/data/DownloadsMetadata/ea0f7b8f144feb225afe73a24dfdf993318c41c71c21b0a17d4f68d82c5aee21.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/ea0f7b8f144feb225afe73a24dfdf993318c41c71c21b0a17d4f68d82c5aee21.meta.json @@ -1 +1 @@ -{"etag": "\"1f355118f8d8136a650a219497ad6434\"", "url": "https://schema.cloudformation.ap-northeast-3.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"7d3b8bb8ac8ebbf0b831a9c023061e78\"", "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 475d9b6f65..1609876f25 100644 --- a/src/cfnlint/data/DownloadsMetadata/f1896c9151984eec294af1eddf64260f6cd7e4ced378cacdb93f76ed227b5c5d.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/f1896c9151984eec294af1eddf64260f6cd7e4ced378cacdb93f76ed227b5c5d.meta.json @@ -1 +1 @@ -{"etag": "\"bac346adbd45b8c353f21ce4e153ddc9\"", "url": "https://schema.cloudformation.us-west-2.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"82cde0740ebe5c7ed1ffac6f8cde2a60\"", "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 bce65e3341..709dba4183 100644 --- a/src/cfnlint/data/DownloadsMetadata/f49718b210ea89ff182ae51cb7004366b9e2e4d5e38136a5be83b6a55e7a82a1.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/f49718b210ea89ff182ae51cb7004366b9e2e4d5e38136a5be83b6a55e7a82a1.meta.json @@ -1 +1 @@ -{"etag": "\"776c8f9849791c49098d33e416889a3a\"", "url": "https://schema.cloudformation.ap-south-2.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"32a0b3f0f2b39a482059ba56981b5c54\"", "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 cb991fe468..32c3d02766 100644 --- a/src/cfnlint/data/DownloadsMetadata/f54eee6f8ad9619f41835b700369cdbb41c64a9c91b2fa5b4928c0d9b2f780b0.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/f54eee6f8ad9619f41835b700369cdbb41c64a9c91b2fa5b4928c0d9b2f780b0.meta.json @@ -1 +1 @@ -{"etag": "\"5edef4c68021cde237160ea95052d749\"", "url": "https://schema.cloudformation.us-east-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"50c25c47cc0bf5c52a61d1cc2c7deec1\"", "url": "https://schema.cloudformation.us-east-1.amazonaws.com/CloudformationSchema.zip"} diff --git a/src/cfnlint/data/DownloadsMetadata/fa657351d8e89c40ba6b82c4b1f5e1b5e50a1638ffe0a5dba0d8805c190a05f8.meta.json b/src/cfnlint/data/DownloadsMetadata/fa657351d8e89c40ba6b82c4b1f5e1b5e50a1638ffe0a5dba0d8805c190a05f8.meta.json index 0012125041..5ded30536b 100644 --- a/src/cfnlint/data/DownloadsMetadata/fa657351d8e89c40ba6b82c4b1f5e1b5e50a1638ffe0a5dba0d8805c190a05f8.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/fa657351d8e89c40ba6b82c4b1f5e1b5e50a1638ffe0a5dba0d8805c190a05f8.meta.json @@ -1 +1 @@ -{"etag": "\"ad7d904d02ec3fd49b6ec5eaa85721ac\"", "url": "https://schema.cloudformation.eu-west-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"c6b9dba7d55caeeafb9f464dd7f1ea7e\"", "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 932457506e..a83ac5f28b 100644 --- a/src/cfnlint/data/DownloadsMetadata/ff02b7d808c1c00053f09aa43a50addf3b69878d351cffd417dc9a457df808af.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/ff02b7d808c1c00053f09aa43a50addf3b69878d351cffd417dc9a457df808af.meta.json @@ -1 +1 @@ -{"etag": "\"c090009ef7ef43e95643f2c5c8d22d3f\"", "url": "https://schema.cloudformation.ap-northeast-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"d62f024f051a2876c6f2578eaf759f81\"", "url": "https://schema.cloudformation.ap-northeast-1.amazonaws.com/CloudformationSchema.zip"} diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_dynamodb_globaltable/__init__.py b/src/cfnlint/data/schemas/patches/extensions/all/aws_dynamodb_globaltable/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_dynamodb_globaltable/manual.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_dynamodb_globaltable/manual.json new file mode 100644 index 0000000000..1f8fda3711 --- /dev/null +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_dynamodb_globaltable/manual.json @@ -0,0 +1,27 @@ +[ + { + "op": "add", + "path": "/allOf", + "value": [ + { + "if": { + "required": [ + "LocalSecondaryIndexes" + ], + "type": "object" + }, + "then": { + "properties": { + "AttributeDefinitions": { + "minItems": 2 + }, + "KeySchema": { + "minItems": 2 + } + }, + "type": "object" + } + } + ] + } +] diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_dynamodb_table/manual.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_dynamodb_table/manual.json new file mode 100644 index 0000000000..1f8fda3711 --- /dev/null +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_dynamodb_table/manual.json @@ -0,0 +1,27 @@ +[ + { + "op": "add", + "path": "/allOf", + "value": [ + { + "if": { + "required": [ + "LocalSecondaryIndexes" + ], + "type": "object" + }, + "then": { + "properties": { + "AttributeDefinitions": { + "minItems": 2 + }, + "KeySchema": { + "minItems": 2 + } + }, + "type": "object" + } + } + ] + } +] diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_rds_dbinstance/manual.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_rds_dbinstance/manual.json index bc7031b27d..ab6dc24e4b 100644 --- a/src/cfnlint/data/schemas/patches/extensions/all/aws_rds_dbinstance/manual.json +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_rds_dbinstance/manual.json @@ -4,11 +4,6 @@ "path": "/properties/PromotionTier/maximum", "value": 15 }, - { - "op": "add", - "path": "/properties/PromotionTier/minimum", - "value": 0 - }, { "op": "add", "path": "/properties/BackupRetentionPeriod/maximum", diff --git a/src/cfnlint/data/schemas/patches/providers/all/aws_dynamodb_globaltable/__init__.py b/src/cfnlint/data/schemas/patches/providers/all/aws_dynamodb_globaltable/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/cfnlint/data/schemas/patches/providers/all/aws_dynamodb_globaltable/attributedefinitions.json b/src/cfnlint/data/schemas/patches/providers/all/aws_dynamodb_globaltable/attributedefinitions.json new file mode 100644 index 0000000000..bc330b7004 --- /dev/null +++ b/src/cfnlint/data/schemas/patches/providers/all/aws_dynamodb_globaltable/attributedefinitions.json @@ -0,0 +1,9 @@ +[ + { + "op": "add", + "path": "/properties/AttributeDefinitions/uniqueKeys", + "value": [ + "AttributeName" + ] + } +] diff --git a/src/cfnlint/data/schemas/patches/providers/all/aws_dynamodb_globaltable/keyschema.json b/src/cfnlint/data/schemas/patches/providers/all/aws_dynamodb_globaltable/keyschema.json new file mode 100644 index 0000000000..0f71967d4f --- /dev/null +++ b/src/cfnlint/data/schemas/patches/providers/all/aws_dynamodb_globaltable/keyschema.json @@ -0,0 +1,96 @@ +[ + { + "op": "test", + "path": "/properties/KeySchema/items", + "value": { + "$ref": "#/definitions/KeySchema" + } + }, + { + "op": "replace", + "path": "/properties/KeySchema", + "value": { + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 + } + }, + { + "op": "replace", + "path": "/definitions/LocalSecondaryIndex/properties/KeySchema", + "value": { + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 2 + } + }, + { + "op": "replace", + "path": "/definitions/GlobalSecondaryIndex/properties/KeySchema", + "value": { + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 + } + }, + { + "op": "replace", + "path": "/definitions/KeySchema", + "value": { + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "KeyType": { + "enum": [ + "HASH", + "RANGE" + ], + "type": "string" + } + }, + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" + }, + "prefixItems": [ + { + "additionalProperties": false, + "properties": { + "KeyType": { + "const": "HASH", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + }, + { + "properties": { + "KeyType": { + "const": "RANGE", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + } + ], + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] + } + } +] diff --git a/src/cfnlint/data/schemas/patches/providers/all/aws_dynamodb_table/__init__.py b/src/cfnlint/data/schemas/patches/providers/all/aws_dynamodb_table/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/cfnlint/data/schemas/patches/providers/all/aws_dynamodb_table/attributedefinitions.json b/src/cfnlint/data/schemas/patches/providers/all/aws_dynamodb_table/attributedefinitions.json new file mode 100644 index 0000000000..bc330b7004 --- /dev/null +++ b/src/cfnlint/data/schemas/patches/providers/all/aws_dynamodb_table/attributedefinitions.json @@ -0,0 +1,9 @@ +[ + { + "op": "add", + "path": "/properties/AttributeDefinitions/uniqueKeys", + "value": [ + "AttributeName" + ] + } +] diff --git a/src/cfnlint/data/schemas/patches/providers/all/aws_dynamodb_table/keyschema.json b/src/cfnlint/data/schemas/patches/providers/all/aws_dynamodb_table/keyschema.json new file mode 100644 index 0000000000..7aa2a6f2aa --- /dev/null +++ b/src/cfnlint/data/schemas/patches/providers/all/aws_dynamodb_table/keyschema.json @@ -0,0 +1,93 @@ +[ + { + "op": "test", + "path": "/properties/KeySchema/oneOf/0/items", + "value": { + "$ref": "#/definitions/KeySchema" + } + }, + { + "op": "replace", + "path": "/properties/KeySchema/oneOf/0", + "value": { + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 + } + }, + { + "op": "replace", + "path": "/definitions/LocalSecondaryIndex/properties/KeySchema", + "value": { + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 2 + } + }, + { + "op": "replace", + "path": "/definitions/GlobalSecondaryIndex/properties/KeySchema", + "value": { + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 + } + }, + { + "op": "replace", + "path": "/definitions/KeySchema", + "value": { + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "type": "string" + }, + "KeyType": { + "enum": [ + "HASH", + "RANGE" + ], + "type": "string" + } + }, + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" + }, + "prefixItems": [ + { + "properties": { + "KeyType": { + "const": "HASH", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + }, + { + "properties": { + "KeyType": { + "const": "RANGE", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + } + ], + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] + } + } +] diff --git a/src/cfnlint/data/schemas/patches/providers/all/aws_ec2_securitygroup/__init__.py b/src/cfnlint/data/schemas/patches/providers/all/aws_ec2_securitygroup/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/cfnlint/data/schemas/patches/providers/all/aws_ec2_securitygroup/deprecatedproperties.json b/src/cfnlint/data/schemas/patches/providers/all/aws_ec2_securitygroup/deprecatedproperties.json new file mode 100644 index 0000000000..04df98a9ab --- /dev/null +++ b/src/cfnlint/data/schemas/patches/providers/all/aws_ec2_securitygroup/deprecatedproperties.json @@ -0,0 +1,6 @@ +[ + { + "op": "remove", + "path": "/deprecatedProperties" + } +] diff --git a/src/cfnlint/data/schemas/providers/af_south_1/__init__.py b/src/cfnlint/data/schemas/providers/af_south_1/__init__.py index 66a6a634d8..406f640a22 100644 --- a/src/cfnlint/data/schemas/providers/af_south_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/af_south_1/__init__.py @@ -117,6 +117,7 @@ "AWS::DataSync::LocationHDFS", "AWS::Events::Archive", "AWS::MSK::Cluster", + "AWS::SecurityHub::DelegatedAdmin", "AWS::ControlTower::EnabledBaseline", "AWS::EC2::VPCEndpointConnectionNotification", "AWS::CodePipeline::Pipeline", @@ -273,6 +274,7 @@ "AWS::Connect::IntegrationAssociation", "AWS::NetworkManager::CustomerGatewayAssociation", "AWS::IAM::ServerCertificate", + "AWS::GlobalAccelerator::CrossAccountAttachment", "AWS::Events::EventBus", "AWS::SQS::QueueInlinePolicy", "AWS::Organizations::Organization", @@ -310,6 +312,7 @@ "AWS::EFS::FileSystem", "AWS::Connect::QuickConnect", "AWS::Logs::QueryDefinition", + "AWS::SecurityHub::ProductSubscription", "AWS::IAM::InstanceProfile", "AWS::DataSync::LocationNFS", "AWS::SageMaker::Domain", @@ -557,6 +560,7 @@ "AWS::EC2::ClientVpnTargetNetworkAssociation", "AWS::AppSync::GraphQLApi", "AWS::EC2::EgressOnlyInternetGateway", + "AWS::SecurityHub::Insight", "AWS::EC2::VPCCidrBlock", "AWS::IAM::VirtualMFADevice", "AWS::EC2::NetworkInsightsPath", @@ -785,7 +789,6 @@ "aws-ecs-service.json", "aws-ram-resourceshare.json", "aws-dms-replicationconfig.json", - "aws-ec2-securitygroupegress.json", "aws-ec2-localgatewayroutetablevpcassociation.json", "aws-config-organizationconfigrule.json", "aws-glue-dataqualityruleset.json", @@ -804,7 +807,6 @@ "aws-apigateway-model.json", "aws-apigatewayv2-integrationresponse.json", "aws-ec2-networkacl.json", - "aws-lambda-eventsourcemapping.json", "aws-logs-resourcepolicy.json", "aws-lex-botversion.json", "aws-servicecatalog-launchnotificationconstraint.json", @@ -871,6 +873,7 @@ "aws-datasync-locationhdfs.json", "aws-events-archive.json", "aws-msk-cluster.json", + "aws-securityhub-delegatedadmin.json", "aws-controltower-enabledbaseline.json", "aws-ec2-vpcendpointconnectionnotification.json", "aws-config-configurationaggregator.json", @@ -943,7 +946,6 @@ "aws-logs-loganomalydetector.json", "aws-ec2-transitgatewaymulticastdomainassociation.json", "aws-s3outposts-endpoint.json", - "aws-ec2-transitgatewayroutetableassociation.json", "aws-appconfig-environment.json", "aws-imagebuilder-image.json", "aws-elasticache-securitygroupingress.json", @@ -1013,6 +1015,7 @@ "aws-connect-integrationassociation.json", "aws-networkmanager-customergatewayassociation.json", "aws-iam-servercertificate.json", + "aws-globalaccelerator-crossaccountattachment.json", "aws-events-eventbus.json", "aws-sqs-queueinlinepolicy.json", "aws-organizations-organization.json", @@ -1049,6 +1052,7 @@ "aws-efs-filesystem.json", "aws-connect-quickconnect.json", "aws-logs-querydefinition.json", + "aws-securityhub-productsubscription.json", "aws-iam-instanceprofile.json", "aws-datasync-locationnfs.json", "aws-sagemaker-domain.json", @@ -1132,6 +1136,7 @@ "aws-rolesanywhere-crl.json", "aws-sns-topicinlinepolicy.json", "aws-connect-evaluationform.json", + "aws-redshift-clusterparametergroup.json", "aws-organizations-policy.json", "aws-glue-trigger.json", "aws-globalaccelerator-listener.json", @@ -1188,6 +1193,7 @@ "aws-logs-accountpolicy.json", "aws-s3-bucketpolicy.json", "aws-appsync-graphqlschema.json", + "aws-redshift-cluster.json", "aws-codebuild-sourcecredential.json", "aws-emr-instancefleetconfig.json", "aws-emr-cluster.json", @@ -1216,7 +1222,6 @@ "aws-datasync-locationefs.json", "aws-ec2-localgatewayroutetable.json", "aws-apigateway-resource.json", - "aws-sagemaker-appimageconfig.json", "aws-macie-session.json", "aws-elasticloadbalancingv2-targetgroup.json", "aws-applicationautoscaling-scalingpolicy.json", @@ -1227,6 +1232,7 @@ "aws-lambda-layerversionpermission.json", "aws-secretsmanager-secret.json", "aws-route53resolver-resolverconfig.json", + "aws-elasticache-user.json", "aws-sagemaker-image.json", "aws-logs-subscriptionfilter.json", "aws-codedeploy-application.json", @@ -1279,11 +1285,10 @@ "aws-ec2-clientvpntargetnetworkassociation.json", "aws-appsync-graphqlapi.json", "aws-ec2-egressonlyinternetgateway.json", - "aws-ec2-vpccidrblock.json", + "aws-securityhub-insight.json", "aws-iam-virtualmfadevice.json", "aws-ec2-networkinsightspath.json", "aws-mediatailor-vodsource.json", - "aws-acmpca-certificateauthority.json", "aws-athena-preparedstatement.json", "aws-autoscaling-scheduledaction.json", "aws-cognito-identitypoolprincipaltag.json", @@ -1339,6 +1344,7 @@ "aws-apigatewayv2-authorizer.json", "aws-sagemaker-userprofile.json", "aws-ec2-prefixlist.json", + "aws-ec2-instance.json", "aws-networkmanager-device.json", "aws-ec2-subnetcidrblock.json", "aws-elasticbeanstalk-applicationversion.json", diff --git a/src/cfnlint/data/schemas/providers/af_south_1/aws-acmpca-certificateauthority.json b/src/cfnlint/data/schemas/providers/af_south_1/aws-acmpca-certificateauthority.json new file mode 100644 index 0000000000..08ec85e5fa --- /dev/null +++ b/src/cfnlint/data/schemas/providers/af_south_1/aws-acmpca-certificateauthority.json @@ -0,0 +1,429 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Type", + "/properties/KeyAlgorithm", + "/properties/SigningAlgorithm", + "/properties/Subject", + "/properties/CsrExtensions", + "/properties/KeyStorageSecurityStandard", + "/properties/UsageMode" + ], + "definitions": { + "AccessDescription": { + "additionalProperties": false, + "properties": { + "AccessLocation": { + "$ref": "#/definitions/GeneralName" + }, + "AccessMethod": { + "$ref": "#/definitions/AccessMethod" + } + }, + "required": [ + "AccessMethod", + "AccessLocation" + ], + "type": "object" + }, + "AccessMethod": { + "additionalProperties": false, + "properties": { + "AccessMethodType": { + "$ref": "#/definitions/AccessMethodType" + }, + "CustomObjectIdentifier": { + "$ref": "#/definitions/CustomObjectIdentifier" + } + }, + "type": "object" + }, + "AccessMethodType": { + "type": "string" + }, + "Arn": { + "type": "string" + }, + "CrlConfiguration": { + "additionalProperties": false, + "properties": { + "CrlDistributionPointExtensionConfiguration": { + "$ref": "#/definitions/CrlDistributionPointExtensionConfiguration" + }, + "CustomCname": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + }, + "ExpirationInDays": { + "type": "integer" + }, + "S3BucketName": { + "type": "string" + }, + "S3ObjectAcl": { + "type": "string" + } + }, + "type": "object" + }, + "CrlDistributionPointExtensionConfiguration": { + "additionalProperties": false, + "properties": { + "OmitExtension": { + "type": "boolean" + } + }, + "required": [ + "OmitExtension" + ], + "type": "object" + }, + "CsrExtensions": { + "additionalProperties": false, + "properties": { + "KeyUsage": { + "$ref": "#/definitions/KeyUsage" + }, + "SubjectInformationAccess": { + "$ref": "#/definitions/SubjectInformationAccess" + } + }, + "type": "object" + }, + "CustomAttribute": { + "additionalProperties": false, + "properties": { + "ObjectIdentifier": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "ObjectIdentifier", + "Value" + ], + "type": "object" + }, + "CustomAttributeList": { + "items": { + "$ref": "#/definitions/CustomAttribute" + }, + "type": "array" + }, + "CustomObjectIdentifier": { + "type": "string" + }, + "DnsName": { + "type": "string" + }, + "EdiPartyName": { + "additionalProperties": false, + "properties": { + "NameAssigner": { + "type": "string" + }, + "PartyName": { + "type": "string" + } + }, + "required": [ + "PartyName", + "NameAssigner" + ], + "type": "object" + }, + "GeneralName": { + "additionalProperties": false, + "properties": { + "DirectoryName": { + "$ref": "#/definitions/Subject" + }, + "DnsName": { + "$ref": "#/definitions/DnsName" + }, + "EdiPartyName": { + "$ref": "#/definitions/EdiPartyName" + }, + "IpAddress": { + "$ref": "#/definitions/IpAddress" + }, + "OtherName": { + "$ref": "#/definitions/OtherName" + }, + "RegisteredId": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Rfc822Name": { + "$ref": "#/definitions/Rfc822Name" + }, + "UniformResourceIdentifier": { + "$ref": "#/definitions/UniformResourceIdentifier" + } + }, + "type": "object" + }, + "IpAddress": { + "type": "string" + }, + "KeyUsage": { + "additionalProperties": false, + "properties": { + "CRLSign": { + "default": false, + "type": "boolean" + }, + "DataEncipherment": { + "default": false, + "type": "boolean" + }, + "DecipherOnly": { + "default": false, + "type": "boolean" + }, + "DigitalSignature": { + "default": false, + "type": "boolean" + }, + "EncipherOnly": { + "default": false, + "type": "boolean" + }, + "KeyAgreement": { + "default": false, + "type": "boolean" + }, + "KeyCertSign": { + "default": false, + "type": "boolean" + }, + "KeyEncipherment": { + "default": false, + "type": "boolean" + }, + "NonRepudiation": { + "default": false, + "type": "boolean" + } + }, + "type": "object" + }, + "OcspConfiguration": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + }, + "OcspCustomCname": { + "type": "string" + } + }, + "type": "object" + }, + "OtherName": { + "additionalProperties": false, + "properties": { + "TypeId": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "TypeId", + "Value" + ], + "type": "object" + }, + "RevocationConfiguration": { + "additionalProperties": false, + "properties": { + "CrlConfiguration": { + "$ref": "#/definitions/CrlConfiguration" + }, + "OcspConfiguration": { + "$ref": "#/definitions/OcspConfiguration" + } + }, + "type": "object" + }, + "Rfc822Name": { + "type": "string" + }, + "Subject": { + "additionalProperties": false, + "properties": { + "CommonName": { + "type": "string" + }, + "Country": { + "type": "string" + }, + "CustomAttributes": { + "$ref": "#/definitions/CustomAttributeList" + }, + "DistinguishedNameQualifier": { + "type": "string" + }, + "GenerationQualifier": { + "type": "string" + }, + "GivenName": { + "type": "string" + }, + "Initials": { + "type": "string" + }, + "Locality": { + "type": "string" + }, + "Organization": { + "type": "string" + }, + "OrganizationalUnit": { + "type": "string" + }, + "Pseudonym": { + "type": "string" + }, + "SerialNumber": { + "type": "string" + }, + "State": { + "type": "string" + }, + "Surname": { + "type": "string" + }, + "Title": { + "type": "string" + } + }, + "type": "object" + }, + "SubjectInformationAccess": { + "items": { + "$ref": "#/definitions/AccessDescription" + }, + "type": "array" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "UniformResourceIdentifier": { + "type": "string" + } + }, + "handlers": { + "create": { + "permissions": [ + "acm-pca:CreateCertificateAuthority", + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr" + ] + }, + "delete": { + "permissions": [ + "acm-pca:DeleteCertificateAuthority", + "acm-pca:DescribeCertificateAuthority" + ] + }, + "list": { + "permissions": [ + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr", + "acm-pca:ListCertificateAuthorities", + "acm-pca:ListTags" + ] + }, + "read": { + "permissions": [ + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr", + "acm-pca:ListTags" + ] + }, + "update": { + "permissions": [ + "acm-pca:ListTags", + "acm-pca:TagCertificateAuthority", + "acm-pca:UntagCertificateAuthority", + "acm-pca:UpdateCertificateAuthority" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "$ref": "#/definitions/Arn" + }, + "CertificateSigningRequest": { + "type": "string" + }, + "CsrExtensions": { + "$ref": "#/definitions/CsrExtensions" + }, + "KeyAlgorithm": { + "type": "string" + }, + "KeyStorageSecurityStandard": { + "type": "string" + }, + "RevocationConfiguration": { + "$ref": "#/definitions/RevocationConfiguration" + }, + "SigningAlgorithm": { + "type": "string" + }, + "Subject": { + "$ref": "#/definitions/Subject" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "Type": { + "type": "string" + }, + "UsageMode": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CertificateSigningRequest" + ], + "required": [ + "Type", + "KeyAlgorithm", + "SigningAlgorithm", + "Subject" + ], + "sourceUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_ACMPCA.html", + "typeName": "AWS::ACMPCA::CertificateAuthority", + "writeOnlyProperties": [ + "/properties/Subject", + "/properties/Subject", + "/properties/CsrExtensions", + "/properties/Tags", + "/properties/RevocationConfiguration", + "/properties/KeyStorageSecurityStandard" + ] +} diff --git a/src/cfnlint/data/schemas/providers/af_south_1/aws-dynamodb-globaltable.json b/src/cfnlint/data/schemas/providers/af_south_1/aws-dynamodb-globaltable.json index 4e5ba995cb..ae37e9142b 100644 --- a/src/cfnlint/data/schemas/providers/af_south_1/aws-dynamodb-globaltable.json +++ b/src/cfnlint/data/schemas/providers/af_south_1/aws-dynamodb-globaltable.json @@ -8,6 +8,27 @@ ] ], "additionalProperties": false, + "allOf": [ + { + "if": { + "required": [ + "LocalSecondaryIndexes" + ], + "type": "object" + }, + "then": { + "properties": { + "AttributeDefinitions": { + "minItems": 2 + }, + "KeySchema": { + "minItems": 2 + } + }, + "type": "object" + } + } + ], "createOnlyProperties": [ "/properties/LocalSecondaryIndexes", "/properties/TableName", @@ -79,13 +100,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "minItems": 1, - "type": "array", - "uniqueItems": true + "minItems": 1 }, "Projection": { "$ref": "#/definitions/Projection" @@ -102,22 +119,60 @@ "type": "object" }, "KeySchema": { - "additionalProperties": false, - "properties": { - "AttributeName": { - "maxLength": 255, - "minLength": 1, - "type": "string" + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "KeyType": { + "enum": [ + "HASH", + "RANGE" + ], + "type": "string" + } }, - "KeyType": { - "type": "string" - } + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" }, - "required": [ - "KeyType", - "AttributeName" + "prefixItems": [ + { + "additionalProperties": false, + "properties": { + "KeyType": { + "const": "HASH", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + }, + { + "properties": { + "KeyType": { + "const": "RANGE", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + } ], - "type": "object" + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "KinesisStreamSpecification": { "additionalProperties": false, @@ -147,12 +202,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "type": "array", - "uniqueItems": true + "minItems": 2 }, "Projection": { "$ref": "#/definitions/Projection" @@ -511,7 +563,10 @@ }, "minItems": 1, "type": "array", - "uniqueItems": true + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "BillingMode": { "type": "string" @@ -525,13 +580,9 @@ "uniqueItems": true }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "minItems": 1, - "type": "array", - "uniqueItems": true + "minItems": 1 }, "LocalSecondaryIndexes": { "insertionOrder": false, diff --git a/src/cfnlint/data/schemas/providers/af_south_1/aws-dynamodb-table.json b/src/cfnlint/data/schemas/providers/af_south_1/aws-dynamodb-table.json index efc82f1d70..f21d084b10 100644 --- a/src/cfnlint/data/schemas/providers/af_south_1/aws-dynamodb-table.json +++ b/src/cfnlint/data/schemas/providers/af_south_1/aws-dynamodb-table.json @@ -1,5 +1,26 @@ { "additionalProperties": false, + "allOf": [ + { + "if": { + "required": [ + "LocalSecondaryIndexes" + ], + "type": "object" + }, + "then": { + "properties": { + "AttributeDefinitions": { + "minItems": 2 + }, + "KeySchema": { + "minItems": 2 + } + }, + "type": "object" + } + } + ], "cfnLint": [ "AWS::DynamoDB::Table/Properties" ], @@ -95,11 +116,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 }, "Projection": { "$ref": "#/definitions/Projection" @@ -147,24 +166,57 @@ "type": "object" }, "KeySchema": { - "additionalProperties": false, - "properties": { - "AttributeName": { - "type": "string" + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "type": "string" + }, + "KeyType": { + "enum": [ + "HASH", + "RANGE" + ], + "type": "string" + } }, - "KeyType": { - "enum": [ - "HASH", - "RANGE" + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" + }, + "prefixItems": [ + { + "properties": { + "KeyType": { + "const": "HASH", + "type": "string" + } + }, + "required": [ + "KeyType" ], - "type": "string" + "type": "object" + }, + { + "properties": { + "KeyType": { + "const": "RANGE", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" } - }, - "required": [ - "KeyType", - "AttributeName" ], - "type": "object" + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "KinesisStreamSpecification": { "additionalProperties": false, @@ -192,11 +244,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 2 }, "Projection": { "$ref": "#/definitions/Projection" @@ -451,7 +501,10 @@ "$ref": "#/definitions/AttributeDefinition" }, "type": "array", - "uniqueItems": true + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "BillingMode": { "enum": [ @@ -479,11 +532,9 @@ "KeySchema": { "oneOf": [ { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 }, { "type": "object" diff --git a/src/cfnlint/data/schemas/providers/af_south_1/aws-ec2-instance.json b/src/cfnlint/data/schemas/providers/af_south_1/aws-ec2-instance.json deleted file mode 100644 index 7b3bfed595..0000000000 --- a/src/cfnlint/data/schemas/providers/af_south_1/aws-ec2-instance.json +++ /dev/null @@ -1,571 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ElasticGpuSpecifications", - "/properties/Ipv6Addresses", - "/properties/PlacementGroupName", - "/properties/HostResourceGroupArn", - "/properties/ImageId", - "/properties/CpuOptions", - "/properties/PrivateIpAddress", - "/properties/ElasticInferenceAccelerators", - "/properties/EnclaveOptions", - "/properties/HibernationOptions", - "/properties/KeyName", - "/properties/LicenseSpecifications", - "/properties/NetworkInterfaces", - "/properties/AvailabilityZone", - "/properties/SubnetId", - "/properties/LaunchTemplate", - "/properties/SecurityGroups", - "/properties/Ipv6AddressCount" - ], - "definitions": { - "AssociationParameter": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "BlockDeviceMapping": { - "additionalProperties": false, - "properties": { - "DeviceName": { - "type": "string" - }, - "Ebs": { - "$ref": "#/definitions/Ebs" - }, - "NoDevice": { - "$ref": "#/definitions/NoDevice" - }, - "VirtualName": { - "type": "string" - } - }, - "required": [ - "DeviceName" - ], - "requiredXor": [ - "VirtualName", - "Ebs", - "NoDevice" - ], - "type": "object" - }, - "CpuOptions": { - "additionalProperties": false, - "properties": { - "CoreCount": { - "type": "integer" - }, - "ThreadsPerCore": { - "type": "integer" - } - }, - "type": "object" - }, - "CreditSpecification": { - "additionalProperties": false, - "properties": { - "CPUCredits": { - "type": "string" - } - }, - "type": "object" - }, - "Ebs": { - "additionalProperties": false, - "properties": { - "DeleteOnTermination": { - "type": "boolean" - }, - "Encrypted": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "KmsKeyId": { - "type": "string" - }, - "SnapshotId": { - "type": "string" - }, - "VolumeSize": { - "type": "integer" - }, - "VolumeType": { - "type": "string" - } - }, - "type": "object" - }, - "ElasticGpuSpecification": { - "additionalProperties": false, - "properties": { - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "ElasticInferenceAccelerator": { - "additionalProperties": false, - "properties": { - "Count": { - "type": "integer" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "EnclaveOptions": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - } - }, - "type": "object" - }, - "HibernationOptions": { - "additionalProperties": false, - "properties": { - "Configured": { - "type": "boolean" - } - }, - "type": "object" - }, - "InstanceIpv6Address": { - "additionalProperties": false, - "properties": { - "Ipv6Address": { - "type": "string" - } - }, - "required": [ - "Ipv6Address" - ], - "type": "object" - }, - "LaunchTemplateSpecification": { - "additionalProperties": false, - "properties": { - "LaunchTemplateId": { - "type": "string" - }, - "LaunchTemplateName": { - "type": "string" - }, - "Version": { - "type": "string" - } - }, - "required": [ - "Version" - ], - "type": "object" - }, - "LicenseSpecification": { - "additionalProperties": false, - "properties": { - "LicenseConfigurationArn": { - "type": "string" - } - }, - "required": [ - "LicenseConfigurationArn" - ], - "type": "object" - }, - "NetworkInterface": { - "additionalProperties": false, - "properties": { - "AssociateCarrierIpAddress": { - "type": "boolean" - }, - "AssociatePublicIpAddress": { - "type": "boolean" - }, - "DeleteOnTermination": { - "type": "boolean" - }, - "Description": { - "type": "string" - }, - "DeviceIndex": { - "type": "string" - }, - "GroupSet": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": false - }, - "NetworkInterfaceId": { - "type": "string" - }, - "PrivateIpAddress": { - "type": "string" - }, - "PrivateIpAddresses": { - "items": { - "$ref": "#/definitions/PrivateIpAddressSpecification" - }, - "type": "array", - "uniqueItems": false - }, - "SecondaryPrivateIpAddressCount": { - "type": "integer" - }, - "SubnetId": { - "type": "string" - } - }, - "required": [ - "DeviceIndex" - ], - "type": "object" - }, - "NoDevice": { - "additionalProperties": false, - "type": "object" - }, - "PrivateDnsNameOptions": { - "additionalProperties": false, - "properties": { - "EnableResourceNameDnsAAAARecord": { - "type": "boolean" - }, - "EnableResourceNameDnsARecord": { - "type": "boolean" - }, - "HostnameType": { - "type": "string" - } - }, - "type": "object" - }, - "PrivateIpAddressSpecification": { - "additionalProperties": false, - "properties": { - "Primary": { - "type": "boolean" - }, - "PrivateIpAddress": { - "type": "string" - } - }, - "required": [ - "PrivateIpAddress", - "Primary" - ], - "type": "object" - }, - "SsmAssociation": { - "additionalProperties": false, - "properties": { - "AssociationParameters": { - "items": { - "$ref": "#/definitions/AssociationParameter" - }, - "type": "array", - "uniqueItems": false - }, - "DocumentName": { - "type": "string" - } - }, - "required": [ - "DocumentName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "Volume": { - "additionalProperties": false, - "properties": { - "Device": { - "type": "string" - }, - "VolumeId": { - "type": "string" - } - }, - "required": [ - "VolumeId", - "Device" - ], - "type": "object" - } - }, - "dependentExcluded": { - "NetworkInterfaces": [ - "SubnetId" - ], - "SubnetId": [ - "NetworkInterfaces" - ] - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AdditionalInfo": { - "type": "string" - }, - "Affinity": { - "enum": [ - "default", - "host" - ], - "type": "string" - }, - "AvailabilityZone": { - "cfnLint": [ - "AWS::EC2::Instance/Properties/AvailabilityZone" - ], - "type": "string" - }, - "BlockDeviceMappings": { - "items": { - "$ref": "#/definitions/BlockDeviceMapping" - }, - "type": "array", - "uniqueItems": false - }, - "CpuOptions": { - "$ref": "#/definitions/CpuOptions" - }, - "CreditSpecification": { - "$ref": "#/definitions/CreditSpecification" - }, - "DisableApiTermination": { - "type": "boolean" - }, - "EbsOptimized": { - "type": "boolean" - }, - "ElasticGpuSpecifications": { - "items": { - "$ref": "#/definitions/ElasticGpuSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "ElasticInferenceAccelerators": { - "items": { - "$ref": "#/definitions/ElasticInferenceAccelerator" - }, - "type": "array", - "uniqueItems": true - }, - "EnclaveOptions": { - "$ref": "#/definitions/EnclaveOptions" - }, - "HibernationOptions": { - "$ref": "#/definitions/HibernationOptions" - }, - "HostId": { - "type": "string" - }, - "HostResourceGroupArn": { - "type": "string" - }, - "IamInstanceProfile": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "ImageId": { - "type": "string" - }, - "InstanceInitiatedShutdownBehavior": { - "type": "string" - }, - "InstanceType": { - "cfnLint": [ - "AWS::EC2::Instance/Properties/InstanceType" - ], - "type": "string" - }, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": false - }, - "KernelId": { - "type": "string" - }, - "KeyName": { - "type": "string" - }, - "LaunchTemplate": { - "$ref": "#/definitions/LaunchTemplateSpecification" - }, - "LicenseSpecifications": { - "items": { - "$ref": "#/definitions/LicenseSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "Monitoring": { - "type": "boolean" - }, - "NetworkInterfaces": { - "items": { - "$ref": "#/definitions/NetworkInterface" - }, - "type": "array", - "uniqueItems": false - }, - "PlacementGroupName": { - "type": "string" - }, - "PrivateDnsName": { - "type": "string" - }, - "PrivateDnsNameOptions": { - "$ref": "#/definitions/PrivateDnsNameOptions" - }, - "PrivateIp": { - "type": "string" - }, - "PrivateIpAddress": { - "type": "string" - }, - "PropagateTagsToVolumeOnCreation": { - "type": "boolean" - }, - "PublicDnsName": { - "type": "string" - }, - "PublicIp": { - "type": "string" - }, - "RamdiskId": { - "type": "string" - }, - "SecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SecurityGroups": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SourceDestCheck": { - "type": "boolean" - }, - "SsmAssociations": { - "items": { - "$ref": "#/definitions/SsmAssociation" - }, - "type": "array", - "uniqueItems": false - }, - "SubnetId": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "Tenancy": { - "enum": [ - "default", - "dedicated", - "host" - ], - "type": "string" - }, - "UserData": { - "type": "string" - }, - "Volumes": { - "items": { - "$ref": "#/definitions/Volume" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/PublicIp", - "/properties/Id", - "/properties/PublicDnsName", - "/properties/PrivateDnsName", - "/properties/PrivateIp" - ], - "requiredXor": [ - "ImageId", - "LaunchTemplate" - ], - "typeName": "AWS::EC2::Instance" -} diff --git a/src/cfnlint/data/schemas/providers/af_south_1/aws-ec2-securitygroupegress.json b/src/cfnlint/data/schemas/providers/af_south_1/aws-ec2-securitygroupegress.json new file mode 100644 index 0000000000..f94631dad2 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/af_south_1/aws-ec2-securitygroupegress.json @@ -0,0 +1,98 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::EC2::SecurityGroupEgress/Properties" + ], + "createOnlyProperties": [ + "/properties/IpProtocol", + "/properties/DestinationSecurityGroupId", + "/properties/ToPort", + "/properties/CidrIp", + "/properties/FromPort", + "/properties/GroupId", + "/properties/CidrIpv6", + "/properties/DestinationPrefixListId" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:AuthorizeSecurityGroupEgress", + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "delete": { + "permissions": [ + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "update": { + "permissions": [ + "ec2:UpdateSecurityGroupRuleDescriptionsEgress" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CidrIp": { + "type": "string" + }, + "CidrIpv6": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "DestinationPrefixListId": { + "type": "string" + }, + "DestinationSecurityGroupId": { + "type": "string" + }, + "FromPort": { + "minimum": -1, + "type": "integer" + }, + "GroupId": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "IpProtocol": { + "type": "string" + }, + "ToPort": { + "minimum": -1, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IpProtocol", + "GroupId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SecurityGroupEgress" +} diff --git a/src/cfnlint/data/schemas/providers/af_south_1/aws-ec2-transitgatewayroutetableassociation.json b/src/cfnlint/data/schemas/providers/af_south_1/aws-ec2-transitgatewayroutetableassociation.json new file mode 100644 index 0000000000..890b2c4be2 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/af_south_1/aws-ec2-transitgatewayroutetableassociation.json @@ -0,0 +1,29 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TransitGatewayRouteTableId", + "/properties/TransitGatewayAttachmentId" + ], + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "type": "string" + }, + "TransitGatewayAttachmentId": { + "type": "string" + }, + "TransitGatewayRouteTableId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "TransitGatewayRouteTableId", + "TransitGatewayAttachmentId" + ], + "typeName": "AWS::EC2::TransitGatewayRouteTableAssociation" +} diff --git a/src/cfnlint/data/schemas/providers/eu_central_1/aws-ec2-vpccidrblock.json b/src/cfnlint/data/schemas/providers/af_south_1/aws-ec2-vpccidrblock.json similarity index 97% rename from src/cfnlint/data/schemas/providers/eu_central_1/aws-ec2-vpccidrblock.json rename to src/cfnlint/data/schemas/providers/af_south_1/aws-ec2-vpccidrblock.json index 1edb40abaa..decf420b9b 100644 --- a/src/cfnlint/data/schemas/providers/eu_central_1/aws-ec2-vpccidrblock.json +++ b/src/cfnlint/data/schemas/providers/af_south_1/aws-ec2-vpccidrblock.json @@ -85,6 +85,7 @@ "readOnlyProperties": [ "/properties/Id" ], + "replacementStrategy": "delete_then_create", "required": [ "VpcId" ], diff --git a/src/cfnlint/data/schemas/providers/ca_west_1/aws-lambda-eventsourcemapping.json b/src/cfnlint/data/schemas/providers/af_south_1/aws-lambda-eventsourcemapping.json similarity index 93% rename from src/cfnlint/data/schemas/providers/ca_west_1/aws-lambda-eventsourcemapping.json rename to src/cfnlint/data/schemas/providers/af_south_1/aws-lambda-eventsourcemapping.json index e7a75d62d7..cb7599c139 100644 --- a/src/cfnlint/data/schemas/providers/ca_west_1/aws-lambda-eventsourcemapping.json +++ b/src/cfnlint/data/schemas/providers/af_south_1/aws-lambda-eventsourcemapping.json @@ -115,7 +115,7 @@ "Destination": { "maxLength": 1024, "minLength": 12, - "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?(-iso)?(-isob)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", "type": "string" } }, @@ -231,7 +231,7 @@ "EventSourceArn": { "maxLength": 1024, "minLength": 12, - "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?(-iso)?(-isob)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", "type": "string" }, "FilterCriteria": { @@ -240,7 +240,7 @@ "FunctionName": { "maxLength": 140, "minLength": 1, - "pattern": "(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?(-iso)?(-isob)?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?", + "pattern": "(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?", "type": "string" }, "FunctionResponseTypes": { @@ -343,20 +343,11 @@ "type": "integer" } }, - "propertyTransform": { - "/properties/StartingPositionTimestamp": "StartingPositionTimestamp * 1000" - }, "readOnlyProperties": [ "/properties/Id" ], "required": [ "FunctionName" ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, "typeName": "AWS::Lambda::EventSourceMapping" } diff --git a/src/cfnlint/data/schemas/providers/af_south_1/aws-redshift-cluster.json b/src/cfnlint/data/schemas/providers/af_south_1/aws-redshift-cluster.json deleted file mode 100644 index bdd4d92992..0000000000 --- a/src/cfnlint/data/schemas/providers/af_south_1/aws-redshift-cluster.json +++ /dev/null @@ -1,332 +0,0 @@ -{ - "additionalProperties": false, - "cfnLint": "AWS::Redshift::Cluster/Properties", - "createOnlyProperties": [ - "/properties/ClusterIdentifier", - "/properties/OwnerAccount", - "/properties/SnapshotIdentifier", - "/properties/DBName", - "/properties/SnapshotClusterIdentifier", - "/properties/ClusterSubnetGroupName", - "/properties/MasterUsername" - ], - "definitions": { - "Endpoint": { - "additionalProperties": false, - "properties": { - "Address": { - "type": "string" - }, - "Port": { - "type": "string" - } - }, - "type": "object" - }, - "LoggingProperties": { - "additionalProperties": false, - "properties": { - "BucketName": { - "type": "string" - }, - "S3KeyPrefix": { - "type": "string" - } - }, - "required": [ - "BucketName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 127, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 255, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "redshift:DescribeClusters", - "redshift:CreateCluster", - "redshift:RestoreFromClusterSnapshot", - "redshift:EnableLogging", - "redshift:DescribeTags" - ], - "timeoutInMinutes": 2160 - }, - "delete": { - "permissions": [ - "redshift:DescribeTags", - "redshift:DescribeClusters", - "redshift:DeleteCluster" - ], - "timeoutInMinutes": 2160 - }, - "list": { - "permissions": [ - "redshift:DescribeTags", - "redshift:DescribeClusters" - ] - }, - "read": { - "permissions": [ - "redshift:DescribeClusters", - "redshift:DescribeLoggingStatus", - "redshift:DescribeSnapshotCopyGrant", - "redshift:DescribeClusterDbRevisions", - "redshift:DescribeTags" - ] - }, - "update": { - "permissions": [ - "redshift:DescribeClusters", - "redshift:ModifyCluster", - "redshift:ModifyClusterIamRoles", - "redshift:EnableLogging", - "redshift:CreateTags", - "redshift:DeleteTags", - "redshift:DescribeTags", - "redshift:DisableLogging", - "redshift:RebootCluster", - "redshift:EnableSnapshotCopy", - "redshift:DisableSnapshotCopy", - "redshift:ModifySnapshotCopyRetentionPeriod", - "redshift:ModifyAquaConfiguration", - "redshift:ResizeCluster", - "redshift:ModifyClusterMaintenance", - "redshift:DescribeClusterDbRevisions", - "redshift:ModifyClusterDbRevisions", - "redshift:PauseCluster", - "redshift:ResumeCluster", - "redshift:RotateEncryptionKey", - "redshift:FailoverPrimaryCompute" - ], - "timeoutInMinutes": 2160 - } - }, - "primaryIdentifier": [ - "/properties/ClusterIdentifier" - ], - "properties": { - "AllowVersionUpgrade": { - "type": "boolean" - }, - "AquaConfigurationStatus": { - "type": "string" - }, - "AutomatedSnapshotRetentionPeriod": { - "type": "integer" - }, - "AvailabilityZone": { - "type": "string" - }, - "AvailabilityZoneRelocation": { - "type": "boolean" - }, - "AvailabilityZoneRelocationStatus": { - "type": "string" - }, - "Classic": { - "type": "boolean" - }, - "ClusterIdentifier": { - "maxLength": 63, - "type": "string" - }, - "ClusterParameterGroupName": { - "maxLength": 255, - "type": "string" - }, - "ClusterSecurityGroups": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "ClusterSubnetGroupName": { - "type": "string" - }, - "ClusterType": { - "type": "string" - }, - "ClusterVersion": { - "type": "string" - }, - "DBName": { - "type": "string" - }, - "DeferMaintenance": { - "type": "boolean" - }, - "DeferMaintenanceDuration": { - "type": "integer" - }, - "DeferMaintenanceEndTime": { - "type": "string" - }, - "DeferMaintenanceIdentifier": { - "type": "string" - }, - "DeferMaintenanceStartTime": { - "type": "string" - }, - "DestinationRegion": { - "type": "string" - }, - "ElasticIp": { - "type": "string" - }, - "Encrypted": { - "type": "boolean" - }, - "Endpoint": { - "$ref": "#/definitions/Endpoint" - }, - "EnhancedVpcRouting": { - "type": "boolean" - }, - "HsmClientCertificateIdentifier": { - "type": "string" - }, - "HsmConfigurationIdentifier": { - "type": "string" - }, - "IamRoles": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "maxItems": 50, - "type": "array" - }, - "Id": { - "type": "string" - }, - "KmsKeyId": { - "type": "string" - }, - "LoggingProperties": { - "$ref": "#/definitions/LoggingProperties" - }, - "MaintenanceTrackName": { - "type": "string" - }, - "ManualSnapshotRetentionPeriod": { - "type": "integer" - }, - "MasterUserPassword": { - "maxLength": 64, - "type": "string" - }, - "MasterUsername": { - "maxLength": 128, - "type": "string" - }, - "MultiAZ": { - "type": "boolean" - }, - "NodeType": { - "cfnLint": "AWS::Redshift::Cluster/Properties/NodeType", - "type": "string" - }, - "NumberOfNodes": { - "maximum": 100, - "minimum": 1, - "type": "integer" - }, - "OwnerAccount": { - "type": "string" - }, - "Port": { - "type": "integer" - }, - "PreferredMaintenanceWindow": { - "type": "string" - }, - "PubliclyAccessible": { - "type": "boolean" - }, - "ResourceAction": { - "type": "string" - }, - "RevisionTarget": { - "type": "string" - }, - "RotateEncryptionKey": { - "type": "boolean" - }, - "SnapshotClusterIdentifier": { - "type": "string" - }, - "SnapshotCopyGrantName": { - "type": "string" - }, - "SnapshotCopyManual": { - "type": "boolean" - }, - "SnapshotCopyRetentionPeriod": { - "type": "integer" - }, - "SnapshotIdentifier": { - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": false - }, - "VpcSecurityGroupIds": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/DeferMaintenanceIdentifier", - "/properties/Endpoint/Port", - "/properties/Endpoint/Address" - ], - "required": [ - "MasterUserPassword", - "NodeType", - "MasterUsername", - "DBName", - "ClusterType" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "taggable": true - }, - "typeName": "AWS::Redshift::Cluster", - "writeOnlyProperties": [ - "/properties/MasterUserPassword", - "/properties/Classic", - "/properties/SnapshotIdentifier" - ] -} diff --git a/src/cfnlint/data/schemas/providers/af_south_1/aws-redshift-clusterparametergroup.json b/src/cfnlint/data/schemas/providers/af_south_1/aws-redshift-clusterparametergroup.json deleted file mode 100644 index 6e830dea20..0000000000 --- a/src/cfnlint/data/schemas/providers/af_south_1/aws-redshift-clusterparametergroup.json +++ /dev/null @@ -1,136 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ParameterGroupName", - "/properties/ParameterGroupFamily", - "/properties/Description" - ], - "definitions": { - "Parameter": { - "additionalProperties": false, - "properties": { - "ParameterName": { - "type": "string" - }, - "ParameterValue": { - "type": "string" - } - }, - "required": [ - "ParameterValue", - "ParameterName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "redshift:CreateClusterParameterGroup", - "redshift:ModifyClusterParameterGroup", - "redshift:DescribeClusterParameterGroups", - "redshift:CreateTags", - "ec2:AllocateAddress", - "ec2:AssociateAddress", - "ec2:AttachNetworkInterface", - "ec2:DescribeAccountAttributes", - "ec2:DescribeAddresses", - "ec2:DescribeAvailabilityZones", - "ec2:DescribeInternetGateways", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:DescribeVpcs" - ] - }, - "delete": { - "permissions": [ - "redshift:DeleteClusterParameterGroup", - "initech:DeleteReport" - ] - }, - "list": { - "permissions": [ - "redshift:DescribeClusterParameterGroups", - "initech:ListReports" - ] - }, - "read": { - "permissions": [ - "redshift:DescribeClusterParameterGroups", - "initech:DescribeReport" - ] - }, - "update": { - "permissions": [ - "redshift:ResetClusterParameterGroup", - "redshift:ModifyClusterParameterGroup", - "redshift:DescribeTags", - "redshift:CreateTags", - "redshift:DeleteTags", - "initech:UpdateReport" - ] - } - }, - "primaryIdentifier": [ - "/properties/ParameterGroupName" - ], - "properties": { - "Description": { - "type": "string" - }, - "ParameterGroupFamily": { - "type": "string" - }, - "ParameterGroupName": { - "maxLength": 255, - "type": "string" - }, - "Parameters": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Parameter" - }, - "type": "array" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "required": [ - "Description", - "ParameterGroupFamily" - ], - "tagging": { - "taggable": true - }, - "typeName": "AWS::Redshift::ClusterParameterGroup", - "writeOnlyProperties": [ - "/properties/Tags", - "/properties/Tags/*/Key", - "/properties/Tags/*/Value" - ] -} diff --git a/src/cfnlint/data/schemas/providers/af_south_1/aws-sagemaker-appimageconfig.json b/src/cfnlint/data/schemas/providers/af_south_1/aws-sagemaker-appimageconfig.json new file mode 100644 index 0000000000..01116f524b --- /dev/null +++ b/src/cfnlint/data/schemas/providers/af_south_1/aws-sagemaker-appimageconfig.json @@ -0,0 +1,238 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AppImageConfigName", + "/properties/Tags" + ], + "definitions": { + "ContainerConfig": { + "additionalProperties": false, + "properties": { + "ContainerArguments": { + "items": { + "$ref": "#/definitions/CustomImageContainerArguments" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "ContainerEntrypoint": { + "items": { + "$ref": "#/definitions/CustomImageContainerEntrypoint" + }, + "maxItems": 1, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "ContainerEnvironmentVariables": { + "items": { + "$ref": "#/definitions/CustomImageContainerEnvironmentVariable" + }, + "maxItems": 25, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "CustomImageContainerArguments": { + "maxLength": 64, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "CustomImageContainerEntrypoint": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "CustomImageContainerEnvironmentVariable": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "FileSystemConfig": { + "additionalProperties": false, + "properties": { + "DefaultGid": { + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "DefaultUid": { + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "MountPath": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^/.*", + "type": "string" + } + }, + "type": "object" + }, + "JupyterLabAppImageConfig": { + "additionalProperties": false, + "properties": { + "ContainerConfig": { + "$ref": "#/definitions/ContainerConfig" + } + }, + "type": "object" + }, + "KernelGatewayImageConfig": { + "additionalProperties": false, + "properties": { + "FileSystemConfig": { + "$ref": "#/definitions/FileSystemConfig" + }, + "KernelSpecs": { + "items": { + "$ref": "#/definitions/KernelSpec" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "KernelSpecs" + ], + "type": "object" + }, + "KernelSpec": { + "additionalProperties": false, + "properties": { + "DisplayName": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Name": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "sagemaker:CreateAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + }, + "delete": { + "permissions": [ + "sagemaker:DeleteAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + }, + "list": { + "permissions": [ + "sagemaker:ListAppImageConfigs" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeAppImageConfig" + ] + }, + "update": { + "permissions": [ + "sagemaker:UpdateAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + } + }, + "primaryIdentifier": [ + "/properties/AppImageConfigName" + ], + "properties": { + "AppImageConfigArn": { + "maxLength": 256, + "minLength": 1, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:app-image-config/.*", + "type": "string" + }, + "AppImageConfigName": { + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", + "type": "string" + }, + "JupyterLabAppImageConfig": { + "$ref": "#/definitions/JupyterLabAppImageConfig" + }, + "KernelGatewayImageConfig": { + "$ref": "#/definitions/KernelGatewayImageConfig" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/AppImageConfigArn" + ], + "required": [ + "AppImageConfigName" + ], + "typeName": "AWS::SageMaker::AppImageConfig", + "writeOnlyProperties": [ + "/properties/Tags" + ] +} 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 2510a9a0e9..684449b5c7 100644 --- a/src/cfnlint/data/schemas/providers/ap_east_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/ap_east_1/__init__.py @@ -115,6 +115,7 @@ "AWS::DataSync::LocationHDFS", "AWS::Events::Archive", "AWS::MSK::Cluster", + "AWS::SecurityHub::DelegatedAdmin", "AWS::ControlTower::EnabledBaseline", "AWS::EC2::VPCEndpointConnectionNotification", "AWS::CodePipeline::Pipeline", @@ -274,6 +275,7 @@ "AWS::NetworkManager::CustomerGatewayAssociation", "AWS::IAM::ServerCertificate", "AWS::IoT::SecurityProfile", + "AWS::GlobalAccelerator::CrossAccountAttachment", "AWS::Events::EventBus", "AWS::DocDB::EventSubscription", "AWS::SQS::QueueInlinePolicy", @@ -306,6 +308,7 @@ "AWS::CodeBuild::Project", "AWS::EFS::FileSystem", "AWS::Logs::QueryDefinition", + "AWS::SecurityHub::ProductSubscription", "AWS::IAM::InstanceProfile", "AWS::IoT::BillingGroup", "AWS::DataSync::LocationNFS", @@ -557,6 +560,7 @@ "AWS::EC2::ClientVpnTargetNetworkAssociation", "AWS::AppSync::GraphQLApi", "AWS::EC2::EgressOnlyInternetGateway", + "AWS::SecurityHub::Insight", "AWS::Config::ConformancePack", "AWS::EC2::VPCCidrBlock", "AWS::IAM::VirtualMFADevice", @@ -782,7 +786,6 @@ "aws-ram-resourceshare.json", "aws-memorydb-cluster.json", "aws-dms-replicationconfig.json", - "aws-ec2-securitygroupegress.json", "aws-ec2-localgatewayroutetablevpcassociation.json", "aws-config-organizationconfigrule.json", "aws-glue-dataqualityruleset.json", @@ -802,7 +805,6 @@ "aws-apigateway-model.json", "aws-apigatewayv2-integrationresponse.json", "aws-ec2-networkacl.json", - "aws-lambda-eventsourcemapping.json", "aws-logs-resourcepolicy.json", "aws-servicecatalog-launchnotificationconstraint.json", "aws-iot-cacertificate.json", @@ -866,6 +868,7 @@ "aws-datasync-locationhdfs.json", "aws-events-archive.json", "aws-msk-cluster.json", + "aws-securityhub-delegatedadmin.json", "aws-controltower-enabledbaseline.json", "aws-ec2-vpcendpointconnectionnotification.json", "aws-codepipeline-pipeline.json", @@ -946,7 +949,6 @@ "aws-ec2-transitgatewaymulticastdomainassociation.json", "aws-s3outposts-endpoint.json", "aws-waf-sizeconstraintset.json", - "aws-ec2-transitgatewayroutetableassociation.json", "aws-appconfig-environment.json", "aws-imagebuilder-image.json", "aws-elasticache-securitygroupingress.json", @@ -1017,6 +1019,7 @@ "aws-networkmanager-customergatewayassociation.json", "aws-iam-servercertificate.json", "aws-iot-securityprofile.json", + "aws-globalaccelerator-crossaccountattachment.json", "aws-events-eventbus.json", "aws-docdb-eventsubscription.json", "aws-sqs-queueinlinepolicy.json", @@ -1047,6 +1050,7 @@ "aws-codebuild-project.json", "aws-efs-filesystem.json", "aws-logs-querydefinition.json", + "aws-securityhub-productsubscription.json", "aws-iam-instanceprofile.json", "aws-iot-billinggroup.json", "aws-datasync-locationnfs.json", @@ -1106,6 +1110,7 @@ "aws-batch-jobdefinition.json", "aws-iam-samlprovider.json", "aws-cloudfront-keygroup.json", + "aws-ec2-networkinterfaceattachment.json", "aws-glue-customentitytype.json", "aws-codedeploy-deploymentconfig.json", "aws-networkmanager-globalnetwork.json", @@ -1132,6 +1137,7 @@ "aws-securityhub-standard.json", "aws-rolesanywhere-crl.json", "aws-sns-topicinlinepolicy.json", + "aws-redshift-clusterparametergroup.json", "aws-organizations-policy.json", "aws-glue-trigger.json", "aws-globalaccelerator-listener.json", @@ -1188,6 +1194,7 @@ "aws-s3-bucketpolicy.json", "aws-appsync-graphqlschema.json", "aws-iot-custommetric.json", + "aws-redshift-cluster.json", "aws-codebuild-sourcecredential.json", "aws-emr-instancefleetconfig.json", "aws-emr-cluster.json", @@ -1215,7 +1222,6 @@ "aws-datasync-locationefs.json", "aws-ec2-localgatewayroutetable.json", "aws-apigateway-resource.json", - "aws-sagemaker-appimageconfig.json", "aws-macie-session.json", "aws-elasticloadbalancingv2-targetgroup.json", "aws-applicationautoscaling-scalingpolicy.json", @@ -1282,10 +1288,11 @@ "aws-ec2-clientvpntargetnetworkassociation.json", "aws-appsync-graphqlapi.json", "aws-ec2-egressonlyinternetgateway.json", + "aws-securityhub-insight.json", + "aws-config-conformancepack.json", "aws-ec2-vpccidrblock.json", "aws-iam-virtualmfadevice.json", "aws-ec2-networkinsightspath.json", - "aws-acmpca-certificateauthority.json", "aws-athena-preparedstatement.json", "aws-autoscaling-scheduledaction.json", "aws-apigatewayv2-route.json", @@ -1343,6 +1350,7 @@ "aws-iot-accountauditconfiguration.json", "aws-sagemaker-userprofile.json", "aws-ec2-prefixlist.json", + "aws-ec2-instance.json", "aws-networkmanager-device.json", "aws-ec2-subnetcidrblock.json", "aws-elasticbeanstalk-applicationversion.json", diff --git a/src/cfnlint/data/schemas/providers/ap_east_1/aws-acmpca-certificateauthority.json b/src/cfnlint/data/schemas/providers/ap_east_1/aws-acmpca-certificateauthority.json new file mode 100644 index 0000000000..08ec85e5fa --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_east_1/aws-acmpca-certificateauthority.json @@ -0,0 +1,429 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Type", + "/properties/KeyAlgorithm", + "/properties/SigningAlgorithm", + "/properties/Subject", + "/properties/CsrExtensions", + "/properties/KeyStorageSecurityStandard", + "/properties/UsageMode" + ], + "definitions": { + "AccessDescription": { + "additionalProperties": false, + "properties": { + "AccessLocation": { + "$ref": "#/definitions/GeneralName" + }, + "AccessMethod": { + "$ref": "#/definitions/AccessMethod" + } + }, + "required": [ + "AccessMethod", + "AccessLocation" + ], + "type": "object" + }, + "AccessMethod": { + "additionalProperties": false, + "properties": { + "AccessMethodType": { + "$ref": "#/definitions/AccessMethodType" + }, + "CustomObjectIdentifier": { + "$ref": "#/definitions/CustomObjectIdentifier" + } + }, + "type": "object" + }, + "AccessMethodType": { + "type": "string" + }, + "Arn": { + "type": "string" + }, + "CrlConfiguration": { + "additionalProperties": false, + "properties": { + "CrlDistributionPointExtensionConfiguration": { + "$ref": "#/definitions/CrlDistributionPointExtensionConfiguration" + }, + "CustomCname": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + }, + "ExpirationInDays": { + "type": "integer" + }, + "S3BucketName": { + "type": "string" + }, + "S3ObjectAcl": { + "type": "string" + } + }, + "type": "object" + }, + "CrlDistributionPointExtensionConfiguration": { + "additionalProperties": false, + "properties": { + "OmitExtension": { + "type": "boolean" + } + }, + "required": [ + "OmitExtension" + ], + "type": "object" + }, + "CsrExtensions": { + "additionalProperties": false, + "properties": { + "KeyUsage": { + "$ref": "#/definitions/KeyUsage" + }, + "SubjectInformationAccess": { + "$ref": "#/definitions/SubjectInformationAccess" + } + }, + "type": "object" + }, + "CustomAttribute": { + "additionalProperties": false, + "properties": { + "ObjectIdentifier": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "ObjectIdentifier", + "Value" + ], + "type": "object" + }, + "CustomAttributeList": { + "items": { + "$ref": "#/definitions/CustomAttribute" + }, + "type": "array" + }, + "CustomObjectIdentifier": { + "type": "string" + }, + "DnsName": { + "type": "string" + }, + "EdiPartyName": { + "additionalProperties": false, + "properties": { + "NameAssigner": { + "type": "string" + }, + "PartyName": { + "type": "string" + } + }, + "required": [ + "PartyName", + "NameAssigner" + ], + "type": "object" + }, + "GeneralName": { + "additionalProperties": false, + "properties": { + "DirectoryName": { + "$ref": "#/definitions/Subject" + }, + "DnsName": { + "$ref": "#/definitions/DnsName" + }, + "EdiPartyName": { + "$ref": "#/definitions/EdiPartyName" + }, + "IpAddress": { + "$ref": "#/definitions/IpAddress" + }, + "OtherName": { + "$ref": "#/definitions/OtherName" + }, + "RegisteredId": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Rfc822Name": { + "$ref": "#/definitions/Rfc822Name" + }, + "UniformResourceIdentifier": { + "$ref": "#/definitions/UniformResourceIdentifier" + } + }, + "type": "object" + }, + "IpAddress": { + "type": "string" + }, + "KeyUsage": { + "additionalProperties": false, + "properties": { + "CRLSign": { + "default": false, + "type": "boolean" + }, + "DataEncipherment": { + "default": false, + "type": "boolean" + }, + "DecipherOnly": { + "default": false, + "type": "boolean" + }, + "DigitalSignature": { + "default": false, + "type": "boolean" + }, + "EncipherOnly": { + "default": false, + "type": "boolean" + }, + "KeyAgreement": { + "default": false, + "type": "boolean" + }, + "KeyCertSign": { + "default": false, + "type": "boolean" + }, + "KeyEncipherment": { + "default": false, + "type": "boolean" + }, + "NonRepudiation": { + "default": false, + "type": "boolean" + } + }, + "type": "object" + }, + "OcspConfiguration": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + }, + "OcspCustomCname": { + "type": "string" + } + }, + "type": "object" + }, + "OtherName": { + "additionalProperties": false, + "properties": { + "TypeId": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "TypeId", + "Value" + ], + "type": "object" + }, + "RevocationConfiguration": { + "additionalProperties": false, + "properties": { + "CrlConfiguration": { + "$ref": "#/definitions/CrlConfiguration" + }, + "OcspConfiguration": { + "$ref": "#/definitions/OcspConfiguration" + } + }, + "type": "object" + }, + "Rfc822Name": { + "type": "string" + }, + "Subject": { + "additionalProperties": false, + "properties": { + "CommonName": { + "type": "string" + }, + "Country": { + "type": "string" + }, + "CustomAttributes": { + "$ref": "#/definitions/CustomAttributeList" + }, + "DistinguishedNameQualifier": { + "type": "string" + }, + "GenerationQualifier": { + "type": "string" + }, + "GivenName": { + "type": "string" + }, + "Initials": { + "type": "string" + }, + "Locality": { + "type": "string" + }, + "Organization": { + "type": "string" + }, + "OrganizationalUnit": { + "type": "string" + }, + "Pseudonym": { + "type": "string" + }, + "SerialNumber": { + "type": "string" + }, + "State": { + "type": "string" + }, + "Surname": { + "type": "string" + }, + "Title": { + "type": "string" + } + }, + "type": "object" + }, + "SubjectInformationAccess": { + "items": { + "$ref": "#/definitions/AccessDescription" + }, + "type": "array" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "UniformResourceIdentifier": { + "type": "string" + } + }, + "handlers": { + "create": { + "permissions": [ + "acm-pca:CreateCertificateAuthority", + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr" + ] + }, + "delete": { + "permissions": [ + "acm-pca:DeleteCertificateAuthority", + "acm-pca:DescribeCertificateAuthority" + ] + }, + "list": { + "permissions": [ + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr", + "acm-pca:ListCertificateAuthorities", + "acm-pca:ListTags" + ] + }, + "read": { + "permissions": [ + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr", + "acm-pca:ListTags" + ] + }, + "update": { + "permissions": [ + "acm-pca:ListTags", + "acm-pca:TagCertificateAuthority", + "acm-pca:UntagCertificateAuthority", + "acm-pca:UpdateCertificateAuthority" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "$ref": "#/definitions/Arn" + }, + "CertificateSigningRequest": { + "type": "string" + }, + "CsrExtensions": { + "$ref": "#/definitions/CsrExtensions" + }, + "KeyAlgorithm": { + "type": "string" + }, + "KeyStorageSecurityStandard": { + "type": "string" + }, + "RevocationConfiguration": { + "$ref": "#/definitions/RevocationConfiguration" + }, + "SigningAlgorithm": { + "type": "string" + }, + "Subject": { + "$ref": "#/definitions/Subject" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "Type": { + "type": "string" + }, + "UsageMode": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CertificateSigningRequest" + ], + "required": [ + "Type", + "KeyAlgorithm", + "SigningAlgorithm", + "Subject" + ], + "sourceUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_ACMPCA.html", + "typeName": "AWS::ACMPCA::CertificateAuthority", + "writeOnlyProperties": [ + "/properties/Subject", + "/properties/Subject", + "/properties/CsrExtensions", + "/properties/Tags", + "/properties/RevocationConfiguration", + "/properties/KeyStorageSecurityStandard" + ] +} diff --git a/src/cfnlint/data/schemas/providers/ap_east_1/aws-config-conformancepack.json b/src/cfnlint/data/schemas/providers/ap_east_1/aws-config-conformancepack.json deleted file mode 100644 index cc35e80876..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_east_1/aws-config-conformancepack.json +++ /dev/null @@ -1,140 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ConformancePackName" - ], - "definitions": { - "ConformancePackInputParameter": { - "additionalProperties": false, - "properties": { - "ParameterName": { - "$ref": "#/definitions/ParameterName" - }, - "ParameterValue": { - "$ref": "#/definitions/ParameterValue" - } - }, - "required": [ - "ParameterName", - "ParameterValue" - ], - "type": "object" - }, - "ParameterName": { - "maxLength": 255, - "minLength": 0, - "type": "string" - }, - "ParameterValue": { - "maxLength": 4096, - "minLength": 0, - "type": "string" - } - }, - "documentationUrl": "https://docs.aws.amazon.com/config/latest/developerguide/conformance-packs.html", - "handlers": { - "create": { - "permissions": [ - "config:PutConformancePack", - "config:DescribeConformancePackStatus", - "config:DescribeConformancePacks", - "s3:GetObject", - "s3:GetBucketAcl", - "iam:CreateServiceLinkedRole", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "config:DeleteConformancePack", - "config:DescribeConformancePackStatus" - ] - }, - "list": { - "permissions": [ - "config:DescribeConformancePacks" - ] - }, - "read": { - "permissions": [ - "config:DescribeConformancePacks" - ] - }, - "update": { - "permissions": [ - "config:PutConformancePack", - "config:DescribeConformancePackStatus", - "s3:GetObject", - "s3:GetBucketAcl", - "iam:CreateServiceLinkedRole", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/ConformancePackName" - ], - "properties": { - "ConformancePackInputParameters": { - "items": { - "$ref": "#/definitions/ConformancePackInputParameter" - }, - "maxItems": 60, - "minItems": 0, - "type": "array" - }, - "ConformancePackName": { - "maxLength": 256, - "minLength": 1, - "pattern": "[a-zA-Z][-a-zA-Z0-9]*", - "type": "string" - }, - "DeliveryS3Bucket": { - "maxLength": 63, - "minLength": 0, - "type": "string" - }, - "DeliveryS3KeyPrefix": { - "maxLength": 1024, - "minLength": 0, - "type": "string" - }, - "TemplateBody": { - "maxLength": 51200, - "minLength": 1, - "type": "string" - }, - "TemplateS3Uri": { - "maxLength": 1024, - "minLength": 1, - "pattern": "s3://.*", - "type": "string" - }, - "TemplateSSMDocumentDetails": { - "additionalProperties": false, - "properties": { - "DocumentName": { - "maxLength": 128, - "minLength": 3, - "type": "string" - }, - "DocumentVersion": { - "maxLength": 128, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - } - }, - "required": [ - "ConformancePackName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-config.git", - "typeName": "AWS::Config::ConformancePack", - "writeOnlyProperties": [ - "/properties/TemplateBody", - "/properties/TemplateS3Uri", - "/properties/TemplateSSMDocumentDetails" - ] -} diff --git a/src/cfnlint/data/schemas/providers/ap_east_1/aws-dynamodb-globaltable.json b/src/cfnlint/data/schemas/providers/ap_east_1/aws-dynamodb-globaltable.json index 4e5ba995cb..ae37e9142b 100644 --- a/src/cfnlint/data/schemas/providers/ap_east_1/aws-dynamodb-globaltable.json +++ b/src/cfnlint/data/schemas/providers/ap_east_1/aws-dynamodb-globaltable.json @@ -8,6 +8,27 @@ ] ], "additionalProperties": false, + "allOf": [ + { + "if": { + "required": [ + "LocalSecondaryIndexes" + ], + "type": "object" + }, + "then": { + "properties": { + "AttributeDefinitions": { + "minItems": 2 + }, + "KeySchema": { + "minItems": 2 + } + }, + "type": "object" + } + } + ], "createOnlyProperties": [ "/properties/LocalSecondaryIndexes", "/properties/TableName", @@ -79,13 +100,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "minItems": 1, - "type": "array", - "uniqueItems": true + "minItems": 1 }, "Projection": { "$ref": "#/definitions/Projection" @@ -102,22 +119,60 @@ "type": "object" }, "KeySchema": { - "additionalProperties": false, - "properties": { - "AttributeName": { - "maxLength": 255, - "minLength": 1, - "type": "string" + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "KeyType": { + "enum": [ + "HASH", + "RANGE" + ], + "type": "string" + } }, - "KeyType": { - "type": "string" - } + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" }, - "required": [ - "KeyType", - "AttributeName" + "prefixItems": [ + { + "additionalProperties": false, + "properties": { + "KeyType": { + "const": "HASH", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + }, + { + "properties": { + "KeyType": { + "const": "RANGE", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + } ], - "type": "object" + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "KinesisStreamSpecification": { "additionalProperties": false, @@ -147,12 +202,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "type": "array", - "uniqueItems": true + "minItems": 2 }, "Projection": { "$ref": "#/definitions/Projection" @@ -511,7 +563,10 @@ }, "minItems": 1, "type": "array", - "uniqueItems": true + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "BillingMode": { "type": "string" @@ -525,13 +580,9 @@ "uniqueItems": true }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "minItems": 1, - "type": "array", - "uniqueItems": true + "minItems": 1 }, "LocalSecondaryIndexes": { "insertionOrder": false, diff --git a/src/cfnlint/data/schemas/providers/ap_east_1/aws-dynamodb-table.json b/src/cfnlint/data/schemas/providers/ap_east_1/aws-dynamodb-table.json index efc82f1d70..f21d084b10 100644 --- a/src/cfnlint/data/schemas/providers/ap_east_1/aws-dynamodb-table.json +++ b/src/cfnlint/data/schemas/providers/ap_east_1/aws-dynamodb-table.json @@ -1,5 +1,26 @@ { "additionalProperties": false, + "allOf": [ + { + "if": { + "required": [ + "LocalSecondaryIndexes" + ], + "type": "object" + }, + "then": { + "properties": { + "AttributeDefinitions": { + "minItems": 2 + }, + "KeySchema": { + "minItems": 2 + } + }, + "type": "object" + } + } + ], "cfnLint": [ "AWS::DynamoDB::Table/Properties" ], @@ -95,11 +116,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 }, "Projection": { "$ref": "#/definitions/Projection" @@ -147,24 +166,57 @@ "type": "object" }, "KeySchema": { - "additionalProperties": false, - "properties": { - "AttributeName": { - "type": "string" + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "type": "string" + }, + "KeyType": { + "enum": [ + "HASH", + "RANGE" + ], + "type": "string" + } }, - "KeyType": { - "enum": [ - "HASH", - "RANGE" + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" + }, + "prefixItems": [ + { + "properties": { + "KeyType": { + "const": "HASH", + "type": "string" + } + }, + "required": [ + "KeyType" ], - "type": "string" + "type": "object" + }, + { + "properties": { + "KeyType": { + "const": "RANGE", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" } - }, - "required": [ - "KeyType", - "AttributeName" ], - "type": "object" + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "KinesisStreamSpecification": { "additionalProperties": false, @@ -192,11 +244,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 2 }, "Projection": { "$ref": "#/definitions/Projection" @@ -451,7 +501,10 @@ "$ref": "#/definitions/AttributeDefinition" }, "type": "array", - "uniqueItems": true + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "BillingMode": { "enum": [ @@ -479,11 +532,9 @@ "KeySchema": { "oneOf": [ { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 }, { "type": "object" diff --git a/src/cfnlint/data/schemas/providers/ap_east_1/aws-ec2-instance.json b/src/cfnlint/data/schemas/providers/ap_east_1/aws-ec2-instance.json deleted file mode 100644 index 7b3bfed595..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_east_1/aws-ec2-instance.json +++ /dev/null @@ -1,571 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ElasticGpuSpecifications", - "/properties/Ipv6Addresses", - "/properties/PlacementGroupName", - "/properties/HostResourceGroupArn", - "/properties/ImageId", - "/properties/CpuOptions", - "/properties/PrivateIpAddress", - "/properties/ElasticInferenceAccelerators", - "/properties/EnclaveOptions", - "/properties/HibernationOptions", - "/properties/KeyName", - "/properties/LicenseSpecifications", - "/properties/NetworkInterfaces", - "/properties/AvailabilityZone", - "/properties/SubnetId", - "/properties/LaunchTemplate", - "/properties/SecurityGroups", - "/properties/Ipv6AddressCount" - ], - "definitions": { - "AssociationParameter": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "BlockDeviceMapping": { - "additionalProperties": false, - "properties": { - "DeviceName": { - "type": "string" - }, - "Ebs": { - "$ref": "#/definitions/Ebs" - }, - "NoDevice": { - "$ref": "#/definitions/NoDevice" - }, - "VirtualName": { - "type": "string" - } - }, - "required": [ - "DeviceName" - ], - "requiredXor": [ - "VirtualName", - "Ebs", - "NoDevice" - ], - "type": "object" - }, - "CpuOptions": { - "additionalProperties": false, - "properties": { - "CoreCount": { - "type": "integer" - }, - "ThreadsPerCore": { - "type": "integer" - } - }, - "type": "object" - }, - "CreditSpecification": { - "additionalProperties": false, - "properties": { - "CPUCredits": { - "type": "string" - } - }, - "type": "object" - }, - "Ebs": { - "additionalProperties": false, - "properties": { - "DeleteOnTermination": { - "type": "boolean" - }, - "Encrypted": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "KmsKeyId": { - "type": "string" - }, - "SnapshotId": { - "type": "string" - }, - "VolumeSize": { - "type": "integer" - }, - "VolumeType": { - "type": "string" - } - }, - "type": "object" - }, - "ElasticGpuSpecification": { - "additionalProperties": false, - "properties": { - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "ElasticInferenceAccelerator": { - "additionalProperties": false, - "properties": { - "Count": { - "type": "integer" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "EnclaveOptions": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - } - }, - "type": "object" - }, - "HibernationOptions": { - "additionalProperties": false, - "properties": { - "Configured": { - "type": "boolean" - } - }, - "type": "object" - }, - "InstanceIpv6Address": { - "additionalProperties": false, - "properties": { - "Ipv6Address": { - "type": "string" - } - }, - "required": [ - "Ipv6Address" - ], - "type": "object" - }, - "LaunchTemplateSpecification": { - "additionalProperties": false, - "properties": { - "LaunchTemplateId": { - "type": "string" - }, - "LaunchTemplateName": { - "type": "string" - }, - "Version": { - "type": "string" - } - }, - "required": [ - "Version" - ], - "type": "object" - }, - "LicenseSpecification": { - "additionalProperties": false, - "properties": { - "LicenseConfigurationArn": { - "type": "string" - } - }, - "required": [ - "LicenseConfigurationArn" - ], - "type": "object" - }, - "NetworkInterface": { - "additionalProperties": false, - "properties": { - "AssociateCarrierIpAddress": { - "type": "boolean" - }, - "AssociatePublicIpAddress": { - "type": "boolean" - }, - "DeleteOnTermination": { - "type": "boolean" - }, - "Description": { - "type": "string" - }, - "DeviceIndex": { - "type": "string" - }, - "GroupSet": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": false - }, - "NetworkInterfaceId": { - "type": "string" - }, - "PrivateIpAddress": { - "type": "string" - }, - "PrivateIpAddresses": { - "items": { - "$ref": "#/definitions/PrivateIpAddressSpecification" - }, - "type": "array", - "uniqueItems": false - }, - "SecondaryPrivateIpAddressCount": { - "type": "integer" - }, - "SubnetId": { - "type": "string" - } - }, - "required": [ - "DeviceIndex" - ], - "type": "object" - }, - "NoDevice": { - "additionalProperties": false, - "type": "object" - }, - "PrivateDnsNameOptions": { - "additionalProperties": false, - "properties": { - "EnableResourceNameDnsAAAARecord": { - "type": "boolean" - }, - "EnableResourceNameDnsARecord": { - "type": "boolean" - }, - "HostnameType": { - "type": "string" - } - }, - "type": "object" - }, - "PrivateIpAddressSpecification": { - "additionalProperties": false, - "properties": { - "Primary": { - "type": "boolean" - }, - "PrivateIpAddress": { - "type": "string" - } - }, - "required": [ - "PrivateIpAddress", - "Primary" - ], - "type": "object" - }, - "SsmAssociation": { - "additionalProperties": false, - "properties": { - "AssociationParameters": { - "items": { - "$ref": "#/definitions/AssociationParameter" - }, - "type": "array", - "uniqueItems": false - }, - "DocumentName": { - "type": "string" - } - }, - "required": [ - "DocumentName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "Volume": { - "additionalProperties": false, - "properties": { - "Device": { - "type": "string" - }, - "VolumeId": { - "type": "string" - } - }, - "required": [ - "VolumeId", - "Device" - ], - "type": "object" - } - }, - "dependentExcluded": { - "NetworkInterfaces": [ - "SubnetId" - ], - "SubnetId": [ - "NetworkInterfaces" - ] - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AdditionalInfo": { - "type": "string" - }, - "Affinity": { - "enum": [ - "default", - "host" - ], - "type": "string" - }, - "AvailabilityZone": { - "cfnLint": [ - "AWS::EC2::Instance/Properties/AvailabilityZone" - ], - "type": "string" - }, - "BlockDeviceMappings": { - "items": { - "$ref": "#/definitions/BlockDeviceMapping" - }, - "type": "array", - "uniqueItems": false - }, - "CpuOptions": { - "$ref": "#/definitions/CpuOptions" - }, - "CreditSpecification": { - "$ref": "#/definitions/CreditSpecification" - }, - "DisableApiTermination": { - "type": "boolean" - }, - "EbsOptimized": { - "type": "boolean" - }, - "ElasticGpuSpecifications": { - "items": { - "$ref": "#/definitions/ElasticGpuSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "ElasticInferenceAccelerators": { - "items": { - "$ref": "#/definitions/ElasticInferenceAccelerator" - }, - "type": "array", - "uniqueItems": true - }, - "EnclaveOptions": { - "$ref": "#/definitions/EnclaveOptions" - }, - "HibernationOptions": { - "$ref": "#/definitions/HibernationOptions" - }, - "HostId": { - "type": "string" - }, - "HostResourceGroupArn": { - "type": "string" - }, - "IamInstanceProfile": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "ImageId": { - "type": "string" - }, - "InstanceInitiatedShutdownBehavior": { - "type": "string" - }, - "InstanceType": { - "cfnLint": [ - "AWS::EC2::Instance/Properties/InstanceType" - ], - "type": "string" - }, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": false - }, - "KernelId": { - "type": "string" - }, - "KeyName": { - "type": "string" - }, - "LaunchTemplate": { - "$ref": "#/definitions/LaunchTemplateSpecification" - }, - "LicenseSpecifications": { - "items": { - "$ref": "#/definitions/LicenseSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "Monitoring": { - "type": "boolean" - }, - "NetworkInterfaces": { - "items": { - "$ref": "#/definitions/NetworkInterface" - }, - "type": "array", - "uniqueItems": false - }, - "PlacementGroupName": { - "type": "string" - }, - "PrivateDnsName": { - "type": "string" - }, - "PrivateDnsNameOptions": { - "$ref": "#/definitions/PrivateDnsNameOptions" - }, - "PrivateIp": { - "type": "string" - }, - "PrivateIpAddress": { - "type": "string" - }, - "PropagateTagsToVolumeOnCreation": { - "type": "boolean" - }, - "PublicDnsName": { - "type": "string" - }, - "PublicIp": { - "type": "string" - }, - "RamdiskId": { - "type": "string" - }, - "SecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SecurityGroups": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SourceDestCheck": { - "type": "boolean" - }, - "SsmAssociations": { - "items": { - "$ref": "#/definitions/SsmAssociation" - }, - "type": "array", - "uniqueItems": false - }, - "SubnetId": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "Tenancy": { - "enum": [ - "default", - "dedicated", - "host" - ], - "type": "string" - }, - "UserData": { - "type": "string" - }, - "Volumes": { - "items": { - "$ref": "#/definitions/Volume" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/PublicIp", - "/properties/Id", - "/properties/PublicDnsName", - "/properties/PrivateDnsName", - "/properties/PrivateIp" - ], - "requiredXor": [ - "ImageId", - "LaunchTemplate" - ], - "typeName": "AWS::EC2::Instance" -} diff --git a/src/cfnlint/data/schemas/providers/ap_east_1/aws-ec2-networkinterfaceattachment.json b/src/cfnlint/data/schemas/providers/ap_east_1/aws-ec2-networkinterfaceattachment.json deleted file mode 100644 index ec2bdaa45e..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_east_1/aws-ec2-networkinterfaceattachment.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/NetworkInterfaceId" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DeviceIndex", - "/properties/InstanceId", - "/properties/NetworkInterfaceId" - ], - "handlers": { - "create": { - "permissions": [ - "ec2:AttachNetworkInterface", - "ec2:DescribeNetworkInterfaces", - "ec2:ModifyNetworkInterfaceAttribute" - ] - }, - "delete": { - "permissions": [ - "ec2:DetachNetworkInterface", - "ec2:DescribeNetworkInterfaces" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeNetworkInterfaces" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeNetworkInterfaces" - ] - }, - "update": { - "permissions": [ - "ec2:ModifyNetworkInterfaceAttribute", - "ec2:DescribeNetworkInterfaces", - "ec2:AttachNetworkInterface", - "ec2:DetachNetworkInterface" - ] - } - }, - "primaryIdentifier": [ - "/properties/AttachmentId" - ], - "properties": { - "AttachmentId": { - "type": "string" - }, - "DeleteOnTermination": { - "default": true, - "type": "boolean" - }, - "DeviceIndex": { - "type": "string" - }, - "InstanceId": { - "type": "string" - }, - "NetworkInterfaceId": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/AttachmentId" - ], - "replacementStrategy": "delete_then_create", - "required": [ - "DeviceIndex", - "InstanceId", - "NetworkInterfaceId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::EC2::NetworkInterfaceAttachment" -} diff --git a/src/cfnlint/data/schemas/providers/ap_east_1/aws-ec2-securitygroupegress.json b/src/cfnlint/data/schemas/providers/ap_east_1/aws-ec2-securitygroupegress.json new file mode 100644 index 0000000000..f94631dad2 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_east_1/aws-ec2-securitygroupegress.json @@ -0,0 +1,98 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::EC2::SecurityGroupEgress/Properties" + ], + "createOnlyProperties": [ + "/properties/IpProtocol", + "/properties/DestinationSecurityGroupId", + "/properties/ToPort", + "/properties/CidrIp", + "/properties/FromPort", + "/properties/GroupId", + "/properties/CidrIpv6", + "/properties/DestinationPrefixListId" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:AuthorizeSecurityGroupEgress", + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "delete": { + "permissions": [ + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "update": { + "permissions": [ + "ec2:UpdateSecurityGroupRuleDescriptionsEgress" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CidrIp": { + "type": "string" + }, + "CidrIpv6": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "DestinationPrefixListId": { + "type": "string" + }, + "DestinationSecurityGroupId": { + "type": "string" + }, + "FromPort": { + "minimum": -1, + "type": "integer" + }, + "GroupId": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "IpProtocol": { + "type": "string" + }, + "ToPort": { + "minimum": -1, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IpProtocol", + "GroupId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SecurityGroupEgress" +} diff --git a/src/cfnlint/data/schemas/providers/ap_east_1/aws-ec2-transitgatewayroutetableassociation.json b/src/cfnlint/data/schemas/providers/ap_east_1/aws-ec2-transitgatewayroutetableassociation.json new file mode 100644 index 0000000000..890b2c4be2 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_east_1/aws-ec2-transitgatewayroutetableassociation.json @@ -0,0 +1,29 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TransitGatewayRouteTableId", + "/properties/TransitGatewayAttachmentId" + ], + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "type": "string" + }, + "TransitGatewayAttachmentId": { + "type": "string" + }, + "TransitGatewayRouteTableId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "TransitGatewayRouteTableId", + "TransitGatewayAttachmentId" + ], + "typeName": "AWS::EC2::TransitGatewayRouteTableAssociation" +} diff --git a/src/cfnlint/data/schemas/providers/eu_south_1/aws-lambda-eventsourcemapping.json b/src/cfnlint/data/schemas/providers/ap_east_1/aws-lambda-eventsourcemapping.json similarity index 93% rename from src/cfnlint/data/schemas/providers/eu_south_1/aws-lambda-eventsourcemapping.json rename to src/cfnlint/data/schemas/providers/ap_east_1/aws-lambda-eventsourcemapping.json index e7a75d62d7..cb7599c139 100644 --- a/src/cfnlint/data/schemas/providers/eu_south_1/aws-lambda-eventsourcemapping.json +++ b/src/cfnlint/data/schemas/providers/ap_east_1/aws-lambda-eventsourcemapping.json @@ -115,7 +115,7 @@ "Destination": { "maxLength": 1024, "minLength": 12, - "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?(-iso)?(-isob)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", "type": "string" } }, @@ -231,7 +231,7 @@ "EventSourceArn": { "maxLength": 1024, "minLength": 12, - "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?(-iso)?(-isob)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", "type": "string" }, "FilterCriteria": { @@ -240,7 +240,7 @@ "FunctionName": { "maxLength": 140, "minLength": 1, - "pattern": "(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?(-iso)?(-isob)?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?", + "pattern": "(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?", "type": "string" }, "FunctionResponseTypes": { @@ -343,20 +343,11 @@ "type": "integer" } }, - "propertyTransform": { - "/properties/StartingPositionTimestamp": "StartingPositionTimestamp * 1000" - }, "readOnlyProperties": [ "/properties/Id" ], "required": [ "FunctionName" ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, "typeName": "AWS::Lambda::EventSourceMapping" } diff --git a/src/cfnlint/data/schemas/providers/ap_east_1/aws-redshift-cluster.json b/src/cfnlint/data/schemas/providers/ap_east_1/aws-redshift-cluster.json deleted file mode 100644 index bdd4d92992..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_east_1/aws-redshift-cluster.json +++ /dev/null @@ -1,332 +0,0 @@ -{ - "additionalProperties": false, - "cfnLint": "AWS::Redshift::Cluster/Properties", - "createOnlyProperties": [ - "/properties/ClusterIdentifier", - "/properties/OwnerAccount", - "/properties/SnapshotIdentifier", - "/properties/DBName", - "/properties/SnapshotClusterIdentifier", - "/properties/ClusterSubnetGroupName", - "/properties/MasterUsername" - ], - "definitions": { - "Endpoint": { - "additionalProperties": false, - "properties": { - "Address": { - "type": "string" - }, - "Port": { - "type": "string" - } - }, - "type": "object" - }, - "LoggingProperties": { - "additionalProperties": false, - "properties": { - "BucketName": { - "type": "string" - }, - "S3KeyPrefix": { - "type": "string" - } - }, - "required": [ - "BucketName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 127, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 255, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "redshift:DescribeClusters", - "redshift:CreateCluster", - "redshift:RestoreFromClusterSnapshot", - "redshift:EnableLogging", - "redshift:DescribeTags" - ], - "timeoutInMinutes": 2160 - }, - "delete": { - "permissions": [ - "redshift:DescribeTags", - "redshift:DescribeClusters", - "redshift:DeleteCluster" - ], - "timeoutInMinutes": 2160 - }, - "list": { - "permissions": [ - "redshift:DescribeTags", - "redshift:DescribeClusters" - ] - }, - "read": { - "permissions": [ - "redshift:DescribeClusters", - "redshift:DescribeLoggingStatus", - "redshift:DescribeSnapshotCopyGrant", - "redshift:DescribeClusterDbRevisions", - "redshift:DescribeTags" - ] - }, - "update": { - "permissions": [ - "redshift:DescribeClusters", - "redshift:ModifyCluster", - "redshift:ModifyClusterIamRoles", - "redshift:EnableLogging", - "redshift:CreateTags", - "redshift:DeleteTags", - "redshift:DescribeTags", - "redshift:DisableLogging", - "redshift:RebootCluster", - "redshift:EnableSnapshotCopy", - "redshift:DisableSnapshotCopy", - "redshift:ModifySnapshotCopyRetentionPeriod", - "redshift:ModifyAquaConfiguration", - "redshift:ResizeCluster", - "redshift:ModifyClusterMaintenance", - "redshift:DescribeClusterDbRevisions", - "redshift:ModifyClusterDbRevisions", - "redshift:PauseCluster", - "redshift:ResumeCluster", - "redshift:RotateEncryptionKey", - "redshift:FailoverPrimaryCompute" - ], - "timeoutInMinutes": 2160 - } - }, - "primaryIdentifier": [ - "/properties/ClusterIdentifier" - ], - "properties": { - "AllowVersionUpgrade": { - "type": "boolean" - }, - "AquaConfigurationStatus": { - "type": "string" - }, - "AutomatedSnapshotRetentionPeriod": { - "type": "integer" - }, - "AvailabilityZone": { - "type": "string" - }, - "AvailabilityZoneRelocation": { - "type": "boolean" - }, - "AvailabilityZoneRelocationStatus": { - "type": "string" - }, - "Classic": { - "type": "boolean" - }, - "ClusterIdentifier": { - "maxLength": 63, - "type": "string" - }, - "ClusterParameterGroupName": { - "maxLength": 255, - "type": "string" - }, - "ClusterSecurityGroups": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "ClusterSubnetGroupName": { - "type": "string" - }, - "ClusterType": { - "type": "string" - }, - "ClusterVersion": { - "type": "string" - }, - "DBName": { - "type": "string" - }, - "DeferMaintenance": { - "type": "boolean" - }, - "DeferMaintenanceDuration": { - "type": "integer" - }, - "DeferMaintenanceEndTime": { - "type": "string" - }, - "DeferMaintenanceIdentifier": { - "type": "string" - }, - "DeferMaintenanceStartTime": { - "type": "string" - }, - "DestinationRegion": { - "type": "string" - }, - "ElasticIp": { - "type": "string" - }, - "Encrypted": { - "type": "boolean" - }, - "Endpoint": { - "$ref": "#/definitions/Endpoint" - }, - "EnhancedVpcRouting": { - "type": "boolean" - }, - "HsmClientCertificateIdentifier": { - "type": "string" - }, - "HsmConfigurationIdentifier": { - "type": "string" - }, - "IamRoles": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "maxItems": 50, - "type": "array" - }, - "Id": { - "type": "string" - }, - "KmsKeyId": { - "type": "string" - }, - "LoggingProperties": { - "$ref": "#/definitions/LoggingProperties" - }, - "MaintenanceTrackName": { - "type": "string" - }, - "ManualSnapshotRetentionPeriod": { - "type": "integer" - }, - "MasterUserPassword": { - "maxLength": 64, - "type": "string" - }, - "MasterUsername": { - "maxLength": 128, - "type": "string" - }, - "MultiAZ": { - "type": "boolean" - }, - "NodeType": { - "cfnLint": "AWS::Redshift::Cluster/Properties/NodeType", - "type": "string" - }, - "NumberOfNodes": { - "maximum": 100, - "minimum": 1, - "type": "integer" - }, - "OwnerAccount": { - "type": "string" - }, - "Port": { - "type": "integer" - }, - "PreferredMaintenanceWindow": { - "type": "string" - }, - "PubliclyAccessible": { - "type": "boolean" - }, - "ResourceAction": { - "type": "string" - }, - "RevisionTarget": { - "type": "string" - }, - "RotateEncryptionKey": { - "type": "boolean" - }, - "SnapshotClusterIdentifier": { - "type": "string" - }, - "SnapshotCopyGrantName": { - "type": "string" - }, - "SnapshotCopyManual": { - "type": "boolean" - }, - "SnapshotCopyRetentionPeriod": { - "type": "integer" - }, - "SnapshotIdentifier": { - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": false - }, - "VpcSecurityGroupIds": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/DeferMaintenanceIdentifier", - "/properties/Endpoint/Port", - "/properties/Endpoint/Address" - ], - "required": [ - "MasterUserPassword", - "NodeType", - "MasterUsername", - "DBName", - "ClusterType" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "taggable": true - }, - "typeName": "AWS::Redshift::Cluster", - "writeOnlyProperties": [ - "/properties/MasterUserPassword", - "/properties/Classic", - "/properties/SnapshotIdentifier" - ] -} diff --git a/src/cfnlint/data/schemas/providers/ap_east_1/aws-redshift-clusterparametergroup.json b/src/cfnlint/data/schemas/providers/ap_east_1/aws-redshift-clusterparametergroup.json deleted file mode 100644 index 6e830dea20..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_east_1/aws-redshift-clusterparametergroup.json +++ /dev/null @@ -1,136 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ParameterGroupName", - "/properties/ParameterGroupFamily", - "/properties/Description" - ], - "definitions": { - "Parameter": { - "additionalProperties": false, - "properties": { - "ParameterName": { - "type": "string" - }, - "ParameterValue": { - "type": "string" - } - }, - "required": [ - "ParameterValue", - "ParameterName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "redshift:CreateClusterParameterGroup", - "redshift:ModifyClusterParameterGroup", - "redshift:DescribeClusterParameterGroups", - "redshift:CreateTags", - "ec2:AllocateAddress", - "ec2:AssociateAddress", - "ec2:AttachNetworkInterface", - "ec2:DescribeAccountAttributes", - "ec2:DescribeAddresses", - "ec2:DescribeAvailabilityZones", - "ec2:DescribeInternetGateways", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:DescribeVpcs" - ] - }, - "delete": { - "permissions": [ - "redshift:DeleteClusterParameterGroup", - "initech:DeleteReport" - ] - }, - "list": { - "permissions": [ - "redshift:DescribeClusterParameterGroups", - "initech:ListReports" - ] - }, - "read": { - "permissions": [ - "redshift:DescribeClusterParameterGroups", - "initech:DescribeReport" - ] - }, - "update": { - "permissions": [ - "redshift:ResetClusterParameterGroup", - "redshift:ModifyClusterParameterGroup", - "redshift:DescribeTags", - "redshift:CreateTags", - "redshift:DeleteTags", - "initech:UpdateReport" - ] - } - }, - "primaryIdentifier": [ - "/properties/ParameterGroupName" - ], - "properties": { - "Description": { - "type": "string" - }, - "ParameterGroupFamily": { - "type": "string" - }, - "ParameterGroupName": { - "maxLength": 255, - "type": "string" - }, - "Parameters": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Parameter" - }, - "type": "array" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "required": [ - "Description", - "ParameterGroupFamily" - ], - "tagging": { - "taggable": true - }, - "typeName": "AWS::Redshift::ClusterParameterGroup", - "writeOnlyProperties": [ - "/properties/Tags", - "/properties/Tags/*/Key", - "/properties/Tags/*/Value" - ] -} diff --git a/src/cfnlint/data/schemas/providers/ap_east_1/aws-sagemaker-appimageconfig.json b/src/cfnlint/data/schemas/providers/ap_east_1/aws-sagemaker-appimageconfig.json new file mode 100644 index 0000000000..01116f524b --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_east_1/aws-sagemaker-appimageconfig.json @@ -0,0 +1,238 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AppImageConfigName", + "/properties/Tags" + ], + "definitions": { + "ContainerConfig": { + "additionalProperties": false, + "properties": { + "ContainerArguments": { + "items": { + "$ref": "#/definitions/CustomImageContainerArguments" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "ContainerEntrypoint": { + "items": { + "$ref": "#/definitions/CustomImageContainerEntrypoint" + }, + "maxItems": 1, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "ContainerEnvironmentVariables": { + "items": { + "$ref": "#/definitions/CustomImageContainerEnvironmentVariable" + }, + "maxItems": 25, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "CustomImageContainerArguments": { + "maxLength": 64, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "CustomImageContainerEntrypoint": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "CustomImageContainerEnvironmentVariable": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "FileSystemConfig": { + "additionalProperties": false, + "properties": { + "DefaultGid": { + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "DefaultUid": { + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "MountPath": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^/.*", + "type": "string" + } + }, + "type": "object" + }, + "JupyterLabAppImageConfig": { + "additionalProperties": false, + "properties": { + "ContainerConfig": { + "$ref": "#/definitions/ContainerConfig" + } + }, + "type": "object" + }, + "KernelGatewayImageConfig": { + "additionalProperties": false, + "properties": { + "FileSystemConfig": { + "$ref": "#/definitions/FileSystemConfig" + }, + "KernelSpecs": { + "items": { + "$ref": "#/definitions/KernelSpec" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "KernelSpecs" + ], + "type": "object" + }, + "KernelSpec": { + "additionalProperties": false, + "properties": { + "DisplayName": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Name": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "sagemaker:CreateAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + }, + "delete": { + "permissions": [ + "sagemaker:DeleteAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + }, + "list": { + "permissions": [ + "sagemaker:ListAppImageConfigs" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeAppImageConfig" + ] + }, + "update": { + "permissions": [ + "sagemaker:UpdateAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + } + }, + "primaryIdentifier": [ + "/properties/AppImageConfigName" + ], + "properties": { + "AppImageConfigArn": { + "maxLength": 256, + "minLength": 1, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:app-image-config/.*", + "type": "string" + }, + "AppImageConfigName": { + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", + "type": "string" + }, + "JupyterLabAppImageConfig": { + "$ref": "#/definitions/JupyterLabAppImageConfig" + }, + "KernelGatewayImageConfig": { + "$ref": "#/definitions/KernelGatewayImageConfig" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/AppImageConfigArn" + ], + "required": [ + "AppImageConfigName" + ], + "typeName": "AWS::SageMaker::AppImageConfig", + "writeOnlyProperties": [ + "/properties/Tags" + ] +} 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 516f3e5eff..ff45eb56b7 100644 --- a/src/cfnlint/data/schemas/providers/ap_northeast_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/ap_northeast_1/__init__.py @@ -10,6 +10,7 @@ "AWS::ApiGatewayV2::ApiMapping", "AWS::CE::AnomalySubscription", "AWS::Shield::DRTAccess", + "AWS::Deadline::Farm", "AWS::SSO::Assignment", "AWS::Glue::Partition", "AWS::RDS::Integration", @@ -42,6 +43,7 @@ "AWS::EC2::NetworkPerformanceMetricSubscription", "AWS::MediaLive::Channel", "AWS::Greengrass::DeviceDefinition", + "AWS::CleanRoomsML::TrainingDataset", "AWS::CloudFront::ContinuousDeploymentPolicy", "AWS::QuickSight::Analysis", "AWS::Kendra::Faq", @@ -134,6 +136,7 @@ "AWS::CloudTrail::EventDataStore", "AWS::AppIntegrations::Application", "AWS::KinesisFirehose::DeliveryStream", + "AWS::Deadline::QueueFleetAssociation", "AWS::EC2::NetworkInsightsAccessScope", "AWS::Cognito::UserPoolUserToGroupAttachment", "AWS::PCAConnectorAD::DirectoryRegistration", @@ -227,6 +230,7 @@ "AWS::RoboMaker::SimulationApplication", "AWS::NetworkManager::TransitGatewayRegistration", "AWS::Amplify::App", + "AWS::EntityResolution::PolicyStatement", "AWS::InspectorV2::Filter", "AWS::ElastiCache::ReplicationGroup", "AWS::StepFunctions::StateMachineAlias", @@ -289,6 +293,7 @@ "AWS::Lambda::Alias", "AWS::Logs::LogAnomalyDetector", "AWS::WAF::IPSet", + "AWS::Deadline::Fleet", "AWS::IoTTwinMaker::Workspace", "AWS::VpcLattice::ServiceNetworkServiceAssociation", "AWS::EC2::TransitGatewayMulticastDomainAssociation", @@ -379,6 +384,7 @@ "AWS::SageMaker::Space", "AWS::IoT::PolicyPrincipalAttachment", "AWS::Timestream::ScheduledQuery", + "AWS::IVS::PlaybackRestrictionPolicy", "AWS::FMS::NotificationChannel", "AWS::MSK::BatchScramSecret", "AWS::Connect::HoursOfOperation", @@ -397,6 +403,7 @@ "AWS::MediaPackageV2::ChannelPolicy", "AWS::ApiGatewayV2::VpcLink", "AWS::IoT::JobTemplate", + "AWS::Deadline::Queue", "AWS::ServiceCatalog::PortfolioProductAssociation", "AWS::DataBrew::Project", "AWS::VpcLattice::TargetGroup", @@ -486,6 +493,7 @@ "AWS::Cognito::UserPoolUICustomizationAttachment", "AWS::SageMaker::NotebookInstanceLifecycleConfig", "AWS::ImageBuilder::ContainerRecipe", + "AWS::CodeConnections::Connection", "AWS::Connect::Rule", "AWS::EFS::AccessPoint", "AWS::Redshift::ClusterSecurityGroupIngress", @@ -517,6 +525,7 @@ "AWS::EC2::ClientVpnRoute", "AWS::ImageBuilder::Workflow", "AWS::ECS::TaskSet", + "AWS::SecurityLake::AwsLogSource", "AWS::AppSync::ApiKey", "AWS::CloudFormation::TypeActivation", "AWS::Location::Map", @@ -577,6 +586,7 @@ "AWS::EC2::CustomerGateway", "AWS::IAM::GroupPolicy", "AWS::Scheduler::Schedule", + "AWS::Deadline::LicenseEndpoint", "AWS::WAF::ByteMatchSet", "AWS::AmplifyUIBuilder::Theme", "AWS::Neptune::DBClusterParameterGroup", @@ -603,6 +613,7 @@ "AWS::Glue::Trigger", "AWS::GlobalAccelerator::Listener", "AWS::VerifiedPermissions::PolicyStore", + "AWS::Deadline::QueueEnvironment", "AWS::Signer::SigningProfile", "AWS::KendraRanking::ExecutionPlan", "AWS::EC2::VPCPeeringConnection", @@ -672,6 +683,7 @@ "AWS::LookoutMetrics::Alert", "AWS::IoTWireless::TaskDefinition", "AWS::StepFunctions::Activity", + "AWS::IVS::EncoderConfiguration", "AWS::Synthetics::Group", "AWS::Forecast::Dataset", "AWS::SageMaker::Project", @@ -684,6 +696,7 @@ "AWS::CodeBuild::SourceCredential", "AWS::EMR::InstanceFleetConfig", "AWS::EMR::Cluster", + "AWS::SecurityLake::DataLake", "AWS::CodePipeline::Webhook", "AWS::ApiGatewayV2::DomainName", "AWS::CustomerProfiles::EventStream", @@ -775,6 +788,7 @@ "AWS::WorkSpacesWeb::TrustStore", "AWS::CustomerProfiles::Domain", "AWS::IoT::Policy", + "AWS::APS::Scraper", "AWS::EC2::TransitGatewayRoute", "AWS::SSM::MaintenanceWindow", "AWS::DataZone::Domain", @@ -797,6 +811,7 @@ "AWS::DevOpsGuru::LogAnomalyDetectionIntegration", "AWS::NetworkManager::Link", "AWS::QLDB::Stream", + "AWS::SecurityLake::Subscriber", "AWS::SageMaker::NotebookInstance", "AWS::IoTSiteWise::Dashboard", "AWS::Pinpoint::APNSVoipChannel", @@ -915,6 +930,7 @@ "AWS::StepFunctions::StateMachine", "AWS::RDS::DBClusterParameterGroup", "AWS::WAF::XssMatchSet", + "AWS::IVS::StorageConfiguration", "AWS::EC2::VerifiedAccessTrustProvider", "AWS::AppMesh::VirtualRouter", "AWS::IoT::CertificateProvider", @@ -964,6 +980,7 @@ "AWS::CleanRooms::Collaboration", "AWS::SSM::Association", "AWS::EC2::ClientVpnEndpoint", + "AWS::EntityResolution::IdNamespace", "AWS::CloudFront::ResponseHeadersPolicy", "AWS::SecurityHub::AutomationRule", "AWS::MSK::ClusterPolicy", @@ -990,9 +1007,11 @@ "AWS::Route53Resolver::OutpostResolver", "AWS::ACMPCA::Certificate", "AWS::EC2::IPAMAllocation", + "AWS::Deadline::StorageProfile", "AWS::WorkSpaces::Workspace", "AWS::Inspector::AssessmentTemplate", "AWS::EMR::Studio", + "AWS::Deadline::MeteredProduct", "AWS::EC2::InstanceConnectEndpoint", "AWS::DAX::ParameterGroup", "AWS::DataZone::SubscriptionTarget", @@ -1167,8 +1186,10 @@ "aws-apigatewayv2-apimapping.json", "aws-ce-anomalysubscription.json", "aws-shield-drtaccess.json", + "aws-deadline-farm.json", "aws-sso-assignment.json", "aws-glue-partition.json", + "aws-rds-integration.json", "aws-ec2-transitgatewayroutetablepropagation.json", "aws-ssm-resourcepolicy.json", "aws-shield-proactiveengagement.json", @@ -1197,6 +1218,7 @@ "aws-ec2-networkperformancemetricsubscription.json", "aws-medialive-channel.json", "aws-greengrass-devicedefinition.json", + "aws-cleanroomsml-trainingdataset.json", "aws-cloudfront-continuousdeploymentpolicy.json", "aws-quicksight-analysis.json", "aws-kendra-faq.json", @@ -1217,7 +1239,6 @@ "aws-apigatewayv2-integrationresponse.json", "aws-iotevents-input.json", "aws-ec2-networkacl.json", - "aws-lambda-eventsourcemapping.json", "aws-budgets-budgetsaction.json", "aws-logs-resourcepolicy.json", "aws-lex-botversion.json", @@ -1289,6 +1310,7 @@ "aws-cloudtrail-eventdatastore.json", "aws-appintegrations-application.json", "aws-kinesisfirehose-deliverystream.json", + "aws-deadline-queuefleetassociation.json", "aws-ec2-networkinsightsaccessscope.json", "aws-cognito-userpoolusertogroupattachment.json", "aws-pcaconnectorad-directoryregistration.json", @@ -1329,6 +1351,7 @@ "aws-iotsitewise-portal.json", "aws-events-archive.json", "aws-msk-cluster.json", + "aws-securityhub-delegatedadmin.json", "aws-controltower-enabledbaseline.json", "aws-appstream-appblockbuilder.json", "aws-ec2-vpcendpointconnectionnotification.json", @@ -1367,6 +1390,7 @@ "aws-wafregional-sizeconstraintset.json", "aws-eventschemas-discoverer.json", "aws-networkmanager-connectpeer.json", + "aws-elasticache-usergroup.json", "aws-iot-thinggroup.json", "aws-logs-deliverydestination.json", "aws-imagebuilder-imagerecipe.json", @@ -1380,6 +1404,7 @@ "aws-robomaker-simulationapplication.json", "aws-networkmanager-transitgatewayregistration.json", "aws-amplify-app.json", + "aws-entityresolution-policystatement.json", "aws-inspectorv2-filter.json", "aws-elasticache-replicationgroup.json", "aws-stepfunctions-statemachinealias.json", @@ -1441,6 +1466,7 @@ "aws-lambda-alias.json", "aws-logs-loganomalydetector.json", "aws-waf-ipset.json", + "aws-deadline-fleet.json", "aws-iottwinmaker-workspace.json", "aws-vpclattice-servicenetworkserviceassociation.json", "aws-ec2-transitgatewaymulticastdomainassociation.json", @@ -1531,6 +1557,7 @@ "aws-sagemaker-space.json", "aws-iot-policyprincipalattachment.json", "aws-timestream-scheduledquery.json", + "aws-ivs-playbackrestrictionpolicy.json", "aws-fms-notificationchannel.json", "aws-msk-batchscramsecret.json", "aws-connect-hoursofoperation.json", @@ -1549,6 +1576,7 @@ "aws-mediapackagev2-channelpolicy.json", "aws-apigatewayv2-vpclink.json", "aws-iot-jobtemplate.json", + "aws-deadline-queue.json", "aws-servicecatalog-portfolioproductassociation.json", "aws-databrew-project.json", "aws-vpclattice-targetgroup.json", @@ -1564,6 +1592,7 @@ "aws-iam-servercertificate.json", "aws-codestarconnections-connection.json", "aws-iot-securityprofile.json", + "aws-globalaccelerator-crossaccountattachment.json", "aws-events-eventbus.json", "aws-docdb-eventsubscription.json", "aws-sqs-queueinlinepolicy.json", @@ -1575,6 +1604,7 @@ "aws-appstream-imagebuilder.json", "aws-backupgateway-hypervisor.json", "aws-lightsail-disk.json", + "aws-connect-predefinedattribute.json", "aws-iam-policy.json", "aws-databrew-schedule.json", "aws-apprunner-service.json", @@ -1599,6 +1629,7 @@ "aws-appconfig-configurationprofile.json", "aws-managedblockchain-node.json", "aws-route53resolver-firewallrulegroup.json", + "aws-docdbelastic-cluster.json", "aws-msk-configuration.json", "aws-ec2-transitgateway.json", "aws-cognito-userpoolgroup.json", @@ -1612,8 +1643,10 @@ "aws-codebuild-project.json", "aws-efs-filesystem.json", "aws-pinpoint-apnsvoipsandboxchannel.json", + "aws-config-organizationconformancepack.json", "aws-connect-quickconnect.json", "aws-logs-querydefinition.json", + "aws-securityhub-productsubscription.json", "aws-iam-instanceprofile.json", "aws-iot-billinggroup.json", "aws-appstream-application.json", @@ -1633,6 +1666,7 @@ "aws-cognito-userpooluicustomizationattachment.json", "aws-sagemaker-notebookinstancelifecycleconfig.json", "aws-imagebuilder-containerrecipe.json", + "aws-codeconnections-connection.json", "aws-connect-rule.json", "aws-efs-accesspoint.json", "aws-redshift-clustersecuritygroupingress.json", @@ -1646,6 +1680,7 @@ "aws-kinesisanalytics-application.json", "aws-apigatewayv2-deployment.json", "aws-servicecatalog-stacksetconstraint.json", + "aws-codestarconnections-repositorylink.json", "aws-ivs-channel.json", "aws-refactorspaces-service.json", "aws-memorydb-user.json", @@ -1663,6 +1698,7 @@ "aws-ec2-clientvpnroute.json", "aws-imagebuilder-workflow.json", "aws-ecs-taskset.json", + "aws-securitylake-awslogsource.json", "aws-appsync-apikey.json", "aws-cloudformation-typeactivation.json", "aws-location-map.json", @@ -1701,6 +1737,7 @@ "aws-appflow-connector.json", "aws-lightsail-loadbalancer.json", "aws-cloudfront-keygroup.json", + "aws-codestarconnections-syncconfiguration.json", "aws-ec2-networkinterfaceattachment.json", "aws-glue-customentitytype.json", "aws-wisdom-knowledgebase.json", @@ -1718,9 +1755,9 @@ "aws-neptune-dbcluster.json", "aws-evidently-feature.json", "aws-backup-backupvault.json", - "aws-ec2-customergateway.json", "aws-iam-grouppolicy.json", "aws-scheduler-schedule.json", + "aws-deadline-licenseendpoint.json", "aws-waf-bytematchset.json", "aws-amplifyuibuilder-theme.json", "aws-emrserverless-application.json", @@ -1746,6 +1783,7 @@ "aws-glue-trigger.json", "aws-globalaccelerator-listener.json", "aws-verifiedpermissions-policystore.json", + "aws-deadline-queueenvironment.json", "aws-signer-signingprofile.json", "aws-kendraranking-executionplan.json", "aws-ec2-vpcpeeringconnection.json", @@ -1815,6 +1853,7 @@ "aws-lookoutmetrics-alert.json", "aws-iotwireless-taskdefinition.json", "aws-stepfunctions-activity.json", + "aws-ivs-encoderconfiguration.json", "aws-synthetics-group.json", "aws-forecast-dataset.json", "aws-sagemaker-project.json", @@ -1827,6 +1866,7 @@ "aws-codebuild-sourcecredential.json", "aws-emr-instancefleetconfig.json", "aws-emr-cluster.json", + "aws-securitylake-datalake.json", "aws-codepipeline-webhook.json", "aws-apigatewayv2-domainname.json", "aws-customerprofiles-eventstream.json", @@ -1862,12 +1902,11 @@ "aws-datasync-locationefs.json", "aws-ec2-localgatewayroutetable.json", "aws-apigateway-resource.json", - "aws-sagemaker-appimageconfig.json", - "aws-verifiedpermissions-identitysource.json", "aws-macie-session.json", "aws-elasticloadbalancingv2-targetgroup.json", "aws-applicationautoscaling-scalingpolicy.json", "aws-pipes-pipe.json", + "aws-iotsitewise-gateway.json", "aws-emr-studiosessionmapping.json", "aws-ivs-playbackkeypair.json", "aws-cloudformation-macro.json", @@ -1877,6 +1916,7 @@ "aws-lambda-layerversionpermission.json", "aws-secretsmanager-secret.json", "aws-route53resolver-resolverconfig.json", + "aws-elasticache-user.json", "aws-sagemaker-image.json", "aws-logs-subscriptionfilter.json", "aws-codedeploy-application.json", @@ -1914,6 +1954,7 @@ "aws-workspacesweb-truststore.json", "aws-customerprofiles-domain.json", "aws-iot-policy.json", + "aws-aps-scraper.json", "aws-ec2-transitgatewayroute.json", "aws-ssm-maintenancewindow.json", "aws-datazone-domain.json", @@ -1936,6 +1977,7 @@ "aws-devopsguru-loganomalydetectionintegration.json", "aws-networkmanager-link.json", "aws-qldb-stream.json", + "aws-securitylake-subscriber.json", "aws-sagemaker-notebookinstance.json", "aws-iotsitewise-dashboard.json", "aws-pinpoint-apnsvoipchannel.json", @@ -1972,6 +2014,7 @@ "aws-gamelift-matchmakingruleset.json", "aws-ec2-egressonlyinternetgateway.json", "aws-athena-capacityreservation.json", + "aws-securityhub-insight.json", "aws-config-conformancepack.json", "aws-ec2-vpccidrblock.json", "aws-aps-workspace.json", @@ -1981,7 +2024,6 @@ "aws-iam-virtualmfadevice.json", "aws-ec2-networkinsightspath.json", "aws-mediatailor-vodsource.json", - "aws-acmpca-certificateauthority.json", "aws-athena-preparedstatement.json", "aws-s3express-bucketpolicy.json", "aws-autoscaling-scheduledaction.json", @@ -2050,6 +2092,7 @@ "aws-stepfunctions-statemachine.json", "aws-rds-dbclusterparametergroup.json", "aws-waf-xssmatchset.json", + "aws-ivs-storageconfiguration.json", "aws-ec2-verifiedaccesstrustprovider.json", "aws-appmesh-virtualrouter.json", "aws-iot-certificateprovider.json", @@ -2079,6 +2122,7 @@ "aws-personalize-dataset.json", "aws-iot1click-placement.json", "aws-ec2-prefixlist.json", + "aws-ec2-instance.json", "aws-opensearchserverless-securityconfig.json", "aws-networkmanager-device.json", "aws-proton-environmentaccountconnection.json", @@ -2097,6 +2141,7 @@ "aws-cleanrooms-collaboration.json", "aws-ssm-association.json", "aws-ec2-clientvpnendpoint.json", + "aws-entityresolution-idnamespace.json", "aws-cloudfront-responseheaderspolicy.json", "aws-securityhub-automationrule.json", "aws-msk-clusterpolicy.json", @@ -2122,9 +2167,11 @@ "aws-route53resolver-outpostresolver.json", "aws-acmpca-certificate.json", "aws-ec2-ipamallocation.json", + "aws-deadline-storageprofile.json", "aws-workspaces-workspace.json", "aws-inspector-assessmenttemplate.json", "aws-emr-studio.json", + "aws-deadline-meteredproduct.json", "aws-ec2-instanceconnectendpoint.json", "aws-dax-parametergroup.json", "aws-datazone-subscriptiontarget.json", @@ -2142,7 +2189,6 @@ "aws-organizations-organizationalunit.json", "aws-appsync-datasource.json", "aws-sqs-queue.json", - "aws-ec2-securitygroupingress.json", "aws-guardduty-detector.json", "aws-sagemaker-modelqualityjobdefinition.json", "aws-iot-provisioningtemplate.json", @@ -2195,6 +2241,7 @@ "aws-resourcegroups-group.json", "aws-cloudformation-resourcedefaultversion.json", "aws-ssm-resourcedatasync.json", + "aws-signer-profilepermission.json", "aws-backup-restoretestingplan.json", "aws-docdb-dbclusterparametergroup.json", "aws-s3-multiregionaccesspoint.json", diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-acmpca-certificateauthority.json b/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-acmpca-certificateauthority.json new file mode 100644 index 0000000000..08ec85e5fa --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-acmpca-certificateauthority.json @@ -0,0 +1,429 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Type", + "/properties/KeyAlgorithm", + "/properties/SigningAlgorithm", + "/properties/Subject", + "/properties/CsrExtensions", + "/properties/KeyStorageSecurityStandard", + "/properties/UsageMode" + ], + "definitions": { + "AccessDescription": { + "additionalProperties": false, + "properties": { + "AccessLocation": { + "$ref": "#/definitions/GeneralName" + }, + "AccessMethod": { + "$ref": "#/definitions/AccessMethod" + } + }, + "required": [ + "AccessMethod", + "AccessLocation" + ], + "type": "object" + }, + "AccessMethod": { + "additionalProperties": false, + "properties": { + "AccessMethodType": { + "$ref": "#/definitions/AccessMethodType" + }, + "CustomObjectIdentifier": { + "$ref": "#/definitions/CustomObjectIdentifier" + } + }, + "type": "object" + }, + "AccessMethodType": { + "type": "string" + }, + "Arn": { + "type": "string" + }, + "CrlConfiguration": { + "additionalProperties": false, + "properties": { + "CrlDistributionPointExtensionConfiguration": { + "$ref": "#/definitions/CrlDistributionPointExtensionConfiguration" + }, + "CustomCname": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + }, + "ExpirationInDays": { + "type": "integer" + }, + "S3BucketName": { + "type": "string" + }, + "S3ObjectAcl": { + "type": "string" + } + }, + "type": "object" + }, + "CrlDistributionPointExtensionConfiguration": { + "additionalProperties": false, + "properties": { + "OmitExtension": { + "type": "boolean" + } + }, + "required": [ + "OmitExtension" + ], + "type": "object" + }, + "CsrExtensions": { + "additionalProperties": false, + "properties": { + "KeyUsage": { + "$ref": "#/definitions/KeyUsage" + }, + "SubjectInformationAccess": { + "$ref": "#/definitions/SubjectInformationAccess" + } + }, + "type": "object" + }, + "CustomAttribute": { + "additionalProperties": false, + "properties": { + "ObjectIdentifier": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "ObjectIdentifier", + "Value" + ], + "type": "object" + }, + "CustomAttributeList": { + "items": { + "$ref": "#/definitions/CustomAttribute" + }, + "type": "array" + }, + "CustomObjectIdentifier": { + "type": "string" + }, + "DnsName": { + "type": "string" + }, + "EdiPartyName": { + "additionalProperties": false, + "properties": { + "NameAssigner": { + "type": "string" + }, + "PartyName": { + "type": "string" + } + }, + "required": [ + "PartyName", + "NameAssigner" + ], + "type": "object" + }, + "GeneralName": { + "additionalProperties": false, + "properties": { + "DirectoryName": { + "$ref": "#/definitions/Subject" + }, + "DnsName": { + "$ref": "#/definitions/DnsName" + }, + "EdiPartyName": { + "$ref": "#/definitions/EdiPartyName" + }, + "IpAddress": { + "$ref": "#/definitions/IpAddress" + }, + "OtherName": { + "$ref": "#/definitions/OtherName" + }, + "RegisteredId": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Rfc822Name": { + "$ref": "#/definitions/Rfc822Name" + }, + "UniformResourceIdentifier": { + "$ref": "#/definitions/UniformResourceIdentifier" + } + }, + "type": "object" + }, + "IpAddress": { + "type": "string" + }, + "KeyUsage": { + "additionalProperties": false, + "properties": { + "CRLSign": { + "default": false, + "type": "boolean" + }, + "DataEncipherment": { + "default": false, + "type": "boolean" + }, + "DecipherOnly": { + "default": false, + "type": "boolean" + }, + "DigitalSignature": { + "default": false, + "type": "boolean" + }, + "EncipherOnly": { + "default": false, + "type": "boolean" + }, + "KeyAgreement": { + "default": false, + "type": "boolean" + }, + "KeyCertSign": { + "default": false, + "type": "boolean" + }, + "KeyEncipherment": { + "default": false, + "type": "boolean" + }, + "NonRepudiation": { + "default": false, + "type": "boolean" + } + }, + "type": "object" + }, + "OcspConfiguration": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + }, + "OcspCustomCname": { + "type": "string" + } + }, + "type": "object" + }, + "OtherName": { + "additionalProperties": false, + "properties": { + "TypeId": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "TypeId", + "Value" + ], + "type": "object" + }, + "RevocationConfiguration": { + "additionalProperties": false, + "properties": { + "CrlConfiguration": { + "$ref": "#/definitions/CrlConfiguration" + }, + "OcspConfiguration": { + "$ref": "#/definitions/OcspConfiguration" + } + }, + "type": "object" + }, + "Rfc822Name": { + "type": "string" + }, + "Subject": { + "additionalProperties": false, + "properties": { + "CommonName": { + "type": "string" + }, + "Country": { + "type": "string" + }, + "CustomAttributes": { + "$ref": "#/definitions/CustomAttributeList" + }, + "DistinguishedNameQualifier": { + "type": "string" + }, + "GenerationQualifier": { + "type": "string" + }, + "GivenName": { + "type": "string" + }, + "Initials": { + "type": "string" + }, + "Locality": { + "type": "string" + }, + "Organization": { + "type": "string" + }, + "OrganizationalUnit": { + "type": "string" + }, + "Pseudonym": { + "type": "string" + }, + "SerialNumber": { + "type": "string" + }, + "State": { + "type": "string" + }, + "Surname": { + "type": "string" + }, + "Title": { + "type": "string" + } + }, + "type": "object" + }, + "SubjectInformationAccess": { + "items": { + "$ref": "#/definitions/AccessDescription" + }, + "type": "array" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "UniformResourceIdentifier": { + "type": "string" + } + }, + "handlers": { + "create": { + "permissions": [ + "acm-pca:CreateCertificateAuthority", + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr" + ] + }, + "delete": { + "permissions": [ + "acm-pca:DeleteCertificateAuthority", + "acm-pca:DescribeCertificateAuthority" + ] + }, + "list": { + "permissions": [ + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr", + "acm-pca:ListCertificateAuthorities", + "acm-pca:ListTags" + ] + }, + "read": { + "permissions": [ + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr", + "acm-pca:ListTags" + ] + }, + "update": { + "permissions": [ + "acm-pca:ListTags", + "acm-pca:TagCertificateAuthority", + "acm-pca:UntagCertificateAuthority", + "acm-pca:UpdateCertificateAuthority" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "$ref": "#/definitions/Arn" + }, + "CertificateSigningRequest": { + "type": "string" + }, + "CsrExtensions": { + "$ref": "#/definitions/CsrExtensions" + }, + "KeyAlgorithm": { + "type": "string" + }, + "KeyStorageSecurityStandard": { + "type": "string" + }, + "RevocationConfiguration": { + "$ref": "#/definitions/RevocationConfiguration" + }, + "SigningAlgorithm": { + "type": "string" + }, + "Subject": { + "$ref": "#/definitions/Subject" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "Type": { + "type": "string" + }, + "UsageMode": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CertificateSigningRequest" + ], + "required": [ + "Type", + "KeyAlgorithm", + "SigningAlgorithm", + "Subject" + ], + "sourceUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_ACMPCA.html", + "typeName": "AWS::ACMPCA::CertificateAuthority", + "writeOnlyProperties": [ + "/properties/Subject", + "/properties/Subject", + "/properties/CsrExtensions", + "/properties/Tags", + "/properties/RevocationConfiguration", + "/properties/KeyStorageSecurityStandard" + ] +} diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-codestarconnections-repositorylink.json b/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-codestarconnections-repositorylink.json deleted file mode 100644 index acd21621a7..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-codestarconnections-repositorylink.json +++ /dev/null @@ -1,142 +0,0 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/RepositoryLinkId" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/RepositoryName", - "/properties/OwnerId" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "codestar-connections:CreateRepositoryLink", - "codestar-connections:TagResource", - "codestar-connections:UseConnection", - "codestar-connections:PassConnection", - "codestar-connections:GetConnection", - "iam:CreateServiceLinkedRole" - ] - }, - "delete": { - "permissions": [ - "codestar-connections:GetRepositoryLink", - "codestar-connections:DeleteRepositoryLink", - "codestar-connections:GetConnection" - ] - }, - "list": { - "permissions": [ - "codestar-connections:ListRepositoryLinks", - "codestar-connections:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "codestar-connections:GetRepositoryLink", - "codestar-connections:ListTagsForResource", - "codestar-connections:GetConnection" - ] - }, - "update": { - "permissions": [ - "codestar-connections:GetConnection", - "codestar-connections:ListTagsForResource", - "codestar-connections:PassConnection", - "codestar-connections:UseConnection", - "codestar-connections:TagResource", - "codestar-connections:UntagResource", - "codestar-connections:UpdateRepositoryLink" - ] - } - }, - "primaryIdentifier": [ - "/properties/RepositoryLinkArn" - ], - "properties": { - "ConnectionArn": { - "pattern": "arn:(aws|aws-us-gov|aws-cn):.+:.+:[0-9]{12}:.+", - "type": "string" - }, - "EncryptionKeyArn": { - "pattern": "arn:(aws|aws-us-gov|aws-cn):.+:.+:[0-9]{12}:.+", - "type": "string" - }, - "OwnerId": { - "pattern": "[a-za-z0-9_\\.-]+", - "type": "string" - }, - "ProviderType": { - "enum": [ - "GitHub", - "Bitbucket", - "GitHubEnterprise", - "GitLab", - "GitLabSelfManaged" - ], - "type": "string" - }, - "RepositoryLinkArn": { - "pattern": "arn:(aws|aws-us-gov|aws-cn):.+:.+:[0-9]{12}:.+", - "type": "string" - }, - "RepositoryLinkId": { - "pattern": "[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}", - "type": "string" - }, - "RepositoryName": { - "pattern": "[a-za-z0-9_\\.-]+", - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/RepositoryLinkArn", - "/properties/RepositoryLinkId", - "/properties/ProviderType" - ], - "required": [ - "RepositoryName", - "ConnectionArn", - "OwnerId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-codestarconnections.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::CodeStarConnections::RepositoryLink" -} diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-codestarconnections-syncconfiguration.json b/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-codestarconnections-syncconfiguration.json deleted file mode 100644 index e85e34304d..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-codestarconnections-syncconfiguration.json +++ /dev/null @@ -1,117 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/SyncType", - "/properties/ResourceName" - ], - "definitions": {}, - "handlers": { - "create": { - "permissions": [ - "codestar-connections:CreateSyncConfiguration", - "codestar-connections:PassRepository", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "codestar-connections:DeleteSyncConfiguration", - "codestar-connections:GetSyncConfiguration" - ] - }, - "list": { - "permissions": [ - "codestar-connections:ListSyncConfigurations", - "codestar-connections:ListRepositoryLinks" - ] - }, - "read": { - "permissions": [ - "codestar-connections:GetSyncConfiguration" - ] - }, - "update": { - "permissions": [ - "codestar-connections:UpdateSyncConfiguration", - "codestar-connections:PassRepository", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/ResourceName", - "/properties/SyncType" - ], - "properties": { - "Branch": { - "type": "string" - }, - "ConfigFile": { - "type": "string" - }, - "OwnerId": { - "pattern": "[a-za-z0-9_\\.-]+", - "type": "string" - }, - "ProviderType": { - "enum": [ - "GitHub", - "Bitbucket", - "GitHubEnterprise", - "GitLab", - "GitLabSelfManaged" - ], - "type": "string" - }, - "PublishDeploymentStatus": { - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - }, - "RepositoryLinkId": { - "pattern": "[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}", - "type": "string" - }, - "RepositoryName": { - "pattern": "[a-za-z0-9_\\.-]+", - "type": "string" - }, - "ResourceName": { - "pattern": "[a-za-z0-9_\\.-]+", - "type": "string" - }, - "RoleArn": { - "type": "string" - }, - "SyncType": { - "type": "string" - }, - "TriggerResourceUpdateOn": { - "enum": [ - "ANY_CHANGE", - "FILE_CHANGE" - ], - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/ProviderType", - "/properties/OwnerId", - "/properties/RepositoryName" - ], - "required": [ - "Branch", - "ConfigFile", - "RepositoryLinkId", - "ResourceName", - "SyncType", - "RoleArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-codestarconnections.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::CodeStarConnections::SyncConfiguration" -} diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-config-organizationconformancepack.json b/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-config-organizationconformancepack.json deleted file mode 100644 index 884dc86cd9..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-config-organizationconformancepack.json +++ /dev/null @@ -1,151 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/OrganizationConformancePackName" - ], - "definitions": { - "AccountId": { - "type": "string" - }, - "ConformancePackInputParameter": { - "properties": { - "ParameterName": { - "$ref": "#/definitions/ParameterName" - }, - "ParameterValue": { - "$ref": "#/definitions/ParameterValue" - } - }, - "required": [ - "ParameterName", - "ParameterValue" - ], - "type": "object" - }, - "ParameterName": { - "maxLength": 255, - "minLength": 0, - "type": "string" - }, - "ParameterValue": { - "maxLength": 4096, - "minLength": 0, - "type": "string" - } - }, - "documentationUrl": "https://docs.aws.amazon.com/config/latest/developerguide/conformance-pack-organization-apis.html", - "handlers": { - "create": { - "permissions": [ - "config:PutOrganizationConformancePack", - "config:DescribeOrganizationConformancePackStatuses", - "config:GetOrganizationConformancePackDetailedStatus", - "config:DescribeOrganizationConformancePacks", - "s3:GetObject", - "s3:GetBucketAcl", - "iam:CreateServiceLinkedRole", - "iam:PassRole", - "organizations:ListDelegatedAdministrators", - "organizations:EnableAWSServiceAccess" - ], - "timeoutInMinutes": 706 - }, - "delete": { - "permissions": [ - "config:DeleteOrganizationConformancePack", - "config:DescribeOrganizationConformancePackStatuses", - "config:GetOrganizationConformancePackDetailedStatus", - "organizations:ListDelegatedAdministrators" - ], - "timeoutInMinutes": 706 - }, - "list": { - "permissions": [ - "config:DescribeOrganizationConformancePacks" - ] - }, - "read": { - "permissions": [ - "config:DescribeOrganizationConformancePacks" - ] - }, - "update": { - "permissions": [ - "config:PutOrganizationConformancePack", - "config:DescribeOrganizationConformancePackStatuses", - "config:GetOrganizationConformancePackDetailedStatus", - "s3:GetObject", - "s3:GetBucketAcl", - "iam:CreateServiceLinkedRole", - "iam:PassRole", - "organizations:ListDelegatedAdministrators", - "organizations:EnableAWSServiceAccess" - ], - "timeoutInMinutes": 706 - } - }, - "primaryIdentifier": [ - "/properties/OrganizationConformancePackName" - ], - "properties": { - "ConformancePackInputParameters": { - "items": { - "$ref": "#/definitions/ConformancePackInputParameter" - }, - "maxItems": 60, - "minItems": 0, - "type": "array" - }, - "DeliveryS3Bucket": { - "maxLength": 63, - "minLength": 0, - "type": "string" - }, - "DeliveryS3KeyPrefix": { - "maxLength": 1024, - "minLength": 0, - "type": "string" - }, - "ExcludedAccounts": { - "items": { - "$ref": "#/definitions/AccountId" - }, - "maxItems": 1000, - "minItems": 0, - "type": "array" - }, - "OrganizationConformancePackName": { - "maxLength": 128, - "minLength": 1, - "pattern": "[a-zA-Z][-a-zA-Z0-9]*", - "type": "string" - }, - "TemplateBody": { - "maxLength": 51200, - "minLength": 1, - "type": "string" - }, - "TemplateS3Uri": { - "maxLength": 1024, - "minLength": 1, - "pattern": "s3://.*", - "type": "string" - } - }, - "required": [ - "OrganizationConformancePackName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-config.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagProperty": "/properties/Tags", - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::Config::OrganizationConformancePack", - "writeOnlyProperties": [ - "/properties/TemplateBody", - "/properties/TemplateS3Uri" - ] -} diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-connect-predefinedattribute.json b/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-connect-predefinedattribute.json deleted file mode 100644 index 244a29df7c..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-connect-predefinedattribute.json +++ /dev/null @@ -1,105 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/InstanceArn", - "/properties/Name" - ], - "definitions": { - "StringList": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Value" - }, - "maxItems": 128, - "minItems": 1, - "type": "array" - }, - "Value": { - "maxLength": 64, - "minLength": 1, - "type": "string" - } - }, - "handlers": { - "create": { - "permissions": [ - "connect:CreatePredefinedAttribute" - ] - }, - "delete": { - "permissions": [ - "connect:DeletePredefinedAttribute" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "InstanceArn": { - "$ref": "resource-schema.json#/properties/InstanceArn" - } - }, - "required": [ - "InstanceArn" - ] - }, - "permissions": [ - "connect:ListPredefinedAttributes" - ] - }, - "read": { - "permissions": [ - "connect:DescribePredefinedAttribute" - ] - }, - "update": { - "permissions": [ - "connect:UpdatePredefinedAttribute" - ] - } - }, - "primaryIdentifier": [ - "/properties/InstanceArn", - "/properties/Name" - ], - "properties": { - "InstanceArn": { - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$", - "type": "string" - }, - "LastModifiedRegion": { - "pattern": "[a-z]{2}(-[a-z]+){1,2}(-[0-9])?", - "type": "string" - }, - "LastModifiedTime": { - "type": "number" - }, - "Name": { - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "Values": { - "additionalProperties": false, - "properties": { - "StringList": { - "$ref": "#/definitions/StringList" - } - }, - "type": "object" - } - }, - "readOnlyProperties": [ - "/properties/LastModifiedRegion", - "/properties/LastModifiedTime" - ], - "required": [ - "InstanceArn", - "Name", - "Values" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", - "tagging": { - "taggable": false - }, - "typeName": "AWS::Connect::PredefinedAttribute" -} diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-docdbelastic-cluster.json b/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-docdbelastic-cluster.json deleted file mode 100644 index ad772b7ace..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-docdbelastic-cluster.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AdminUserName", - "/properties/AuthType", - "/properties/ClusterName", - "/properties/KmsKeyId" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "docdb-elastic:CreateCluster", - "docdb-elastic:TagResource", - "docdb-elastic:GetCluster", - "docdb-elastic:ListTagsForResource", - "ec2:CreateVpcEndpoint", - "ec2:DescribeVpcEndpoints", - "ec2:DeleteVpcEndpoints", - "ec2:ModifyVpcEndpoint", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:DescribeVpcAttribute", - "ec2:DescribeVpcs", - "ec2:DescribeAvailabilityZones", - "secretsmanager:ListSecrets", - "secretsmanager:ListSecretVersionIds", - "secretsmanager:DescribeSecret", - "secretsmanager:GetSecretValue", - "secretsmanager:GetResourcePolicy", - "kms:DescribeKey", - "kms:CreateGrant", - "kms:GenerateDataKey", - "kms:Decrypt", - "iam:CreateServiceLinkedRole" - ] - }, - "delete": { - "permissions": [ - "docdb-elastic:DeleteCluster", - "docdb-elastic:GetCluster", - "ec2:DescribeVpcEndpoints", - "ec2:DeleteVpcEndpoints", - "ec2:ModifyVpcEndpoint", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:DescribeVpcAttribute", - "ec2:DescribeVpcs", - "ec2:DescribeAvailabilityZones" - ] - }, - "list": { - "permissions": [ - "docdb-elastic:ListClusters" - ] - }, - "read": { - "permissions": [ - "docdb-elastic:GetCluster", - "docdb-elastic:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "docdb-elastic:UpdateCluster", - "docdb-elastic:TagResource", - "docdb-elastic:UntagResource", - "docdb-elastic:GetCluster", - "docdb-elastic:ListTagsForResource", - "ec2:CreateVpcEndpoint", - "ec2:DescribeVpcEndpoints", - "ec2:DeleteVpcEndpoints", - "ec2:ModifyVpcEndpoint", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:DescribeVpcAttribute", - "ec2:DescribeVpcs", - "ec2:DescribeAvailabilityZones", - "secretsmanager:ListSecrets", - "secretsmanager:ListSecretVersionIds", - "secretsmanager:DescribeSecret", - "secretsmanager:GetSecretValue", - "secretsmanager:GetResourcePolicy", - "kms:DescribeKey", - "kms:CreateGrant", - "kms:GenerateDataKey", - "kms:Decrypt" - ] - } - }, - "primaryIdentifier": [ - "/properties/ClusterArn" - ], - "properties": { - "AdminUserName": { - "type": "string" - }, - "AdminUserPassword": { - "type": "string" - }, - "AuthType": { - "type": "string" - }, - "BackupRetentionPeriod": { - "type": "integer" - }, - "ClusterArn": { - "type": "string" - }, - "ClusterEndpoint": { - "type": "string" - }, - "ClusterName": { - "maxLength": 50, - "minLength": 1, - "pattern": "[a-zA-z][a-zA-Z0-9]*(-[a-zA-Z0-9]+)*", - "type": "string" - }, - "KmsKeyId": { - "type": "string" - }, - "PreferredBackupWindow": { - "type": "string" - }, - "PreferredMaintenanceWindow": { - "type": "string" - }, - "ShardCapacity": { - "type": "integer" - }, - "ShardCount": { - "type": "integer" - }, - "ShardInstanceCount": { - "type": "integer" - }, - "SubnetIds": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "minItems": 0, - "type": "array", - "uniqueItems": true - }, - "VpcSecurityGroupIds": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/ClusterArn", - "/properties/ClusterEndpoint" - ], - "required": [ - "ClusterName", - "AdminUserName", - "ShardCapacity", - "ShardCount", - "AuthType" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-docdbelastic/", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::DocDBElastic::Cluster", - "writeOnlyProperties": [ - "/properties/AdminUserPassword" - ] -} diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-ec2-customergateway.json b/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-ec2-customergateway.json new file mode 100644 index 0000000000..19e10fe34c --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-ec2-customergateway.json @@ -0,0 +1,113 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/CertificateArn", + "/properties/BgpAsn", + "/properties/Type", + "/properties/IpAddress", + "/properties/DeviceName" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "ec2:CreateCustomerGateway", + "ec2:DescribeCustomerGateways", + "ec2:CreateTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteCustomerGateway", + "ec2:DescribeCustomerGateways", + "ec2:DeleteTags" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeCustomerGateways" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeCustomerGateways" + ] + }, + "update": { + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags", + "ec2:DescribeCustomerGateways" + ] + } + }, + "primaryIdentifier": [ + "/properties/CustomerGatewayId" + ], + "properties": { + "BgpAsn": { + "default": 65000, + "type": "integer" + }, + "CertificateArn": { + "pattern": "^arn:(aws[a-zA-Z-]*)?:acm:[a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\\d{1}:\\d{12}:certificate\\/[a-zA-Z0-9-_]+$", + "type": "string" + }, + "CustomerGatewayId": { + "type": "string" + }, + "DeviceName": { + "type": "string" + }, + "IpAddress": { + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Type": { + "enum": [ + "ipsec.1" + ], + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/CustomerGatewayId" + ], + "required": [ + "BgpAsn", + "IpAddress", + "Type" + ], + "tagging": { + "cloudFormationSystemTags": true, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::CustomerGateway" +} diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-ec2-instance.json b/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-ec2-instance.json deleted file mode 100644 index 7b3bfed595..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-ec2-instance.json +++ /dev/null @@ -1,571 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ElasticGpuSpecifications", - "/properties/Ipv6Addresses", - "/properties/PlacementGroupName", - "/properties/HostResourceGroupArn", - "/properties/ImageId", - "/properties/CpuOptions", - "/properties/PrivateIpAddress", - "/properties/ElasticInferenceAccelerators", - "/properties/EnclaveOptions", - "/properties/HibernationOptions", - "/properties/KeyName", - "/properties/LicenseSpecifications", - "/properties/NetworkInterfaces", - "/properties/AvailabilityZone", - "/properties/SubnetId", - "/properties/LaunchTemplate", - "/properties/SecurityGroups", - "/properties/Ipv6AddressCount" - ], - "definitions": { - "AssociationParameter": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "BlockDeviceMapping": { - "additionalProperties": false, - "properties": { - "DeviceName": { - "type": "string" - }, - "Ebs": { - "$ref": "#/definitions/Ebs" - }, - "NoDevice": { - "$ref": "#/definitions/NoDevice" - }, - "VirtualName": { - "type": "string" - } - }, - "required": [ - "DeviceName" - ], - "requiredXor": [ - "VirtualName", - "Ebs", - "NoDevice" - ], - "type": "object" - }, - "CpuOptions": { - "additionalProperties": false, - "properties": { - "CoreCount": { - "type": "integer" - }, - "ThreadsPerCore": { - "type": "integer" - } - }, - "type": "object" - }, - "CreditSpecification": { - "additionalProperties": false, - "properties": { - "CPUCredits": { - "type": "string" - } - }, - "type": "object" - }, - "Ebs": { - "additionalProperties": false, - "properties": { - "DeleteOnTermination": { - "type": "boolean" - }, - "Encrypted": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "KmsKeyId": { - "type": "string" - }, - "SnapshotId": { - "type": "string" - }, - "VolumeSize": { - "type": "integer" - }, - "VolumeType": { - "type": "string" - } - }, - "type": "object" - }, - "ElasticGpuSpecification": { - "additionalProperties": false, - "properties": { - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "ElasticInferenceAccelerator": { - "additionalProperties": false, - "properties": { - "Count": { - "type": "integer" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "EnclaveOptions": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - } - }, - "type": "object" - }, - "HibernationOptions": { - "additionalProperties": false, - "properties": { - "Configured": { - "type": "boolean" - } - }, - "type": "object" - }, - "InstanceIpv6Address": { - "additionalProperties": false, - "properties": { - "Ipv6Address": { - "type": "string" - } - }, - "required": [ - "Ipv6Address" - ], - "type": "object" - }, - "LaunchTemplateSpecification": { - "additionalProperties": false, - "properties": { - "LaunchTemplateId": { - "type": "string" - }, - "LaunchTemplateName": { - "type": "string" - }, - "Version": { - "type": "string" - } - }, - "required": [ - "Version" - ], - "type": "object" - }, - "LicenseSpecification": { - "additionalProperties": false, - "properties": { - "LicenseConfigurationArn": { - "type": "string" - } - }, - "required": [ - "LicenseConfigurationArn" - ], - "type": "object" - }, - "NetworkInterface": { - "additionalProperties": false, - "properties": { - "AssociateCarrierIpAddress": { - "type": "boolean" - }, - "AssociatePublicIpAddress": { - "type": "boolean" - }, - "DeleteOnTermination": { - "type": "boolean" - }, - "Description": { - "type": "string" - }, - "DeviceIndex": { - "type": "string" - }, - "GroupSet": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": false - }, - "NetworkInterfaceId": { - "type": "string" - }, - "PrivateIpAddress": { - "type": "string" - }, - "PrivateIpAddresses": { - "items": { - "$ref": "#/definitions/PrivateIpAddressSpecification" - }, - "type": "array", - "uniqueItems": false - }, - "SecondaryPrivateIpAddressCount": { - "type": "integer" - }, - "SubnetId": { - "type": "string" - } - }, - "required": [ - "DeviceIndex" - ], - "type": "object" - }, - "NoDevice": { - "additionalProperties": false, - "type": "object" - }, - "PrivateDnsNameOptions": { - "additionalProperties": false, - "properties": { - "EnableResourceNameDnsAAAARecord": { - "type": "boolean" - }, - "EnableResourceNameDnsARecord": { - "type": "boolean" - }, - "HostnameType": { - "type": "string" - } - }, - "type": "object" - }, - "PrivateIpAddressSpecification": { - "additionalProperties": false, - "properties": { - "Primary": { - "type": "boolean" - }, - "PrivateIpAddress": { - "type": "string" - } - }, - "required": [ - "PrivateIpAddress", - "Primary" - ], - "type": "object" - }, - "SsmAssociation": { - "additionalProperties": false, - "properties": { - "AssociationParameters": { - "items": { - "$ref": "#/definitions/AssociationParameter" - }, - "type": "array", - "uniqueItems": false - }, - "DocumentName": { - "type": "string" - } - }, - "required": [ - "DocumentName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "Volume": { - "additionalProperties": false, - "properties": { - "Device": { - "type": "string" - }, - "VolumeId": { - "type": "string" - } - }, - "required": [ - "VolumeId", - "Device" - ], - "type": "object" - } - }, - "dependentExcluded": { - "NetworkInterfaces": [ - "SubnetId" - ], - "SubnetId": [ - "NetworkInterfaces" - ] - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AdditionalInfo": { - "type": "string" - }, - "Affinity": { - "enum": [ - "default", - "host" - ], - "type": "string" - }, - "AvailabilityZone": { - "cfnLint": [ - "AWS::EC2::Instance/Properties/AvailabilityZone" - ], - "type": "string" - }, - "BlockDeviceMappings": { - "items": { - "$ref": "#/definitions/BlockDeviceMapping" - }, - "type": "array", - "uniqueItems": false - }, - "CpuOptions": { - "$ref": "#/definitions/CpuOptions" - }, - "CreditSpecification": { - "$ref": "#/definitions/CreditSpecification" - }, - "DisableApiTermination": { - "type": "boolean" - }, - "EbsOptimized": { - "type": "boolean" - }, - "ElasticGpuSpecifications": { - "items": { - "$ref": "#/definitions/ElasticGpuSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "ElasticInferenceAccelerators": { - "items": { - "$ref": "#/definitions/ElasticInferenceAccelerator" - }, - "type": "array", - "uniqueItems": true - }, - "EnclaveOptions": { - "$ref": "#/definitions/EnclaveOptions" - }, - "HibernationOptions": { - "$ref": "#/definitions/HibernationOptions" - }, - "HostId": { - "type": "string" - }, - "HostResourceGroupArn": { - "type": "string" - }, - "IamInstanceProfile": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "ImageId": { - "type": "string" - }, - "InstanceInitiatedShutdownBehavior": { - "type": "string" - }, - "InstanceType": { - "cfnLint": [ - "AWS::EC2::Instance/Properties/InstanceType" - ], - "type": "string" - }, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": false - }, - "KernelId": { - "type": "string" - }, - "KeyName": { - "type": "string" - }, - "LaunchTemplate": { - "$ref": "#/definitions/LaunchTemplateSpecification" - }, - "LicenseSpecifications": { - "items": { - "$ref": "#/definitions/LicenseSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "Monitoring": { - "type": "boolean" - }, - "NetworkInterfaces": { - "items": { - "$ref": "#/definitions/NetworkInterface" - }, - "type": "array", - "uniqueItems": false - }, - "PlacementGroupName": { - "type": "string" - }, - "PrivateDnsName": { - "type": "string" - }, - "PrivateDnsNameOptions": { - "$ref": "#/definitions/PrivateDnsNameOptions" - }, - "PrivateIp": { - "type": "string" - }, - "PrivateIpAddress": { - "type": "string" - }, - "PropagateTagsToVolumeOnCreation": { - "type": "boolean" - }, - "PublicDnsName": { - "type": "string" - }, - "PublicIp": { - "type": "string" - }, - "RamdiskId": { - "type": "string" - }, - "SecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SecurityGroups": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SourceDestCheck": { - "type": "boolean" - }, - "SsmAssociations": { - "items": { - "$ref": "#/definitions/SsmAssociation" - }, - "type": "array", - "uniqueItems": false - }, - "SubnetId": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "Tenancy": { - "enum": [ - "default", - "dedicated", - "host" - ], - "type": "string" - }, - "UserData": { - "type": "string" - }, - "Volumes": { - "items": { - "$ref": "#/definitions/Volume" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/PublicIp", - "/properties/Id", - "/properties/PublicDnsName", - "/properties/PrivateDnsName", - "/properties/PrivateIp" - ], - "requiredXor": [ - "ImageId", - "LaunchTemplate" - ], - "typeName": "AWS::EC2::Instance" -} diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-ec2-securitygroupingress.json b/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-ec2-securitygroupingress.json new file mode 100644 index 0000000000..83ebc2ae5c --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-ec2-securitygroupingress.json @@ -0,0 +1,121 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::EC2::SecurityGroupIngress/Properties" + ], + "createOnlyProperties": [ + "/properties/GroupName", + "/properties/IpProtocol", + "/properties/SourceSecurityGroupId", + "/properties/SourcePrefixListId", + "/properties/ToPort", + "/properties/CidrIp", + "/properties/SourceSecurityGroupName", + "/properties/SourceSecurityGroupOwnerId", + "/properties/FromPort", + "/properties/GroupId", + "/properties/CidrIpv6" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeSecurityGroupRules", + "ec2:AuthorizeSecurityGroupIngress" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeSecurityGroupRules", + "ec2:RevokeSecurityGroupIngress" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroups", + "ec2:DescribeSecurityGroupRules" + ] + }, + "update": { + "permissions": [ + "ec2:UpdateSecurityGroupRuleDescriptionsIngress" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CidrIp": { + "type": "string" + }, + "CidrIpv6": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "FromPort": { + "minimum": -1, + "type": "integer" + }, + "GroupId": { + "type": "string" + }, + "GroupName": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "IpProtocol": { + "type": "string" + }, + "SourcePrefixListId": { + "type": "string" + }, + "SourceSecurityGroupId": { + "type": "string" + }, + "SourceSecurityGroupName": { + "type": "string" + }, + "SourceSecurityGroupOwnerId": { + "type": "string" + }, + "ToPort": { + "minimum": -1, + "type": "integer" + } + }, + "propertyTransform": { + "/properties/FromPort": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$ipProtocol := $mapVal ? $mapVal : $lowercase(IpProtocol);$ipProtocol in ['imcp', 'tcp', 'udp', 'imcp'] ? FromPort : -1)", + "/properties/IpProtocol": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$mapVal ? $mapVal : $lowercase(IpProtocol))", + "/properties/ToPort": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$ipProtocol := $mapVal ? $mapVal : $lowercase(IpProtocol);$ipProtocol in ['imcp', 'tcp', 'udp', 'imcp'] ? ToPort : -1)" + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IpProtocol" + ], + "requiredXor": [ + "CidrIp", + "CidrIpv6", + "SourcePrefixListId", + "SourceSecurityGroupId", + "SourceSecurityGroupName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SecurityGroupIngress" +} diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-elasticache-user.json b/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-elasticache-user.json deleted file mode 100644 index 0775783108..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-elasticache-user.json +++ /dev/null @@ -1,166 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/UserId", - "/properties/UserName", - "/properties/Engine" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z0-9 _\\.\\/=+:\\-@]*$", - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "pattern": "^[a-zA-Z0-9 _\\.\\/=+:\\-@]*$", - "type": "string" - } - }, - "required": [ - "Key" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "elasticache:CreateUser", - "elasticache:DescribeUsers", - "elasticache:ListTagsForResource", - "elasticache:AddTagsToResource" - ] - }, - "delete": { - "permissions": [ - "elasticache:DeleteUser", - "elasticache:DescribeUsers" - ] - }, - "list": { - "permissions": [ - "elasticache:DescribeUsers", - "elasticache:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "elasticache:DescribeUsers", - "elasticache:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "elasticache:ModifyUser", - "elasticache:DescribeUsers", - "elasticache:ListTagsForResource", - "elasticache:AddTagsToResource", - "elasticache:RemoveTagsFromResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/UserId" - ], - "properties": { - "AccessString": { - "type": "string" - }, - "Arn": { - "type": "string" - }, - "AuthenticationMode": { - "additionalProperties": false, - "properties": { - "Passwords": { - "$comment": "List of passwords.", - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Type": { - "enum": [ - "password", - "no-password-required", - "iam" - ], - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "Engine": { - "enum": [ - "redis" - ], - "type": "string" - }, - "NoPasswordRequired": { - "type": "boolean" - }, - "Passwords": { - "$comment": "List of passwords.", - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Status": { - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "UserId": { - "pattern": "[a-z][a-z0-9\\\\-]*", - "type": "string" - }, - "UserName": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Status", - "/properties/Arn" - ], - "required": [ - "UserId", - "UserName", - "Engine" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticache", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::ElastiCache::User", - "writeOnlyProperties": [ - "/properties/Passwords", - "/properties/NoPasswordRequired", - "/properties/AccessString", - "/properties/AuthenticationMode" - ] -} diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-iotsitewise-gateway.json b/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-iotsitewise-gateway.json deleted file mode 100644 index 20b0ba8baa..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-iotsitewise-gateway.json +++ /dev/null @@ -1,179 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/GatewayPlatform" - ], - "definitions": { - "CapabilityConfiguration": { - "type": "string" - }, - "CapabilityNamespace": { - "type": "string" - }, - "GatewayCapabilitySummary": { - "additionalProperties": false, - "properties": { - "CapabilityConfiguration": { - "$ref": "#/definitions/CapabilityConfiguration" - }, - "CapabilityNamespace": { - "$ref": "#/definitions/CapabilityNamespace" - } - }, - "required": [ - "CapabilityNamespace" - ], - "type": "object" - }, - "GatewayPlatform": { - "additionalProperties": false, - "oneOf": [ - { - "required": [ - "Greengrass" - ] - }, - { - "required": [ - "GreengrassV2" - ] - } - ], - "properties": { - "Greengrass": { - "$ref": "#/definitions/Greengrass" - }, - "GreengrassV2": { - "$ref": "#/definitions/GreengrassV2" - } - }, - "type": "object" - }, - "Greengrass": { - "additionalProperties": false, - "properties": { - "GroupArn": { - "type": "string" - } - }, - "required": [ - "GroupArn" - ], - "type": "object" - }, - "GreengrassV2": { - "additionalProperties": false, - "properties": { - "CoreDeviceThingName": { - "type": "string" - } - }, - "required": [ - "CoreDeviceThingName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "iotsitewise:CreateGateway", - "iotsitewise:DescribeGateway", - "iotsitewise:DescribeGatewayCapabilityConfiguration", - "iotsitewise:UpdateGatewayCapabilityConfiguration", - "iam:PassRole", - "iam:GetRole", - "greengrass:GetCoreDevice", - "iotsitewise:ListTagsForResource", - "iotsitewise:TagResource", - "iot:DescribeThing" - ] - }, - "delete": { - "permissions": [ - "iotsitewise:DescribeGateway", - "iotsitewise:DescribeGatewayCapabilityConfiguration", - "iotsitewise:DeleteGateway" - ] - }, - "list": { - "permissions": [ - "iotsitewise:ListGateways" - ] - }, - "read": { - "permissions": [ - "iotsitewise:DescribeGateway", - "iotsitewise:DescribeGatewayCapabilityConfiguration", - "iotsitewise:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "iotsitewise:UpdateGateway", - "iotsitewise:UpdateGatewayCapabilityConfiguration", - "iotsitewise:TagResource", - "iotsitewise:UntagResource", - "iotsitewise:DescribeGateway", - "iotsitewise:DescribeGatewayCapabilityConfiguration", - "iotsitewise:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/GatewayId" - ], - "properties": { - "GatewayCapabilitySummaries": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/GatewayCapabilitySummary" - }, - "type": "array", - "uniqueItems": true - }, - "GatewayId": { - "type": "string" - }, - "GatewayName": { - "type": "string" - }, - "GatewayPlatform": { - "$ref": "#/definitions/GatewayPlatform" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/GatewayId" - ], - "required": [ - "GatewayName", - "GatewayPlatform" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-IoTSiteWise.git", - "taggable": true, - "typeName": "AWS::IoTSiteWise::Gateway" -} diff --git a/src/cfnlint/data/schemas/providers/eu_west_1/aws-lambda-eventsourcemapping.json b/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-lambda-eventsourcemapping.json similarity index 93% rename from src/cfnlint/data/schemas/providers/eu_west_1/aws-lambda-eventsourcemapping.json rename to src/cfnlint/data/schemas/providers/ap_northeast_1/aws-lambda-eventsourcemapping.json index e7a75d62d7..cb7599c139 100644 --- a/src/cfnlint/data/schemas/providers/eu_west_1/aws-lambda-eventsourcemapping.json +++ b/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-lambda-eventsourcemapping.json @@ -115,7 +115,7 @@ "Destination": { "maxLength": 1024, "minLength": 12, - "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?(-iso)?(-isob)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", "type": "string" } }, @@ -231,7 +231,7 @@ "EventSourceArn": { "maxLength": 1024, "minLength": 12, - "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?(-iso)?(-isob)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", "type": "string" }, "FilterCriteria": { @@ -240,7 +240,7 @@ "FunctionName": { "maxLength": 140, "minLength": 1, - "pattern": "(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?(-iso)?(-isob)?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?", + "pattern": "(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?", "type": "string" }, "FunctionResponseTypes": { @@ -343,20 +343,11 @@ "type": "integer" } }, - "propertyTransform": { - "/properties/StartingPositionTimestamp": "StartingPositionTimestamp * 1000" - }, "readOnlyProperties": [ "/properties/Id" ], "required": [ "FunctionName" ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, "typeName": "AWS::Lambda::EventSourceMapping" } diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-rds-integration.json b/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-rds-integration.json deleted file mode 100644 index 083ea4e42f..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-rds-integration.json +++ /dev/null @@ -1,144 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/SourceArn", - "/properties/TargetArn", - "/properties/KMSKeyId", - "/properties/AdditionalEncryptionContext", - "/properties/IntegrationName" - ], - "definitions": { - "EncryptionContextMap": { - "additionalProperties": false, - "patternProperties": { - "^[\\s\\S]*$": { - "maxLength": 131072, - "minLength": 0, - "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" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - } - }, - "handlers": { - "create": { - "permissions": [ - "rds:CreateIntegration", - "rds:DescribeIntegrations", - "rds:AddTagsToResource", - "kms:CreateGrant", - "kms:DescribeKey", - "redshift:CreateInboundIntegration" - ] - }, - "delete": { - "permissions": [ - "rds:DeleteIntegration", - "rds:DescribeIntegrations" - ] - }, - "list": { - "permissions": [ - "rds:DescribeIntegrations" - ] - }, - "read": { - "permissions": [ - "rds:DescribeIntegrations" - ] - }, - "update": { - "permissions": [ - "rds:DescribeIntegrations", - "rds:AddTagsToResource", - "rds:RemoveTagsFromResource", - "rds:ModifyIntegration" - ] - } - }, - "primaryIdentifier": [ - "/properties/IntegrationArn" - ], - "properties": { - "AdditionalEncryptionContext": { - "$ref": "#/definitions/EncryptionContextMap" - }, - "CreateTime": { - "type": "string" - }, - "IntegrationArn": { - "type": "string" - }, - "IntegrationName": { - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "KMSKeyId": { - "type": "string" - }, - "SourceArn": { - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "TargetArn": { - "type": "string" - } - }, - "propertyTransform": { - "/properties/KmsKeyId": "$join([\"arn:(aws)[-]{0,1}[a-z]{0,2}[-]{0,1}[a-z]{0,3}:kms:[a-z]{2}[-]{1}[a-z]{3,10}[-]{0,1}[a-z]{0,10}[-]{1}[1-3]{1}:[0-9]{12}[:]{1}key\\/\", KmsKeyId])", - "/properties/SourceArn": "$lowercase(SourceArn)" - }, - "readOnlyProperties": [ - "/properties/IntegrationArn", - "/properties/CreateTime" - ], - "required": [ - "SourceArn", - "TargetArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::RDS::Integration" -} diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-sagemaker-appimageconfig.json b/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-sagemaker-appimageconfig.json new file mode 100644 index 0000000000..01116f524b --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-sagemaker-appimageconfig.json @@ -0,0 +1,238 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AppImageConfigName", + "/properties/Tags" + ], + "definitions": { + "ContainerConfig": { + "additionalProperties": false, + "properties": { + "ContainerArguments": { + "items": { + "$ref": "#/definitions/CustomImageContainerArguments" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "ContainerEntrypoint": { + "items": { + "$ref": "#/definitions/CustomImageContainerEntrypoint" + }, + "maxItems": 1, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "ContainerEnvironmentVariables": { + "items": { + "$ref": "#/definitions/CustomImageContainerEnvironmentVariable" + }, + "maxItems": 25, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "CustomImageContainerArguments": { + "maxLength": 64, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "CustomImageContainerEntrypoint": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "CustomImageContainerEnvironmentVariable": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "FileSystemConfig": { + "additionalProperties": false, + "properties": { + "DefaultGid": { + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "DefaultUid": { + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "MountPath": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^/.*", + "type": "string" + } + }, + "type": "object" + }, + "JupyterLabAppImageConfig": { + "additionalProperties": false, + "properties": { + "ContainerConfig": { + "$ref": "#/definitions/ContainerConfig" + } + }, + "type": "object" + }, + "KernelGatewayImageConfig": { + "additionalProperties": false, + "properties": { + "FileSystemConfig": { + "$ref": "#/definitions/FileSystemConfig" + }, + "KernelSpecs": { + "items": { + "$ref": "#/definitions/KernelSpec" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "KernelSpecs" + ], + "type": "object" + }, + "KernelSpec": { + "additionalProperties": false, + "properties": { + "DisplayName": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Name": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "sagemaker:CreateAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + }, + "delete": { + "permissions": [ + "sagemaker:DeleteAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + }, + "list": { + "permissions": [ + "sagemaker:ListAppImageConfigs" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeAppImageConfig" + ] + }, + "update": { + "permissions": [ + "sagemaker:UpdateAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + } + }, + "primaryIdentifier": [ + "/properties/AppImageConfigName" + ], + "properties": { + "AppImageConfigArn": { + "maxLength": 256, + "minLength": 1, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:app-image-config/.*", + "type": "string" + }, + "AppImageConfigName": { + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", + "type": "string" + }, + "JupyterLabAppImageConfig": { + "$ref": "#/definitions/JupyterLabAppImageConfig" + }, + "KernelGatewayImageConfig": { + "$ref": "#/definitions/KernelGatewayImageConfig" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/AppImageConfigArn" + ], + "required": [ + "AppImageConfigName" + ], + "typeName": "AWS::SageMaker::AppImageConfig", + "writeOnlyProperties": [ + "/properties/Tags" + ] +} diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-securityhub-delegatedadmin.json b/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-securityhub-delegatedadmin.json deleted file mode 100644 index 12b73dd551..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-securityhub-delegatedadmin.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AdminAccountId" - ], - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AdminAccountId": { - "type": "string" - }, - "DelegatedAdminIdentifier": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "Status": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/DelegatedAdminIdentifier", - "/properties/Status" - ], - "required": [ - "AdminAccountId" - ], - "typeName": "AWS::SecurityHub::DelegatedAdmin" -} diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-securityhub-productsubscription.json b/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-securityhub-productsubscription.json deleted file mode 100644 index 4001045463..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-securityhub-productsubscription.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ProductArn" - ], - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Id": { - "type": "string" - }, - "ProductArn": { - "type": "string" - }, - "ProductSubscriptionArn": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/ProductSubscriptionArn" - ], - "required": [ - "ProductArn" - ], - "typeName": "AWS::SecurityHub::ProductSubscription" -} diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-signer-profilepermission.json b/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-signer-profilepermission.json deleted file mode 100644 index 0f8d81fad7..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-signer-profilepermission.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ProfileName", - "/properties/Action", - "/properties/Principal", - "/properties/StatementId", - "/properties/ProfileVersion" - ], - "handlers": { - "create": { - "permissions": [ - "signer:AddProfilePermission", - "signer:ListProfilePermissions" - ] - }, - "delete": { - "permissions": [ - "signer:RemoveProfilePermission", - "signer:ListProfilePermissions" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "ProfileName": { - "$ref": "resource-schema.json#/properties/ProfileName" - }, - "StatementId": { - "$ref": "resource-schema.json#/properties/StatementId" - } - } - }, - "permissions": [ - "signer:ListProfilePermissions", - "signer:GetSigningProfile" - ] - }, - "read": { - "permissions": [ - "signer:ListProfilePermissions" - ] - } - }, - "primaryIdentifier": [ - "/properties/StatementId", - "/properties/ProfileName" - ], - "properties": { - "Action": { - "type": "string" - }, - "Principal": { - "type": "string" - }, - "ProfileName": { - "type": "string" - }, - "ProfileVersion": { - "pattern": "^[0-9a-zA-Z]{10}$", - "type": "string" - }, - "StatementId": { - "type": "string" - } - }, - "required": [ - "ProfileName", - "Action", - "Principal", - "StatementId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "typeName": "AWS::Signer::ProfilePermission" -} diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-verifiedpermissions-identitysource.json b/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-verifiedpermissions-identitysource.json new file mode 100644 index 0000000000..46a0ad88f1 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-verifiedpermissions-identitysource.json @@ -0,0 +1,221 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PolicyStoreId" + ], + "definitions": { + "CognitoGroupConfiguration": { + "additionalProperties": false, + "properties": { + "GroupEntityType": { + "maxLength": 200, + "minLength": 1, + "pattern": "^([_a-zA-Z][_a-zA-Z0-9]*::)*[_a-zA-Z][_a-zA-Z0-9]*$", + "type": "string" + } + }, + "required": [ + "GroupEntityType" + ], + "type": "object" + }, + "CognitoUserPoolConfiguration": { + "additionalProperties": false, + "properties": { + "ClientIds": { + "insertionOrder": false, + "items": { + "maxLength": 255, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "maxItems": 1000, + "minItems": 0, + "type": "array" + }, + "GroupConfiguration": { + "$ref": "#/definitions/CognitoGroupConfiguration" + }, + "UserPoolArn": { + "maxLength": 255, + "minLength": 1, + "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", + "type": "string" + } + }, + "required": [ + "UserPoolArn" + ], + "type": "object" + }, + "IdentitySourceConfiguration": { + "additionalProperties": false, + "properties": { + "CognitoUserPoolConfiguration": { + "$ref": "#/definitions/CognitoUserPoolConfiguration" + } + }, + "required": [ + "CognitoUserPoolConfiguration" + ], + "title": "CognitoUserPoolConfiguration", + "type": "object" + }, + "IdentitySourceDetails": { + "additionalProperties": false, + "properties": { + "ClientIds": { + "insertionOrder": false, + "items": { + "maxLength": 255, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "maxItems": 1000, + "minItems": 0, + "type": "array" + }, + "DiscoveryUrl": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^https://.*$", + "type": "string" + }, + "OpenIdIssuer": { + "$ref": "#/definitions/OpenIdIssuer" + }, + "UserPoolArn": { + "maxLength": 255, + "minLength": 1, + "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", + "type": "string" + } + }, + "type": "object" + }, + "OpenIdIssuer": { + "enum": [ + "COGNITO" + ], + "type": "string" + } + }, + "deprecatedProperties": [ + "/properties/Details" + ], + "handlers": { + "create": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "delete": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "PolicyStoreId": { + "$ref": "resource-schema.json#/properties/PolicyStoreId" + } + }, + "required": [ + "PolicyStoreId" + ] + }, + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "read": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "update": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + } + }, + "primaryIdentifier": [ + "/properties/IdentitySourceId", + "/properties/PolicyStoreId" + ], + "properties": { + "Configuration": { + "$ref": "#/definitions/IdentitySourceConfiguration" + }, + "Details": { + "$ref": "#/definitions/IdentitySourceDetails" + }, + "IdentitySourceId": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]*$", + "type": "string" + }, + "PolicyStoreId": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]*$", + "type": "string" + }, + "PrincipalEntityType": { + "maxLength": 200, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Details", + "/properties/IdentitySourceId" + ], + "required": [ + "Configuration", + "PolicyStoreId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-avp", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::VerifiedPermissions::IdentitySource" +} diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_2/__init__.py b/src/cfnlint/data/schemas/providers/ap_northeast_2/__init__.py index d8ec490025..bfb77517e7 100644 --- a/src/cfnlint/data/schemas/providers/ap_northeast_2/__init__.py +++ b/src/cfnlint/data/schemas/providers/ap_northeast_2/__init__.py @@ -40,6 +40,7 @@ "AWS::EC2::NetworkPerformanceMetricSubscription", "AWS::MediaLive::Channel", "AWS::Greengrass::DeviceDefinition", + "AWS::CleanRoomsML::TrainingDataset", "AWS::CloudFront::ContinuousDeploymentPolicy", "AWS::QuickSight::Analysis", "AWS::ECR::ReplicationConfiguration", @@ -207,6 +208,7 @@ "AWS::RoboMaker::SimulationApplication", "AWS::NetworkManager::TransitGatewayRegistration", "AWS::Amplify::App", + "AWS::EntityResolution::PolicyStatement", "AWS::InspectorV2::Filter", "AWS::ElastiCache::ReplicationGroup", "AWS::StepFunctions::StateMachineAlias", @@ -344,6 +346,7 @@ "AWS::Glue::SchemaVersion", "AWS::SageMaker::Space", "AWS::IoT::PolicyPrincipalAttachment", + "AWS::IVS::PlaybackRestrictionPolicy", "AWS::FMS::NotificationChannel", "AWS::MSK::BatchScramSecret", "AWS::Connect::HoursOfOperation", @@ -375,6 +378,7 @@ "AWS::IAM::ServerCertificate", "AWS::CodeStarConnections::Connection", "AWS::IoT::SecurityProfile", + "AWS::GlobalAccelerator::CrossAccountAttachment", "AWS::Events::EventBus", "AWS::DocDB::EventSubscription", "AWS::SQS::QueueInlinePolicy", @@ -443,6 +447,7 @@ "AWS::Cognito::UserPoolUICustomizationAttachment", "AWS::SageMaker::NotebookInstanceLifecycleConfig", "AWS::ImageBuilder::ContainerRecipe", + "AWS::CodeConnections::Connection", "AWS::Connect::Rule", "AWS::EFS::AccessPoint", "AWS::Redshift::ClusterSecurityGroupIngress", @@ -474,6 +479,7 @@ "AWS::EC2::ClientVpnRoute", "AWS::ImageBuilder::Workflow", "AWS::ECS::TaskSet", + "AWS::SecurityLake::AwsLogSource", "AWS::AppSync::ApiKey", "AWS::CloudFormation::TypeActivation", "AWS::GroundStation::DataflowEndpointGroup", @@ -618,6 +624,7 @@ "AWS::EMR::InstanceGroupConfig", "AWS::MediaConnect::Flow", "AWS::StepFunctions::Activity", + "AWS::IVS::EncoderConfiguration", "AWS::Synthetics::Group", "AWS::Forecast::Dataset", "AWS::SageMaker::Project", @@ -630,6 +637,7 @@ "AWS::CodeBuild::SourceCredential", "AWS::EMR::InstanceFleetConfig", "AWS::EMR::Cluster", + "AWS::SecurityLake::DataLake", "AWS::CodePipeline::Webhook", "AWS::ApiGatewayV2::DomainName", "AWS::CustomerProfiles::EventStream", @@ -716,6 +724,7 @@ "AWS::ServiceCatalog::Portfolio", "AWS::CustomerProfiles::Domain", "AWS::IoT::Policy", + "AWS::APS::Scraper", "AWS::EC2::TransitGatewayRoute", "AWS::SSM::MaintenanceWindow", "AWS::DataZone::Domain", @@ -737,6 +746,7 @@ "AWS::DevOpsGuru::LogAnomalyDetectionIntegration", "AWS::NetworkManager::Link", "AWS::QLDB::Stream", + "AWS::SecurityLake::Subscriber", "AWS::SageMaker::NotebookInstance", "AWS::IoTSiteWise::Dashboard", "AWS::Pinpoint::APNSVoipChannel", @@ -839,6 +849,7 @@ "AWS::StepFunctions::StateMachine", "AWS::RDS::DBClusterParameterGroup", "AWS::WAF::XssMatchSet", + "AWS::IVS::StorageConfiguration", "AWS::EC2::VerifiedAccessTrustProvider", "AWS::AppMesh::VirtualRouter", "AWS::IoT::CertificateProvider", @@ -885,6 +896,7 @@ "AWS::CleanRooms::Collaboration", "AWS::SSM::Association", "AWS::EC2::ClientVpnEndpoint", + "AWS::EntityResolution::IdNamespace", "AWS::CloudFront::ResponseHeadersPolicy", "AWS::SecurityHub::AutomationRule", "AWS::MSK::ClusterPolicy", @@ -1083,7 +1095,6 @@ "aws-amazonmq-configurationassociation.json", "aws-wafregional-ipset.json", "aws-redshiftserverless-namespace.json", - "aws-ec2-securitygroupegress.json", "aws-ec2-localgatewayroutetablevpcassociation.json", "aws-config-organizationconfigrule.json", "aws-glue-dataqualityruleset.json", @@ -1094,6 +1105,7 @@ "aws-ec2-networkperformancemetricsubscription.json", "aws-medialive-channel.json", "aws-greengrass-devicedefinition.json", + "aws-cleanroomsml-trainingdataset.json", "aws-cloudfront-continuousdeploymentpolicy.json", "aws-quicksight-analysis.json", "aws-ecr-replicationconfiguration.json", @@ -1112,7 +1124,6 @@ "aws-apigatewayv2-integrationresponse.json", "aws-iotevents-input.json", "aws-ec2-networkacl.json", - "aws-lambda-eventsourcemapping.json", "aws-budgets-budgetsaction.json", "aws-logs-resourcepolicy.json", "aws-lex-botversion.json", @@ -1134,7 +1145,6 @@ "aws-mediatailor-channel.json", "aws-lambda-url.json", "aws-mediatailor-channelpolicy.json", - "aws-gamelift-fleet.json", "aws-datasync-locationfsxwindows.json", "aws-gamelift-build.json", "aws-apigateway-requestvalidator.json", @@ -1212,6 +1222,7 @@ "aws-iotsitewise-portal.json", "aws-events-archive.json", "aws-msk-cluster.json", + "aws-securityhub-delegatedadmin.json", "aws-controltower-enabledbaseline.json", "aws-appstream-appblockbuilder.json", "aws-ec2-vpcendpointconnectionnotification.json", @@ -1257,6 +1268,7 @@ "aws-s3objectlambda-accesspointpolicy.json", "aws-networkmanager-transitgatewayregistration.json", "aws-amplify-app.json", + "aws-entityresolution-policystatement.json", "aws-inspectorv2-filter.json", "aws-elasticache-replicationgroup.json", "aws-stepfunctions-statemachinealias.json", @@ -1318,7 +1330,6 @@ "aws-ec2-transitgatewaymulticastdomainassociation.json", "aws-s3outposts-endpoint.json", "aws-waf-sizeconstraintset.json", - "aws-ec2-transitgatewayroutetableassociation.json", "aws-appconfig-environment.json", "aws-imagebuilder-image.json", "aws-elasticache-securitygroupingress.json", @@ -1391,6 +1402,7 @@ "aws-glue-schemaversion.json", "aws-sagemaker-space.json", "aws-iot-policyprincipalattachment.json", + "aws-ivs-playbackrestrictionpolicy.json", "aws-fms-notificationchannel.json", "aws-msk-batchscramsecret.json", "aws-connect-hoursofoperation.json", @@ -1420,6 +1432,7 @@ "aws-iam-servercertificate.json", "aws-codestarconnections-connection.json", "aws-iot-securityprofile.json", + "aws-globalaccelerator-crossaccountattachment.json", "aws-events-eventbus.json", "aws-docdb-eventsubscription.json", "aws-sqs-queueinlinepolicy.json", @@ -1452,6 +1465,7 @@ "aws-appconfig-configurationprofile.json", "aws-managedblockchain-node.json", "aws-route53resolver-firewallrulegroup.json", + "aws-docdbelastic-cluster.json", "aws-msk-configuration.json", "aws-ec2-transitgateway.json", "aws-cognito-userpoolgroup.json", @@ -1467,6 +1481,7 @@ "aws-config-organizationconformancepack.json", "aws-connect-quickconnect.json", "aws-logs-querydefinition.json", + "aws-securityhub-productsubscription.json", "aws-iam-instanceprofile.json", "aws-iot-billinggroup.json", "aws-appstream-application.json", @@ -1485,6 +1500,7 @@ "aws-cognito-userpooluicustomizationattachment.json", "aws-sagemaker-notebookinstancelifecycleconfig.json", "aws-imagebuilder-containerrecipe.json", + "aws-codeconnections-connection.json", "aws-connect-rule.json", "aws-efs-accesspoint.json", "aws-redshift-clustersecuritygroupingress.json", @@ -1515,6 +1531,7 @@ "aws-ec2-clientvpnroute.json", "aws-imagebuilder-workflow.json", "aws-ecs-taskset.json", + "aws-securitylake-awslogsource.json", "aws-appsync-apikey.json", "aws-cloudformation-typeactivation.json", "aws-groundstation-dataflowendpointgroup.json", @@ -1657,6 +1674,7 @@ "aws-emr-instancegroupconfig.json", "aws-mediaconnect-flow.json", "aws-stepfunctions-activity.json", + "aws-ivs-encoderconfiguration.json", "aws-synthetics-group.json", "aws-forecast-dataset.json", "aws-sagemaker-project.json", @@ -1669,6 +1687,7 @@ "aws-codebuild-sourcecredential.json", "aws-emr-instancefleetconfig.json", "aws-emr-cluster.json", + "aws-securitylake-datalake.json", "aws-codepipeline-webhook.json", "aws-apigatewayv2-domainname.json", "aws-customerprofiles-eventstream.json", @@ -1704,12 +1723,11 @@ "aws-datasync-locationefs.json", "aws-ec2-localgatewayroutetable.json", "aws-apigateway-resource.json", - "aws-sagemaker-appimageconfig.json", - "aws-verifiedpermissions-identitysource.json", "aws-macie-session.json", "aws-elasticloadbalancingv2-targetgroup.json", "aws-applicationautoscaling-scalingpolicy.json", "aws-pipes-pipe.json", + "aws-iotsitewise-gateway.json", "aws-emr-studiosessionmapping.json", "aws-ivs-playbackkeypair.json", "aws-cloudformation-macro.json", @@ -1752,6 +1770,7 @@ "aws-servicecatalog-portfolio.json", "aws-customerprofiles-domain.json", "aws-iot-policy.json", + "aws-aps-scraper.json", "aws-ec2-transitgatewayroute.json", "aws-ssm-maintenancewindow.json", "aws-datazone-domain.json", @@ -1773,6 +1792,7 @@ "aws-devopsguru-loganomalydetectionintegration.json", "aws-networkmanager-link.json", "aws-qldb-stream.json", + "aws-securitylake-subscriber.json", "aws-sagemaker-notebookinstance.json", "aws-iotsitewise-dashboard.json", "aws-pinpoint-apnsvoipchannel.json", @@ -1804,13 +1824,14 @@ "aws-appsync-graphqlapi.json", "aws-gamelift-matchmakingruleset.json", "aws-ec2-egressonlyinternetgateway.json", + "aws-securityhub-insight.json", + "aws-config-conformancepack.json", "aws-ec2-vpccidrblock.json", "aws-aps-workspace.json", "aws-gamelift-script.json", "aws-iam-virtualmfadevice.json", "aws-ec2-networkinsightspath.json", "aws-mediatailor-vodsource.json", - "aws-acmpca-certificateauthority.json", "aws-athena-preparedstatement.json", "aws-autoscaling-scheduledaction.json", "aws-cognito-identitypoolprincipaltag.json", @@ -1870,6 +1891,7 @@ "aws-stepfunctions-statemachine.json", "aws-rds-dbclusterparametergroup.json", "aws-waf-xssmatchset.json", + "aws-ivs-storageconfiguration.json", "aws-ec2-verifiedaccesstrustprovider.json", "aws-appmesh-virtualrouter.json", "aws-iot-certificateprovider.json", @@ -1898,6 +1920,7 @@ "aws-sagemaker-userprofile.json", "aws-personalize-dataset.json", "aws-ec2-prefixlist.json", + "aws-ec2-instance.json", "aws-networkmanager-device.json", "aws-proton-environmentaccountconnection.json", "aws-ec2-subnetcidrblock.json", @@ -1914,6 +1937,7 @@ "aws-cleanrooms-collaboration.json", "aws-ssm-association.json", "aws-ec2-clientvpnendpoint.json", + "aws-entityresolution-idnamespace.json", "aws-cloudfront-responseheaderspolicy.json", "aws-securityhub-automationrule.json", "aws-msk-clusterpolicy.json", diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-acmpca-certificateauthority.json b/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-acmpca-certificateauthority.json new file mode 100644 index 0000000000..08ec85e5fa --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-acmpca-certificateauthority.json @@ -0,0 +1,429 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Type", + "/properties/KeyAlgorithm", + "/properties/SigningAlgorithm", + "/properties/Subject", + "/properties/CsrExtensions", + "/properties/KeyStorageSecurityStandard", + "/properties/UsageMode" + ], + "definitions": { + "AccessDescription": { + "additionalProperties": false, + "properties": { + "AccessLocation": { + "$ref": "#/definitions/GeneralName" + }, + "AccessMethod": { + "$ref": "#/definitions/AccessMethod" + } + }, + "required": [ + "AccessMethod", + "AccessLocation" + ], + "type": "object" + }, + "AccessMethod": { + "additionalProperties": false, + "properties": { + "AccessMethodType": { + "$ref": "#/definitions/AccessMethodType" + }, + "CustomObjectIdentifier": { + "$ref": "#/definitions/CustomObjectIdentifier" + } + }, + "type": "object" + }, + "AccessMethodType": { + "type": "string" + }, + "Arn": { + "type": "string" + }, + "CrlConfiguration": { + "additionalProperties": false, + "properties": { + "CrlDistributionPointExtensionConfiguration": { + "$ref": "#/definitions/CrlDistributionPointExtensionConfiguration" + }, + "CustomCname": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + }, + "ExpirationInDays": { + "type": "integer" + }, + "S3BucketName": { + "type": "string" + }, + "S3ObjectAcl": { + "type": "string" + } + }, + "type": "object" + }, + "CrlDistributionPointExtensionConfiguration": { + "additionalProperties": false, + "properties": { + "OmitExtension": { + "type": "boolean" + } + }, + "required": [ + "OmitExtension" + ], + "type": "object" + }, + "CsrExtensions": { + "additionalProperties": false, + "properties": { + "KeyUsage": { + "$ref": "#/definitions/KeyUsage" + }, + "SubjectInformationAccess": { + "$ref": "#/definitions/SubjectInformationAccess" + } + }, + "type": "object" + }, + "CustomAttribute": { + "additionalProperties": false, + "properties": { + "ObjectIdentifier": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "ObjectIdentifier", + "Value" + ], + "type": "object" + }, + "CustomAttributeList": { + "items": { + "$ref": "#/definitions/CustomAttribute" + }, + "type": "array" + }, + "CustomObjectIdentifier": { + "type": "string" + }, + "DnsName": { + "type": "string" + }, + "EdiPartyName": { + "additionalProperties": false, + "properties": { + "NameAssigner": { + "type": "string" + }, + "PartyName": { + "type": "string" + } + }, + "required": [ + "PartyName", + "NameAssigner" + ], + "type": "object" + }, + "GeneralName": { + "additionalProperties": false, + "properties": { + "DirectoryName": { + "$ref": "#/definitions/Subject" + }, + "DnsName": { + "$ref": "#/definitions/DnsName" + }, + "EdiPartyName": { + "$ref": "#/definitions/EdiPartyName" + }, + "IpAddress": { + "$ref": "#/definitions/IpAddress" + }, + "OtherName": { + "$ref": "#/definitions/OtherName" + }, + "RegisteredId": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Rfc822Name": { + "$ref": "#/definitions/Rfc822Name" + }, + "UniformResourceIdentifier": { + "$ref": "#/definitions/UniformResourceIdentifier" + } + }, + "type": "object" + }, + "IpAddress": { + "type": "string" + }, + "KeyUsage": { + "additionalProperties": false, + "properties": { + "CRLSign": { + "default": false, + "type": "boolean" + }, + "DataEncipherment": { + "default": false, + "type": "boolean" + }, + "DecipherOnly": { + "default": false, + "type": "boolean" + }, + "DigitalSignature": { + "default": false, + "type": "boolean" + }, + "EncipherOnly": { + "default": false, + "type": "boolean" + }, + "KeyAgreement": { + "default": false, + "type": "boolean" + }, + "KeyCertSign": { + "default": false, + "type": "boolean" + }, + "KeyEncipherment": { + "default": false, + "type": "boolean" + }, + "NonRepudiation": { + "default": false, + "type": "boolean" + } + }, + "type": "object" + }, + "OcspConfiguration": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + }, + "OcspCustomCname": { + "type": "string" + } + }, + "type": "object" + }, + "OtherName": { + "additionalProperties": false, + "properties": { + "TypeId": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "TypeId", + "Value" + ], + "type": "object" + }, + "RevocationConfiguration": { + "additionalProperties": false, + "properties": { + "CrlConfiguration": { + "$ref": "#/definitions/CrlConfiguration" + }, + "OcspConfiguration": { + "$ref": "#/definitions/OcspConfiguration" + } + }, + "type": "object" + }, + "Rfc822Name": { + "type": "string" + }, + "Subject": { + "additionalProperties": false, + "properties": { + "CommonName": { + "type": "string" + }, + "Country": { + "type": "string" + }, + "CustomAttributes": { + "$ref": "#/definitions/CustomAttributeList" + }, + "DistinguishedNameQualifier": { + "type": "string" + }, + "GenerationQualifier": { + "type": "string" + }, + "GivenName": { + "type": "string" + }, + "Initials": { + "type": "string" + }, + "Locality": { + "type": "string" + }, + "Organization": { + "type": "string" + }, + "OrganizationalUnit": { + "type": "string" + }, + "Pseudonym": { + "type": "string" + }, + "SerialNumber": { + "type": "string" + }, + "State": { + "type": "string" + }, + "Surname": { + "type": "string" + }, + "Title": { + "type": "string" + } + }, + "type": "object" + }, + "SubjectInformationAccess": { + "items": { + "$ref": "#/definitions/AccessDescription" + }, + "type": "array" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "UniformResourceIdentifier": { + "type": "string" + } + }, + "handlers": { + "create": { + "permissions": [ + "acm-pca:CreateCertificateAuthority", + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr" + ] + }, + "delete": { + "permissions": [ + "acm-pca:DeleteCertificateAuthority", + "acm-pca:DescribeCertificateAuthority" + ] + }, + "list": { + "permissions": [ + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr", + "acm-pca:ListCertificateAuthorities", + "acm-pca:ListTags" + ] + }, + "read": { + "permissions": [ + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr", + "acm-pca:ListTags" + ] + }, + "update": { + "permissions": [ + "acm-pca:ListTags", + "acm-pca:TagCertificateAuthority", + "acm-pca:UntagCertificateAuthority", + "acm-pca:UpdateCertificateAuthority" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "$ref": "#/definitions/Arn" + }, + "CertificateSigningRequest": { + "type": "string" + }, + "CsrExtensions": { + "$ref": "#/definitions/CsrExtensions" + }, + "KeyAlgorithm": { + "type": "string" + }, + "KeyStorageSecurityStandard": { + "type": "string" + }, + "RevocationConfiguration": { + "$ref": "#/definitions/RevocationConfiguration" + }, + "SigningAlgorithm": { + "type": "string" + }, + "Subject": { + "$ref": "#/definitions/Subject" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "Type": { + "type": "string" + }, + "UsageMode": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CertificateSigningRequest" + ], + "required": [ + "Type", + "KeyAlgorithm", + "SigningAlgorithm", + "Subject" + ], + "sourceUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_ACMPCA.html", + "typeName": "AWS::ACMPCA::CertificateAuthority", + "writeOnlyProperties": [ + "/properties/Subject", + "/properties/Subject", + "/properties/CsrExtensions", + "/properties/Tags", + "/properties/RevocationConfiguration", + "/properties/KeyStorageSecurityStandard" + ] +} diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-config-conformancepack.json b/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-config-conformancepack.json deleted file mode 100644 index cc35e80876..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-config-conformancepack.json +++ /dev/null @@ -1,140 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ConformancePackName" - ], - "definitions": { - "ConformancePackInputParameter": { - "additionalProperties": false, - "properties": { - "ParameterName": { - "$ref": "#/definitions/ParameterName" - }, - "ParameterValue": { - "$ref": "#/definitions/ParameterValue" - } - }, - "required": [ - "ParameterName", - "ParameterValue" - ], - "type": "object" - }, - "ParameterName": { - "maxLength": 255, - "minLength": 0, - "type": "string" - }, - "ParameterValue": { - "maxLength": 4096, - "minLength": 0, - "type": "string" - } - }, - "documentationUrl": "https://docs.aws.amazon.com/config/latest/developerguide/conformance-packs.html", - "handlers": { - "create": { - "permissions": [ - "config:PutConformancePack", - "config:DescribeConformancePackStatus", - "config:DescribeConformancePacks", - "s3:GetObject", - "s3:GetBucketAcl", - "iam:CreateServiceLinkedRole", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "config:DeleteConformancePack", - "config:DescribeConformancePackStatus" - ] - }, - "list": { - "permissions": [ - "config:DescribeConformancePacks" - ] - }, - "read": { - "permissions": [ - "config:DescribeConformancePacks" - ] - }, - "update": { - "permissions": [ - "config:PutConformancePack", - "config:DescribeConformancePackStatus", - "s3:GetObject", - "s3:GetBucketAcl", - "iam:CreateServiceLinkedRole", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/ConformancePackName" - ], - "properties": { - "ConformancePackInputParameters": { - "items": { - "$ref": "#/definitions/ConformancePackInputParameter" - }, - "maxItems": 60, - "minItems": 0, - "type": "array" - }, - "ConformancePackName": { - "maxLength": 256, - "minLength": 1, - "pattern": "[a-zA-Z][-a-zA-Z0-9]*", - "type": "string" - }, - "DeliveryS3Bucket": { - "maxLength": 63, - "minLength": 0, - "type": "string" - }, - "DeliveryS3KeyPrefix": { - "maxLength": 1024, - "minLength": 0, - "type": "string" - }, - "TemplateBody": { - "maxLength": 51200, - "minLength": 1, - "type": "string" - }, - "TemplateS3Uri": { - "maxLength": 1024, - "minLength": 1, - "pattern": "s3://.*", - "type": "string" - }, - "TemplateSSMDocumentDetails": { - "additionalProperties": false, - "properties": { - "DocumentName": { - "maxLength": 128, - "minLength": 3, - "type": "string" - }, - "DocumentVersion": { - "maxLength": 128, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - } - }, - "required": [ - "ConformancePackName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-config.git", - "typeName": "AWS::Config::ConformancePack", - "writeOnlyProperties": [ - "/properties/TemplateBody", - "/properties/TemplateS3Uri", - "/properties/TemplateSSMDocumentDetails" - ] -} diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-docdbelastic-cluster.json b/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-docdbelastic-cluster.json deleted file mode 100644 index 00ebbcd43c..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-docdbelastic-cluster.json +++ /dev/null @@ -1,200 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AdminUserName", - "/properties/AuthType", - "/properties/ClusterName", - "/properties/KmsKeyId" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "docdb-elastic:CreateCluster", - "docdb-elastic:TagResource", - "docdb-elastic:GetCluster", - "docdb-elastic:ListTagsForResource", - "ec2:CreateVpcEndpoint", - "ec2:DescribeVpcEndpoints", - "ec2:DeleteVpcEndpoints", - "ec2:ModifyVpcEndpoint", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:DescribeVpcAttribute", - "ec2:DescribeVpcs", - "ec2:DescribeAvailabilityZones", - "secretsmanager:ListSecrets", - "secretsmanager:ListSecretVersionIds", - "secretsmanager:DescribeSecret", - "secretsmanager:GetSecretValue", - "secretsmanager:GetResourcePolicy", - "kms:DescribeKey", - "kms:CreateGrant", - "kms:GenerateDataKey", - "kms:Decrypt", - "iam:CreateServiceLinkedRole" - ] - }, - "delete": { - "permissions": [ - "docdb-elastic:DeleteCluster", - "docdb-elastic:GetCluster", - "ec2:DescribeVpcEndpoints", - "ec2:DeleteVpcEndpoints", - "ec2:ModifyVpcEndpoint", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:DescribeVpcAttribute", - "ec2:DescribeVpcs", - "ec2:DescribeAvailabilityZones" - ] - }, - "list": { - "permissions": [ - "docdb-elastic:ListClusters" - ] - }, - "read": { - "permissions": [ - "docdb-elastic:GetCluster", - "docdb-elastic:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "docdb-elastic:UpdateCluster", - "docdb-elastic:TagResource", - "docdb-elastic:UntagResource", - "docdb-elastic:GetCluster", - "docdb-elastic:ListTagsForResource", - "ec2:CreateVpcEndpoint", - "ec2:DescribeVpcEndpoints", - "ec2:DeleteVpcEndpoints", - "ec2:ModifyVpcEndpoint", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:DescribeVpcAttribute", - "ec2:DescribeVpcs", - "ec2:DescribeAvailabilityZones", - "secretsmanager:ListSecrets", - "secretsmanager:ListSecretVersionIds", - "secretsmanager:DescribeSecret", - "secretsmanager:GetSecretValue", - "secretsmanager:GetResourcePolicy", - "kms:DescribeKey", - "kms:CreateGrant", - "kms:GenerateDataKey", - "kms:Decrypt" - ] - } - }, - "primaryIdentifier": [ - "/properties/ClusterArn" - ], - "properties": { - "AdminUserName": { - "type": "string" - }, - "AdminUserPassword": { - "type": "string" - }, - "AuthType": { - "type": "string" - }, - "ClusterArn": { - "type": "string" - }, - "ClusterEndpoint": { - "type": "string" - }, - "ClusterName": { - "maxLength": 50, - "minLength": 1, - "pattern": "[a-zA-z][a-zA-Z0-9]*(-[a-zA-Z0-9]+)*", - "type": "string" - }, - "KmsKeyId": { - "type": "string" - }, - "PreferredMaintenanceWindow": { - "type": "string" - }, - "ShardCapacity": { - "type": "integer" - }, - "ShardCount": { - "type": "integer" - }, - "SubnetIds": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "minItems": 0, - "type": "array", - "uniqueItems": true - }, - "VpcSecurityGroupIds": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/ClusterArn", - "/properties/ClusterEndpoint" - ], - "required": [ - "ClusterName", - "AdminUserName", - "ShardCapacity", - "ShardCount", - "AuthType" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-docdbelastic/", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::DocDBElastic::Cluster", - "writeOnlyProperties": [ - "/properties/AdminUserPassword" - ] -} diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-dynamodb-globaltable.json b/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-dynamodb-globaltable.json index 4e5ba995cb..ae37e9142b 100644 --- a/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-dynamodb-globaltable.json +++ b/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-dynamodb-globaltable.json @@ -8,6 +8,27 @@ ] ], "additionalProperties": false, + "allOf": [ + { + "if": { + "required": [ + "LocalSecondaryIndexes" + ], + "type": "object" + }, + "then": { + "properties": { + "AttributeDefinitions": { + "minItems": 2 + }, + "KeySchema": { + "minItems": 2 + } + }, + "type": "object" + } + } + ], "createOnlyProperties": [ "/properties/LocalSecondaryIndexes", "/properties/TableName", @@ -79,13 +100,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "minItems": 1, - "type": "array", - "uniqueItems": true + "minItems": 1 }, "Projection": { "$ref": "#/definitions/Projection" @@ -102,22 +119,60 @@ "type": "object" }, "KeySchema": { - "additionalProperties": false, - "properties": { - "AttributeName": { - "maxLength": 255, - "minLength": 1, - "type": "string" + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "KeyType": { + "enum": [ + "HASH", + "RANGE" + ], + "type": "string" + } }, - "KeyType": { - "type": "string" - } + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" }, - "required": [ - "KeyType", - "AttributeName" + "prefixItems": [ + { + "additionalProperties": false, + "properties": { + "KeyType": { + "const": "HASH", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + }, + { + "properties": { + "KeyType": { + "const": "RANGE", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + } ], - "type": "object" + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "KinesisStreamSpecification": { "additionalProperties": false, @@ -147,12 +202,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "type": "array", - "uniqueItems": true + "minItems": 2 }, "Projection": { "$ref": "#/definitions/Projection" @@ -511,7 +563,10 @@ }, "minItems": 1, "type": "array", - "uniqueItems": true + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "BillingMode": { "type": "string" @@ -525,13 +580,9 @@ "uniqueItems": true }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "minItems": 1, - "type": "array", - "uniqueItems": true + "minItems": 1 }, "LocalSecondaryIndexes": { "insertionOrder": false, diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-dynamodb-table.json b/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-dynamodb-table.json index efc82f1d70..f21d084b10 100644 --- a/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-dynamodb-table.json +++ b/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-dynamodb-table.json @@ -1,5 +1,26 @@ { "additionalProperties": false, + "allOf": [ + { + "if": { + "required": [ + "LocalSecondaryIndexes" + ], + "type": "object" + }, + "then": { + "properties": { + "AttributeDefinitions": { + "minItems": 2 + }, + "KeySchema": { + "minItems": 2 + } + }, + "type": "object" + } + } + ], "cfnLint": [ "AWS::DynamoDB::Table/Properties" ], @@ -95,11 +116,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 }, "Projection": { "$ref": "#/definitions/Projection" @@ -147,24 +166,57 @@ "type": "object" }, "KeySchema": { - "additionalProperties": false, - "properties": { - "AttributeName": { - "type": "string" + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "type": "string" + }, + "KeyType": { + "enum": [ + "HASH", + "RANGE" + ], + "type": "string" + } }, - "KeyType": { - "enum": [ - "HASH", - "RANGE" + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" + }, + "prefixItems": [ + { + "properties": { + "KeyType": { + "const": "HASH", + "type": "string" + } + }, + "required": [ + "KeyType" ], - "type": "string" + "type": "object" + }, + { + "properties": { + "KeyType": { + "const": "RANGE", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" } - }, - "required": [ - "KeyType", - "AttributeName" ], - "type": "object" + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "KinesisStreamSpecification": { "additionalProperties": false, @@ -192,11 +244,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 2 }, "Projection": { "$ref": "#/definitions/Projection" @@ -451,7 +501,10 @@ "$ref": "#/definitions/AttributeDefinition" }, "type": "array", - "uniqueItems": true + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "BillingMode": { "enum": [ @@ -479,11 +532,9 @@ "KeySchema": { "oneOf": [ { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 }, { "type": "object" diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-ec2-instance.json b/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-ec2-instance.json deleted file mode 100644 index 7b3bfed595..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-ec2-instance.json +++ /dev/null @@ -1,571 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ElasticGpuSpecifications", - "/properties/Ipv6Addresses", - "/properties/PlacementGroupName", - "/properties/HostResourceGroupArn", - "/properties/ImageId", - "/properties/CpuOptions", - "/properties/PrivateIpAddress", - "/properties/ElasticInferenceAccelerators", - "/properties/EnclaveOptions", - "/properties/HibernationOptions", - "/properties/KeyName", - "/properties/LicenseSpecifications", - "/properties/NetworkInterfaces", - "/properties/AvailabilityZone", - "/properties/SubnetId", - "/properties/LaunchTemplate", - "/properties/SecurityGroups", - "/properties/Ipv6AddressCount" - ], - "definitions": { - "AssociationParameter": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "BlockDeviceMapping": { - "additionalProperties": false, - "properties": { - "DeviceName": { - "type": "string" - }, - "Ebs": { - "$ref": "#/definitions/Ebs" - }, - "NoDevice": { - "$ref": "#/definitions/NoDevice" - }, - "VirtualName": { - "type": "string" - } - }, - "required": [ - "DeviceName" - ], - "requiredXor": [ - "VirtualName", - "Ebs", - "NoDevice" - ], - "type": "object" - }, - "CpuOptions": { - "additionalProperties": false, - "properties": { - "CoreCount": { - "type": "integer" - }, - "ThreadsPerCore": { - "type": "integer" - } - }, - "type": "object" - }, - "CreditSpecification": { - "additionalProperties": false, - "properties": { - "CPUCredits": { - "type": "string" - } - }, - "type": "object" - }, - "Ebs": { - "additionalProperties": false, - "properties": { - "DeleteOnTermination": { - "type": "boolean" - }, - "Encrypted": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "KmsKeyId": { - "type": "string" - }, - "SnapshotId": { - "type": "string" - }, - "VolumeSize": { - "type": "integer" - }, - "VolumeType": { - "type": "string" - } - }, - "type": "object" - }, - "ElasticGpuSpecification": { - "additionalProperties": false, - "properties": { - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "ElasticInferenceAccelerator": { - "additionalProperties": false, - "properties": { - "Count": { - "type": "integer" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "EnclaveOptions": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - } - }, - "type": "object" - }, - "HibernationOptions": { - "additionalProperties": false, - "properties": { - "Configured": { - "type": "boolean" - } - }, - "type": "object" - }, - "InstanceIpv6Address": { - "additionalProperties": false, - "properties": { - "Ipv6Address": { - "type": "string" - } - }, - "required": [ - "Ipv6Address" - ], - "type": "object" - }, - "LaunchTemplateSpecification": { - "additionalProperties": false, - "properties": { - "LaunchTemplateId": { - "type": "string" - }, - "LaunchTemplateName": { - "type": "string" - }, - "Version": { - "type": "string" - } - }, - "required": [ - "Version" - ], - "type": "object" - }, - "LicenseSpecification": { - "additionalProperties": false, - "properties": { - "LicenseConfigurationArn": { - "type": "string" - } - }, - "required": [ - "LicenseConfigurationArn" - ], - "type": "object" - }, - "NetworkInterface": { - "additionalProperties": false, - "properties": { - "AssociateCarrierIpAddress": { - "type": "boolean" - }, - "AssociatePublicIpAddress": { - "type": "boolean" - }, - "DeleteOnTermination": { - "type": "boolean" - }, - "Description": { - "type": "string" - }, - "DeviceIndex": { - "type": "string" - }, - "GroupSet": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": false - }, - "NetworkInterfaceId": { - "type": "string" - }, - "PrivateIpAddress": { - "type": "string" - }, - "PrivateIpAddresses": { - "items": { - "$ref": "#/definitions/PrivateIpAddressSpecification" - }, - "type": "array", - "uniqueItems": false - }, - "SecondaryPrivateIpAddressCount": { - "type": "integer" - }, - "SubnetId": { - "type": "string" - } - }, - "required": [ - "DeviceIndex" - ], - "type": "object" - }, - "NoDevice": { - "additionalProperties": false, - "type": "object" - }, - "PrivateDnsNameOptions": { - "additionalProperties": false, - "properties": { - "EnableResourceNameDnsAAAARecord": { - "type": "boolean" - }, - "EnableResourceNameDnsARecord": { - "type": "boolean" - }, - "HostnameType": { - "type": "string" - } - }, - "type": "object" - }, - "PrivateIpAddressSpecification": { - "additionalProperties": false, - "properties": { - "Primary": { - "type": "boolean" - }, - "PrivateIpAddress": { - "type": "string" - } - }, - "required": [ - "PrivateIpAddress", - "Primary" - ], - "type": "object" - }, - "SsmAssociation": { - "additionalProperties": false, - "properties": { - "AssociationParameters": { - "items": { - "$ref": "#/definitions/AssociationParameter" - }, - "type": "array", - "uniqueItems": false - }, - "DocumentName": { - "type": "string" - } - }, - "required": [ - "DocumentName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "Volume": { - "additionalProperties": false, - "properties": { - "Device": { - "type": "string" - }, - "VolumeId": { - "type": "string" - } - }, - "required": [ - "VolumeId", - "Device" - ], - "type": "object" - } - }, - "dependentExcluded": { - "NetworkInterfaces": [ - "SubnetId" - ], - "SubnetId": [ - "NetworkInterfaces" - ] - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AdditionalInfo": { - "type": "string" - }, - "Affinity": { - "enum": [ - "default", - "host" - ], - "type": "string" - }, - "AvailabilityZone": { - "cfnLint": [ - "AWS::EC2::Instance/Properties/AvailabilityZone" - ], - "type": "string" - }, - "BlockDeviceMappings": { - "items": { - "$ref": "#/definitions/BlockDeviceMapping" - }, - "type": "array", - "uniqueItems": false - }, - "CpuOptions": { - "$ref": "#/definitions/CpuOptions" - }, - "CreditSpecification": { - "$ref": "#/definitions/CreditSpecification" - }, - "DisableApiTermination": { - "type": "boolean" - }, - "EbsOptimized": { - "type": "boolean" - }, - "ElasticGpuSpecifications": { - "items": { - "$ref": "#/definitions/ElasticGpuSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "ElasticInferenceAccelerators": { - "items": { - "$ref": "#/definitions/ElasticInferenceAccelerator" - }, - "type": "array", - "uniqueItems": true - }, - "EnclaveOptions": { - "$ref": "#/definitions/EnclaveOptions" - }, - "HibernationOptions": { - "$ref": "#/definitions/HibernationOptions" - }, - "HostId": { - "type": "string" - }, - "HostResourceGroupArn": { - "type": "string" - }, - "IamInstanceProfile": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "ImageId": { - "type": "string" - }, - "InstanceInitiatedShutdownBehavior": { - "type": "string" - }, - "InstanceType": { - "cfnLint": [ - "AWS::EC2::Instance/Properties/InstanceType" - ], - "type": "string" - }, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": false - }, - "KernelId": { - "type": "string" - }, - "KeyName": { - "type": "string" - }, - "LaunchTemplate": { - "$ref": "#/definitions/LaunchTemplateSpecification" - }, - "LicenseSpecifications": { - "items": { - "$ref": "#/definitions/LicenseSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "Monitoring": { - "type": "boolean" - }, - "NetworkInterfaces": { - "items": { - "$ref": "#/definitions/NetworkInterface" - }, - "type": "array", - "uniqueItems": false - }, - "PlacementGroupName": { - "type": "string" - }, - "PrivateDnsName": { - "type": "string" - }, - "PrivateDnsNameOptions": { - "$ref": "#/definitions/PrivateDnsNameOptions" - }, - "PrivateIp": { - "type": "string" - }, - "PrivateIpAddress": { - "type": "string" - }, - "PropagateTagsToVolumeOnCreation": { - "type": "boolean" - }, - "PublicDnsName": { - "type": "string" - }, - "PublicIp": { - "type": "string" - }, - "RamdiskId": { - "type": "string" - }, - "SecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SecurityGroups": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SourceDestCheck": { - "type": "boolean" - }, - "SsmAssociations": { - "items": { - "$ref": "#/definitions/SsmAssociation" - }, - "type": "array", - "uniqueItems": false - }, - "SubnetId": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "Tenancy": { - "enum": [ - "default", - "dedicated", - "host" - ], - "type": "string" - }, - "UserData": { - "type": "string" - }, - "Volumes": { - "items": { - "$ref": "#/definitions/Volume" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/PublicIp", - "/properties/Id", - "/properties/PublicDnsName", - "/properties/PrivateDnsName", - "/properties/PrivateIp" - ], - "requiredXor": [ - "ImageId", - "LaunchTemplate" - ], - "typeName": "AWS::EC2::Instance" -} diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-ec2-securitygroupegress.json b/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-ec2-securitygroupegress.json new file mode 100644 index 0000000000..f94631dad2 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-ec2-securitygroupegress.json @@ -0,0 +1,98 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::EC2::SecurityGroupEgress/Properties" + ], + "createOnlyProperties": [ + "/properties/IpProtocol", + "/properties/DestinationSecurityGroupId", + "/properties/ToPort", + "/properties/CidrIp", + "/properties/FromPort", + "/properties/GroupId", + "/properties/CidrIpv6", + "/properties/DestinationPrefixListId" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:AuthorizeSecurityGroupEgress", + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "delete": { + "permissions": [ + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "update": { + "permissions": [ + "ec2:UpdateSecurityGroupRuleDescriptionsEgress" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CidrIp": { + "type": "string" + }, + "CidrIpv6": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "DestinationPrefixListId": { + "type": "string" + }, + "DestinationSecurityGroupId": { + "type": "string" + }, + "FromPort": { + "minimum": -1, + "type": "integer" + }, + "GroupId": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "IpProtocol": { + "type": "string" + }, + "ToPort": { + "minimum": -1, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IpProtocol", + "GroupId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SecurityGroupEgress" +} diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-ec2-transitgatewayroutetableassociation.json b/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-ec2-transitgatewayroutetableassociation.json new file mode 100644 index 0000000000..890b2c4be2 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-ec2-transitgatewayroutetableassociation.json @@ -0,0 +1,29 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TransitGatewayRouteTableId", + "/properties/TransitGatewayAttachmentId" + ], + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "type": "string" + }, + "TransitGatewayAttachmentId": { + "type": "string" + }, + "TransitGatewayRouteTableId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "TransitGatewayRouteTableId", + "TransitGatewayAttachmentId" + ], + "typeName": "AWS::EC2::TransitGatewayRouteTableAssociation" +} diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-gamelift-fleet.json b/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-gamelift-fleet.json new file mode 100644 index 0000000000..fb6db12d8b --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-gamelift-fleet.json @@ -0,0 +1,523 @@ +{ + "$schema": "https://schema.cloudformation.us-east-1.amazonaws.com/provider.definition.schema.v1.json", + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplyCapacity", + "/properties/BuildId", + "/properties/CertificateConfiguration", + "/properties/EC2InstanceType", + "/properties/FleetType", + "/properties/InstanceRoleARN", + "/properties/InstanceRoleCredentialsProvider", + "/properties/LogPaths", + "/properties/PeerVpcAwsAccountId", + "/properties/PeerVpcId", + "/properties/ScriptId", + "/properties/ServerLaunchParameters", + "/properties/ServerLaunchPath", + "/properties/ComputeType" + ], + "definitions": { + "AnywhereConfiguration": { + "additionalProperties": false, + "properties": { + "Cost": { + "maxLength": 11, + "minLength": 1, + "pattern": "^\\d{1,5}(?:\\.\\d{1,5})?$", + "type": "string" + } + }, + "required": [ + "Cost" + ] + }, + "CertificateConfiguration": { + "additionalProperties": false, + "properties": { + "CertificateType": { + "enum": [ + "DISABLED", + "GENERATED" + ], + "type": "string" + } + }, + "required": [ + "CertificateType" + ], + "type": "object" + }, + "IpPermission": { + "additionalProperties": false, + "properties": { + "FromPort": { + "maximum": 60000, + "minimum": 1, + "type": "integer" + }, + "IpRange": { + "pattern": "(^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(/([0-9]|[1-2][0-9]|3[0-2]))$)", + "type": "string" + }, + "Protocol": { + "enum": [ + "TCP", + "UDP" + ], + "type": "string" + }, + "ToPort": { + "maximum": 60000, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "FromPort", + "IpRange", + "Protocol", + "ToPort" + ], + "type": "object" + }, + "Location": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[A-Za-z0-9\\-]+", + "type": "string" + }, + "LocationCapacity": { + "additionalProperties": false, + "properties": { + "DesiredEC2Instances": { + "minimum": 0, + "type": "integer" + }, + "MaxSize": { + "minimum": 0, + "type": "integer" + }, + "MinSize": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "DesiredEC2Instances", + "MinSize", + "MaxSize" + ], + "type": "object" + }, + "LocationConfiguration": { + "additionalProperties": false, + "properties": { + "Location": { + "$ref": "#/definitions/Location" + }, + "LocationCapacity": { + "$ref": "#/definitions/LocationCapacity" + } + }, + "required": [ + "Location" + ], + "type": "object" + }, + "ResourceCreationLimitPolicy": { + "additionalProperties": false, + "properties": { + "NewGameSessionsPerCreator": { + "minimum": 0, + "type": "integer" + }, + "PolicyPeriodInMinutes": { + "minimum": 0, + "type": "integer" + } + }, + "type": "object" + }, + "RuntimeConfiguration": { + "additionalProperties": false, + "properties": { + "GameSessionActivationTimeoutSeconds": { + "maximum": 600, + "minimum": 1, + "type": "integer" + }, + "MaxConcurrentGameSessionActivations": { + "maximum": 2147483647, + "minimum": 1, + "type": "integer" + }, + "ServerProcesses": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ServerProcess" + }, + "maxItems": 50, + "type": "array" + } + }, + "type": "object" + }, + "ScalingPolicy": { + "additionalProperties": false, + "properties": { + "ComparisonOperator": { + "enum": [ + "GreaterThanOrEqualToThreshold", + "GreaterThanThreshold", + "LessThanThreshold", + "LessThanOrEqualToThreshold" + ], + "type": "string" + }, + "EvaluationPeriods": { + "minimum": 1, + "type": "integer" + }, + "Location": { + "$ref": "#/definitions/Location" + }, + "MetricName": { + "enum": [ + "ActivatingGameSessions", + "ActiveGameSessions", + "ActiveInstances", + "AvailableGameSessions", + "AvailablePlayerSessions", + "CurrentPlayerSessions", + "IdleInstances", + "PercentAvailableGameSessions", + "PercentIdleInstances", + "QueueDepth", + "WaitTime", + "ConcurrentActivatableGameSessions" + ], + "type": "string" + }, + "Name": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "PolicyType": { + "enum": [ + "RuleBased", + "TargetBased" + ], + "type": "string" + }, + "ScalingAdjustment": { + "type": "integer" + }, + "ScalingAdjustmentType": { + "enum": [ + "ChangeInCapacity", + "ExactCapacity", + "PercentChangeInCapacity" + ], + "type": "string" + }, + "Status": { + "enum": [ + "ACTIVE", + "UPDATE_REQUESTED", + "UPDATING", + "DELETE_REQUESTED", + "DELETING", + "DELETED", + "ERROR" + ], + "type": "string" + }, + "TargetConfiguration": { + "$ref": "#/definitions/TargetConfiguration" + }, + "Threshold": { + "type": "number" + }, + "UpdateStatus": { + "enum": [ + "PENDING_UPDATE" + ], + "type": "string" + } + }, + "required": [ + "MetricName", + "Name" + ], + "type": "object" + }, + "ServerProcess": { + "additionalProperties": false, + "properties": { + "ConcurrentExecutions": { + "minimum": 1, + "type": "integer" + }, + "LaunchPath": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^([Cc]:\\\\game\\S+|/local/game/\\S+)", + "type": "string" + }, + "Parameters": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ConcurrentExecutions", + "LaunchPath" + ], + "type": "object" + }, + "TargetConfiguration": { + "additionalProperties": false, + "properties": { + "TargetValue": { + "type": "number" + } + }, + "required": [ + "TargetValue" + ], + "type": "object" + } + }, + "deprecatedProperties": [ + "/properties/LogPaths", + "/properties/ServerLaunchParameters", + "/properties/ServerLaunchPath" + ], + "handlers": { + "create": { + "permissions": [ + "gamelift:CreateFleet", + "gamelift:DescribeFleetAttributes", + "gamelift:DescribeFleetLocationAttributes", + "gamelift:UpdateFleetCapacity", + "gamelift:DescribeFleetLocationCapacity", + "gamelift:PutScalingPolicy", + "gamelift:DescribeScalingPolicies" + ] + }, + "delete": { + "permissions": [ + "gamelift:DeleteFleet", + "gamelift:DescribeFleetLocationCapacity", + "gamelift:DescribeScalingPolicies", + "gamelift:DeleteScalingPolicy" + ] + }, + "list": { + "permissions": [ + "gamelift:ListFleets" + ] + }, + "read": { + "permissions": [ + "gamelift:DescribeFleetAttributes", + "gamelift:DescribeFleetLocationAttributes", + "gamelift:DescribeFleetCapacity", + "gamelift:DescribeFleetPortSettings", + "gamelift:DescribeFleetUtilization", + "gamelift:DescribeRuntimeConfiguration", + "gamelift:DescribeEC2InstanceLimits", + "gamelift:DescribeFleetEvents", + "gamelift:DescribeScalingPolicies" + ] + }, + "update": { + "permissions": [ + "gamelift:UpdateFleetAttributes", + "gamelift:CreateFleetLocations", + "gamelift:DeleteFleetLocations", + "gamelift:UpdateFleetCapacity", + "gamelift:UpdateFleetPortSettings", + "gamelift:UpdateRuntimeConfiguration", + "gamelift:DescribeFleetLocationCapacity", + "gamelift:DescribeFleetPortSettings", + "gamelift:DescribeFleetLocationAttributes", + "gamelift:PutScalingPolicy", + "gamelift:DescribeScalingPolicies", + "gamelift:DeleteScalingPolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/FleetId" + ], + "properties": { + "AnywhereConfiguration": { + "$ref": "#/definitions/AnywhereConfiguration" + }, + "ApplyCapacity": { + "enum": [ + "ON_UPDATE", + "ON_CREATE_AND_UPDATE" + ], + "type": "string" + }, + "BuildId": { + "pattern": "^build-\\S+|^arn:.*:build/build-\\S+", + "type": "string" + }, + "CertificateConfiguration": { + "$ref": "#/definitions/CertificateConfiguration" + }, + "ComputeType": { + "enum": [ + "EC2", + "ANYWHERE" + ], + "type": "string" + }, + "Description": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "DesiredEC2Instances": { + "minimum": 0, + "type": "integer" + }, + "EC2InboundPermissions": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/IpPermission" + }, + "maxItems": 50, + "type": "array" + }, + "EC2InstanceType": { + "cfnLint": "AWS::GameLift::Fleet/EC2InstanceType", + "pattern": "^.*..*$", + "type": "string" + }, + "FleetId": { + "pattern": "^fleet-\\S+", + "type": "string" + }, + "FleetType": { + "enum": [ + "ON_DEMAND", + "SPOT" + ], + "type": "string" + }, + "InstanceRoleARN": { + "minLength": 1, + "pattern": "^arn:aws(-.*)?:[a-z-]+:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$", + "type": "string" + }, + "InstanceRoleCredentialsProvider": { + "enum": [ + "SHARED_CREDENTIAL_FILE" + ], + "type": "string" + }, + "Locations": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LocationConfiguration" + }, + "maxItems": 100, + "minItems": 1, + "type": "array" + }, + "LogPaths": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "MaxSize": { + "minimum": 0, + "type": "integer" + }, + "MetricGroups": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "maxItems": 1, + "type": "array" + }, + "MinSize": { + "minimum": 0, + "type": "integer" + }, + "Name": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "NewGameSessionProtectionPolicy": { + "enum": [ + "FullProtection", + "NoProtection" + ], + "type": "string" + }, + "PeerVpcAwsAccountId": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^[0-9]{12}$", + "type": "string" + }, + "PeerVpcId": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^vpc-\\S+", + "type": "string" + }, + "ResourceCreationLimitPolicy": { + "$ref": "#/definitions/ResourceCreationLimitPolicy" + }, + "RuntimeConfiguration": { + "$ref": "#/definitions/RuntimeConfiguration" + }, + "ScalingPolicies": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ScalingPolicy" + }, + "maxItems": 50, + "type": "array" + }, + "ScriptId": { + "pattern": "^script-\\S+|^arn:.*:script/script-\\S+", + "type": "string" + }, + "ServerLaunchParameters": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "ServerLaunchPath": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/FleetId" + ], + "required": [ + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-gamelift.git", + "taggable": true, + "typeName": "AWS::GameLift::Fleet", + "writeOnlyProperties": [ + "/properties/ApplyCapacity" + ] +} diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-iotsitewise-gateway.json b/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-iotsitewise-gateway.json deleted file mode 100644 index 20b0ba8baa..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-iotsitewise-gateway.json +++ /dev/null @@ -1,179 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/GatewayPlatform" - ], - "definitions": { - "CapabilityConfiguration": { - "type": "string" - }, - "CapabilityNamespace": { - "type": "string" - }, - "GatewayCapabilitySummary": { - "additionalProperties": false, - "properties": { - "CapabilityConfiguration": { - "$ref": "#/definitions/CapabilityConfiguration" - }, - "CapabilityNamespace": { - "$ref": "#/definitions/CapabilityNamespace" - } - }, - "required": [ - "CapabilityNamespace" - ], - "type": "object" - }, - "GatewayPlatform": { - "additionalProperties": false, - "oneOf": [ - { - "required": [ - "Greengrass" - ] - }, - { - "required": [ - "GreengrassV2" - ] - } - ], - "properties": { - "Greengrass": { - "$ref": "#/definitions/Greengrass" - }, - "GreengrassV2": { - "$ref": "#/definitions/GreengrassV2" - } - }, - "type": "object" - }, - "Greengrass": { - "additionalProperties": false, - "properties": { - "GroupArn": { - "type": "string" - } - }, - "required": [ - "GroupArn" - ], - "type": "object" - }, - "GreengrassV2": { - "additionalProperties": false, - "properties": { - "CoreDeviceThingName": { - "type": "string" - } - }, - "required": [ - "CoreDeviceThingName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "iotsitewise:CreateGateway", - "iotsitewise:DescribeGateway", - "iotsitewise:DescribeGatewayCapabilityConfiguration", - "iotsitewise:UpdateGatewayCapabilityConfiguration", - "iam:PassRole", - "iam:GetRole", - "greengrass:GetCoreDevice", - "iotsitewise:ListTagsForResource", - "iotsitewise:TagResource", - "iot:DescribeThing" - ] - }, - "delete": { - "permissions": [ - "iotsitewise:DescribeGateway", - "iotsitewise:DescribeGatewayCapabilityConfiguration", - "iotsitewise:DeleteGateway" - ] - }, - "list": { - "permissions": [ - "iotsitewise:ListGateways" - ] - }, - "read": { - "permissions": [ - "iotsitewise:DescribeGateway", - "iotsitewise:DescribeGatewayCapabilityConfiguration", - "iotsitewise:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "iotsitewise:UpdateGateway", - "iotsitewise:UpdateGatewayCapabilityConfiguration", - "iotsitewise:TagResource", - "iotsitewise:UntagResource", - "iotsitewise:DescribeGateway", - "iotsitewise:DescribeGatewayCapabilityConfiguration", - "iotsitewise:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/GatewayId" - ], - "properties": { - "GatewayCapabilitySummaries": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/GatewayCapabilitySummary" - }, - "type": "array", - "uniqueItems": true - }, - "GatewayId": { - "type": "string" - }, - "GatewayName": { - "type": "string" - }, - "GatewayPlatform": { - "$ref": "#/definitions/GatewayPlatform" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/GatewayId" - ], - "required": [ - "GatewayName", - "GatewayPlatform" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-IoTSiteWise.git", - "taggable": true, - "typeName": "AWS::IoTSiteWise::Gateway" -} diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-lambda-eventsourcemapping.json b/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-lambda-eventsourcemapping.json new file mode 100644 index 0000000000..cb7599c139 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-lambda-eventsourcemapping.json @@ -0,0 +1,353 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::Lambda::EventSourceMapping/Properties" + ], + "createOnlyProperties": [ + "/properties/EventSourceArn", + "/properties/StartingPosition", + "/properties/StartingPositionTimestamp", + "/properties/SelfManagedEventSource", + "/properties/AmazonManagedKafkaEventSourceConfig", + "/properties/SelfManagedKafkaEventSourceConfig" + ], + "definitions": { + "AmazonManagedKafkaEventSourceConfig": { + "additionalProperties": false, + "properties": { + "ConsumerGroupId": { + "$ref": "#/definitions/ConsumerGroupId" + } + }, + "type": "object" + }, + "ConsumerGroupId": { + "maxLength": 200, + "minLength": 1, + "pattern": "[a-zA-Z0-9-\\/*:_+=.@-]*", + "type": "string" + }, + "DestinationConfig": { + "additionalProperties": false, + "properties": { + "OnFailure": { + "$ref": "#/definitions/OnFailure" + } + }, + "type": "object" + }, + "DocumentDBEventSourceConfig": { + "additionalProperties": false, + "properties": { + "CollectionName": { + "maxLength": 57, + "minLength": 1, + "type": "string" + }, + "DatabaseName": { + "maxLength": 63, + "minLength": 1, + "type": "string" + }, + "FullDocument": { + "enum": [ + "UpdateLookup", + "Default" + ], + "type": "string" + } + }, + "type": "object" + }, + "Endpoints": { + "additionalProperties": false, + "properties": { + "KafkaBootstrapServers": { + "items": { + "maxLength": 300, + "minLength": 1, + "pattern": "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9]):[0-9]{1,5}", + "type": "string" + }, + "maxItems": 10, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "Filter": { + "additionalProperties": false, + "properties": { + "Pattern": { + "maxLength": 4096, + "minLength": 0, + "pattern": ".*", + "type": "string" + } + }, + "type": "object" + }, + "FilterCriteria": { + "additionalProperties": false, + "properties": { + "Filters": { + "items": { + "$ref": "#/definitions/Filter" + }, + "maxItems": 20, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "MaximumConcurrency": { + "maximum": 1000, + "minimum": 2, + "type": "integer" + }, + "OnFailure": { + "additionalProperties": false, + "properties": { + "Destination": { + "maxLength": 1024, + "minLength": 12, + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "type": "string" + } + }, + "type": "object" + }, + "ScalingConfig": { + "additionalProperties": false, + "properties": { + "MaximumConcurrency": { + "$ref": "#/definitions/MaximumConcurrency" + } + }, + "type": "object" + }, + "SelfManagedEventSource": { + "additionalProperties": false, + "properties": { + "Endpoints": { + "$ref": "#/definitions/Endpoints" + } + }, + "type": "object" + }, + "SelfManagedKafkaEventSourceConfig": { + "additionalProperties": false, + "properties": { + "ConsumerGroupId": { + "$ref": "#/definitions/ConsumerGroupId" + } + }, + "type": "object" + }, + "SourceAccessConfiguration": { + "additionalProperties": false, + "properties": { + "Type": { + "enum": [ + "BASIC_AUTH", + "VPC_SUBNET", + "VPC_SECURITY_GROUP", + "SASL_SCRAM_512_AUTH", + "SASL_SCRAM_256_AUTH", + "VIRTUAL_HOST", + "CLIENT_CERTIFICATE_TLS_AUTH", + "SERVER_ROOT_CA_CERTIFICATE" + ], + "type": "string" + }, + "URI": { + "maxLength": 200, + "minLength": 1, + "pattern": "[a-zA-Z0-9-\\/*:_+=.@-]*", + "type": "string" + } + }, + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "lambda:CreateEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + }, + "delete": { + "permissions": [ + "lambda:DeleteEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + }, + "list": { + "permissions": [ + "lambda:ListEventSourceMappings" + ] + }, + "read": { + "permissions": [ + "lambda:GetEventSourceMapping" + ] + }, + "update": { + "permissions": [ + "lambda:UpdateEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AmazonManagedKafkaEventSourceConfig": { + "$ref": "#/definitions/AmazonManagedKafkaEventSourceConfig" + }, + "BatchSize": { + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "BisectBatchOnFunctionError": { + "type": "boolean" + }, + "DestinationConfig": { + "$ref": "#/definitions/DestinationConfig" + }, + "DocumentDBEventSourceConfig": { + "$ref": "#/definitions/DocumentDBEventSourceConfig" + }, + "Enabled": { + "type": "boolean" + }, + "EventSourceArn": { + "maxLength": 1024, + "minLength": 12, + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "type": "string" + }, + "FilterCriteria": { + "$ref": "#/definitions/FilterCriteria" + }, + "FunctionName": { + "maxLength": 140, + "minLength": 1, + "pattern": "(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?", + "type": "string" + }, + "FunctionResponseTypes": { + "items": { + "enum": [ + "ReportBatchItemFailures" + ], + "type": "string" + }, + "maxLength": 1, + "minLength": 0, + "type": "array", + "uniqueItems": true + }, + "Id": { + "maxLength": 36, + "minLength": 36, + "pattern": "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + "type": "string" + }, + "MaximumBatchingWindowInSeconds": { + "maximum": 300, + "minimum": 0, + "type": "integer" + }, + "MaximumRecordAgeInSeconds": { + "maximum": 604800, + "minimum": -1, + "type": "integer" + }, + "MaximumRetryAttempts": { + "maximum": 10000, + "minimum": -1, + "type": "integer" + }, + "ParallelizationFactor": { + "maximum": 10, + "minimum": 1, + "type": "integer" + }, + "Queues": { + "items": { + "maxLength": 1000, + "minLength": 1, + "pattern": "[\\s\\S]*", + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "ScalingConfig": { + "$ref": "#/definitions/ScalingConfig" + }, + "SelfManagedEventSource": { + "$ref": "#/definitions/SelfManagedEventSource" + }, + "SelfManagedKafkaEventSourceConfig": { + "$ref": "#/definitions/SelfManagedKafkaEventSourceConfig" + }, + "SourceAccessConfigurations": { + "items": { + "$ref": "#/definitions/SourceAccessConfiguration" + }, + "maxItems": 22, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "StartingPosition": { + "enum": [ + "TRIM_HORIZON", + "LATEST", + "AT_TIMESTAMP" + ], + "maxLength": 12, + "minLength": 6, + "pattern": "(LATEST|TRIM_HORIZON|AT_TIMESTAMP)+", + "type": "string" + }, + "StartingPositionTimestamp": { + "type": "number" + }, + "Topics": { + "items": { + "maxLength": 249, + "minLength": 1, + "pattern": "^[^.]([a-zA-Z0-9\\-_.]+)", + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "TumblingWindowInSeconds": { + "maximum": 900, + "minimum": 0, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "FunctionName" + ], + "typeName": "AWS::Lambda::EventSourceMapping" +} diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-sagemaker-appimageconfig.json b/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-sagemaker-appimageconfig.json new file mode 100644 index 0000000000..01116f524b --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-sagemaker-appimageconfig.json @@ -0,0 +1,238 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AppImageConfigName", + "/properties/Tags" + ], + "definitions": { + "ContainerConfig": { + "additionalProperties": false, + "properties": { + "ContainerArguments": { + "items": { + "$ref": "#/definitions/CustomImageContainerArguments" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "ContainerEntrypoint": { + "items": { + "$ref": "#/definitions/CustomImageContainerEntrypoint" + }, + "maxItems": 1, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "ContainerEnvironmentVariables": { + "items": { + "$ref": "#/definitions/CustomImageContainerEnvironmentVariable" + }, + "maxItems": 25, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "CustomImageContainerArguments": { + "maxLength": 64, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "CustomImageContainerEntrypoint": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "CustomImageContainerEnvironmentVariable": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "FileSystemConfig": { + "additionalProperties": false, + "properties": { + "DefaultGid": { + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "DefaultUid": { + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "MountPath": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^/.*", + "type": "string" + } + }, + "type": "object" + }, + "JupyterLabAppImageConfig": { + "additionalProperties": false, + "properties": { + "ContainerConfig": { + "$ref": "#/definitions/ContainerConfig" + } + }, + "type": "object" + }, + "KernelGatewayImageConfig": { + "additionalProperties": false, + "properties": { + "FileSystemConfig": { + "$ref": "#/definitions/FileSystemConfig" + }, + "KernelSpecs": { + "items": { + "$ref": "#/definitions/KernelSpec" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "KernelSpecs" + ], + "type": "object" + }, + "KernelSpec": { + "additionalProperties": false, + "properties": { + "DisplayName": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Name": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "sagemaker:CreateAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + }, + "delete": { + "permissions": [ + "sagemaker:DeleteAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + }, + "list": { + "permissions": [ + "sagemaker:ListAppImageConfigs" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeAppImageConfig" + ] + }, + "update": { + "permissions": [ + "sagemaker:UpdateAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + } + }, + "primaryIdentifier": [ + "/properties/AppImageConfigName" + ], + "properties": { + "AppImageConfigArn": { + "maxLength": 256, + "minLength": 1, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:app-image-config/.*", + "type": "string" + }, + "AppImageConfigName": { + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", + "type": "string" + }, + "JupyterLabAppImageConfig": { + "$ref": "#/definitions/JupyterLabAppImageConfig" + }, + "KernelGatewayImageConfig": { + "$ref": "#/definitions/KernelGatewayImageConfig" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/AppImageConfigArn" + ], + "required": [ + "AppImageConfigName" + ], + "typeName": "AWS::SageMaker::AppImageConfig", + "writeOnlyProperties": [ + "/properties/Tags" + ] +} diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-securityhub-delegatedadmin.json b/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-securityhub-delegatedadmin.json deleted file mode 100644 index 12b73dd551..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-securityhub-delegatedadmin.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AdminAccountId" - ], - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AdminAccountId": { - "type": "string" - }, - "DelegatedAdminIdentifier": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "Status": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/DelegatedAdminIdentifier", - "/properties/Status" - ], - "required": [ - "AdminAccountId" - ], - "typeName": "AWS::SecurityHub::DelegatedAdmin" -} diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-securityhub-insight.json b/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-securityhub-insight.json deleted file mode 100644 index 3fc396909f..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-securityhub-insight.json +++ /dev/null @@ -1,844 +0,0 @@ -{ - "additionalProperties": false, - "definitions": { - "AwsSecurityFindingFilters": { - "additionalProperties": false, - "properties": { - "AwsAccountId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "AwsAccountName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "CompanyName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ComplianceAssociatedStandardsId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ComplianceSecurityControlId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ComplianceSecurityControlParametersName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ComplianceSecurityControlParametersValue": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ComplianceStatus": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "Confidence": { - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "type": "array", - "uniqueItems": true - }, - "CreatedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "Criticality": { - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "type": "array", - "uniqueItems": true - }, - "Description": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "FindingProviderFieldsConfidence": { - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "type": "array", - "uniqueItems": true - }, - "FindingProviderFieldsCriticality": { - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "type": "array", - "uniqueItems": true - }, - "FindingProviderFieldsRelatedFindingsId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "FindingProviderFieldsRelatedFindingsProductArn": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "FindingProviderFieldsSeverityLabel": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "FindingProviderFieldsSeverityOriginal": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "FindingProviderFieldsTypes": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "FirstObservedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "GeneratorId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "Id": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "LastObservedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "MalwareName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "MalwarePath": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "MalwareState": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "MalwareType": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkDestinationDomain": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkDestinationIpV4": { - "items": { - "$ref": "#/definitions/IpFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkDestinationIpV6": { - "items": { - "$ref": "#/definitions/IpFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkDestinationPort": { - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkDirection": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkProtocol": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkSourceDomain": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkSourceIpV4": { - "items": { - "$ref": "#/definitions/IpFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkSourceIpV6": { - "items": { - "$ref": "#/definitions/IpFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkSourceMac": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkSourcePort": { - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NoteText": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NoteUpdatedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NoteUpdatedBy": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ProcessLaunchedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ProcessName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ProcessParentPid": { - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ProcessPath": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ProcessPid": { - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ProcessTerminatedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ProductArn": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ProductFields": { - "items": { - "$ref": "#/definitions/MapFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ProductName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "RecommendationText": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "RecordState": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "Region": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "RelatedFindingsId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "RelatedFindingsProductArn": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceApplicationArn": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceApplicationName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceIamInstanceProfileArn": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceImageId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceIpV4Addresses": { - "items": { - "$ref": "#/definitions/IpFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceIpV6Addresses": { - "items": { - "$ref": "#/definitions/IpFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceKeyName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceLaunchedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceSubnetId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceType": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceVpcId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsIamAccessKeyCreatedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsIamAccessKeyPrincipalName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsIamAccessKeyStatus": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsIamUserUserName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsS3BucketOwnerId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsS3BucketOwnerName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceContainerImageId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceContainerImageName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceContainerLaunchedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceContainerName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceDetailsOther": { - "items": { - "$ref": "#/definitions/MapFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourcePartition": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceRegion": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceTags": { - "items": { - "$ref": "#/definitions/MapFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceType": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "Sample": { - "items": { - "$ref": "#/definitions/BooleanFilter" - }, - "type": "array", - "uniqueItems": true - }, - "SeverityLabel": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "SourceUrl": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ThreatIntelIndicatorCategory": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ThreatIntelIndicatorLastObservedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ThreatIntelIndicatorSource": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ThreatIntelIndicatorSourceUrl": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ThreatIntelIndicatorType": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ThreatIntelIndicatorValue": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "Title": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "Type": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "UpdatedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "UserDefinedFields": { - "items": { - "$ref": "#/definitions/MapFilter" - }, - "type": "array", - "uniqueItems": true - }, - "VerificationState": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "VulnerabilitiesExploitAvailable": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "VulnerabilitiesFixAvailable": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "WorkflowState": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "WorkflowStatus": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "BooleanFilter": { - "additionalProperties": false, - "properties": { - "Value": { - "type": "boolean" - } - }, - "required": [ - "Value" - ], - "type": "object" - }, - "DateFilter": { - "additionalProperties": false, - "properties": { - "DateRange": { - "$ref": "#/definitions/DateRange" - }, - "End": { - "type": "string" - }, - "Start": { - "type": "string" - } - }, - "type": "object" - }, - "DateRange": { - "additionalProperties": false, - "properties": { - "Unit": { - "type": "string" - }, - "Value": { - "type": "number" - } - }, - "required": [ - "Value", - "Unit" - ], - "type": "object" - }, - "IpFilter": { - "additionalProperties": false, - "properties": { - "Cidr": { - "type": "string" - } - }, - "type": "object" - }, - "MapFilter": { - "additionalProperties": false, - "properties": { - "Comparison": { - "type": "string" - }, - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Comparison", - "Value", - "Key" - ], - "type": "object" - }, - "NumberFilter": { - "additionalProperties": false, - "properties": { - "Eq": { - "type": "number" - }, - "Gte": { - "type": "number" - }, - "Lte": { - "type": "number" - } - }, - "type": "object" - }, - "StringFilter": { - "additionalProperties": false, - "properties": { - "Comparison": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Comparison", - "Value" - ], - "type": "object" - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Filters": { - "$ref": "#/definitions/AwsSecurityFindingFilters" - }, - "GroupByAttribute": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "InsightArn": { - "type": "string" - }, - "Name": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/InsightArn" - ], - "required": [ - "Filters", - "GroupByAttribute", - "Name" - ], - "typeName": "AWS::SecurityHub::Insight" -} diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-securityhub-productsubscription.json b/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-securityhub-productsubscription.json deleted file mode 100644 index 4001045463..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-securityhub-productsubscription.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ProductArn" - ], - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Id": { - "type": "string" - }, - "ProductArn": { - "type": "string" - }, - "ProductSubscriptionArn": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/ProductSubscriptionArn" - ], - "required": [ - "ProductArn" - ], - "typeName": "AWS::SecurityHub::ProductSubscription" -} diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-verifiedpermissions-identitysource.json b/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-verifiedpermissions-identitysource.json new file mode 100644 index 0000000000..46a0ad88f1 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-verifiedpermissions-identitysource.json @@ -0,0 +1,221 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PolicyStoreId" + ], + "definitions": { + "CognitoGroupConfiguration": { + "additionalProperties": false, + "properties": { + "GroupEntityType": { + "maxLength": 200, + "minLength": 1, + "pattern": "^([_a-zA-Z][_a-zA-Z0-9]*::)*[_a-zA-Z][_a-zA-Z0-9]*$", + "type": "string" + } + }, + "required": [ + "GroupEntityType" + ], + "type": "object" + }, + "CognitoUserPoolConfiguration": { + "additionalProperties": false, + "properties": { + "ClientIds": { + "insertionOrder": false, + "items": { + "maxLength": 255, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "maxItems": 1000, + "minItems": 0, + "type": "array" + }, + "GroupConfiguration": { + "$ref": "#/definitions/CognitoGroupConfiguration" + }, + "UserPoolArn": { + "maxLength": 255, + "minLength": 1, + "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", + "type": "string" + } + }, + "required": [ + "UserPoolArn" + ], + "type": "object" + }, + "IdentitySourceConfiguration": { + "additionalProperties": false, + "properties": { + "CognitoUserPoolConfiguration": { + "$ref": "#/definitions/CognitoUserPoolConfiguration" + } + }, + "required": [ + "CognitoUserPoolConfiguration" + ], + "title": "CognitoUserPoolConfiguration", + "type": "object" + }, + "IdentitySourceDetails": { + "additionalProperties": false, + "properties": { + "ClientIds": { + "insertionOrder": false, + "items": { + "maxLength": 255, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "maxItems": 1000, + "minItems": 0, + "type": "array" + }, + "DiscoveryUrl": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^https://.*$", + "type": "string" + }, + "OpenIdIssuer": { + "$ref": "#/definitions/OpenIdIssuer" + }, + "UserPoolArn": { + "maxLength": 255, + "minLength": 1, + "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", + "type": "string" + } + }, + "type": "object" + }, + "OpenIdIssuer": { + "enum": [ + "COGNITO" + ], + "type": "string" + } + }, + "deprecatedProperties": [ + "/properties/Details" + ], + "handlers": { + "create": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "delete": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "PolicyStoreId": { + "$ref": "resource-schema.json#/properties/PolicyStoreId" + } + }, + "required": [ + "PolicyStoreId" + ] + }, + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "read": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "update": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + } + }, + "primaryIdentifier": [ + "/properties/IdentitySourceId", + "/properties/PolicyStoreId" + ], + "properties": { + "Configuration": { + "$ref": "#/definitions/IdentitySourceConfiguration" + }, + "Details": { + "$ref": "#/definitions/IdentitySourceDetails" + }, + "IdentitySourceId": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]*$", + "type": "string" + }, + "PolicyStoreId": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]*$", + "type": "string" + }, + "PrincipalEntityType": { + "maxLength": 200, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Details", + "/properties/IdentitySourceId" + ], + "required": [ + "Configuration", + "PolicyStoreId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-avp", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::VerifiedPermissions::IdentitySource" +} 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 d2cf2e5e4d..1ce5db0177 100644 --- a/src/cfnlint/data/schemas/providers/ap_northeast_3/__init__.py +++ b/src/cfnlint/data/schemas/providers/ap_northeast_3/__init__.py @@ -36,6 +36,7 @@ "AWS::AppConfig::ExtensionAssociation", "AWS::S3Outposts::AccessPoint", "AWS::EC2::IPAMPoolCidr", + "AWS::Amplify::Branch", "AWS::Redshift::ClusterSubnetGroup", "AWS::RDS::DBInstance", "AWS::EC2::VPCDHCPOptionsAssociation", @@ -146,6 +147,7 @@ "AWS::AppMesh::VirtualService", "AWS::S3ObjectLambda::AccessPointPolicy", "AWS::NetworkManager::TransitGatewayRegistration", + "AWS::Amplify::App", "AWS::InspectorV2::Filter", "AWS::ElastiCache::ReplicationGroup", "AWS::StepFunctions::StateMachineAlias", @@ -267,6 +269,7 @@ "AWS::ApiGateway::VpcLink", "AWS::NetworkManager::CustomerGatewayAssociation", "AWS::IAM::ServerCertificate", + "AWS::GlobalAccelerator::CrossAccountAttachment", "AWS::Events::EventBus", "AWS::SQS::QueueInlinePolicy", "AWS::Organizations::Organization", @@ -299,6 +302,7 @@ "AWS::SecurityHub::ProductSubscription", "AWS::IAM::InstanceProfile", "AWS::DataSync::LocationNFS", + "AWS::Amplify::Domain", "AWS::SageMaker::Domain", "AWS::CertificateManager::Certificate", "AWS::SDB::Domain", @@ -328,6 +332,7 @@ "AWS::EC2::ClientVpnRoute", "AWS::ImageBuilder::Workflow", "AWS::ECS::TaskSet", + "AWS::SecurityLake::AwsLogSource", "AWS::AppSync::ApiKey", "AWS::CloudFormation::TypeActivation", "AWS::ACMPCA::CertificateAuthorityActivation", @@ -440,6 +445,7 @@ "AWS::CodeBuild::SourceCredential", "AWS::EMR::InstanceFleetConfig", "AWS::EMR::Cluster", + "AWS::SecurityLake::DataLake", "AWS::ApiGatewayV2::DomainName", "AWS::RDS::DBCluster", "AWS::ServiceCatalog::ResourceUpdateConstraint", @@ -509,6 +515,7 @@ "AWS::CloudFormation::WaitCondition", "AWS::Route53Resolver::ResolverEndpoint", "AWS::NetworkManager::Link", + "AWS::SecurityLake::Subscriber", "AWS::SageMaker::NotebookInstance", "AWS::SSO::InstanceAccessControlAttributeConfiguration", "AWS::WAFRegional::ByteMatchSet", @@ -751,7 +758,6 @@ "aws-ecs-service.json", "aws-ram-resourceshare.json", "aws-dms-replicationconfig.json", - "aws-ec2-securitygroupegress.json", "aws-ec2-localgatewayroutetablevpcassociation.json", "aws-config-organizationconfigrule.json", "aws-glue-dataqualityruleset.json", @@ -764,12 +770,12 @@ "aws-appconfig-extensionassociation.json", "aws-s3outposts-accesspoint.json", "aws-ec2-ipampoolcidr.json", + "aws-amplify-branch.json", "aws-redshift-clustersubnetgroup.json", "aws-rds-dbinstance.json", "aws-ec2-vpcdhcpoptionsassociation.json", "aws-apigatewayv2-integrationresponse.json", "aws-ec2-networkacl.json", - "aws-lambda-eventsourcemapping.json", "aws-logs-resourcepolicy.json", "aws-servicecatalog-launchnotificationconstraint.json", "aws-ec2-networkaclentry.json", @@ -831,6 +837,7 @@ "aws-datasync-locationhdfs.json", "aws-events-archive.json", "aws-msk-cluster.json", + "aws-securityhub-delegatedadmin.json", "aws-controltower-enabledbaseline.json", "aws-ec2-vpcendpointconnectionnotification.json", "aws-codepipeline-pipeline.json", @@ -855,12 +862,14 @@ "aws-sagemaker-modelpackage.json", "aws-eventschemas-discoverer.json", "aws-networkmanager-connectpeer.json", + "aws-elasticache-usergroup.json", "aws-logs-deliverydestination.json", "aws-imagebuilder-imagerecipe.json", "aws-opsworks-elasticloadbalancerattachment.json", "aws-appmesh-virtualservice.json", "aws-s3objectlambda-accesspointpolicy.json", "aws-networkmanager-transitgatewayregistration.json", + "aws-amplify-app.json", "aws-inspectorv2-filter.json", "aws-elasticache-replicationgroup.json", "aws-stepfunctions-statemachinealias.json", @@ -973,6 +982,7 @@ "aws-servicecatalog-portfolioshare.json", "aws-networkmanager-customergatewayassociation.json", "aws-iam-servercertificate.json", + "aws-globalaccelerator-crossaccountattachment.json", "aws-events-eventbus.json", "aws-sqs-queueinlinepolicy.json", "aws-organizations-organization.json", @@ -1000,9 +1010,10 @@ "aws-codebuild-project.json", "aws-efs-filesystem.json", "aws-logs-querydefinition.json", + "aws-securityhub-productsubscription.json", "aws-iam-instanceprofile.json", "aws-datasync-locationnfs.json", - "aws-sagemaker-domain.json", + "aws-amplify-domain.json", "aws-certificatemanager-certificate.json", "aws-sdb-domain.json", "aws-ec2-subnetroutetableassociation.json", @@ -1030,6 +1041,7 @@ "aws-ec2-clientvpnroute.json", "aws-imagebuilder-workflow.json", "aws-ecs-taskset.json", + "aws-securitylake-awslogsource.json", "aws-appsync-apikey.json", "aws-cloudformation-typeactivation.json", "aws-acmpca-certificateauthorityactivation.json", @@ -1075,6 +1087,7 @@ "aws-securityhub-standard.json", "aws-rolesanywhere-crl.json", "aws-sns-topicinlinepolicy.json", + "aws-redshift-clusterparametergroup.json", "aws-organizations-policy.json", "aws-glue-trigger.json", "aws-globalaccelerator-listener.json", @@ -1129,9 +1142,11 @@ "aws-logs-accountpolicy.json", "aws-s3-bucketpolicy.json", "aws-appsync-graphqlschema.json", + "aws-redshift-cluster.json", "aws-codebuild-sourcecredential.json", "aws-emr-instancefleetconfig.json", "aws-emr-cluster.json", + "aws-securitylake-datalake.json", "aws-apigatewayv2-domainname.json", "aws-rds-dbcluster.json", "aws-servicecatalog-resourceupdateconstraint.json", @@ -1155,7 +1170,6 @@ "aws-appconfig-hostedconfigurationversion.json", "aws-datasync-locationefs.json", "aws-ec2-localgatewayroutetable.json", - "aws-sagemaker-appimageconfig.json", "aws-macie-session.json", "aws-elasticloadbalancingv2-targetgroup.json", "aws-applicationautoscaling-scalingpolicy.json", @@ -1165,6 +1179,7 @@ "aws-lambda-layerversionpermission.json", "aws-secretsmanager-secret.json", "aws-route53resolver-resolverconfig.json", + "aws-elasticache-user.json", "aws-sagemaker-image.json", "aws-logs-subscriptionfilter.json", "aws-codedeploy-application.json", @@ -1194,6 +1209,7 @@ "aws-cloudformation-waitcondition.json", "aws-route53resolver-resolverendpoint.json", "aws-networkmanager-link.json", + "aws-securitylake-subscriber.json", "aws-sagemaker-notebookinstance.json", "aws-sso-instanceaccesscontrolattributeconfiguration.json", "aws-wafregional-bytematchset.json", @@ -1214,10 +1230,10 @@ "aws-mediapackagev2-originendpoint.json", "aws-appsync-graphqlapi.json", "aws-ec2-egressonlyinternetgateway.json", + "aws-securityhub-insight.json", "aws-ec2-vpccidrblock.json", "aws-ec2-networkinsightspath.json", "aws-mediatailor-vodsource.json", - "aws-acmpca-certificateauthority.json", "aws-athena-preparedstatement.json", "aws-autoscaling-scheduledaction.json", "aws-cognito-identitypoolprincipaltag.json", @@ -1272,8 +1288,8 @@ "aws-mediaconnect-flowvpcinterface.json", "aws-glue-workflow.json", "aws-apigatewayv2-authorizer.json", - "aws-sagemaker-userprofile.json", "aws-ec2-prefixlist.json", + "aws-ec2-instance.json", "aws-networkmanager-device.json", "aws-ec2-subnetcidrblock.json", "aws-elasticbeanstalk-applicationversion.json", diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-acmpca-certificateauthority.json b/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-acmpca-certificateauthority.json new file mode 100644 index 0000000000..08ec85e5fa --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-acmpca-certificateauthority.json @@ -0,0 +1,429 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Type", + "/properties/KeyAlgorithm", + "/properties/SigningAlgorithm", + "/properties/Subject", + "/properties/CsrExtensions", + "/properties/KeyStorageSecurityStandard", + "/properties/UsageMode" + ], + "definitions": { + "AccessDescription": { + "additionalProperties": false, + "properties": { + "AccessLocation": { + "$ref": "#/definitions/GeneralName" + }, + "AccessMethod": { + "$ref": "#/definitions/AccessMethod" + } + }, + "required": [ + "AccessMethod", + "AccessLocation" + ], + "type": "object" + }, + "AccessMethod": { + "additionalProperties": false, + "properties": { + "AccessMethodType": { + "$ref": "#/definitions/AccessMethodType" + }, + "CustomObjectIdentifier": { + "$ref": "#/definitions/CustomObjectIdentifier" + } + }, + "type": "object" + }, + "AccessMethodType": { + "type": "string" + }, + "Arn": { + "type": "string" + }, + "CrlConfiguration": { + "additionalProperties": false, + "properties": { + "CrlDistributionPointExtensionConfiguration": { + "$ref": "#/definitions/CrlDistributionPointExtensionConfiguration" + }, + "CustomCname": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + }, + "ExpirationInDays": { + "type": "integer" + }, + "S3BucketName": { + "type": "string" + }, + "S3ObjectAcl": { + "type": "string" + } + }, + "type": "object" + }, + "CrlDistributionPointExtensionConfiguration": { + "additionalProperties": false, + "properties": { + "OmitExtension": { + "type": "boolean" + } + }, + "required": [ + "OmitExtension" + ], + "type": "object" + }, + "CsrExtensions": { + "additionalProperties": false, + "properties": { + "KeyUsage": { + "$ref": "#/definitions/KeyUsage" + }, + "SubjectInformationAccess": { + "$ref": "#/definitions/SubjectInformationAccess" + } + }, + "type": "object" + }, + "CustomAttribute": { + "additionalProperties": false, + "properties": { + "ObjectIdentifier": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "ObjectIdentifier", + "Value" + ], + "type": "object" + }, + "CustomAttributeList": { + "items": { + "$ref": "#/definitions/CustomAttribute" + }, + "type": "array" + }, + "CustomObjectIdentifier": { + "type": "string" + }, + "DnsName": { + "type": "string" + }, + "EdiPartyName": { + "additionalProperties": false, + "properties": { + "NameAssigner": { + "type": "string" + }, + "PartyName": { + "type": "string" + } + }, + "required": [ + "PartyName", + "NameAssigner" + ], + "type": "object" + }, + "GeneralName": { + "additionalProperties": false, + "properties": { + "DirectoryName": { + "$ref": "#/definitions/Subject" + }, + "DnsName": { + "$ref": "#/definitions/DnsName" + }, + "EdiPartyName": { + "$ref": "#/definitions/EdiPartyName" + }, + "IpAddress": { + "$ref": "#/definitions/IpAddress" + }, + "OtherName": { + "$ref": "#/definitions/OtherName" + }, + "RegisteredId": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Rfc822Name": { + "$ref": "#/definitions/Rfc822Name" + }, + "UniformResourceIdentifier": { + "$ref": "#/definitions/UniformResourceIdentifier" + } + }, + "type": "object" + }, + "IpAddress": { + "type": "string" + }, + "KeyUsage": { + "additionalProperties": false, + "properties": { + "CRLSign": { + "default": false, + "type": "boolean" + }, + "DataEncipherment": { + "default": false, + "type": "boolean" + }, + "DecipherOnly": { + "default": false, + "type": "boolean" + }, + "DigitalSignature": { + "default": false, + "type": "boolean" + }, + "EncipherOnly": { + "default": false, + "type": "boolean" + }, + "KeyAgreement": { + "default": false, + "type": "boolean" + }, + "KeyCertSign": { + "default": false, + "type": "boolean" + }, + "KeyEncipherment": { + "default": false, + "type": "boolean" + }, + "NonRepudiation": { + "default": false, + "type": "boolean" + } + }, + "type": "object" + }, + "OcspConfiguration": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + }, + "OcspCustomCname": { + "type": "string" + } + }, + "type": "object" + }, + "OtherName": { + "additionalProperties": false, + "properties": { + "TypeId": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "TypeId", + "Value" + ], + "type": "object" + }, + "RevocationConfiguration": { + "additionalProperties": false, + "properties": { + "CrlConfiguration": { + "$ref": "#/definitions/CrlConfiguration" + }, + "OcspConfiguration": { + "$ref": "#/definitions/OcspConfiguration" + } + }, + "type": "object" + }, + "Rfc822Name": { + "type": "string" + }, + "Subject": { + "additionalProperties": false, + "properties": { + "CommonName": { + "type": "string" + }, + "Country": { + "type": "string" + }, + "CustomAttributes": { + "$ref": "#/definitions/CustomAttributeList" + }, + "DistinguishedNameQualifier": { + "type": "string" + }, + "GenerationQualifier": { + "type": "string" + }, + "GivenName": { + "type": "string" + }, + "Initials": { + "type": "string" + }, + "Locality": { + "type": "string" + }, + "Organization": { + "type": "string" + }, + "OrganizationalUnit": { + "type": "string" + }, + "Pseudonym": { + "type": "string" + }, + "SerialNumber": { + "type": "string" + }, + "State": { + "type": "string" + }, + "Surname": { + "type": "string" + }, + "Title": { + "type": "string" + } + }, + "type": "object" + }, + "SubjectInformationAccess": { + "items": { + "$ref": "#/definitions/AccessDescription" + }, + "type": "array" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "UniformResourceIdentifier": { + "type": "string" + } + }, + "handlers": { + "create": { + "permissions": [ + "acm-pca:CreateCertificateAuthority", + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr" + ] + }, + "delete": { + "permissions": [ + "acm-pca:DeleteCertificateAuthority", + "acm-pca:DescribeCertificateAuthority" + ] + }, + "list": { + "permissions": [ + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr", + "acm-pca:ListCertificateAuthorities", + "acm-pca:ListTags" + ] + }, + "read": { + "permissions": [ + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr", + "acm-pca:ListTags" + ] + }, + "update": { + "permissions": [ + "acm-pca:ListTags", + "acm-pca:TagCertificateAuthority", + "acm-pca:UntagCertificateAuthority", + "acm-pca:UpdateCertificateAuthority" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "$ref": "#/definitions/Arn" + }, + "CertificateSigningRequest": { + "type": "string" + }, + "CsrExtensions": { + "$ref": "#/definitions/CsrExtensions" + }, + "KeyAlgorithm": { + "type": "string" + }, + "KeyStorageSecurityStandard": { + "type": "string" + }, + "RevocationConfiguration": { + "$ref": "#/definitions/RevocationConfiguration" + }, + "SigningAlgorithm": { + "type": "string" + }, + "Subject": { + "$ref": "#/definitions/Subject" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "Type": { + "type": "string" + }, + "UsageMode": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CertificateSigningRequest" + ], + "required": [ + "Type", + "KeyAlgorithm", + "SigningAlgorithm", + "Subject" + ], + "sourceUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_ACMPCA.html", + "typeName": "AWS::ACMPCA::CertificateAuthority", + "writeOnlyProperties": [ + "/properties/Subject", + "/properties/Subject", + "/properties/CsrExtensions", + "/properties/Tags", + "/properties/RevocationConfiguration", + "/properties/KeyStorageSecurityStandard" + ] +} diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-dynamodb-globaltable.json b/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-dynamodb-globaltable.json index 4e5ba995cb..ae37e9142b 100644 --- a/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-dynamodb-globaltable.json +++ b/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-dynamodb-globaltable.json @@ -8,6 +8,27 @@ ] ], "additionalProperties": false, + "allOf": [ + { + "if": { + "required": [ + "LocalSecondaryIndexes" + ], + "type": "object" + }, + "then": { + "properties": { + "AttributeDefinitions": { + "minItems": 2 + }, + "KeySchema": { + "minItems": 2 + } + }, + "type": "object" + } + } + ], "createOnlyProperties": [ "/properties/LocalSecondaryIndexes", "/properties/TableName", @@ -79,13 +100,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "minItems": 1, - "type": "array", - "uniqueItems": true + "minItems": 1 }, "Projection": { "$ref": "#/definitions/Projection" @@ -102,22 +119,60 @@ "type": "object" }, "KeySchema": { - "additionalProperties": false, - "properties": { - "AttributeName": { - "maxLength": 255, - "minLength": 1, - "type": "string" + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "KeyType": { + "enum": [ + "HASH", + "RANGE" + ], + "type": "string" + } }, - "KeyType": { - "type": "string" - } + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" }, - "required": [ - "KeyType", - "AttributeName" + "prefixItems": [ + { + "additionalProperties": false, + "properties": { + "KeyType": { + "const": "HASH", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + }, + { + "properties": { + "KeyType": { + "const": "RANGE", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + } ], - "type": "object" + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "KinesisStreamSpecification": { "additionalProperties": false, @@ -147,12 +202,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "type": "array", - "uniqueItems": true + "minItems": 2 }, "Projection": { "$ref": "#/definitions/Projection" @@ -511,7 +563,10 @@ }, "minItems": 1, "type": "array", - "uniqueItems": true + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "BillingMode": { "type": "string" @@ -525,13 +580,9 @@ "uniqueItems": true }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "minItems": 1, - "type": "array", - "uniqueItems": true + "minItems": 1 }, "LocalSecondaryIndexes": { "insertionOrder": false, diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-dynamodb-table.json b/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-dynamodb-table.json index efc82f1d70..f21d084b10 100644 --- a/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-dynamodb-table.json +++ b/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-dynamodb-table.json @@ -1,5 +1,26 @@ { "additionalProperties": false, + "allOf": [ + { + "if": { + "required": [ + "LocalSecondaryIndexes" + ], + "type": "object" + }, + "then": { + "properties": { + "AttributeDefinitions": { + "minItems": 2 + }, + "KeySchema": { + "minItems": 2 + } + }, + "type": "object" + } + } + ], "cfnLint": [ "AWS::DynamoDB::Table/Properties" ], @@ -95,11 +116,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 }, "Projection": { "$ref": "#/definitions/Projection" @@ -147,24 +166,57 @@ "type": "object" }, "KeySchema": { - "additionalProperties": false, - "properties": { - "AttributeName": { - "type": "string" + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "type": "string" + }, + "KeyType": { + "enum": [ + "HASH", + "RANGE" + ], + "type": "string" + } }, - "KeyType": { - "enum": [ - "HASH", - "RANGE" + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" + }, + "prefixItems": [ + { + "properties": { + "KeyType": { + "const": "HASH", + "type": "string" + } + }, + "required": [ + "KeyType" ], - "type": "string" + "type": "object" + }, + { + "properties": { + "KeyType": { + "const": "RANGE", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" } - }, - "required": [ - "KeyType", - "AttributeName" ], - "type": "object" + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "KinesisStreamSpecification": { "additionalProperties": false, @@ -192,11 +244,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 2 }, "Projection": { "$ref": "#/definitions/Projection" @@ -451,7 +501,10 @@ "$ref": "#/definitions/AttributeDefinition" }, "type": "array", - "uniqueItems": true + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "BillingMode": { "enum": [ @@ -479,11 +532,9 @@ "KeySchema": { "oneOf": [ { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 }, { "type": "object" diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-ec2-instance.json b/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-ec2-instance.json deleted file mode 100644 index 7b3bfed595..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-ec2-instance.json +++ /dev/null @@ -1,571 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ElasticGpuSpecifications", - "/properties/Ipv6Addresses", - "/properties/PlacementGroupName", - "/properties/HostResourceGroupArn", - "/properties/ImageId", - "/properties/CpuOptions", - "/properties/PrivateIpAddress", - "/properties/ElasticInferenceAccelerators", - "/properties/EnclaveOptions", - "/properties/HibernationOptions", - "/properties/KeyName", - "/properties/LicenseSpecifications", - "/properties/NetworkInterfaces", - "/properties/AvailabilityZone", - "/properties/SubnetId", - "/properties/LaunchTemplate", - "/properties/SecurityGroups", - "/properties/Ipv6AddressCount" - ], - "definitions": { - "AssociationParameter": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "BlockDeviceMapping": { - "additionalProperties": false, - "properties": { - "DeviceName": { - "type": "string" - }, - "Ebs": { - "$ref": "#/definitions/Ebs" - }, - "NoDevice": { - "$ref": "#/definitions/NoDevice" - }, - "VirtualName": { - "type": "string" - } - }, - "required": [ - "DeviceName" - ], - "requiredXor": [ - "VirtualName", - "Ebs", - "NoDevice" - ], - "type": "object" - }, - "CpuOptions": { - "additionalProperties": false, - "properties": { - "CoreCount": { - "type": "integer" - }, - "ThreadsPerCore": { - "type": "integer" - } - }, - "type": "object" - }, - "CreditSpecification": { - "additionalProperties": false, - "properties": { - "CPUCredits": { - "type": "string" - } - }, - "type": "object" - }, - "Ebs": { - "additionalProperties": false, - "properties": { - "DeleteOnTermination": { - "type": "boolean" - }, - "Encrypted": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "KmsKeyId": { - "type": "string" - }, - "SnapshotId": { - "type": "string" - }, - "VolumeSize": { - "type": "integer" - }, - "VolumeType": { - "type": "string" - } - }, - "type": "object" - }, - "ElasticGpuSpecification": { - "additionalProperties": false, - "properties": { - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "ElasticInferenceAccelerator": { - "additionalProperties": false, - "properties": { - "Count": { - "type": "integer" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "EnclaveOptions": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - } - }, - "type": "object" - }, - "HibernationOptions": { - "additionalProperties": false, - "properties": { - "Configured": { - "type": "boolean" - } - }, - "type": "object" - }, - "InstanceIpv6Address": { - "additionalProperties": false, - "properties": { - "Ipv6Address": { - "type": "string" - } - }, - "required": [ - "Ipv6Address" - ], - "type": "object" - }, - "LaunchTemplateSpecification": { - "additionalProperties": false, - "properties": { - "LaunchTemplateId": { - "type": "string" - }, - "LaunchTemplateName": { - "type": "string" - }, - "Version": { - "type": "string" - } - }, - "required": [ - "Version" - ], - "type": "object" - }, - "LicenseSpecification": { - "additionalProperties": false, - "properties": { - "LicenseConfigurationArn": { - "type": "string" - } - }, - "required": [ - "LicenseConfigurationArn" - ], - "type": "object" - }, - "NetworkInterface": { - "additionalProperties": false, - "properties": { - "AssociateCarrierIpAddress": { - "type": "boolean" - }, - "AssociatePublicIpAddress": { - "type": "boolean" - }, - "DeleteOnTermination": { - "type": "boolean" - }, - "Description": { - "type": "string" - }, - "DeviceIndex": { - "type": "string" - }, - "GroupSet": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": false - }, - "NetworkInterfaceId": { - "type": "string" - }, - "PrivateIpAddress": { - "type": "string" - }, - "PrivateIpAddresses": { - "items": { - "$ref": "#/definitions/PrivateIpAddressSpecification" - }, - "type": "array", - "uniqueItems": false - }, - "SecondaryPrivateIpAddressCount": { - "type": "integer" - }, - "SubnetId": { - "type": "string" - } - }, - "required": [ - "DeviceIndex" - ], - "type": "object" - }, - "NoDevice": { - "additionalProperties": false, - "type": "object" - }, - "PrivateDnsNameOptions": { - "additionalProperties": false, - "properties": { - "EnableResourceNameDnsAAAARecord": { - "type": "boolean" - }, - "EnableResourceNameDnsARecord": { - "type": "boolean" - }, - "HostnameType": { - "type": "string" - } - }, - "type": "object" - }, - "PrivateIpAddressSpecification": { - "additionalProperties": false, - "properties": { - "Primary": { - "type": "boolean" - }, - "PrivateIpAddress": { - "type": "string" - } - }, - "required": [ - "PrivateIpAddress", - "Primary" - ], - "type": "object" - }, - "SsmAssociation": { - "additionalProperties": false, - "properties": { - "AssociationParameters": { - "items": { - "$ref": "#/definitions/AssociationParameter" - }, - "type": "array", - "uniqueItems": false - }, - "DocumentName": { - "type": "string" - } - }, - "required": [ - "DocumentName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "Volume": { - "additionalProperties": false, - "properties": { - "Device": { - "type": "string" - }, - "VolumeId": { - "type": "string" - } - }, - "required": [ - "VolumeId", - "Device" - ], - "type": "object" - } - }, - "dependentExcluded": { - "NetworkInterfaces": [ - "SubnetId" - ], - "SubnetId": [ - "NetworkInterfaces" - ] - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AdditionalInfo": { - "type": "string" - }, - "Affinity": { - "enum": [ - "default", - "host" - ], - "type": "string" - }, - "AvailabilityZone": { - "cfnLint": [ - "AWS::EC2::Instance/Properties/AvailabilityZone" - ], - "type": "string" - }, - "BlockDeviceMappings": { - "items": { - "$ref": "#/definitions/BlockDeviceMapping" - }, - "type": "array", - "uniqueItems": false - }, - "CpuOptions": { - "$ref": "#/definitions/CpuOptions" - }, - "CreditSpecification": { - "$ref": "#/definitions/CreditSpecification" - }, - "DisableApiTermination": { - "type": "boolean" - }, - "EbsOptimized": { - "type": "boolean" - }, - "ElasticGpuSpecifications": { - "items": { - "$ref": "#/definitions/ElasticGpuSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "ElasticInferenceAccelerators": { - "items": { - "$ref": "#/definitions/ElasticInferenceAccelerator" - }, - "type": "array", - "uniqueItems": true - }, - "EnclaveOptions": { - "$ref": "#/definitions/EnclaveOptions" - }, - "HibernationOptions": { - "$ref": "#/definitions/HibernationOptions" - }, - "HostId": { - "type": "string" - }, - "HostResourceGroupArn": { - "type": "string" - }, - "IamInstanceProfile": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "ImageId": { - "type": "string" - }, - "InstanceInitiatedShutdownBehavior": { - "type": "string" - }, - "InstanceType": { - "cfnLint": [ - "AWS::EC2::Instance/Properties/InstanceType" - ], - "type": "string" - }, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": false - }, - "KernelId": { - "type": "string" - }, - "KeyName": { - "type": "string" - }, - "LaunchTemplate": { - "$ref": "#/definitions/LaunchTemplateSpecification" - }, - "LicenseSpecifications": { - "items": { - "$ref": "#/definitions/LicenseSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "Monitoring": { - "type": "boolean" - }, - "NetworkInterfaces": { - "items": { - "$ref": "#/definitions/NetworkInterface" - }, - "type": "array", - "uniqueItems": false - }, - "PlacementGroupName": { - "type": "string" - }, - "PrivateDnsName": { - "type": "string" - }, - "PrivateDnsNameOptions": { - "$ref": "#/definitions/PrivateDnsNameOptions" - }, - "PrivateIp": { - "type": "string" - }, - "PrivateIpAddress": { - "type": "string" - }, - "PropagateTagsToVolumeOnCreation": { - "type": "boolean" - }, - "PublicDnsName": { - "type": "string" - }, - "PublicIp": { - "type": "string" - }, - "RamdiskId": { - "type": "string" - }, - "SecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SecurityGroups": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SourceDestCheck": { - "type": "boolean" - }, - "SsmAssociations": { - "items": { - "$ref": "#/definitions/SsmAssociation" - }, - "type": "array", - "uniqueItems": false - }, - "SubnetId": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "Tenancy": { - "enum": [ - "default", - "dedicated", - "host" - ], - "type": "string" - }, - "UserData": { - "type": "string" - }, - "Volumes": { - "items": { - "$ref": "#/definitions/Volume" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/PublicIp", - "/properties/Id", - "/properties/PublicDnsName", - "/properties/PrivateDnsName", - "/properties/PrivateIp" - ], - "requiredXor": [ - "ImageId", - "LaunchTemplate" - ], - "typeName": "AWS::EC2::Instance" -} diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-ec2-securitygroupegress.json b/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-ec2-securitygroupegress.json new file mode 100644 index 0000000000..f94631dad2 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-ec2-securitygroupegress.json @@ -0,0 +1,98 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::EC2::SecurityGroupEgress/Properties" + ], + "createOnlyProperties": [ + "/properties/IpProtocol", + "/properties/DestinationSecurityGroupId", + "/properties/ToPort", + "/properties/CidrIp", + "/properties/FromPort", + "/properties/GroupId", + "/properties/CidrIpv6", + "/properties/DestinationPrefixListId" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:AuthorizeSecurityGroupEgress", + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "delete": { + "permissions": [ + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "update": { + "permissions": [ + "ec2:UpdateSecurityGroupRuleDescriptionsEgress" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CidrIp": { + "type": "string" + }, + "CidrIpv6": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "DestinationPrefixListId": { + "type": "string" + }, + "DestinationSecurityGroupId": { + "type": "string" + }, + "FromPort": { + "minimum": -1, + "type": "integer" + }, + "GroupId": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "IpProtocol": { + "type": "string" + }, + "ToPort": { + "minimum": -1, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IpProtocol", + "GroupId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SecurityGroupEgress" +} diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-lambda-eventsourcemapping.json b/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-lambda-eventsourcemapping.json new file mode 100644 index 0000000000..cb7599c139 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-lambda-eventsourcemapping.json @@ -0,0 +1,353 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::Lambda::EventSourceMapping/Properties" + ], + "createOnlyProperties": [ + "/properties/EventSourceArn", + "/properties/StartingPosition", + "/properties/StartingPositionTimestamp", + "/properties/SelfManagedEventSource", + "/properties/AmazonManagedKafkaEventSourceConfig", + "/properties/SelfManagedKafkaEventSourceConfig" + ], + "definitions": { + "AmazonManagedKafkaEventSourceConfig": { + "additionalProperties": false, + "properties": { + "ConsumerGroupId": { + "$ref": "#/definitions/ConsumerGroupId" + } + }, + "type": "object" + }, + "ConsumerGroupId": { + "maxLength": 200, + "minLength": 1, + "pattern": "[a-zA-Z0-9-\\/*:_+=.@-]*", + "type": "string" + }, + "DestinationConfig": { + "additionalProperties": false, + "properties": { + "OnFailure": { + "$ref": "#/definitions/OnFailure" + } + }, + "type": "object" + }, + "DocumentDBEventSourceConfig": { + "additionalProperties": false, + "properties": { + "CollectionName": { + "maxLength": 57, + "minLength": 1, + "type": "string" + }, + "DatabaseName": { + "maxLength": 63, + "minLength": 1, + "type": "string" + }, + "FullDocument": { + "enum": [ + "UpdateLookup", + "Default" + ], + "type": "string" + } + }, + "type": "object" + }, + "Endpoints": { + "additionalProperties": false, + "properties": { + "KafkaBootstrapServers": { + "items": { + "maxLength": 300, + "minLength": 1, + "pattern": "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9]):[0-9]{1,5}", + "type": "string" + }, + "maxItems": 10, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "Filter": { + "additionalProperties": false, + "properties": { + "Pattern": { + "maxLength": 4096, + "minLength": 0, + "pattern": ".*", + "type": "string" + } + }, + "type": "object" + }, + "FilterCriteria": { + "additionalProperties": false, + "properties": { + "Filters": { + "items": { + "$ref": "#/definitions/Filter" + }, + "maxItems": 20, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "MaximumConcurrency": { + "maximum": 1000, + "minimum": 2, + "type": "integer" + }, + "OnFailure": { + "additionalProperties": false, + "properties": { + "Destination": { + "maxLength": 1024, + "minLength": 12, + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "type": "string" + } + }, + "type": "object" + }, + "ScalingConfig": { + "additionalProperties": false, + "properties": { + "MaximumConcurrency": { + "$ref": "#/definitions/MaximumConcurrency" + } + }, + "type": "object" + }, + "SelfManagedEventSource": { + "additionalProperties": false, + "properties": { + "Endpoints": { + "$ref": "#/definitions/Endpoints" + } + }, + "type": "object" + }, + "SelfManagedKafkaEventSourceConfig": { + "additionalProperties": false, + "properties": { + "ConsumerGroupId": { + "$ref": "#/definitions/ConsumerGroupId" + } + }, + "type": "object" + }, + "SourceAccessConfiguration": { + "additionalProperties": false, + "properties": { + "Type": { + "enum": [ + "BASIC_AUTH", + "VPC_SUBNET", + "VPC_SECURITY_GROUP", + "SASL_SCRAM_512_AUTH", + "SASL_SCRAM_256_AUTH", + "VIRTUAL_HOST", + "CLIENT_CERTIFICATE_TLS_AUTH", + "SERVER_ROOT_CA_CERTIFICATE" + ], + "type": "string" + }, + "URI": { + "maxLength": 200, + "minLength": 1, + "pattern": "[a-zA-Z0-9-\\/*:_+=.@-]*", + "type": "string" + } + }, + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "lambda:CreateEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + }, + "delete": { + "permissions": [ + "lambda:DeleteEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + }, + "list": { + "permissions": [ + "lambda:ListEventSourceMappings" + ] + }, + "read": { + "permissions": [ + "lambda:GetEventSourceMapping" + ] + }, + "update": { + "permissions": [ + "lambda:UpdateEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AmazonManagedKafkaEventSourceConfig": { + "$ref": "#/definitions/AmazonManagedKafkaEventSourceConfig" + }, + "BatchSize": { + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "BisectBatchOnFunctionError": { + "type": "boolean" + }, + "DestinationConfig": { + "$ref": "#/definitions/DestinationConfig" + }, + "DocumentDBEventSourceConfig": { + "$ref": "#/definitions/DocumentDBEventSourceConfig" + }, + "Enabled": { + "type": "boolean" + }, + "EventSourceArn": { + "maxLength": 1024, + "minLength": 12, + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "type": "string" + }, + "FilterCriteria": { + "$ref": "#/definitions/FilterCriteria" + }, + "FunctionName": { + "maxLength": 140, + "minLength": 1, + "pattern": "(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?", + "type": "string" + }, + "FunctionResponseTypes": { + "items": { + "enum": [ + "ReportBatchItemFailures" + ], + "type": "string" + }, + "maxLength": 1, + "minLength": 0, + "type": "array", + "uniqueItems": true + }, + "Id": { + "maxLength": 36, + "minLength": 36, + "pattern": "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + "type": "string" + }, + "MaximumBatchingWindowInSeconds": { + "maximum": 300, + "minimum": 0, + "type": "integer" + }, + "MaximumRecordAgeInSeconds": { + "maximum": 604800, + "minimum": -1, + "type": "integer" + }, + "MaximumRetryAttempts": { + "maximum": 10000, + "minimum": -1, + "type": "integer" + }, + "ParallelizationFactor": { + "maximum": 10, + "minimum": 1, + "type": "integer" + }, + "Queues": { + "items": { + "maxLength": 1000, + "minLength": 1, + "pattern": "[\\s\\S]*", + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "ScalingConfig": { + "$ref": "#/definitions/ScalingConfig" + }, + "SelfManagedEventSource": { + "$ref": "#/definitions/SelfManagedEventSource" + }, + "SelfManagedKafkaEventSourceConfig": { + "$ref": "#/definitions/SelfManagedKafkaEventSourceConfig" + }, + "SourceAccessConfigurations": { + "items": { + "$ref": "#/definitions/SourceAccessConfiguration" + }, + "maxItems": 22, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "StartingPosition": { + "enum": [ + "TRIM_HORIZON", + "LATEST", + "AT_TIMESTAMP" + ], + "maxLength": 12, + "minLength": 6, + "pattern": "(LATEST|TRIM_HORIZON|AT_TIMESTAMP)+", + "type": "string" + }, + "StartingPositionTimestamp": { + "type": "number" + }, + "Topics": { + "items": { + "maxLength": 249, + "minLength": 1, + "pattern": "^[^.]([a-zA-Z0-9\\-_.]+)", + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "TumblingWindowInSeconds": { + "maximum": 900, + "minimum": 0, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "FunctionName" + ], + "typeName": "AWS::Lambda::EventSourceMapping" +} diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-redshift-cluster.json b/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-redshift-cluster.json deleted file mode 100644 index bdd4d92992..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-redshift-cluster.json +++ /dev/null @@ -1,332 +0,0 @@ -{ - "additionalProperties": false, - "cfnLint": "AWS::Redshift::Cluster/Properties", - "createOnlyProperties": [ - "/properties/ClusterIdentifier", - "/properties/OwnerAccount", - "/properties/SnapshotIdentifier", - "/properties/DBName", - "/properties/SnapshotClusterIdentifier", - "/properties/ClusterSubnetGroupName", - "/properties/MasterUsername" - ], - "definitions": { - "Endpoint": { - "additionalProperties": false, - "properties": { - "Address": { - "type": "string" - }, - "Port": { - "type": "string" - } - }, - "type": "object" - }, - "LoggingProperties": { - "additionalProperties": false, - "properties": { - "BucketName": { - "type": "string" - }, - "S3KeyPrefix": { - "type": "string" - } - }, - "required": [ - "BucketName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 127, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 255, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "redshift:DescribeClusters", - "redshift:CreateCluster", - "redshift:RestoreFromClusterSnapshot", - "redshift:EnableLogging", - "redshift:DescribeTags" - ], - "timeoutInMinutes": 2160 - }, - "delete": { - "permissions": [ - "redshift:DescribeTags", - "redshift:DescribeClusters", - "redshift:DeleteCluster" - ], - "timeoutInMinutes": 2160 - }, - "list": { - "permissions": [ - "redshift:DescribeTags", - "redshift:DescribeClusters" - ] - }, - "read": { - "permissions": [ - "redshift:DescribeClusters", - "redshift:DescribeLoggingStatus", - "redshift:DescribeSnapshotCopyGrant", - "redshift:DescribeClusterDbRevisions", - "redshift:DescribeTags" - ] - }, - "update": { - "permissions": [ - "redshift:DescribeClusters", - "redshift:ModifyCluster", - "redshift:ModifyClusterIamRoles", - "redshift:EnableLogging", - "redshift:CreateTags", - "redshift:DeleteTags", - "redshift:DescribeTags", - "redshift:DisableLogging", - "redshift:RebootCluster", - "redshift:EnableSnapshotCopy", - "redshift:DisableSnapshotCopy", - "redshift:ModifySnapshotCopyRetentionPeriod", - "redshift:ModifyAquaConfiguration", - "redshift:ResizeCluster", - "redshift:ModifyClusterMaintenance", - "redshift:DescribeClusterDbRevisions", - "redshift:ModifyClusterDbRevisions", - "redshift:PauseCluster", - "redshift:ResumeCluster", - "redshift:RotateEncryptionKey", - "redshift:FailoverPrimaryCompute" - ], - "timeoutInMinutes": 2160 - } - }, - "primaryIdentifier": [ - "/properties/ClusterIdentifier" - ], - "properties": { - "AllowVersionUpgrade": { - "type": "boolean" - }, - "AquaConfigurationStatus": { - "type": "string" - }, - "AutomatedSnapshotRetentionPeriod": { - "type": "integer" - }, - "AvailabilityZone": { - "type": "string" - }, - "AvailabilityZoneRelocation": { - "type": "boolean" - }, - "AvailabilityZoneRelocationStatus": { - "type": "string" - }, - "Classic": { - "type": "boolean" - }, - "ClusterIdentifier": { - "maxLength": 63, - "type": "string" - }, - "ClusterParameterGroupName": { - "maxLength": 255, - "type": "string" - }, - "ClusterSecurityGroups": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "ClusterSubnetGroupName": { - "type": "string" - }, - "ClusterType": { - "type": "string" - }, - "ClusterVersion": { - "type": "string" - }, - "DBName": { - "type": "string" - }, - "DeferMaintenance": { - "type": "boolean" - }, - "DeferMaintenanceDuration": { - "type": "integer" - }, - "DeferMaintenanceEndTime": { - "type": "string" - }, - "DeferMaintenanceIdentifier": { - "type": "string" - }, - "DeferMaintenanceStartTime": { - "type": "string" - }, - "DestinationRegion": { - "type": "string" - }, - "ElasticIp": { - "type": "string" - }, - "Encrypted": { - "type": "boolean" - }, - "Endpoint": { - "$ref": "#/definitions/Endpoint" - }, - "EnhancedVpcRouting": { - "type": "boolean" - }, - "HsmClientCertificateIdentifier": { - "type": "string" - }, - "HsmConfigurationIdentifier": { - "type": "string" - }, - "IamRoles": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "maxItems": 50, - "type": "array" - }, - "Id": { - "type": "string" - }, - "KmsKeyId": { - "type": "string" - }, - "LoggingProperties": { - "$ref": "#/definitions/LoggingProperties" - }, - "MaintenanceTrackName": { - "type": "string" - }, - "ManualSnapshotRetentionPeriod": { - "type": "integer" - }, - "MasterUserPassword": { - "maxLength": 64, - "type": "string" - }, - "MasterUsername": { - "maxLength": 128, - "type": "string" - }, - "MultiAZ": { - "type": "boolean" - }, - "NodeType": { - "cfnLint": "AWS::Redshift::Cluster/Properties/NodeType", - "type": "string" - }, - "NumberOfNodes": { - "maximum": 100, - "minimum": 1, - "type": "integer" - }, - "OwnerAccount": { - "type": "string" - }, - "Port": { - "type": "integer" - }, - "PreferredMaintenanceWindow": { - "type": "string" - }, - "PubliclyAccessible": { - "type": "boolean" - }, - "ResourceAction": { - "type": "string" - }, - "RevisionTarget": { - "type": "string" - }, - "RotateEncryptionKey": { - "type": "boolean" - }, - "SnapshotClusterIdentifier": { - "type": "string" - }, - "SnapshotCopyGrantName": { - "type": "string" - }, - "SnapshotCopyManual": { - "type": "boolean" - }, - "SnapshotCopyRetentionPeriod": { - "type": "integer" - }, - "SnapshotIdentifier": { - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": false - }, - "VpcSecurityGroupIds": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/DeferMaintenanceIdentifier", - "/properties/Endpoint/Port", - "/properties/Endpoint/Address" - ], - "required": [ - "MasterUserPassword", - "NodeType", - "MasterUsername", - "DBName", - "ClusterType" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "taggable": true - }, - "typeName": "AWS::Redshift::Cluster", - "writeOnlyProperties": [ - "/properties/MasterUserPassword", - "/properties/Classic", - "/properties/SnapshotIdentifier" - ] -} diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-redshift-clusterparametergroup.json b/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-redshift-clusterparametergroup.json deleted file mode 100644 index 6e830dea20..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-redshift-clusterparametergroup.json +++ /dev/null @@ -1,136 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ParameterGroupName", - "/properties/ParameterGroupFamily", - "/properties/Description" - ], - "definitions": { - "Parameter": { - "additionalProperties": false, - "properties": { - "ParameterName": { - "type": "string" - }, - "ParameterValue": { - "type": "string" - } - }, - "required": [ - "ParameterValue", - "ParameterName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "redshift:CreateClusterParameterGroup", - "redshift:ModifyClusterParameterGroup", - "redshift:DescribeClusterParameterGroups", - "redshift:CreateTags", - "ec2:AllocateAddress", - "ec2:AssociateAddress", - "ec2:AttachNetworkInterface", - "ec2:DescribeAccountAttributes", - "ec2:DescribeAddresses", - "ec2:DescribeAvailabilityZones", - "ec2:DescribeInternetGateways", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:DescribeVpcs" - ] - }, - "delete": { - "permissions": [ - "redshift:DeleteClusterParameterGroup", - "initech:DeleteReport" - ] - }, - "list": { - "permissions": [ - "redshift:DescribeClusterParameterGroups", - "initech:ListReports" - ] - }, - "read": { - "permissions": [ - "redshift:DescribeClusterParameterGroups", - "initech:DescribeReport" - ] - }, - "update": { - "permissions": [ - "redshift:ResetClusterParameterGroup", - "redshift:ModifyClusterParameterGroup", - "redshift:DescribeTags", - "redshift:CreateTags", - "redshift:DeleteTags", - "initech:UpdateReport" - ] - } - }, - "primaryIdentifier": [ - "/properties/ParameterGroupName" - ], - "properties": { - "Description": { - "type": "string" - }, - "ParameterGroupFamily": { - "type": "string" - }, - "ParameterGroupName": { - "maxLength": 255, - "type": "string" - }, - "Parameters": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Parameter" - }, - "type": "array" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "required": [ - "Description", - "ParameterGroupFamily" - ], - "tagging": { - "taggable": true - }, - "typeName": "AWS::Redshift::ClusterParameterGroup", - "writeOnlyProperties": [ - "/properties/Tags", - "/properties/Tags/*/Key", - "/properties/Tags/*/Value" - ] -} diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-sagemaker-appimageconfig.json b/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-sagemaker-appimageconfig.json new file mode 100644 index 0000000000..01116f524b --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-sagemaker-appimageconfig.json @@ -0,0 +1,238 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AppImageConfigName", + "/properties/Tags" + ], + "definitions": { + "ContainerConfig": { + "additionalProperties": false, + "properties": { + "ContainerArguments": { + "items": { + "$ref": "#/definitions/CustomImageContainerArguments" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "ContainerEntrypoint": { + "items": { + "$ref": "#/definitions/CustomImageContainerEntrypoint" + }, + "maxItems": 1, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "ContainerEnvironmentVariables": { + "items": { + "$ref": "#/definitions/CustomImageContainerEnvironmentVariable" + }, + "maxItems": 25, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "CustomImageContainerArguments": { + "maxLength": 64, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "CustomImageContainerEntrypoint": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "CustomImageContainerEnvironmentVariable": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "FileSystemConfig": { + "additionalProperties": false, + "properties": { + "DefaultGid": { + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "DefaultUid": { + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "MountPath": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^/.*", + "type": "string" + } + }, + "type": "object" + }, + "JupyterLabAppImageConfig": { + "additionalProperties": false, + "properties": { + "ContainerConfig": { + "$ref": "#/definitions/ContainerConfig" + } + }, + "type": "object" + }, + "KernelGatewayImageConfig": { + "additionalProperties": false, + "properties": { + "FileSystemConfig": { + "$ref": "#/definitions/FileSystemConfig" + }, + "KernelSpecs": { + "items": { + "$ref": "#/definitions/KernelSpec" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "KernelSpecs" + ], + "type": "object" + }, + "KernelSpec": { + "additionalProperties": false, + "properties": { + "DisplayName": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Name": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "sagemaker:CreateAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + }, + "delete": { + "permissions": [ + "sagemaker:DeleteAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + }, + "list": { + "permissions": [ + "sagemaker:ListAppImageConfigs" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeAppImageConfig" + ] + }, + "update": { + "permissions": [ + "sagemaker:UpdateAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + } + }, + "primaryIdentifier": [ + "/properties/AppImageConfigName" + ], + "properties": { + "AppImageConfigArn": { + "maxLength": 256, + "minLength": 1, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:app-image-config/.*", + "type": "string" + }, + "AppImageConfigName": { + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", + "type": "string" + }, + "JupyterLabAppImageConfig": { + "$ref": "#/definitions/JupyterLabAppImageConfig" + }, + "KernelGatewayImageConfig": { + "$ref": "#/definitions/KernelGatewayImageConfig" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/AppImageConfigArn" + ], + "required": [ + "AppImageConfigName" + ], + "typeName": "AWS::SageMaker::AppImageConfig", + "writeOnlyProperties": [ + "/properties/Tags" + ] +} diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-sagemaker-domain.json b/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-sagemaker-domain.json new file mode 100644 index 0000000000..e57c036025 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-sagemaker-domain.json @@ -0,0 +1,739 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AuthMode", + "/properties/DomainName", + "/properties/DomainSettings/RStudioServerProDomainSettings/DefaultResourceSpec", + "/properties/KmsKeyId", + "/properties/VpcId", + "/properties/Tags" + ], + "definitions": { + "CodeEditorAppSettings": { + "additionalProperties": false, + "properties": { + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + }, + "LifecycleConfigArns": { + "items": { + "$ref": "#/definitions/StudioLifecycleConfigArn" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "CodeRepository": { + "additionalProperties": false, + "properties": { + "RepositoryUrl": { + "maxLength": 256, + "pattern": "^https://([.\\-_a-zA-Z0-9]+/?){3,1016}$", + "type": "string" + } + }, + "required": [ + "RepositoryUrl" + ], + "type": "object" + }, + "CustomFileSystemConfig": { + "additionalProperties": false, + "properties": { + "EFSFileSystemConfig": { + "$ref": "#/definitions/EFSFileSystemConfig" + } + }, + "type": "object" + }, + "CustomImage": { + "additionalProperties": false, + "properties": { + "AppImageConfigName": { + "maxLength": 63, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", + "type": "string" + }, + "ImageName": { + "maxLength": 63, + "pattern": "^[a-zA-Z0-9]([-.]?[a-zA-Z0-9]){0,62}$", + "type": "string" + }, + "ImageVersionNumber": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "AppImageConfigName", + "ImageName" + ], + "type": "object" + }, + "CustomPosixUserConfig": { + "additionalProperties": false, + "properties": { + "Gid": { + "maximum": 4000000, + "minimum": 1001, + "type": "integer" + }, + "Uid": { + "maximum": 4000000, + "minimum": 10000, + "type": "integer" + } + }, + "required": [ + "Uid", + "Gid" + ], + "type": "object" + }, + "DefaultEbsStorageSettings": { + "additionalProperties": false, + "properties": { + "DefaultEbsVolumeSizeInGb": { + "$ref": "#/definitions/SpaceEbsVolumeSizeInGb" + }, + "MaximumEbsVolumeSizeInGb": { + "$ref": "#/definitions/SpaceEbsVolumeSizeInGb" + } + }, + "required": [ + "DefaultEbsVolumeSizeInGb", + "MaximumEbsVolumeSizeInGb" + ], + "type": "object" + }, + "DefaultSpaceSettings": { + "additionalProperties": false, + "properties": { + "ExecutionRole": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "JupyterServerAppSettings": { + "$ref": "#/definitions/JupyterServerAppSettings" + }, + "KernelGatewayAppSettings": { + "$ref": "#/definitions/KernelGatewayAppSettings" + }, + "SecurityGroups": { + "insertionOrder": false, + "items": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 5, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "ExecutionRole" + ], + "type": "object" + }, + "DefaultSpaceStorageSettings": { + "additionalProperties": false, + "properties": { + "DefaultEbsStorageSettings": { + "$ref": "#/definitions/DefaultEbsStorageSettings" + } + }, + "type": "object" + }, + "DockerSettings": { + "additionalProperties": false, + "properties": { + "EnableDockerAccess": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "VpcOnlyTrustedAccounts": { + "insertionOrder": false, + "items": { + "maxLength": 12, + "pattern": "^[0-9]$", + "type": "string" + }, + "maxItems": 10, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "DomainSettings": { + "additionalProperties": false, + "properties": { + "DockerSettings": { + "$ref": "#/definitions/DockerSettings" + }, + "RStudioServerProDomainSettings": { + "$ref": "#/definitions/RStudioServerProDomainSettings" + }, + "SecurityGroupIds": { + "insertionOrder": false, + "items": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 3, + "minItems": 1, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "EFSFileSystemConfig": { + "additionalProperties": false, + "properties": { + "FileSystemId": { + "maxLength": 21, + "minLength": 11, + "pattern": "^(fs-[0-9a-f]{8,})$", + "type": "string" + }, + "FileSystemPath": { + "maxLength": 256, + "minLength": 1, + "pattern": "^\\/\\S*$", + "type": "string" + } + }, + "required": [ + "FileSystemId" + ], + "type": "object" + }, + "JupyterLabAppSettings": { + "additionalProperties": false, + "properties": { + "CodeRepositories": { + "items": { + "$ref": "#/definitions/CodeRepository" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "CustomImages": { + "items": { + "$ref": "#/definitions/CustomImage" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + }, + "LifecycleConfigArns": { + "items": { + "$ref": "#/definitions/StudioLifecycleConfigArn" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "JupyterServerAppSettings": { + "additionalProperties": false, + "properties": { + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + } + }, + "type": "object" + }, + "KernelGatewayAppSettings": { + "additionalProperties": false, + "properties": { + "CustomImages": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/CustomImage" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + } + }, + "type": "object" + }, + "RSessionAppSettings": { + "additionalProperties": false, + "properties": { + "CustomImages": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/CustomImage" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + } + }, + "type": "object" + }, + "RStudioServerProAppSettings": { + "additionalProperties": false, + "properties": { + "AccessStatus": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "UserGroup": { + "enum": [ + "R_STUDIO_ADMIN", + "R_STUDIO_USER" + ], + "type": "string" + } + }, + "type": "object" + }, + "RStudioServerProDomainSettings": { + "additionalProperties": false, + "properties": { + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + }, + "DomainExecutionRoleArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "RStudioConnectUrl": { + "pattern": "^(https:|http:|www\\.)\\S*", + "type": "string" + }, + "RStudioPackageManagerUrl": { + "pattern": "^(https:|http:|www\\.)\\S*", + "type": "string" + } + }, + "required": [ + "DomainExecutionRoleArn" + ], + "type": "object" + }, + "ResourceSpec": { + "additionalProperties": false, + "properties": { + "InstanceType": { + "enum": [ + "system", + "ml.t3.micro", + "ml.t3.small", + "ml.t3.medium", + "ml.t3.large", + "ml.t3.xlarge", + "ml.t3.2xlarge", + "ml.m5.large", + "ml.m5.xlarge", + "ml.m5.2xlarge", + "ml.m5.4xlarge", + "ml.m5.8xlarge", + "ml.m5.12xlarge", + "ml.m5.16xlarge", + "ml.m5.24xlarge", + "ml.c5.large", + "ml.c5.xlarge", + "ml.c5.2xlarge", + "ml.c5.4xlarge", + "ml.c5.9xlarge", + "ml.c5.12xlarge", + "ml.c5.18xlarge", + "ml.c5.24xlarge", + "ml.p3.2xlarge", + "ml.p3.8xlarge", + "ml.p3.16xlarge", + "ml.g4dn.xlarge", + "ml.g4dn.2xlarge", + "ml.g4dn.4xlarge", + "ml.g4dn.8xlarge", + "ml.g4dn.12xlarge", + "ml.g4dn.16xlarge", + "ml.r5.large", + "ml.r5.xlarge", + "ml.r5.2xlarge", + "ml.r5.4xlarge", + "ml.r5.8xlarge", + "ml.r5.12xlarge", + "ml.r5.16xlarge", + "ml.r5.24xlarge", + "ml.p3dn.24xlarge", + "ml.m5d.large", + "ml.m5d.xlarge", + "ml.m5d.2xlarge", + "ml.m5d.4xlarge", + "ml.m5d.8xlarge", + "ml.m5d.12xlarge", + "ml.m5d.16xlarge", + "ml.m5d.24xlarge", + "ml.g5.xlarge", + "ml.g5.2xlarge", + "ml.g5.4xlarge", + "ml.g5.8xlarge", + "ml.g5.12xlarge", + "ml.g5.16xlarge", + "ml.g5.24xlarge", + "ml.g5.48xlarge", + "ml.p4d.24xlarge", + "ml.p4de.24xlarge", + "ml.geospatial.interactive", + "ml.trn1.2xlarge", + "ml.trn1.32xlarge", + "ml.trn1n.32xlarge" + ], + "type": "string" + }, + "LifecycleConfigArn": { + "maxLength": 256, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:studio-lifecycle-config/.*", + "type": "string" + }, + "SageMakerImageArn": { + "maxLength": 256, + "pattern": "^arn:aws(-[\\w]+)*:sagemaker:.+:[0-9]{12}:image/[a-z0-9]([-.]?[a-z0-9])*$", + "type": "string" + }, + "SageMakerImageVersionArn": { + "maxLength": 256, + "pattern": "^arn:aws(-[\\w]+)*:sagemaker:.+:[0-9]{12}:image-version/[a-z0-9]([-.]?[a-z0-9])*/[0-9]+$", + "type": "string" + } + }, + "type": "object" + }, + "SharingSettings": { + "additionalProperties": false, + "properties": { + "NotebookOutputOption": { + "enum": [ + "Allowed", + "Disabled" + ], + "type": "string" + }, + "S3KmsKeyId": { + "maxLength": 2048, + "pattern": ".*", + "type": "string" + }, + "S3OutputPath": { + "maxLength": 1024, + "pattern": "^(https|s3)://([^/]+)/?(.*)$", + "type": "string" + } + }, + "type": "object" + }, + "SpaceEbsVolumeSizeInGb": { + "maximum": 16384, + "minimum": 5, + "type": "integer" + }, + "StudioLifecycleConfigArn": { + "maxLength": 256, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:studio-lifecycle-config/.*", + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "UserSettings": { + "additionalProperties": false, + "properties": { + "CodeEditorAppSettings": { + "$ref": "#/definitions/CodeEditorAppSettings" + }, + "CustomFileSystemConfigs": { + "items": { + "$ref": "#/definitions/CustomFileSystemConfig" + }, + "maxItems": 2, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "CustomPosixUserConfig": { + "$ref": "#/definitions/CustomPosixUserConfig" + }, + "DefaultLandingUri": { + "maxLength": 1023, + "type": "string" + }, + "ExecutionRole": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "JupyterLabAppSettings": { + "$ref": "#/definitions/JupyterLabAppSettings" + }, + "JupyterServerAppSettings": { + "$ref": "#/definitions/JupyterServerAppSettings" + }, + "KernelGatewayAppSettings": { + "$ref": "#/definitions/KernelGatewayAppSettings" + }, + "RSessionAppSettings": { + "$ref": "#/definitions/RSessionAppSettings" + }, + "RStudioServerProAppSettings": { + "$ref": "#/definitions/RStudioServerProAppSettings" + }, + "SecurityGroups": { + "insertionOrder": false, + "items": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 5, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "SharingSettings": { + "$ref": "#/definitions/SharingSettings" + }, + "SpaceStorageSettings": { + "$ref": "#/definitions/DefaultSpaceStorageSettings" + }, + "StudioWebPortal": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + } + }, + "required": [ + "ExecutionRole" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "sagemaker:CreateApp", + "sagemaker:CreateDomain", + "sagemaker:DescribeDomain", + "sagemaker:DescribeImage", + "sagemaker:DescribeImageVersion", + "iam:CreateServiceLinkedRole", + "iam:PassRole", + "efs:CreateFileSystem", + "kms:CreateGrant", + "kms:Decrypt", + "kms:DescribeKey", + "kms:GenerateDataKeyWithoutPlainText" + ] + }, + "delete": { + "permissions": [ + "sagemaker:DeleteApp", + "sagemaker:DeleteDomain", + "sagemaker:DescribeDomain" + ] + }, + "list": { + "permissions": [ + "sagemaker:ListDomains" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeDomain" + ] + }, + "update": { + "permissions": [ + "sagemaker:CreateApp", + "sagemaker:UpdateDomain", + "sagemaker:DescribeDomain", + "sagemaker:DescribeImage", + "sagemaker:DescribeImageVersion", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/DomainId" + ], + "properties": { + "AppNetworkAccessType": { + "enum": [ + "PublicInternetOnly", + "VpcOnly" + ], + "type": "string" + }, + "AppSecurityGroupManagement": { + "enum": [ + "Service", + "Customer" + ], + "type": "string" + }, + "AuthMode": { + "enum": [ + "SSO", + "IAM" + ], + "type": "string" + }, + "DefaultSpaceSettings": { + "$ref": "#/definitions/DefaultSpaceSettings" + }, + "DefaultUserSettings": { + "$ref": "#/definitions/UserSettings" + }, + "DomainArn": { + "maxLength": 256, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:domain/.*", + "type": "string" + }, + "DomainId": { + "maxLength": 63, + "pattern": "^d-(-*[a-z0-9])+", + "type": "string" + }, + "DomainName": { + "maxLength": 63, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", + "type": "string" + }, + "DomainSettings": { + "$ref": "#/definitions/DomainSettings" + }, + "HomeEfsFileSystemId": { + "maxLength": 32, + "type": "string" + }, + "KmsKeyId": { + "maxLength": 2048, + "pattern": ".*", + "type": "string" + }, + "SecurityGroupIdForDomainBoundary": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "SingleSignOnApplicationArn": { + "pattern": "^arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):sso::[0-9]+:application/[a-zA-Z0-9-_.]+/apl-[a-zA-Z0-9]+$", + "type": "string" + }, + "SingleSignOnManagedApplicationInstanceId": { + "maxLength": 256, + "type": "string" + }, + "SubnetIds": { + "insertionOrder": false, + "items": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 16, + "minItems": 1, + "type": "array", + "uniqueItems": false + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "Url": { + "maxLength": 1024, + "type": "string" + }, + "VpcId": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/DomainArn", + "/properties/Url", + "/properties/DomainId", + "/properties/HomeEfsFileSystemId", + "/properties/SecurityGroupIdForDomainBoundary", + "/properties/SingleSignOnManagedApplicationInstanceId", + "/properties/SingleSignOnApplicationArn" + ], + "required": [ + "AuthMode", + "DefaultUserSettings", + "DomainName", + "SubnetIds", + "VpcId" + ], + "typeName": "AWS::SageMaker::Domain", + "writeOnlyProperties": [ + "/properties/Tags" + ] +} diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-sagemaker-userprofile.json b/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-sagemaker-userprofile.json new file mode 100644 index 0000000000..d0f8848903 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-sagemaker-userprofile.json @@ -0,0 +1,524 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DomainId", + "/properties/UserProfileName", + "/properties/SingleSignOnUserIdentifier", + "/properties/SingleSignOnUserValue", + "/properties/UserSettings/RStudioServerProAppSettings/AccessStatus", + "/properties/UserSettings/RStudioServerProAppSettings/UserGroup", + "/properties/Tags" + ], + "definitions": { + "CodeEditorAppSettings": { + "additionalProperties": false, + "properties": { + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + }, + "LifecycleConfigArns": { + "items": { + "$ref": "#/definitions/StudioLifecycleConfigArn" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "CodeRepository": { + "additionalProperties": false, + "properties": { + "RepositoryUrl": { + "maxLength": 256, + "pattern": "^https://([.\\-_a-zA-Z0-9]+/?){3,1016}$", + "type": "string" + } + }, + "required": [ + "RepositoryUrl" + ], + "type": "object" + }, + "CustomFileSystemConfig": { + "additionalProperties": false, + "properties": { + "EFSFileSystemConfig": { + "$ref": "#/definitions/EFSFileSystemConfig" + } + }, + "type": "object" + }, + "CustomImage": { + "additionalProperties": false, + "properties": { + "AppImageConfigName": { + "maxLength": 63, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", + "type": "string" + }, + "ImageName": { + "maxLength": 63, + "pattern": "^[a-zA-Z0-9]([-.]?[a-zA-Z0-9]){0,62}$", + "type": "string" + }, + "ImageVersionNumber": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "AppImageConfigName", + "ImageName" + ], + "type": "object" + }, + "CustomPosixUserConfig": { + "additionalProperties": false, + "properties": { + "Gid": { + "maximum": 4000000, + "minimum": 1001, + "type": "integer" + }, + "Uid": { + "maximum": 4000000, + "minimum": 10000, + "type": "integer" + } + }, + "required": [ + "Uid", + "Gid" + ], + "type": "object" + }, + "DefaultEbsStorageSettings": { + "additionalProperties": false, + "properties": { + "DefaultEbsVolumeSizeInGb": { + "$ref": "#/definitions/SpaceEbsVolumeSizeInGb" + }, + "MaximumEbsVolumeSizeInGb": { + "$ref": "#/definitions/SpaceEbsVolumeSizeInGb" + } + }, + "required": [ + "DefaultEbsVolumeSizeInGb", + "MaximumEbsVolumeSizeInGb" + ], + "type": "object" + }, + "DefaultSpaceStorageSettings": { + "additionalProperties": false, + "properties": { + "DefaultEbsStorageSettings": { + "$ref": "#/definitions/DefaultEbsStorageSettings" + } + }, + "type": "object" + }, + "EFSFileSystemConfig": { + "additionalProperties": false, + "properties": { + "FileSystemId": { + "maxLength": 21, + "minLength": 11, + "pattern": "^(fs-[0-9a-f]{8,})$", + "type": "string" + }, + "FileSystemPath": { + "maxLength": 256, + "minLength": 1, + "pattern": "^\\/\\S*$", + "type": "string" + } + }, + "required": [ + "FileSystemId" + ], + "type": "object" + }, + "JupyterLabAppSettings": { + "additionalProperties": false, + "properties": { + "CodeRepositories": { + "items": { + "$ref": "#/definitions/CodeRepository" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "CustomImages": { + "items": { + "$ref": "#/definitions/CustomImage" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + }, + "LifecycleConfigArns": { + "items": { + "$ref": "#/definitions/StudioLifecycleConfigArn" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "JupyterServerAppSettings": { + "additionalProperties": false, + "properties": { + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + } + }, + "type": "object" + }, + "KernelGatewayAppSettings": { + "additionalProperties": false, + "properties": { + "CustomImages": { + "items": { + "$ref": "#/definitions/CustomImage" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + } + }, + "type": "object" + }, + "RStudioServerProAppSettings": { + "additionalProperties": false, + "properties": { + "AccessStatus": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "UserGroup": { + "enum": [ + "R_STUDIO_ADMIN", + "R_STUDIO_USER" + ], + "type": "string" + } + }, + "type": "object" + }, + "ResourceSpec": { + "additionalProperties": false, + "properties": { + "InstanceType": { + "enum": [ + "system", + "ml.t3.micro", + "ml.t3.small", + "ml.t3.medium", + "ml.t3.large", + "ml.t3.xlarge", + "ml.t3.2xlarge", + "ml.m5.large", + "ml.m5.xlarge", + "ml.m5.2xlarge", + "ml.m5.4xlarge", + "ml.m5.8xlarge", + "ml.m5.12xlarge", + "ml.m5.16xlarge", + "ml.m5.24xlarge", + "ml.c5.large", + "ml.c5.xlarge", + "ml.c5.2xlarge", + "ml.c5.4xlarge", + "ml.c5.9xlarge", + "ml.c5.12xlarge", + "ml.c5.18xlarge", + "ml.c5.24xlarge", + "ml.p3.2xlarge", + "ml.p3.8xlarge", + "ml.p3.16xlarge", + "ml.g4dn.xlarge", + "ml.g4dn.2xlarge", + "ml.g4dn.4xlarge", + "ml.g4dn.8xlarge", + "ml.g4dn.12xlarge", + "ml.g4dn.16xlarge", + "ml.r5.large", + "ml.r5.xlarge", + "ml.r5.2xlarge", + "ml.r5.4xlarge", + "ml.r5.8xlarge", + "ml.r5.12xlarge", + "ml.r5.16xlarge", + "ml.r5.24xlarge", + "ml.p3dn.24xlarge", + "ml.m5d.large", + "ml.m5d.xlarge", + "ml.m5d.2xlarge", + "ml.m5d.4xlarge", + "ml.m5d.8xlarge", + "ml.m5d.12xlarge", + "ml.m5d.16xlarge", + "ml.m5d.24xlarge", + "ml.g5.xlarge", + "ml.g5.2xlarge", + "ml.g5.4xlarge", + "ml.g5.8xlarge", + "ml.g5.12xlarge", + "ml.g5.16xlarge", + "ml.g5.24xlarge", + "ml.g5.48xlarge", + "ml.p4d.24xlarge", + "ml.p4de.24xlarge", + "ml.geospatial.interactive", + "ml.trn1.2xlarge", + "ml.trn1.32xlarge", + "ml.trn1n.32xlarge" + ], + "type": "string" + }, + "SageMakerImageArn": { + "maxLength": 256, + "pattern": "^arn:aws(-[\\w]+)*:sagemaker:.+:[0-9]{12}:image/[a-z0-9]([-.]?[a-z0-9])*$", + "type": "string" + }, + "SageMakerImageVersionArn": { + "maxLength": 256, + "pattern": "^arn:aws(-[\\w]+)*:sagemaker:.+:[0-9]{12}:image-version/[a-z0-9]([-.]?[a-z0-9])*/[0-9]+$", + "type": "string" + } + }, + "type": "object" + }, + "SharingSettings": { + "additionalProperties": false, + "properties": { + "NotebookOutputOption": { + "enum": [ + "Allowed", + "Disabled" + ], + "type": "string" + }, + "S3KmsKeyId": { + "maxLength": 2048, + "pattern": ".*", + "type": "string" + }, + "S3OutputPath": { + "maxLength": 1024, + "pattern": "^(https|s3)://([^/]+)/?(.*)$", + "type": "string" + } + }, + "type": "object" + }, + "SpaceEbsVolumeSizeInGb": { + "maximum": 16384, + "minimum": 5, + "type": "integer" + }, + "StudioLifecycleConfigArn": { + "maxLength": 256, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:studio-lifecycle-config/.*", + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "UserSettings": { + "additionalProperties": false, + "properties": { + "CodeEditorAppSettings": { + "$ref": "#/definitions/CodeEditorAppSettings" + }, + "CustomFileSystemConfigs": { + "items": { + "$ref": "#/definitions/CustomFileSystemConfig" + }, + "maxItems": 2, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "CustomPosixUserConfig": { + "$ref": "#/definitions/CustomPosixUserConfig" + }, + "DefaultLandingUri": { + "maxLength": 1023, + "type": "string" + }, + "ExecutionRole": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "JupyterLabAppSettings": { + "$ref": "#/definitions/JupyterLabAppSettings" + }, + "JupyterServerAppSettings": { + "$ref": "#/definitions/JupyterServerAppSettings" + }, + "KernelGatewayAppSettings": { + "$ref": "#/definitions/KernelGatewayAppSettings" + }, + "RStudioServerProAppSettings": { + "$ref": "#/definitions/RStudioServerProAppSettings" + }, + "SecurityGroups": { + "items": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 5, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "SharingSettings": { + "$ref": "#/definitions/SharingSettings" + }, + "SpaceStorageSettings": { + "$ref": "#/definitions/DefaultSpaceStorageSettings" + }, + "StudioWebPortal": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + } + }, + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "sagemaker:CreateUserProfile", + "sagemaker:DescribeUserProfile", + "sagemaker:DescribeImage", + "sagemaker:DescribeImageVersion", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "sagemaker:DeleteUserProfile", + "sagemaker:DescribeUserProfile" + ] + }, + "list": { + "permissions": [ + "sagemaker:ListUserProfiles" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeUserProfile" + ] + }, + "update": { + "permissions": [ + "sagemaker:UpdateUserProfile", + "sagemaker:DescribeUserProfile", + "sagemaker:DescribeImage", + "sagemaker:DescribeImageVersion", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/UserProfileName", + "/properties/DomainId" + ], + "properties": { + "DomainId": { + "maxLength": 63, + "minLength": 1, + "type": "string" + }, + "SingleSignOnUserIdentifier": { + "pattern": "UserName", + "type": "string" + }, + "SingleSignOnUserValue": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "UserProfileArn": { + "maxLength": 256, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:user-profile/.*", + "type": "string" + }, + "UserProfileName": { + "maxLength": 63, + "minLength": 1, + "type": "string" + }, + "UserSettings": { + "$ref": "#/definitions/UserSettings", + "maxItems": 50, + "minItems": 0, + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/UserProfileArn" + ], + "required": [ + "DomainId", + "UserProfileName" + ], + "typeName": "AWS::SageMaker::UserProfile", + "writeOnlyProperties": [ + "/properties/Tags" + ] +} diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-securityhub-delegatedadmin.json b/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-securityhub-delegatedadmin.json deleted file mode 100644 index 12b73dd551..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-securityhub-delegatedadmin.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AdminAccountId" - ], - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AdminAccountId": { - "type": "string" - }, - "DelegatedAdminIdentifier": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "Status": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/DelegatedAdminIdentifier", - "/properties/Status" - ], - "required": [ - "AdminAccountId" - ], - "typeName": "AWS::SecurityHub::DelegatedAdmin" -} diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-securityhub-insight.json b/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-securityhub-insight.json deleted file mode 100644 index 3fc396909f..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-securityhub-insight.json +++ /dev/null @@ -1,844 +0,0 @@ -{ - "additionalProperties": false, - "definitions": { - "AwsSecurityFindingFilters": { - "additionalProperties": false, - "properties": { - "AwsAccountId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "AwsAccountName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "CompanyName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ComplianceAssociatedStandardsId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ComplianceSecurityControlId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ComplianceSecurityControlParametersName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ComplianceSecurityControlParametersValue": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ComplianceStatus": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "Confidence": { - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "type": "array", - "uniqueItems": true - }, - "CreatedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "Criticality": { - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "type": "array", - "uniqueItems": true - }, - "Description": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "FindingProviderFieldsConfidence": { - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "type": "array", - "uniqueItems": true - }, - "FindingProviderFieldsCriticality": { - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "type": "array", - "uniqueItems": true - }, - "FindingProviderFieldsRelatedFindingsId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "FindingProviderFieldsRelatedFindingsProductArn": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "FindingProviderFieldsSeverityLabel": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "FindingProviderFieldsSeverityOriginal": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "FindingProviderFieldsTypes": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "FirstObservedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "GeneratorId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "Id": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "LastObservedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "MalwareName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "MalwarePath": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "MalwareState": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "MalwareType": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkDestinationDomain": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkDestinationIpV4": { - "items": { - "$ref": "#/definitions/IpFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkDestinationIpV6": { - "items": { - "$ref": "#/definitions/IpFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkDestinationPort": { - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkDirection": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkProtocol": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkSourceDomain": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkSourceIpV4": { - "items": { - "$ref": "#/definitions/IpFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkSourceIpV6": { - "items": { - "$ref": "#/definitions/IpFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkSourceMac": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkSourcePort": { - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NoteText": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NoteUpdatedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NoteUpdatedBy": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ProcessLaunchedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ProcessName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ProcessParentPid": { - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ProcessPath": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ProcessPid": { - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ProcessTerminatedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ProductArn": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ProductFields": { - "items": { - "$ref": "#/definitions/MapFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ProductName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "RecommendationText": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "RecordState": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "Region": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "RelatedFindingsId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "RelatedFindingsProductArn": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceApplicationArn": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceApplicationName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceIamInstanceProfileArn": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceImageId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceIpV4Addresses": { - "items": { - "$ref": "#/definitions/IpFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceIpV6Addresses": { - "items": { - "$ref": "#/definitions/IpFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceKeyName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceLaunchedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceSubnetId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceType": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceVpcId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsIamAccessKeyCreatedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsIamAccessKeyPrincipalName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsIamAccessKeyStatus": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsIamUserUserName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsS3BucketOwnerId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsS3BucketOwnerName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceContainerImageId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceContainerImageName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceContainerLaunchedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceContainerName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceDetailsOther": { - "items": { - "$ref": "#/definitions/MapFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourcePartition": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceRegion": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceTags": { - "items": { - "$ref": "#/definitions/MapFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceType": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "Sample": { - "items": { - "$ref": "#/definitions/BooleanFilter" - }, - "type": "array", - "uniqueItems": true - }, - "SeverityLabel": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "SourceUrl": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ThreatIntelIndicatorCategory": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ThreatIntelIndicatorLastObservedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ThreatIntelIndicatorSource": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ThreatIntelIndicatorSourceUrl": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ThreatIntelIndicatorType": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ThreatIntelIndicatorValue": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "Title": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "Type": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "UpdatedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "UserDefinedFields": { - "items": { - "$ref": "#/definitions/MapFilter" - }, - "type": "array", - "uniqueItems": true - }, - "VerificationState": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "VulnerabilitiesExploitAvailable": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "VulnerabilitiesFixAvailable": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "WorkflowState": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "WorkflowStatus": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "BooleanFilter": { - "additionalProperties": false, - "properties": { - "Value": { - "type": "boolean" - } - }, - "required": [ - "Value" - ], - "type": "object" - }, - "DateFilter": { - "additionalProperties": false, - "properties": { - "DateRange": { - "$ref": "#/definitions/DateRange" - }, - "End": { - "type": "string" - }, - "Start": { - "type": "string" - } - }, - "type": "object" - }, - "DateRange": { - "additionalProperties": false, - "properties": { - "Unit": { - "type": "string" - }, - "Value": { - "type": "number" - } - }, - "required": [ - "Value", - "Unit" - ], - "type": "object" - }, - "IpFilter": { - "additionalProperties": false, - "properties": { - "Cidr": { - "type": "string" - } - }, - "type": "object" - }, - "MapFilter": { - "additionalProperties": false, - "properties": { - "Comparison": { - "type": "string" - }, - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Comparison", - "Value", - "Key" - ], - "type": "object" - }, - "NumberFilter": { - "additionalProperties": false, - "properties": { - "Eq": { - "type": "number" - }, - "Gte": { - "type": "number" - }, - "Lte": { - "type": "number" - } - }, - "type": "object" - }, - "StringFilter": { - "additionalProperties": false, - "properties": { - "Comparison": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Comparison", - "Value" - ], - "type": "object" - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Filters": { - "$ref": "#/definitions/AwsSecurityFindingFilters" - }, - "GroupByAttribute": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "InsightArn": { - "type": "string" - }, - "Name": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/InsightArn" - ], - "required": [ - "Filters", - "GroupByAttribute", - "Name" - ], - "typeName": "AWS::SecurityHub::Insight" -} diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-securityhub-productsubscription.json b/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-securityhub-productsubscription.json deleted file mode 100644 index 4001045463..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-securityhub-productsubscription.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ProductArn" - ], - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Id": { - "type": "string" - }, - "ProductArn": { - "type": "string" - }, - "ProductSubscriptionArn": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/ProductSubscriptionArn" - ], - "required": [ - "ProductArn" - ], - "typeName": "AWS::SecurityHub::ProductSubscription" -} 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 504a2e1d27..11e2c49c7b 100644 --- a/src/cfnlint/data/schemas/providers/ap_south_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/ap_south_1/__init__.py @@ -164,6 +164,7 @@ "AWS::IoTSiteWise::Portal", "AWS::Events::Archive", "AWS::MSK::Cluster", + "AWS::SecurityHub::DelegatedAdmin", "AWS::ControlTower::EnabledBaseline", "AWS::AppStream::AppBlockBuilder", "AWS::EC2::VPCEndpointConnectionNotification", @@ -343,6 +344,7 @@ "AWS::Glue::SchemaVersion", "AWS::SageMaker::Space", "AWS::IoT::PolicyPrincipalAttachment", + "AWS::IVS::PlaybackRestrictionPolicy", "AWS::FMS::NotificationChannel", "AWS::MSK::BatchScramSecret", "AWS::Connect::HoursOfOperation", @@ -374,6 +376,7 @@ "AWS::IAM::ServerCertificate", "AWS::CodeStarConnections::Connection", "AWS::IoT::SecurityProfile", + "AWS::GlobalAccelerator::CrossAccountAttachment", "AWS::Events::EventBus", "AWS::DocDB::EventSubscription", "AWS::SQS::QueueInlinePolicy", @@ -422,6 +425,7 @@ "AWS::Config::OrganizationConformancePack", "AWS::Connect::QuickConnect", "AWS::Logs::QueryDefinition", + "AWS::SecurityHub::ProductSubscription", "AWS::IAM::InstanceProfile", "AWS::IoT::BillingGroup", "AWS::AppStream::Application", @@ -441,6 +445,7 @@ "AWS::Cognito::UserPoolUICustomizationAttachment", "AWS::SageMaker::NotebookInstanceLifecycleConfig", "AWS::ImageBuilder::ContainerRecipe", + "AWS::CodeConnections::Connection", "AWS::EFS::AccessPoint", "AWS::Redshift::ClusterSecurityGroupIngress", "AWS::ServiceCatalogAppRegistry::AttributeGroupAssociation", @@ -470,6 +475,7 @@ "AWS::EC2::ClientVpnRoute", "AWS::ImageBuilder::Workflow", "AWS::ECS::TaskSet", + "AWS::SecurityLake::AwsLogSource", "AWS::AppSync::ApiKey", "AWS::CloudFormation::TypeActivation", "AWS::Location::Map", @@ -617,6 +623,7 @@ "AWS::EMR::InstanceGroupConfig", "AWS::MediaConnect::Flow", "AWS::StepFunctions::Activity", + "AWS::IVS::EncoderConfiguration", "AWS::Synthetics::Group", "AWS::Forecast::Dataset", "AWS::SageMaker::Project", @@ -629,6 +636,7 @@ "AWS::CodeBuild::SourceCredential", "AWS::EMR::InstanceFleetConfig", "AWS::EMR::Cluster", + "AWS::SecurityLake::DataLake", "AWS::CodePipeline::Webhook", "AWS::ApiGatewayV2::DomainName", "AWS::RDS::DBCluster", @@ -711,6 +719,7 @@ "AWS::ServiceCatalog::Portfolio", "AWS::WorkSpacesWeb::TrustStore", "AWS::IoT::Policy", + "AWS::APS::Scraper", "AWS::EC2::TransitGatewayRoute", "AWS::SSM::MaintenanceWindow", "AWS::LakeFormation::TagAssociation", @@ -731,6 +740,7 @@ "AWS::Connect::ContactFlow", "AWS::DevOpsGuru::LogAnomalyDetectionIntegration", "AWS::NetworkManager::Link", + "AWS::SecurityLake::Subscriber", "AWS::SageMaker::NotebookInstance", "AWS::IoTSiteWise::Dashboard", "AWS::Pinpoint::APNSVoipChannel", @@ -761,6 +771,7 @@ "AWS::AppSync::GraphQLApi", "AWS::GameLift::MatchmakingRuleSet", "AWS::EC2::EgressOnlyInternetGateway", + "AWS::SecurityHub::Insight", "AWS::Config::ConformancePack", "AWS::EC2::VPCCidrBlock", "AWS::APS::Workspace", @@ -831,6 +842,7 @@ "AWS::StepFunctions::StateMachine", "AWS::RDS::DBClusterParameterGroup", "AWS::WAF::XssMatchSet", + "AWS::IVS::StorageConfiguration", "AWS::EC2::VerifiedAccessTrustProvider", "AWS::AppMesh::VirtualRouter", "AWS::IoT::CertificateProvider", @@ -1077,11 +1089,9 @@ "aws-ram-resourceshare.json", "aws-memorydb-cluster.json", "aws-dms-replicationconfig.json", - "aws-dynamodb-table.json", "aws-amazonmq-configurationassociation.json", "aws-redshiftserverless-namespace.json", "aws-apprunner-observabilityconfiguration.json", - "aws-ec2-securitygroupegress.json", "aws-ec2-localgatewayroutetablevpcassociation.json", "aws-config-organizationconfigrule.json", "aws-glue-dataqualityruleset.json", @@ -1111,7 +1121,6 @@ "aws-apigatewayv2-integrationresponse.json", "aws-iotevents-input.json", "aws-ec2-networkacl.json", - "aws-lambda-eventsourcemapping.json", "aws-budgets-budgetsaction.json", "aws-logs-resourcepolicy.json", "aws-servicecatalog-launchnotificationconstraint.json", @@ -1132,7 +1141,6 @@ "aws-mediatailor-channel.json", "aws-lambda-url.json", "aws-mediatailor-channelpolicy.json", - "aws-gamelift-fleet.json", "aws-datasync-locationfsxwindows.json", "aws-gamelift-build.json", "aws-apigateway-requestvalidator.json", @@ -1215,6 +1223,7 @@ "aws-iotsitewise-portal.json", "aws-events-archive.json", "aws-msk-cluster.json", + "aws-securityhub-delegatedadmin.json", "aws-controltower-enabledbaseline.json", "aws-appstream-appblockbuilder.json", "aws-ec2-vpcendpointconnectionnotification.json", @@ -1245,6 +1254,7 @@ "aws-sagemaker-modelpackage.json", "aws-eventschemas-discoverer.json", "aws-networkmanager-connectpeer.json", + "aws-elasticache-usergroup.json", "aws-iot-thinggroup.json", "aws-logs-deliverydestination.json", "aws-imagebuilder-imagerecipe.json", @@ -1357,7 +1367,6 @@ "aws-devopsguru-resourcecollection.json", "aws-healthlake-fhirdatastore.json", "aws-wafv2-loggingconfiguration.json", - "aws-dynamodb-globaltable.json", "alexa-ask-skill.json", "aws-backup-backupplan.json", "aws-pinpoint-eventstream.json", @@ -1387,6 +1396,7 @@ "aws-glue-schemaversion.json", "aws-sagemaker-space.json", "aws-iot-policyprincipalattachment.json", + "aws-ivs-playbackrestrictionpolicy.json", "aws-fms-notificationchannel.json", "aws-msk-batchscramsecret.json", "aws-connect-hoursofoperation.json", @@ -1412,10 +1422,12 @@ "aws-location-routecalculator.json", "aws-servicecatalog-portfolioshare.json", "aws-apigateway-vpclink.json", + "aws-connect-integrationassociation.json", "aws-networkmanager-customergatewayassociation.json", "aws-iam-servercertificate.json", "aws-codestarconnections-connection.json", "aws-iot-securityprofile.json", + "aws-globalaccelerator-crossaccountattachment.json", "aws-events-eventbus.json", "aws-docdb-eventsubscription.json", "aws-sqs-queueinlinepolicy.json", @@ -1448,6 +1460,7 @@ "aws-ecs-clustercapacityproviderassociations.json", "aws-appconfig-configurationprofile.json", "aws-route53resolver-firewallrulegroup.json", + "aws-docdbelastic-cluster.json", "aws-msk-configuration.json", "aws-ec2-transitgateway.json", "aws-cognito-userpoolgroup.json", @@ -1462,6 +1475,7 @@ "aws-config-organizationconformancepack.json", "aws-connect-quickconnect.json", "aws-logs-querydefinition.json", + "aws-securityhub-productsubscription.json", "aws-iam-instanceprofile.json", "aws-iot-billinggroup.json", "aws-appstream-application.json", @@ -1481,6 +1495,7 @@ "aws-cognito-userpooluicustomizationattachment.json", "aws-sagemaker-notebookinstancelifecycleconfig.json", "aws-imagebuilder-containerrecipe.json", + "aws-codeconnections-connection.json", "aws-efs-accesspoint.json", "aws-redshift-clustersecuritygroupingress.json", "aws-servicecatalogappregistry-attributegroupassociation.json", @@ -1509,6 +1524,7 @@ "aws-ec2-clientvpnroute.json", "aws-imagebuilder-workflow.json", "aws-ecs-taskset.json", + "aws-securitylake-awslogsource.json", "aws-appsync-apikey.json", "aws-cloudformation-typeactivation.json", "aws-location-map.json", @@ -1651,6 +1667,7 @@ "aws-emr-instancegroupconfig.json", "aws-mediaconnect-flow.json", "aws-stepfunctions-activity.json", + "aws-ivs-encoderconfiguration.json", "aws-synthetics-group.json", "aws-forecast-dataset.json", "aws-sagemaker-project.json", @@ -1663,6 +1680,7 @@ "aws-codebuild-sourcecredential.json", "aws-emr-instancefleetconfig.json", "aws-emr-cluster.json", + "aws-securitylake-datalake.json", "aws-codepipeline-webhook.json", "aws-apigatewayv2-domainname.json", "aws-rds-dbcluster.json", @@ -1695,12 +1713,11 @@ "aws-datasync-locationefs.json", "aws-ec2-localgatewayroutetable.json", "aws-apigateway-resource.json", - "aws-sagemaker-appimageconfig.json", - "aws-verifiedpermissions-identitysource.json", "aws-macie-session.json", "aws-elasticloadbalancingv2-targetgroup.json", "aws-applicationautoscaling-scalingpolicy.json", "aws-pipes-pipe.json", + "aws-iotsitewise-gateway.json", "aws-emr-studiosessionmapping.json", "aws-ivs-playbackkeypair.json", "aws-cloudformation-macro.json", @@ -1709,6 +1726,7 @@ "aws-lambda-layerversionpermission.json", "aws-secretsmanager-secret.json", "aws-route53resolver-resolverconfig.json", + "aws-elasticache-user.json", "aws-sagemaker-image.json", "aws-logs-subscriptionfilter.json", "aws-codedeploy-application.json", @@ -1740,6 +1758,7 @@ "aws-servicecatalog-portfolio.json", "aws-workspacesweb-truststore.json", "aws-iot-policy.json", + "aws-aps-scraper.json", "aws-ec2-transitgatewayroute.json", "aws-ssm-maintenancewindow.json", "aws-lakeformation-tagassociation.json", @@ -1760,6 +1779,7 @@ "aws-connect-contactflow.json", "aws-devopsguru-loganomalydetectionintegration.json", "aws-networkmanager-link.json", + "aws-securitylake-subscriber.json", "aws-sagemaker-notebookinstance.json", "aws-iotsitewise-dashboard.json", "aws-pinpoint-apnsvoipchannel.json", @@ -1790,6 +1810,7 @@ "aws-appsync-graphqlapi.json", "aws-gamelift-matchmakingruleset.json", "aws-ec2-egressonlyinternetgateway.json", + "aws-securityhub-insight.json", "aws-config-conformancepack.json", "aws-ec2-vpccidrblock.json", "aws-aps-workspace.json", @@ -1856,6 +1877,7 @@ "aws-stepfunctions-statemachine.json", "aws-rds-dbclusterparametergroup.json", "aws-waf-xssmatchset.json", + "aws-ivs-storageconfiguration.json", "aws-ec2-verifiedaccesstrustprovider.json", "aws-appmesh-virtualrouter.json", "aws-iot-certificateprovider.json", @@ -1885,6 +1907,7 @@ "aws-sagemaker-userprofile.json", "aws-personalize-dataset.json", "aws-ec2-prefixlist.json", + "aws-ec2-instance.json", "aws-networkmanager-device.json", "aws-ec2-subnetcidrblock.json", "aws-mediapackage-asset.json", diff --git a/src/cfnlint/data/schemas/providers/ap_south_1/aws-connect-integrationassociation.json b/src/cfnlint/data/schemas/providers/ap_south_1/aws-connect-integrationassociation.json deleted file mode 100644 index cefb6e0881..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_south_1/aws-connect-integrationassociation.json +++ /dev/null @@ -1,142 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/InstanceId", - "/properties/IntegrationArn", - "/properties/IntegrationType" - ], - "definitions": { - "InstanceId": { - "maxLength": 100, - "minLength": 1, - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$", - "type": "string" - }, - "IntegrationArn": { - "maxLength": 140, - "minLength": 1, - "type": "string" - }, - "IntegrationAssociationId": { - "pattern": "^[a-zA-Z]{1}(?:-?[a-zA-Z0-9])*$", - "type": "string" - }, - "IntegrationType": { - "enum": [ - "LEX_BOT", - "LAMBDA_FUNCTION", - "APPLICATION" - ], - "type": "string" - } - }, - "handlers": { - "create": { - "permissions": [ - "connect:DescribeInstance", - "ds:DescribeDirectories", - "app-integrations:CreateEventIntegrationAssociation", - "mobiletargeting:GetApp", - "cases:GetDomain", - "wisdom:GetAssistant", - "wisdom:GetKnowledgeBase", - "wisdom:TagResource", - "voiceid:DescribeDomain", - "events:PutTargets", - "events:PutRule", - "connect:AssociateBot", - "connect:AssociateLambdaFunction", - "connect:CreateIntegrationAssociation", - "connect:ListBots", - "connect:ListLambdaFunctions", - "connect:ListIntegrationAssociations", - "lambda:addPermission", - "lex:GetBot", - "lex:DescribeBotAlias", - "lex:CreateResourcePolicy", - "lex:UpdateResourcePolicy", - "lex:CreateResourcePolicyStatement", - "lambda:AddPermission", - "app-integrations:GetApplication", - "iam:AttachRolePolicy", - "iam:CreateServiceLinkedRole", - "iam:GetRolePolicy", - "iam:PutRolePolicy" - ] - }, - "delete": { - "permissions": [ - "connect:DescribeInstance", - "ds:DescribeDirectories", - "app-integrations:DeleteEventIntegrationAssociation", - "events:ListTargetsByRule", - "events:RemoveTargets", - "events:DeleteRule", - "connect:DisassociateBot", - "connect:DisassociateLambdaFunction", - "connect:DeleteIntegrationAssociation", - "connect:ListBots", - "connect:ListLambdaFunctions", - "connect:ListIntegrationAssociations", - "lex:DeleteResourcePolicy", - "lex:DeleteResourcePolicyStatement", - "lambda:RemovePermission", - "iam:GetRolePolicy", - "iam:DeleteRolePolicy", - "iam:PutRolePolicy" - ] - }, - "list": { - "permissions": [ - "connect:ListBots", - "connect:ListLambdaFunctions", - "connect:ListIntegrationAssociations" - ] - }, - "read": { - "permissions": [ - "connect:ListBots", - "connect:ListLambdaFunctions", - "connect:ListIntegrationAssociations" - ] - }, - "update": { - "permissions": [] - } - }, - "primaryIdentifier": [ - "/properties/InstanceId", - "/properties/IntegrationType", - "/properties/IntegrationArn" - ], - "properties": { - "InstanceId": { - "$ref": "#/definitions/InstanceId" - }, - "IntegrationArn": { - "$ref": "#/definitions/IntegrationArn" - }, - "IntegrationAssociationId": { - "$ref": "#/definitions/IntegrationAssociationId" - }, - "IntegrationType": { - "$ref": "#/definitions/IntegrationType" - } - }, - "readOnlyProperties": [ - "/properties/IntegrationAssociationId" - ], - "required": [ - "InstanceId", - "IntegrationType", - "IntegrationArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::Connect::IntegrationAssociation" -} diff --git a/src/cfnlint/data/schemas/providers/ap_south_1/aws-docdbelastic-cluster.json b/src/cfnlint/data/schemas/providers/ap_south_1/aws-docdbelastic-cluster.json deleted file mode 100644 index 00ebbcd43c..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_south_1/aws-docdbelastic-cluster.json +++ /dev/null @@ -1,200 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AdminUserName", - "/properties/AuthType", - "/properties/ClusterName", - "/properties/KmsKeyId" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "docdb-elastic:CreateCluster", - "docdb-elastic:TagResource", - "docdb-elastic:GetCluster", - "docdb-elastic:ListTagsForResource", - "ec2:CreateVpcEndpoint", - "ec2:DescribeVpcEndpoints", - "ec2:DeleteVpcEndpoints", - "ec2:ModifyVpcEndpoint", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:DescribeVpcAttribute", - "ec2:DescribeVpcs", - "ec2:DescribeAvailabilityZones", - "secretsmanager:ListSecrets", - "secretsmanager:ListSecretVersionIds", - "secretsmanager:DescribeSecret", - "secretsmanager:GetSecretValue", - "secretsmanager:GetResourcePolicy", - "kms:DescribeKey", - "kms:CreateGrant", - "kms:GenerateDataKey", - "kms:Decrypt", - "iam:CreateServiceLinkedRole" - ] - }, - "delete": { - "permissions": [ - "docdb-elastic:DeleteCluster", - "docdb-elastic:GetCluster", - "ec2:DescribeVpcEndpoints", - "ec2:DeleteVpcEndpoints", - "ec2:ModifyVpcEndpoint", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:DescribeVpcAttribute", - "ec2:DescribeVpcs", - "ec2:DescribeAvailabilityZones" - ] - }, - "list": { - "permissions": [ - "docdb-elastic:ListClusters" - ] - }, - "read": { - "permissions": [ - "docdb-elastic:GetCluster", - "docdb-elastic:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "docdb-elastic:UpdateCluster", - "docdb-elastic:TagResource", - "docdb-elastic:UntagResource", - "docdb-elastic:GetCluster", - "docdb-elastic:ListTagsForResource", - "ec2:CreateVpcEndpoint", - "ec2:DescribeVpcEndpoints", - "ec2:DeleteVpcEndpoints", - "ec2:ModifyVpcEndpoint", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:DescribeVpcAttribute", - "ec2:DescribeVpcs", - "ec2:DescribeAvailabilityZones", - "secretsmanager:ListSecrets", - "secretsmanager:ListSecretVersionIds", - "secretsmanager:DescribeSecret", - "secretsmanager:GetSecretValue", - "secretsmanager:GetResourcePolicy", - "kms:DescribeKey", - "kms:CreateGrant", - "kms:GenerateDataKey", - "kms:Decrypt" - ] - } - }, - "primaryIdentifier": [ - "/properties/ClusterArn" - ], - "properties": { - "AdminUserName": { - "type": "string" - }, - "AdminUserPassword": { - "type": "string" - }, - "AuthType": { - "type": "string" - }, - "ClusterArn": { - "type": "string" - }, - "ClusterEndpoint": { - "type": "string" - }, - "ClusterName": { - "maxLength": 50, - "minLength": 1, - "pattern": "[a-zA-z][a-zA-Z0-9]*(-[a-zA-Z0-9]+)*", - "type": "string" - }, - "KmsKeyId": { - "type": "string" - }, - "PreferredMaintenanceWindow": { - "type": "string" - }, - "ShardCapacity": { - "type": "integer" - }, - "ShardCount": { - "type": "integer" - }, - "SubnetIds": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "minItems": 0, - "type": "array", - "uniqueItems": true - }, - "VpcSecurityGroupIds": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/ClusterArn", - "/properties/ClusterEndpoint" - ], - "required": [ - "ClusterName", - "AdminUserName", - "ShardCapacity", - "ShardCount", - "AuthType" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-docdbelastic/", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::DocDBElastic::Cluster", - "writeOnlyProperties": [ - "/properties/AdminUserPassword" - ] -} diff --git a/src/cfnlint/data/schemas/providers/ap_south_1/aws-dynamodb-globaltable.json b/src/cfnlint/data/schemas/providers/ap_south_1/aws-dynamodb-globaltable.json new file mode 100644 index 0000000000..748ce4bf8f --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_south_1/aws-dynamodb-globaltable.json @@ -0,0 +1,673 @@ +{ + "additionalIdentifiers": [ + [ + "/properties/Arn" + ], + [ + "/properties/StreamArn" + ] + ], + "additionalProperties": false, + "allOf": [ + { + "if": { + "required": [ + "LocalSecondaryIndexes" + ], + "type": "object" + }, + "then": { + "properties": { + "AttributeDefinitions": { + "minItems": 2 + }, + "KeySchema": { + "minItems": 2 + } + }, + "type": "object" + } + } + ], + "createOnlyProperties": [ + "/properties/LocalSecondaryIndexes", + "/properties/TableName", + "/properties/KeySchema" + ], + "definitions": { + "AttributeDefinition": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "AttributeType": { + "type": "string" + } + }, + "required": [ + "AttributeName", + "AttributeType" + ], + "type": "object" + }, + "CapacityAutoScalingSettings": { + "additionalProperties": false, + "properties": { + "MaxCapacity": { + "minimum": 1, + "type": "integer" + }, + "MinCapacity": { + "minimum": 1, + "type": "integer" + }, + "SeedCapacity": { + "minimum": 1, + "type": "integer" + }, + "TargetTrackingScalingPolicyConfiguration": { + "$ref": "#/definitions/TargetTrackingScalingPolicyConfiguration" + } + }, + "required": [ + "MinCapacity", + "MaxCapacity", + "TargetTrackingScalingPolicyConfiguration" + ], + "type": "object" + }, + "ContributorInsightsSpecification": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "GlobalSecondaryIndex": { + "additionalProperties": false, + "properties": { + "IndexName": { + "maxLength": 255, + "minLength": 3, + "type": "string" + }, + "KeySchema": { + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 + }, + "Projection": { + "$ref": "#/definitions/Projection" + }, + "WriteProvisionedThroughputSettings": { + "$ref": "#/definitions/WriteProvisionedThroughputSettings" + } + }, + "required": [ + "IndexName", + "Projection", + "KeySchema" + ], + "type": "object" + }, + "KeySchema": { + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "KeyType": { + "enum": [ + "HASH", + "RANGE" + ], + "type": "string" + } + }, + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" + }, + "prefixItems": [ + { + "additionalProperties": false, + "properties": { + "KeyType": { + "const": "HASH", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + }, + { + "properties": { + "KeyType": { + "const": "RANGE", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + } + ], + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] + }, + "KinesisStreamSpecification": { + "additionalProperties": false, + "properties": { + "ApproximateCreationDateTimePrecision": { + "enum": [ + "MICROSECOND", + "MILLISECOND" + ], + "type": "string" + }, + "StreamArn": { + "type": "string" + } + }, + "required": [ + "StreamArn" + ], + "type": "object" + }, + "LocalSecondaryIndex": { + "additionalProperties": false, + "properties": { + "IndexName": { + "maxLength": 255, + "minLength": 3, + "type": "string" + }, + "KeySchema": { + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 2 + }, + "Projection": { + "$ref": "#/definitions/Projection" + } + }, + "required": [ + "IndexName", + "Projection", + "KeySchema" + ], + "type": "object" + }, + "PointInTimeRecoverySpecification": { + "additionalProperties": false, + "properties": { + "PointInTimeRecoveryEnabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "Projection": { + "additionalProperties": false, + "properties": { + "NonKeyAttributes": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "ProjectionType": { + "type": "string" + } + }, + "type": "object" + }, + "ReadProvisionedThroughputSettings": { + "additionalProperties": false, + "properties": { + "ReadCapacityAutoScalingSettings": { + "$ref": "#/definitions/CapacityAutoScalingSettings" + }, + "ReadCapacityUnits": { + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "ReplicaGlobalSecondaryIndexSpecification": { + "additionalProperties": false, + "properties": { + "ContributorInsightsSpecification": { + "$ref": "#/definitions/ContributorInsightsSpecification" + }, + "IndexName": { + "maxLength": 255, + "minLength": 3, + "type": "string" + }, + "ReadProvisionedThroughputSettings": { + "$ref": "#/definitions/ReadProvisionedThroughputSettings" + } + }, + "required": [ + "IndexName" + ], + "type": "object" + }, + "ReplicaSSESpecification": { + "additionalProperties": false, + "properties": { + "KMSMasterKeyId": { + "type": "string" + } + }, + "required": [ + "KMSMasterKeyId" + ], + "type": "object" + }, + "ReplicaSpecification": { + "additionalProperties": false, + "properties": { + "ContributorInsightsSpecification": { + "$ref": "#/definitions/ContributorInsightsSpecification" + }, + "DeletionProtectionEnabled": { + "type": "boolean" + }, + "GlobalSecondaryIndexes": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ReplicaGlobalSecondaryIndexSpecification" + }, + "type": "array", + "uniqueItems": true + }, + "KinesisStreamSpecification": { + "$ref": "#/definitions/KinesisStreamSpecification" + }, + "PointInTimeRecoverySpecification": { + "$ref": "#/definitions/PointInTimeRecoverySpecification" + }, + "ReadProvisionedThroughputSettings": { + "$ref": "#/definitions/ReadProvisionedThroughputSettings" + }, + "Region": { + "type": "string" + }, + "ReplicaStreamSpecification": { + "$ref": "#/definitions/ReplicaStreamSpecification" + }, + "ResourcePolicy": { + "$ref": "#/definitions/ResourcePolicy" + }, + "SSESpecification": { + "$ref": "#/definitions/ReplicaSSESpecification" + }, + "TableClass": { + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "Region" + ], + "type": "object" + }, + "ReplicaStreamSpecification": { + "additionalProperties": false, + "properties": { + "ResourcePolicy": { + "$ref": "#/definitions/ResourcePolicy" + } + }, + "required": [ + "ResourcePolicy" + ], + "type": "object" + }, + "ResourcePolicy": { + "additionalProperties": false, + "properties": { + "PolicyDocument": { + "type": "object" + } + }, + "required": [ + "PolicyDocument" + ], + "type": "object" + }, + "SSESpecification": { + "additionalProperties": false, + "properties": { + "SSEEnabled": { + "type": "boolean" + }, + "SSEType": { + "type": "string" + } + }, + "required": [ + "SSEEnabled" + ], + "type": "object" + }, + "StreamSpecification": { + "additionalProperties": false, + "properties": { + "StreamViewType": { + "type": "string" + } + }, + "required": [ + "StreamViewType" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TargetTrackingScalingPolicyConfiguration": { + "additionalProperties": false, + "properties": { + "DisableScaleIn": { + "type": "boolean" + }, + "ScaleInCooldown": { + "minimum": 0, + "type": "integer" + }, + "ScaleOutCooldown": { + "minimum": 0, + "type": "integer" + }, + "TargetValue": { + "format": "double", + "type": "number" + } + }, + "required": [ + "TargetValue" + ], + "type": "object" + }, + "TimeToLiveSpecification": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "WriteProvisionedThroughputSettings": { + "additionalProperties": false, + "properties": { + "WriteCapacityAutoScalingSettings": { + "$ref": "#/definitions/CapacityAutoScalingSettings" + } + }, + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "dynamodb:CreateTable", + "dynamodb:CreateTableReplica", + "dynamodb:Describe*", + "dynamodb:UpdateTimeToLive", + "dynamodb:UpdateContributorInsights", + "dynamodb:UpdateContinuousBackups", + "dynamodb:ListTagsOfResource", + "dynamodb:Query", + "dynamodb:Scan", + "dynamodb:UpdateItem", + "dynamodb:PutItem", + "dynamodb:GetItem", + "dynamodb:DeleteItem", + "dynamodb:BatchWriteItem", + "dynamodb:TagResource", + "dynamodb:EnableKinesisStreamingDestination", + "dynamodb:DisableKinesisStreamingDestination", + "dynamodb:UpdateTableReplicaAutoScaling", + "dynamodb:TagResource", + "dynamodb:GetResourcePolicy", + "dynamodb:PutResourcePolicy", + "application-autoscaling:DeleteScalingPolicy", + "application-autoscaling:DeleteScheduledAction", + "application-autoscaling:DeregisterScalableTarget", + "application-autoscaling:Describe*", + "application-autoscaling:PutScalingPolicy", + "application-autoscaling:PutScheduledAction", + "application-autoscaling:RegisterScalableTarget", + "kinesis:ListStreams", + "kinesis:DescribeStream", + "kinesis:PutRecords", + "kms:CreateGrant", + "kms:DescribeKey", + "kms:ListAliases", + "kms:Decrypt", + "kms:RevokeGrant", + "cloudwatch:PutMetricData", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "dynamodb:Describe*", + "dynamodb:DeleteTable", + "application-autoscaling:DeleteScalingPolicy", + "application-autoscaling:DeleteScheduledAction", + "application-autoscaling:DeregisterScalableTarget", + "application-autoscaling:Describe*", + "application-autoscaling:PutScalingPolicy", + "application-autoscaling:PutScheduledAction", + "application-autoscaling:RegisterScalableTarget" + ] + }, + "list": { + "permissions": [ + "dynamodb:ListTables", + "cloudwatch:PutMetricData" + ] + }, + "read": { + "permissions": [ + "dynamodb:Describe*", + "dynamodb:GetResourcePolicy", + "application-autoscaling:Describe*", + "cloudwatch:PutMetricData", + "dynamodb:ListTagsOfResource", + "kms:DescribeKey" + ] + }, + "update": { + "permissions": [ + "dynamodb:Describe*", + "dynamodb:CreateTableReplica", + "dynamodb:UpdateTable", + "dynamodb:UpdateTimeToLive", + "dynamodb:UpdateContinuousBackups", + "dynamodb:UpdateContributorInsights", + "dynamodb:ListTagsOfResource", + "dynamodb:Query", + "dynamodb:Scan", + "dynamodb:UpdateItem", + "dynamodb:PutItem", + "dynamodb:GetItem", + "dynamodb:DeleteItem", + "dynamodb:BatchWriteItem", + "dynamodb:DeleteTable", + "dynamodb:DeleteTableReplica", + "dynamodb:UpdateItem", + "dynamodb:TagResource", + "dynamodb:UntagResource", + "dynamodb:EnableKinesisStreamingDestination", + "dynamodb:DisableKinesisStreamingDestination", + "dynamodb:UpdateTableReplicaAutoScaling", + "dynamodb:UpdateKinesisStreamingDestination", + "dynamodb:GetResourcePolicy", + "dynamodb:PutResourcePolicy", + "dynamodb:DeleteResourcePolicy", + "application-autoscaling:DeleteScalingPolicy", + "application-autoscaling:DeleteScheduledAction", + "application-autoscaling:DeregisterScalableTarget", + "application-autoscaling:Describe*", + "application-autoscaling:PutScalingPolicy", + "application-autoscaling:PutScheduledAction", + "application-autoscaling:RegisterScalableTarget", + "kinesis:ListStreams", + "kinesis:DescribeStream", + "kinesis:PutRecords", + "kms:CreateGrant", + "kms:DescribeKey", + "kms:ListAliases", + "kms:RevokeGrant", + "cloudwatch:PutMetricData" + ], + "timeoutInMinutes": 1200 + } + }, + "primaryIdentifier": [ + "/properties/TableName" + ], + "properties": { + "Arn": { + "type": "string" + }, + "AttributeDefinitions": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AttributeDefinition" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] + }, + "BillingMode": { + "type": "string" + }, + "GlobalSecondaryIndexes": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/GlobalSecondaryIndex" + }, + "type": "array", + "uniqueItems": true + }, + "KeySchema": { + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 + }, + "LocalSecondaryIndexes": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LocalSecondaryIndex" + }, + "type": "array", + "uniqueItems": true + }, + "Replicas": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ReplicaSpecification" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "SSESpecification": { + "$ref": "#/definitions/SSESpecification" + }, + "StreamArn": { + "type": "string" + }, + "StreamSpecification": { + "$ref": "#/definitions/StreamSpecification" + }, + "TableId": { + "type": "string" + }, + "TableName": { + "type": "string" + }, + "TimeToLiveSpecification": { + "$ref": "#/definitions/TimeToLiveSpecification" + }, + "WriteProvisionedThroughputSettings": { + "$ref": "#/definitions/WriteProvisionedThroughputSettings" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/StreamArn", + "/properties/TableId" + ], + "required": [ + "KeySchema", + "AttributeDefinitions", + "Replicas" + ], + "typeName": "AWS::DynamoDB::GlobalTable", + "writeOnlyProperties": [ + "/properties/Replicas/*/ReadProvisionedThroughputSettings/ReadCapacityAutoScalingSettings/SeedCapacity", + "/properties/Replicas/*/GlobalSecondaryIndexes/*/ReadProvisionedThroughputSettings/ReadCapacityAutoScalingSettings/SeedCapacity", + "/properties/WriteProvisionedThroughputSettings/WriteCapacityAutoScalingSettings/SeedCapacity", + "/properties/GlobalSecondaryIndexes/*/WriteProvisionedThroughputSettings/WriteCapacityAutoScalingSettings/SeedCapacity" + ] +} diff --git a/src/cfnlint/data/schemas/providers/ap_south_1/aws-dynamodb-table.json b/src/cfnlint/data/schemas/providers/ap_south_1/aws-dynamodb-table.json new file mode 100644 index 0000000000..55c218dadf --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_south_1/aws-dynamodb-table.json @@ -0,0 +1,625 @@ +{ + "additionalProperties": false, + "allOf": [ + { + "if": { + "required": [ + "LocalSecondaryIndexes" + ], + "type": "object" + }, + "then": { + "properties": { + "AttributeDefinitions": { + "minItems": 2 + }, + "KeySchema": { + "minItems": 2 + } + }, + "type": "object" + } + } + ], + "cfnLint": [ + "AWS::DynamoDB::Table/Properties" + ], + "createOnlyProperties": [ + "/properties/TableName", + "/properties/ImportSourceSpecification" + ], + "definitions": { + "AttributeDefinition": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "type": "string" + }, + "AttributeType": { + "enum": [ + "S", + "N", + "B" + ], + "type": "string" + } + }, + "required": [ + "AttributeName", + "AttributeType" + ], + "type": "object" + }, + "ContributorInsightsSpecification": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "Csv": { + "additionalProperties": false, + "properties": { + "Delimiter": { + "type": "string" + }, + "HeaderList": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "DeprecatedHashKeyElement": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "type": "string" + }, + "AttributeType": { + "type": "string" + } + }, + "required": [ + "AttributeType", + "AttributeName" + ], + "type": "object" + }, + "DeprecatedKeySchema": { + "additionalProperties": false, + "properties": { + "HashKeyElement": { + "$ref": "#/definitions/DeprecatedHashKeyElement" + } + }, + "required": [ + "HashKeyElement" + ], + "type": "object" + }, + "GlobalSecondaryIndex": { + "additionalProperties": false, + "properties": { + "ContributorInsightsSpecification": { + "$ref": "#/definitions/ContributorInsightsSpecification" + }, + "IndexName": { + "type": "string" + }, + "KeySchema": { + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 + }, + "Projection": { + "$ref": "#/definitions/Projection" + }, + "ProvisionedThroughput": { + "$ref": "#/definitions/ProvisionedThroughput" + } + }, + "required": [ + "IndexName", + "Projection", + "KeySchema" + ], + "type": "object" + }, + "ImportSourceSpecification": { + "additionalProperties": false, + "properties": { + "InputCompressionType": { + "type": "string" + }, + "InputFormat": { + "type": "string" + }, + "InputFormatOptions": { + "$ref": "#/definitions/InputFormatOptions" + }, + "S3BucketSource": { + "$ref": "#/definitions/S3BucketSource" + } + }, + "required": [ + "S3BucketSource", + "InputFormat" + ], + "type": "object" + }, + "InputFormatOptions": { + "additionalProperties": false, + "properties": { + "Csv": { + "$ref": "#/definitions/Csv" + } + }, + "type": "object" + }, + "KeySchema": { + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "type": "string" + }, + "KeyType": { + "enum": [ + "HASH", + "RANGE" + ], + "type": "string" + } + }, + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" + }, + "prefixItems": [ + { + "properties": { + "KeyType": { + "const": "HASH", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + }, + { + "properties": { + "KeyType": { + "const": "RANGE", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + } + ], + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] + }, + "KinesisStreamSpecification": { + "additionalProperties": false, + "properties": { + "ApproximateCreationDateTimePrecision": { + "enum": [ + "MICROSECOND", + "MILLISECOND" + ], + "type": "string" + }, + "StreamArn": { + "type": "string" + } + }, + "required": [ + "StreamArn" + ], + "type": "object" + }, + "LocalSecondaryIndex": { + "additionalProperties": false, + "properties": { + "IndexName": { + "type": "string" + }, + "KeySchema": { + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 2 + }, + "Projection": { + "$ref": "#/definitions/Projection" + } + }, + "required": [ + "IndexName", + "Projection", + "KeySchema" + ], + "type": "object" + }, + "PointInTimeRecoverySpecification": { + "additionalProperties": false, + "properties": { + "PointInTimeRecoveryEnabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "Projection": { + "additionalProperties": false, + "properties": { + "NonKeyAttributes": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "ProjectionType": { + "enum": [ + "ALL", + "KEYS_ONLY", + "INCLUDE" + ], + "type": "string" + } + }, + "type": "object" + }, + "ProvisionedThroughput": { + "additionalProperties": false, + "properties": { + "ReadCapacityUnits": { + "type": "integer" + }, + "WriteCapacityUnits": { + "type": "integer" + } + }, + "required": [ + "WriteCapacityUnits", + "ReadCapacityUnits" + ], + "type": "object" + }, + "ResourcePolicy": { + "additionalProperties": false, + "properties": { + "PolicyDocument": { + "type": "object" + } + }, + "required": [ + "PolicyDocument" + ], + "type": "object" + }, + "S3BucketSource": { + "additionalProperties": false, + "properties": { + "S3Bucket": { + "type": "string" + }, + "S3BucketOwner": { + "type": "string" + }, + "S3KeyPrefix": { + "type": "string" + } + }, + "required": [ + "S3Bucket" + ], + "type": "object" + }, + "SSESpecification": { + "additionalProperties": false, + "cfnLint": [ + "AWS::DynamoDB::Table/Properties/SSESpecification" + ], + "properties": { + "KMSMasterKeyId": { + "type": "string" + }, + "SSEEnabled": { + "type": "boolean" + }, + "SSEType": { + "type": "string" + } + }, + "required": [ + "SSEEnabled" + ], + "type": "object" + }, + "StreamSpecification": { + "additionalProperties": false, + "properties": { + "ResourcePolicy": { + "$ref": "#/definitions/ResourcePolicy" + }, + "StreamViewType": { + "enum": [ + "NEW_IMAGE", + "OLD_IMAGE", + "NEW_AND_OLD_IMAGES", + "KEYS_ONLY" + ], + "type": "string" + } + }, + "required": [ + "StreamViewType" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TimeToLiveSpecification": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "dynamodb:CreateTable", + "dynamodb:DescribeImport", + "dynamodb:DescribeTable", + "dynamodb:DescribeTimeToLive", + "dynamodb:UpdateTimeToLive", + "dynamodb:UpdateContributorInsights", + "dynamodb:UpdateContinuousBackups", + "dynamodb:DescribeContinuousBackups", + "dynamodb:DescribeContributorInsights", + "dynamodb:EnableKinesisStreamingDestination", + "dynamodb:DisableKinesisStreamingDestination", + "dynamodb:DescribeKinesisStreamingDestination", + "dynamodb:ImportTable", + "dynamodb:ListTagsOfResource", + "dynamodb:TagResource", + "dynamodb:UpdateTable", + "dynamodb:GetResourcePolicy", + "dynamodb:PutResourcePolicy", + "kinesis:DescribeStream", + "kinesis:PutRecords", + "iam:CreateServiceLinkedRole", + "kms:CreateGrant", + "kms:Decrypt", + "kms:DescribeKey", + "kms:ListAliases", + "kms:Encrypt", + "kms:RevokeGrant", + "logs:CreateLogGroup", + "logs:CreateLogStream", + "logs:DescribeLogGroups", + "logs:DescribeLogStreams", + "logs:PutLogEvents", + "logs:PutRetentionPolicy", + "s3:GetObject", + "s3:GetObjectMetadata", + "s3:ListBucket" + ], + "timeoutInMinutes": 720 + }, + "delete": { + "permissions": [ + "dynamodb:DeleteTable", + "dynamodb:DescribeTable" + ], + "timeoutInMinutes": 720 + }, + "list": { + "permissions": [ + "dynamodb:ListTables" + ] + }, + "read": { + "permissions": [ + "dynamodb:DescribeTable", + "dynamodb:DescribeContinuousBackups", + "dynamodb:DescribeContributorInsights", + "dynamodb:DescribeKinesisStreamingDestination", + "dynamodb:ListTagsOfResource", + "dynamodb:GetResourcePolicy" + ] + }, + "update": { + "permissions": [ + "dynamodb:UpdateTable", + "dynamodb:DescribeTable", + "dynamodb:DescribeTimeToLive", + "dynamodb:UpdateTimeToLive", + "dynamodb:UpdateContinuousBackups", + "dynamodb:UpdateContributorInsights", + "dynamodb:UpdateKinesisStreamingDestination", + "dynamodb:DescribeContinuousBackups", + "dynamodb:DescribeKinesisStreamingDestination", + "dynamodb:ListTagsOfResource", + "dynamodb:TagResource", + "dynamodb:UntagResource", + "dynamodb:DescribeContributorInsights", + "dynamodb:EnableKinesisStreamingDestination", + "dynamodb:DisableKinesisStreamingDestination", + "dynamodb:GetResourcePolicy", + "dynamodb:PutResourcePolicy", + "dynamodb:DeleteResourcePolicy", + "kinesis:DescribeStream", + "kinesis:PutRecords", + "iam:CreateServiceLinkedRole", + "kms:CreateGrant", + "kms:DescribeKey", + "kms:ListAliases", + "kms:RevokeGrant" + ], + "timeoutInMinutes": 720 + } + }, + "primaryIdentifier": [ + "/properties/TableName" + ], + "properties": { + "Arn": { + "type": "string" + }, + "AttributeDefinitions": { + "items": { + "$ref": "#/definitions/AttributeDefinition" + }, + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] + }, + "BillingMode": { + "enum": [ + "PROVISIONED", + "PAY_PER_REQUEST" + ], + "type": "string" + }, + "ContributorInsightsSpecification": { + "$ref": "#/definitions/ContributorInsightsSpecification" + }, + "DeletionProtectionEnabled": { + "type": "boolean" + }, + "GlobalSecondaryIndexes": { + "items": { + "$ref": "#/definitions/GlobalSecondaryIndex" + }, + "type": "array", + "uniqueItems": false + }, + "ImportSourceSpecification": { + "$ref": "#/definitions/ImportSourceSpecification" + }, + "KeySchema": { + "oneOf": [ + { + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 + }, + { + "type": "object" + } + ] + }, + "KinesisStreamSpecification": { + "$ref": "#/definitions/KinesisStreamSpecification" + }, + "LocalSecondaryIndexes": { + "items": { + "$ref": "#/definitions/LocalSecondaryIndex" + }, + "type": "array", + "uniqueItems": false + }, + "PointInTimeRecoverySpecification": { + "$ref": "#/definitions/PointInTimeRecoverySpecification" + }, + "ProvisionedThroughput": { + "$ref": "#/definitions/ProvisionedThroughput" + }, + "ResourcePolicy": { + "$ref": "#/definitions/ResourcePolicy" + }, + "SSESpecification": { + "$ref": "#/definitions/SSESpecification" + }, + "StreamArn": { + "type": "string" + }, + "StreamSpecification": { + "$ref": "#/definitions/StreamSpecification" + }, + "TableClass": { + "type": "string" + }, + "TableName": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "TimeToLiveSpecification": { + "$ref": "#/definitions/TimeToLiveSpecification" + } + }, + "propertyTransform": { + "/properties/SSESpecification/KMSMasterKeyId": "$join([\"arn:(aws)[-]{0,1}[a-z]{0,3}[-]{0,1}[a-z]{0,3}:kms:[a-z]{2}[-]{1}[a-z]{3,10}[-]{0,1}[a-z]{0,4}[-]{1}[1-4]{1}:[0-9]{12}[:]{1}key\\/\", SSESpecification.KMSMasterKeyId]) $OR $join([\"arn:(aws)[-]{0,1}[a-z]{0,3}[-]{0,1}[a-z]{0,3}:kms:[a-z]{2}[-]{1}[a-z]{3,10}[-]{0,1}[a-z]{0,4}[-]{1}[1-4]{1}:[0-9]{12}[:]{1}key\\/\", KMSMasterKeyId])" + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/StreamArn" + ], + "required": [ + "KeySchema" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::DynamoDB::Table", + "writeOnlyProperties": [ + "/properties/ImportSourceSpecification" + ] +} diff --git a/src/cfnlint/data/schemas/providers/ap_south_1/aws-ec2-instance.json b/src/cfnlint/data/schemas/providers/ap_south_1/aws-ec2-instance.json deleted file mode 100644 index 7b3bfed595..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_south_1/aws-ec2-instance.json +++ /dev/null @@ -1,571 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ElasticGpuSpecifications", - "/properties/Ipv6Addresses", - "/properties/PlacementGroupName", - "/properties/HostResourceGroupArn", - "/properties/ImageId", - "/properties/CpuOptions", - "/properties/PrivateIpAddress", - "/properties/ElasticInferenceAccelerators", - "/properties/EnclaveOptions", - "/properties/HibernationOptions", - "/properties/KeyName", - "/properties/LicenseSpecifications", - "/properties/NetworkInterfaces", - "/properties/AvailabilityZone", - "/properties/SubnetId", - "/properties/LaunchTemplate", - "/properties/SecurityGroups", - "/properties/Ipv6AddressCount" - ], - "definitions": { - "AssociationParameter": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "BlockDeviceMapping": { - "additionalProperties": false, - "properties": { - "DeviceName": { - "type": "string" - }, - "Ebs": { - "$ref": "#/definitions/Ebs" - }, - "NoDevice": { - "$ref": "#/definitions/NoDevice" - }, - "VirtualName": { - "type": "string" - } - }, - "required": [ - "DeviceName" - ], - "requiredXor": [ - "VirtualName", - "Ebs", - "NoDevice" - ], - "type": "object" - }, - "CpuOptions": { - "additionalProperties": false, - "properties": { - "CoreCount": { - "type": "integer" - }, - "ThreadsPerCore": { - "type": "integer" - } - }, - "type": "object" - }, - "CreditSpecification": { - "additionalProperties": false, - "properties": { - "CPUCredits": { - "type": "string" - } - }, - "type": "object" - }, - "Ebs": { - "additionalProperties": false, - "properties": { - "DeleteOnTermination": { - "type": "boolean" - }, - "Encrypted": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "KmsKeyId": { - "type": "string" - }, - "SnapshotId": { - "type": "string" - }, - "VolumeSize": { - "type": "integer" - }, - "VolumeType": { - "type": "string" - } - }, - "type": "object" - }, - "ElasticGpuSpecification": { - "additionalProperties": false, - "properties": { - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "ElasticInferenceAccelerator": { - "additionalProperties": false, - "properties": { - "Count": { - "type": "integer" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "EnclaveOptions": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - } - }, - "type": "object" - }, - "HibernationOptions": { - "additionalProperties": false, - "properties": { - "Configured": { - "type": "boolean" - } - }, - "type": "object" - }, - "InstanceIpv6Address": { - "additionalProperties": false, - "properties": { - "Ipv6Address": { - "type": "string" - } - }, - "required": [ - "Ipv6Address" - ], - "type": "object" - }, - "LaunchTemplateSpecification": { - "additionalProperties": false, - "properties": { - "LaunchTemplateId": { - "type": "string" - }, - "LaunchTemplateName": { - "type": "string" - }, - "Version": { - "type": "string" - } - }, - "required": [ - "Version" - ], - "type": "object" - }, - "LicenseSpecification": { - "additionalProperties": false, - "properties": { - "LicenseConfigurationArn": { - "type": "string" - } - }, - "required": [ - "LicenseConfigurationArn" - ], - "type": "object" - }, - "NetworkInterface": { - "additionalProperties": false, - "properties": { - "AssociateCarrierIpAddress": { - "type": "boolean" - }, - "AssociatePublicIpAddress": { - "type": "boolean" - }, - "DeleteOnTermination": { - "type": "boolean" - }, - "Description": { - "type": "string" - }, - "DeviceIndex": { - "type": "string" - }, - "GroupSet": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": false - }, - "NetworkInterfaceId": { - "type": "string" - }, - "PrivateIpAddress": { - "type": "string" - }, - "PrivateIpAddresses": { - "items": { - "$ref": "#/definitions/PrivateIpAddressSpecification" - }, - "type": "array", - "uniqueItems": false - }, - "SecondaryPrivateIpAddressCount": { - "type": "integer" - }, - "SubnetId": { - "type": "string" - } - }, - "required": [ - "DeviceIndex" - ], - "type": "object" - }, - "NoDevice": { - "additionalProperties": false, - "type": "object" - }, - "PrivateDnsNameOptions": { - "additionalProperties": false, - "properties": { - "EnableResourceNameDnsAAAARecord": { - "type": "boolean" - }, - "EnableResourceNameDnsARecord": { - "type": "boolean" - }, - "HostnameType": { - "type": "string" - } - }, - "type": "object" - }, - "PrivateIpAddressSpecification": { - "additionalProperties": false, - "properties": { - "Primary": { - "type": "boolean" - }, - "PrivateIpAddress": { - "type": "string" - } - }, - "required": [ - "PrivateIpAddress", - "Primary" - ], - "type": "object" - }, - "SsmAssociation": { - "additionalProperties": false, - "properties": { - "AssociationParameters": { - "items": { - "$ref": "#/definitions/AssociationParameter" - }, - "type": "array", - "uniqueItems": false - }, - "DocumentName": { - "type": "string" - } - }, - "required": [ - "DocumentName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "Volume": { - "additionalProperties": false, - "properties": { - "Device": { - "type": "string" - }, - "VolumeId": { - "type": "string" - } - }, - "required": [ - "VolumeId", - "Device" - ], - "type": "object" - } - }, - "dependentExcluded": { - "NetworkInterfaces": [ - "SubnetId" - ], - "SubnetId": [ - "NetworkInterfaces" - ] - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AdditionalInfo": { - "type": "string" - }, - "Affinity": { - "enum": [ - "default", - "host" - ], - "type": "string" - }, - "AvailabilityZone": { - "cfnLint": [ - "AWS::EC2::Instance/Properties/AvailabilityZone" - ], - "type": "string" - }, - "BlockDeviceMappings": { - "items": { - "$ref": "#/definitions/BlockDeviceMapping" - }, - "type": "array", - "uniqueItems": false - }, - "CpuOptions": { - "$ref": "#/definitions/CpuOptions" - }, - "CreditSpecification": { - "$ref": "#/definitions/CreditSpecification" - }, - "DisableApiTermination": { - "type": "boolean" - }, - "EbsOptimized": { - "type": "boolean" - }, - "ElasticGpuSpecifications": { - "items": { - "$ref": "#/definitions/ElasticGpuSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "ElasticInferenceAccelerators": { - "items": { - "$ref": "#/definitions/ElasticInferenceAccelerator" - }, - "type": "array", - "uniqueItems": true - }, - "EnclaveOptions": { - "$ref": "#/definitions/EnclaveOptions" - }, - "HibernationOptions": { - "$ref": "#/definitions/HibernationOptions" - }, - "HostId": { - "type": "string" - }, - "HostResourceGroupArn": { - "type": "string" - }, - "IamInstanceProfile": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "ImageId": { - "type": "string" - }, - "InstanceInitiatedShutdownBehavior": { - "type": "string" - }, - "InstanceType": { - "cfnLint": [ - "AWS::EC2::Instance/Properties/InstanceType" - ], - "type": "string" - }, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": false - }, - "KernelId": { - "type": "string" - }, - "KeyName": { - "type": "string" - }, - "LaunchTemplate": { - "$ref": "#/definitions/LaunchTemplateSpecification" - }, - "LicenseSpecifications": { - "items": { - "$ref": "#/definitions/LicenseSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "Monitoring": { - "type": "boolean" - }, - "NetworkInterfaces": { - "items": { - "$ref": "#/definitions/NetworkInterface" - }, - "type": "array", - "uniqueItems": false - }, - "PlacementGroupName": { - "type": "string" - }, - "PrivateDnsName": { - "type": "string" - }, - "PrivateDnsNameOptions": { - "$ref": "#/definitions/PrivateDnsNameOptions" - }, - "PrivateIp": { - "type": "string" - }, - "PrivateIpAddress": { - "type": "string" - }, - "PropagateTagsToVolumeOnCreation": { - "type": "boolean" - }, - "PublicDnsName": { - "type": "string" - }, - "PublicIp": { - "type": "string" - }, - "RamdiskId": { - "type": "string" - }, - "SecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SecurityGroups": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SourceDestCheck": { - "type": "boolean" - }, - "SsmAssociations": { - "items": { - "$ref": "#/definitions/SsmAssociation" - }, - "type": "array", - "uniqueItems": false - }, - "SubnetId": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "Tenancy": { - "enum": [ - "default", - "dedicated", - "host" - ], - "type": "string" - }, - "UserData": { - "type": "string" - }, - "Volumes": { - "items": { - "$ref": "#/definitions/Volume" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/PublicIp", - "/properties/Id", - "/properties/PublicDnsName", - "/properties/PrivateDnsName", - "/properties/PrivateIp" - ], - "requiredXor": [ - "ImageId", - "LaunchTemplate" - ], - "typeName": "AWS::EC2::Instance" -} diff --git a/src/cfnlint/data/schemas/providers/ap_south_1/aws-ec2-securitygroupegress.json b/src/cfnlint/data/schemas/providers/ap_south_1/aws-ec2-securitygroupegress.json new file mode 100644 index 0000000000..f94631dad2 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_south_1/aws-ec2-securitygroupegress.json @@ -0,0 +1,98 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::EC2::SecurityGroupEgress/Properties" + ], + "createOnlyProperties": [ + "/properties/IpProtocol", + "/properties/DestinationSecurityGroupId", + "/properties/ToPort", + "/properties/CidrIp", + "/properties/FromPort", + "/properties/GroupId", + "/properties/CidrIpv6", + "/properties/DestinationPrefixListId" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:AuthorizeSecurityGroupEgress", + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "delete": { + "permissions": [ + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "update": { + "permissions": [ + "ec2:UpdateSecurityGroupRuleDescriptionsEgress" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CidrIp": { + "type": "string" + }, + "CidrIpv6": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "DestinationPrefixListId": { + "type": "string" + }, + "DestinationSecurityGroupId": { + "type": "string" + }, + "FromPort": { + "minimum": -1, + "type": "integer" + }, + "GroupId": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "IpProtocol": { + "type": "string" + }, + "ToPort": { + "minimum": -1, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IpProtocol", + "GroupId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SecurityGroupEgress" +} diff --git a/src/cfnlint/data/schemas/providers/ap_south_1/aws-elasticache-user.json b/src/cfnlint/data/schemas/providers/ap_south_1/aws-elasticache-user.json deleted file mode 100644 index 0775783108..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_south_1/aws-elasticache-user.json +++ /dev/null @@ -1,166 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/UserId", - "/properties/UserName", - "/properties/Engine" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z0-9 _\\.\\/=+:\\-@]*$", - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "pattern": "^[a-zA-Z0-9 _\\.\\/=+:\\-@]*$", - "type": "string" - } - }, - "required": [ - "Key" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "elasticache:CreateUser", - "elasticache:DescribeUsers", - "elasticache:ListTagsForResource", - "elasticache:AddTagsToResource" - ] - }, - "delete": { - "permissions": [ - "elasticache:DeleteUser", - "elasticache:DescribeUsers" - ] - }, - "list": { - "permissions": [ - "elasticache:DescribeUsers", - "elasticache:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "elasticache:DescribeUsers", - "elasticache:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "elasticache:ModifyUser", - "elasticache:DescribeUsers", - "elasticache:ListTagsForResource", - "elasticache:AddTagsToResource", - "elasticache:RemoveTagsFromResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/UserId" - ], - "properties": { - "AccessString": { - "type": "string" - }, - "Arn": { - "type": "string" - }, - "AuthenticationMode": { - "additionalProperties": false, - "properties": { - "Passwords": { - "$comment": "List of passwords.", - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Type": { - "enum": [ - "password", - "no-password-required", - "iam" - ], - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "Engine": { - "enum": [ - "redis" - ], - "type": "string" - }, - "NoPasswordRequired": { - "type": "boolean" - }, - "Passwords": { - "$comment": "List of passwords.", - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Status": { - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "UserId": { - "pattern": "[a-z][a-z0-9\\\\-]*", - "type": "string" - }, - "UserName": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Status", - "/properties/Arn" - ], - "required": [ - "UserId", - "UserName", - "Engine" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticache", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::ElastiCache::User", - "writeOnlyProperties": [ - "/properties/Passwords", - "/properties/NoPasswordRequired", - "/properties/AccessString", - "/properties/AuthenticationMode" - ] -} diff --git a/src/cfnlint/data/schemas/providers/ap_south_1/aws-gamelift-fleet.json b/src/cfnlint/data/schemas/providers/ap_south_1/aws-gamelift-fleet.json new file mode 100644 index 0000000000..fb6db12d8b --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_south_1/aws-gamelift-fleet.json @@ -0,0 +1,523 @@ +{ + "$schema": "https://schema.cloudformation.us-east-1.amazonaws.com/provider.definition.schema.v1.json", + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplyCapacity", + "/properties/BuildId", + "/properties/CertificateConfiguration", + "/properties/EC2InstanceType", + "/properties/FleetType", + "/properties/InstanceRoleARN", + "/properties/InstanceRoleCredentialsProvider", + "/properties/LogPaths", + "/properties/PeerVpcAwsAccountId", + "/properties/PeerVpcId", + "/properties/ScriptId", + "/properties/ServerLaunchParameters", + "/properties/ServerLaunchPath", + "/properties/ComputeType" + ], + "definitions": { + "AnywhereConfiguration": { + "additionalProperties": false, + "properties": { + "Cost": { + "maxLength": 11, + "minLength": 1, + "pattern": "^\\d{1,5}(?:\\.\\d{1,5})?$", + "type": "string" + } + }, + "required": [ + "Cost" + ] + }, + "CertificateConfiguration": { + "additionalProperties": false, + "properties": { + "CertificateType": { + "enum": [ + "DISABLED", + "GENERATED" + ], + "type": "string" + } + }, + "required": [ + "CertificateType" + ], + "type": "object" + }, + "IpPermission": { + "additionalProperties": false, + "properties": { + "FromPort": { + "maximum": 60000, + "minimum": 1, + "type": "integer" + }, + "IpRange": { + "pattern": "(^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(/([0-9]|[1-2][0-9]|3[0-2]))$)", + "type": "string" + }, + "Protocol": { + "enum": [ + "TCP", + "UDP" + ], + "type": "string" + }, + "ToPort": { + "maximum": 60000, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "FromPort", + "IpRange", + "Protocol", + "ToPort" + ], + "type": "object" + }, + "Location": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[A-Za-z0-9\\-]+", + "type": "string" + }, + "LocationCapacity": { + "additionalProperties": false, + "properties": { + "DesiredEC2Instances": { + "minimum": 0, + "type": "integer" + }, + "MaxSize": { + "minimum": 0, + "type": "integer" + }, + "MinSize": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "DesiredEC2Instances", + "MinSize", + "MaxSize" + ], + "type": "object" + }, + "LocationConfiguration": { + "additionalProperties": false, + "properties": { + "Location": { + "$ref": "#/definitions/Location" + }, + "LocationCapacity": { + "$ref": "#/definitions/LocationCapacity" + } + }, + "required": [ + "Location" + ], + "type": "object" + }, + "ResourceCreationLimitPolicy": { + "additionalProperties": false, + "properties": { + "NewGameSessionsPerCreator": { + "minimum": 0, + "type": "integer" + }, + "PolicyPeriodInMinutes": { + "minimum": 0, + "type": "integer" + } + }, + "type": "object" + }, + "RuntimeConfiguration": { + "additionalProperties": false, + "properties": { + "GameSessionActivationTimeoutSeconds": { + "maximum": 600, + "minimum": 1, + "type": "integer" + }, + "MaxConcurrentGameSessionActivations": { + "maximum": 2147483647, + "minimum": 1, + "type": "integer" + }, + "ServerProcesses": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ServerProcess" + }, + "maxItems": 50, + "type": "array" + } + }, + "type": "object" + }, + "ScalingPolicy": { + "additionalProperties": false, + "properties": { + "ComparisonOperator": { + "enum": [ + "GreaterThanOrEqualToThreshold", + "GreaterThanThreshold", + "LessThanThreshold", + "LessThanOrEqualToThreshold" + ], + "type": "string" + }, + "EvaluationPeriods": { + "minimum": 1, + "type": "integer" + }, + "Location": { + "$ref": "#/definitions/Location" + }, + "MetricName": { + "enum": [ + "ActivatingGameSessions", + "ActiveGameSessions", + "ActiveInstances", + "AvailableGameSessions", + "AvailablePlayerSessions", + "CurrentPlayerSessions", + "IdleInstances", + "PercentAvailableGameSessions", + "PercentIdleInstances", + "QueueDepth", + "WaitTime", + "ConcurrentActivatableGameSessions" + ], + "type": "string" + }, + "Name": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "PolicyType": { + "enum": [ + "RuleBased", + "TargetBased" + ], + "type": "string" + }, + "ScalingAdjustment": { + "type": "integer" + }, + "ScalingAdjustmentType": { + "enum": [ + "ChangeInCapacity", + "ExactCapacity", + "PercentChangeInCapacity" + ], + "type": "string" + }, + "Status": { + "enum": [ + "ACTIVE", + "UPDATE_REQUESTED", + "UPDATING", + "DELETE_REQUESTED", + "DELETING", + "DELETED", + "ERROR" + ], + "type": "string" + }, + "TargetConfiguration": { + "$ref": "#/definitions/TargetConfiguration" + }, + "Threshold": { + "type": "number" + }, + "UpdateStatus": { + "enum": [ + "PENDING_UPDATE" + ], + "type": "string" + } + }, + "required": [ + "MetricName", + "Name" + ], + "type": "object" + }, + "ServerProcess": { + "additionalProperties": false, + "properties": { + "ConcurrentExecutions": { + "minimum": 1, + "type": "integer" + }, + "LaunchPath": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^([Cc]:\\\\game\\S+|/local/game/\\S+)", + "type": "string" + }, + "Parameters": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ConcurrentExecutions", + "LaunchPath" + ], + "type": "object" + }, + "TargetConfiguration": { + "additionalProperties": false, + "properties": { + "TargetValue": { + "type": "number" + } + }, + "required": [ + "TargetValue" + ], + "type": "object" + } + }, + "deprecatedProperties": [ + "/properties/LogPaths", + "/properties/ServerLaunchParameters", + "/properties/ServerLaunchPath" + ], + "handlers": { + "create": { + "permissions": [ + "gamelift:CreateFleet", + "gamelift:DescribeFleetAttributes", + "gamelift:DescribeFleetLocationAttributes", + "gamelift:UpdateFleetCapacity", + "gamelift:DescribeFleetLocationCapacity", + "gamelift:PutScalingPolicy", + "gamelift:DescribeScalingPolicies" + ] + }, + "delete": { + "permissions": [ + "gamelift:DeleteFleet", + "gamelift:DescribeFleetLocationCapacity", + "gamelift:DescribeScalingPolicies", + "gamelift:DeleteScalingPolicy" + ] + }, + "list": { + "permissions": [ + "gamelift:ListFleets" + ] + }, + "read": { + "permissions": [ + "gamelift:DescribeFleetAttributes", + "gamelift:DescribeFleetLocationAttributes", + "gamelift:DescribeFleetCapacity", + "gamelift:DescribeFleetPortSettings", + "gamelift:DescribeFleetUtilization", + "gamelift:DescribeRuntimeConfiguration", + "gamelift:DescribeEC2InstanceLimits", + "gamelift:DescribeFleetEvents", + "gamelift:DescribeScalingPolicies" + ] + }, + "update": { + "permissions": [ + "gamelift:UpdateFleetAttributes", + "gamelift:CreateFleetLocations", + "gamelift:DeleteFleetLocations", + "gamelift:UpdateFleetCapacity", + "gamelift:UpdateFleetPortSettings", + "gamelift:UpdateRuntimeConfiguration", + "gamelift:DescribeFleetLocationCapacity", + "gamelift:DescribeFleetPortSettings", + "gamelift:DescribeFleetLocationAttributes", + "gamelift:PutScalingPolicy", + "gamelift:DescribeScalingPolicies", + "gamelift:DeleteScalingPolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/FleetId" + ], + "properties": { + "AnywhereConfiguration": { + "$ref": "#/definitions/AnywhereConfiguration" + }, + "ApplyCapacity": { + "enum": [ + "ON_UPDATE", + "ON_CREATE_AND_UPDATE" + ], + "type": "string" + }, + "BuildId": { + "pattern": "^build-\\S+|^arn:.*:build/build-\\S+", + "type": "string" + }, + "CertificateConfiguration": { + "$ref": "#/definitions/CertificateConfiguration" + }, + "ComputeType": { + "enum": [ + "EC2", + "ANYWHERE" + ], + "type": "string" + }, + "Description": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "DesiredEC2Instances": { + "minimum": 0, + "type": "integer" + }, + "EC2InboundPermissions": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/IpPermission" + }, + "maxItems": 50, + "type": "array" + }, + "EC2InstanceType": { + "cfnLint": "AWS::GameLift::Fleet/EC2InstanceType", + "pattern": "^.*..*$", + "type": "string" + }, + "FleetId": { + "pattern": "^fleet-\\S+", + "type": "string" + }, + "FleetType": { + "enum": [ + "ON_DEMAND", + "SPOT" + ], + "type": "string" + }, + "InstanceRoleARN": { + "minLength": 1, + "pattern": "^arn:aws(-.*)?:[a-z-]+:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$", + "type": "string" + }, + "InstanceRoleCredentialsProvider": { + "enum": [ + "SHARED_CREDENTIAL_FILE" + ], + "type": "string" + }, + "Locations": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LocationConfiguration" + }, + "maxItems": 100, + "minItems": 1, + "type": "array" + }, + "LogPaths": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "MaxSize": { + "minimum": 0, + "type": "integer" + }, + "MetricGroups": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "maxItems": 1, + "type": "array" + }, + "MinSize": { + "minimum": 0, + "type": "integer" + }, + "Name": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "NewGameSessionProtectionPolicy": { + "enum": [ + "FullProtection", + "NoProtection" + ], + "type": "string" + }, + "PeerVpcAwsAccountId": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^[0-9]{12}$", + "type": "string" + }, + "PeerVpcId": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^vpc-\\S+", + "type": "string" + }, + "ResourceCreationLimitPolicy": { + "$ref": "#/definitions/ResourceCreationLimitPolicy" + }, + "RuntimeConfiguration": { + "$ref": "#/definitions/RuntimeConfiguration" + }, + "ScalingPolicies": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ScalingPolicy" + }, + "maxItems": 50, + "type": "array" + }, + "ScriptId": { + "pattern": "^script-\\S+|^arn:.*:script/script-\\S+", + "type": "string" + }, + "ServerLaunchParameters": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "ServerLaunchPath": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/FleetId" + ], + "required": [ + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-gamelift.git", + "taggable": true, + "typeName": "AWS::GameLift::Fleet", + "writeOnlyProperties": [ + "/properties/ApplyCapacity" + ] +} diff --git a/src/cfnlint/data/schemas/providers/ap_south_1/aws-iotsitewise-gateway.json b/src/cfnlint/data/schemas/providers/ap_south_1/aws-iotsitewise-gateway.json deleted file mode 100644 index 20b0ba8baa..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_south_1/aws-iotsitewise-gateway.json +++ /dev/null @@ -1,179 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/GatewayPlatform" - ], - "definitions": { - "CapabilityConfiguration": { - "type": "string" - }, - "CapabilityNamespace": { - "type": "string" - }, - "GatewayCapabilitySummary": { - "additionalProperties": false, - "properties": { - "CapabilityConfiguration": { - "$ref": "#/definitions/CapabilityConfiguration" - }, - "CapabilityNamespace": { - "$ref": "#/definitions/CapabilityNamespace" - } - }, - "required": [ - "CapabilityNamespace" - ], - "type": "object" - }, - "GatewayPlatform": { - "additionalProperties": false, - "oneOf": [ - { - "required": [ - "Greengrass" - ] - }, - { - "required": [ - "GreengrassV2" - ] - } - ], - "properties": { - "Greengrass": { - "$ref": "#/definitions/Greengrass" - }, - "GreengrassV2": { - "$ref": "#/definitions/GreengrassV2" - } - }, - "type": "object" - }, - "Greengrass": { - "additionalProperties": false, - "properties": { - "GroupArn": { - "type": "string" - } - }, - "required": [ - "GroupArn" - ], - "type": "object" - }, - "GreengrassV2": { - "additionalProperties": false, - "properties": { - "CoreDeviceThingName": { - "type": "string" - } - }, - "required": [ - "CoreDeviceThingName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "iotsitewise:CreateGateway", - "iotsitewise:DescribeGateway", - "iotsitewise:DescribeGatewayCapabilityConfiguration", - "iotsitewise:UpdateGatewayCapabilityConfiguration", - "iam:PassRole", - "iam:GetRole", - "greengrass:GetCoreDevice", - "iotsitewise:ListTagsForResource", - "iotsitewise:TagResource", - "iot:DescribeThing" - ] - }, - "delete": { - "permissions": [ - "iotsitewise:DescribeGateway", - "iotsitewise:DescribeGatewayCapabilityConfiguration", - "iotsitewise:DeleteGateway" - ] - }, - "list": { - "permissions": [ - "iotsitewise:ListGateways" - ] - }, - "read": { - "permissions": [ - "iotsitewise:DescribeGateway", - "iotsitewise:DescribeGatewayCapabilityConfiguration", - "iotsitewise:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "iotsitewise:UpdateGateway", - "iotsitewise:UpdateGatewayCapabilityConfiguration", - "iotsitewise:TagResource", - "iotsitewise:UntagResource", - "iotsitewise:DescribeGateway", - "iotsitewise:DescribeGatewayCapabilityConfiguration", - "iotsitewise:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/GatewayId" - ], - "properties": { - "GatewayCapabilitySummaries": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/GatewayCapabilitySummary" - }, - "type": "array", - "uniqueItems": true - }, - "GatewayId": { - "type": "string" - }, - "GatewayName": { - "type": "string" - }, - "GatewayPlatform": { - "$ref": "#/definitions/GatewayPlatform" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/GatewayId" - ], - "required": [ - "GatewayName", - "GatewayPlatform" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-IoTSiteWise.git", - "taggable": true, - "typeName": "AWS::IoTSiteWise::Gateway" -} diff --git a/src/cfnlint/data/schemas/providers/ap_south_1/aws-lambda-eventsourcemapping.json b/src/cfnlint/data/schemas/providers/ap_south_1/aws-lambda-eventsourcemapping.json new file mode 100644 index 0000000000..cb7599c139 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_south_1/aws-lambda-eventsourcemapping.json @@ -0,0 +1,353 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::Lambda::EventSourceMapping/Properties" + ], + "createOnlyProperties": [ + "/properties/EventSourceArn", + "/properties/StartingPosition", + "/properties/StartingPositionTimestamp", + "/properties/SelfManagedEventSource", + "/properties/AmazonManagedKafkaEventSourceConfig", + "/properties/SelfManagedKafkaEventSourceConfig" + ], + "definitions": { + "AmazonManagedKafkaEventSourceConfig": { + "additionalProperties": false, + "properties": { + "ConsumerGroupId": { + "$ref": "#/definitions/ConsumerGroupId" + } + }, + "type": "object" + }, + "ConsumerGroupId": { + "maxLength": 200, + "minLength": 1, + "pattern": "[a-zA-Z0-9-\\/*:_+=.@-]*", + "type": "string" + }, + "DestinationConfig": { + "additionalProperties": false, + "properties": { + "OnFailure": { + "$ref": "#/definitions/OnFailure" + } + }, + "type": "object" + }, + "DocumentDBEventSourceConfig": { + "additionalProperties": false, + "properties": { + "CollectionName": { + "maxLength": 57, + "minLength": 1, + "type": "string" + }, + "DatabaseName": { + "maxLength": 63, + "minLength": 1, + "type": "string" + }, + "FullDocument": { + "enum": [ + "UpdateLookup", + "Default" + ], + "type": "string" + } + }, + "type": "object" + }, + "Endpoints": { + "additionalProperties": false, + "properties": { + "KafkaBootstrapServers": { + "items": { + "maxLength": 300, + "minLength": 1, + "pattern": "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9]):[0-9]{1,5}", + "type": "string" + }, + "maxItems": 10, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "Filter": { + "additionalProperties": false, + "properties": { + "Pattern": { + "maxLength": 4096, + "minLength": 0, + "pattern": ".*", + "type": "string" + } + }, + "type": "object" + }, + "FilterCriteria": { + "additionalProperties": false, + "properties": { + "Filters": { + "items": { + "$ref": "#/definitions/Filter" + }, + "maxItems": 20, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "MaximumConcurrency": { + "maximum": 1000, + "minimum": 2, + "type": "integer" + }, + "OnFailure": { + "additionalProperties": false, + "properties": { + "Destination": { + "maxLength": 1024, + "minLength": 12, + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "type": "string" + } + }, + "type": "object" + }, + "ScalingConfig": { + "additionalProperties": false, + "properties": { + "MaximumConcurrency": { + "$ref": "#/definitions/MaximumConcurrency" + } + }, + "type": "object" + }, + "SelfManagedEventSource": { + "additionalProperties": false, + "properties": { + "Endpoints": { + "$ref": "#/definitions/Endpoints" + } + }, + "type": "object" + }, + "SelfManagedKafkaEventSourceConfig": { + "additionalProperties": false, + "properties": { + "ConsumerGroupId": { + "$ref": "#/definitions/ConsumerGroupId" + } + }, + "type": "object" + }, + "SourceAccessConfiguration": { + "additionalProperties": false, + "properties": { + "Type": { + "enum": [ + "BASIC_AUTH", + "VPC_SUBNET", + "VPC_SECURITY_GROUP", + "SASL_SCRAM_512_AUTH", + "SASL_SCRAM_256_AUTH", + "VIRTUAL_HOST", + "CLIENT_CERTIFICATE_TLS_AUTH", + "SERVER_ROOT_CA_CERTIFICATE" + ], + "type": "string" + }, + "URI": { + "maxLength": 200, + "minLength": 1, + "pattern": "[a-zA-Z0-9-\\/*:_+=.@-]*", + "type": "string" + } + }, + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "lambda:CreateEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + }, + "delete": { + "permissions": [ + "lambda:DeleteEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + }, + "list": { + "permissions": [ + "lambda:ListEventSourceMappings" + ] + }, + "read": { + "permissions": [ + "lambda:GetEventSourceMapping" + ] + }, + "update": { + "permissions": [ + "lambda:UpdateEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AmazonManagedKafkaEventSourceConfig": { + "$ref": "#/definitions/AmazonManagedKafkaEventSourceConfig" + }, + "BatchSize": { + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "BisectBatchOnFunctionError": { + "type": "boolean" + }, + "DestinationConfig": { + "$ref": "#/definitions/DestinationConfig" + }, + "DocumentDBEventSourceConfig": { + "$ref": "#/definitions/DocumentDBEventSourceConfig" + }, + "Enabled": { + "type": "boolean" + }, + "EventSourceArn": { + "maxLength": 1024, + "minLength": 12, + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "type": "string" + }, + "FilterCriteria": { + "$ref": "#/definitions/FilterCriteria" + }, + "FunctionName": { + "maxLength": 140, + "minLength": 1, + "pattern": "(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?", + "type": "string" + }, + "FunctionResponseTypes": { + "items": { + "enum": [ + "ReportBatchItemFailures" + ], + "type": "string" + }, + "maxLength": 1, + "minLength": 0, + "type": "array", + "uniqueItems": true + }, + "Id": { + "maxLength": 36, + "minLength": 36, + "pattern": "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + "type": "string" + }, + "MaximumBatchingWindowInSeconds": { + "maximum": 300, + "minimum": 0, + "type": "integer" + }, + "MaximumRecordAgeInSeconds": { + "maximum": 604800, + "minimum": -1, + "type": "integer" + }, + "MaximumRetryAttempts": { + "maximum": 10000, + "minimum": -1, + "type": "integer" + }, + "ParallelizationFactor": { + "maximum": 10, + "minimum": 1, + "type": "integer" + }, + "Queues": { + "items": { + "maxLength": 1000, + "minLength": 1, + "pattern": "[\\s\\S]*", + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "ScalingConfig": { + "$ref": "#/definitions/ScalingConfig" + }, + "SelfManagedEventSource": { + "$ref": "#/definitions/SelfManagedEventSource" + }, + "SelfManagedKafkaEventSourceConfig": { + "$ref": "#/definitions/SelfManagedKafkaEventSourceConfig" + }, + "SourceAccessConfigurations": { + "items": { + "$ref": "#/definitions/SourceAccessConfiguration" + }, + "maxItems": 22, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "StartingPosition": { + "enum": [ + "TRIM_HORIZON", + "LATEST", + "AT_TIMESTAMP" + ], + "maxLength": 12, + "minLength": 6, + "pattern": "(LATEST|TRIM_HORIZON|AT_TIMESTAMP)+", + "type": "string" + }, + "StartingPositionTimestamp": { + "type": "number" + }, + "Topics": { + "items": { + "maxLength": 249, + "minLength": 1, + "pattern": "^[^.]([a-zA-Z0-9\\-_.]+)", + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "TumblingWindowInSeconds": { + "maximum": 900, + "minimum": 0, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "FunctionName" + ], + "typeName": "AWS::Lambda::EventSourceMapping" +} diff --git a/src/cfnlint/data/schemas/providers/ap_south_1/aws-sagemaker-appimageconfig.json b/src/cfnlint/data/schemas/providers/ap_south_1/aws-sagemaker-appimageconfig.json new file mode 100644 index 0000000000..01116f524b --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_south_1/aws-sagemaker-appimageconfig.json @@ -0,0 +1,238 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AppImageConfigName", + "/properties/Tags" + ], + "definitions": { + "ContainerConfig": { + "additionalProperties": false, + "properties": { + "ContainerArguments": { + "items": { + "$ref": "#/definitions/CustomImageContainerArguments" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "ContainerEntrypoint": { + "items": { + "$ref": "#/definitions/CustomImageContainerEntrypoint" + }, + "maxItems": 1, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "ContainerEnvironmentVariables": { + "items": { + "$ref": "#/definitions/CustomImageContainerEnvironmentVariable" + }, + "maxItems": 25, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "CustomImageContainerArguments": { + "maxLength": 64, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "CustomImageContainerEntrypoint": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "CustomImageContainerEnvironmentVariable": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "FileSystemConfig": { + "additionalProperties": false, + "properties": { + "DefaultGid": { + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "DefaultUid": { + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "MountPath": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^/.*", + "type": "string" + } + }, + "type": "object" + }, + "JupyterLabAppImageConfig": { + "additionalProperties": false, + "properties": { + "ContainerConfig": { + "$ref": "#/definitions/ContainerConfig" + } + }, + "type": "object" + }, + "KernelGatewayImageConfig": { + "additionalProperties": false, + "properties": { + "FileSystemConfig": { + "$ref": "#/definitions/FileSystemConfig" + }, + "KernelSpecs": { + "items": { + "$ref": "#/definitions/KernelSpec" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "KernelSpecs" + ], + "type": "object" + }, + "KernelSpec": { + "additionalProperties": false, + "properties": { + "DisplayName": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Name": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "sagemaker:CreateAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + }, + "delete": { + "permissions": [ + "sagemaker:DeleteAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + }, + "list": { + "permissions": [ + "sagemaker:ListAppImageConfigs" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeAppImageConfig" + ] + }, + "update": { + "permissions": [ + "sagemaker:UpdateAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + } + }, + "primaryIdentifier": [ + "/properties/AppImageConfigName" + ], + "properties": { + "AppImageConfigArn": { + "maxLength": 256, + "minLength": 1, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:app-image-config/.*", + "type": "string" + }, + "AppImageConfigName": { + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", + "type": "string" + }, + "JupyterLabAppImageConfig": { + "$ref": "#/definitions/JupyterLabAppImageConfig" + }, + "KernelGatewayImageConfig": { + "$ref": "#/definitions/KernelGatewayImageConfig" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/AppImageConfigArn" + ], + "required": [ + "AppImageConfigName" + ], + "typeName": "AWS::SageMaker::AppImageConfig", + "writeOnlyProperties": [ + "/properties/Tags" + ] +} diff --git a/src/cfnlint/data/schemas/providers/ap_south_1/aws-verifiedpermissions-identitysource.json b/src/cfnlint/data/schemas/providers/ap_south_1/aws-verifiedpermissions-identitysource.json new file mode 100644 index 0000000000..46a0ad88f1 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_south_1/aws-verifiedpermissions-identitysource.json @@ -0,0 +1,221 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PolicyStoreId" + ], + "definitions": { + "CognitoGroupConfiguration": { + "additionalProperties": false, + "properties": { + "GroupEntityType": { + "maxLength": 200, + "minLength": 1, + "pattern": "^([_a-zA-Z][_a-zA-Z0-9]*::)*[_a-zA-Z][_a-zA-Z0-9]*$", + "type": "string" + } + }, + "required": [ + "GroupEntityType" + ], + "type": "object" + }, + "CognitoUserPoolConfiguration": { + "additionalProperties": false, + "properties": { + "ClientIds": { + "insertionOrder": false, + "items": { + "maxLength": 255, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "maxItems": 1000, + "minItems": 0, + "type": "array" + }, + "GroupConfiguration": { + "$ref": "#/definitions/CognitoGroupConfiguration" + }, + "UserPoolArn": { + "maxLength": 255, + "minLength": 1, + "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", + "type": "string" + } + }, + "required": [ + "UserPoolArn" + ], + "type": "object" + }, + "IdentitySourceConfiguration": { + "additionalProperties": false, + "properties": { + "CognitoUserPoolConfiguration": { + "$ref": "#/definitions/CognitoUserPoolConfiguration" + } + }, + "required": [ + "CognitoUserPoolConfiguration" + ], + "title": "CognitoUserPoolConfiguration", + "type": "object" + }, + "IdentitySourceDetails": { + "additionalProperties": false, + "properties": { + "ClientIds": { + "insertionOrder": false, + "items": { + "maxLength": 255, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "maxItems": 1000, + "minItems": 0, + "type": "array" + }, + "DiscoveryUrl": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^https://.*$", + "type": "string" + }, + "OpenIdIssuer": { + "$ref": "#/definitions/OpenIdIssuer" + }, + "UserPoolArn": { + "maxLength": 255, + "minLength": 1, + "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", + "type": "string" + } + }, + "type": "object" + }, + "OpenIdIssuer": { + "enum": [ + "COGNITO" + ], + "type": "string" + } + }, + "deprecatedProperties": [ + "/properties/Details" + ], + "handlers": { + "create": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "delete": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "PolicyStoreId": { + "$ref": "resource-schema.json#/properties/PolicyStoreId" + } + }, + "required": [ + "PolicyStoreId" + ] + }, + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "read": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "update": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + } + }, + "primaryIdentifier": [ + "/properties/IdentitySourceId", + "/properties/PolicyStoreId" + ], + "properties": { + "Configuration": { + "$ref": "#/definitions/IdentitySourceConfiguration" + }, + "Details": { + "$ref": "#/definitions/IdentitySourceDetails" + }, + "IdentitySourceId": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]*$", + "type": "string" + }, + "PolicyStoreId": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]*$", + "type": "string" + }, + "PrincipalEntityType": { + "maxLength": 200, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Details", + "/properties/IdentitySourceId" + ], + "required": [ + "Configuration", + "PolicyStoreId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-avp", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::VerifiedPermissions::IdentitySource" +} 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 a0459414ae..e8fa865f5c 100644 --- a/src/cfnlint/data/schemas/providers/ap_south_2/__init__.py +++ b/src/cfnlint/data/schemas/providers/ap_south_2/__init__.py @@ -36,8 +36,11 @@ "AWS::ApiGateway::DocumentationPart", "AWS::CloudWatch::CompositeAlarm", "AWS::Route53Resolver::FirewallDomainList", + "AWS::Redshift::EndpointAccess", "AWS::AppConfig::Application", "AWS::OpsWorks::Stack", + "AWS::MediaTailor::Channel", + "AWS::MediaTailor::ChannelPolicy", "AWS::GameLift::Fleet", "AWS::DataSync::LocationFSxWindows", "AWS::GameLift::Build", @@ -54,6 +57,7 @@ "AWS::WAFv2::RegexPatternSet", "AWS::EKS::FargateProfile", "AWS::Route53::DNSSEC", + "AWS::Redshift::EndpointAuthorization", "AWS::EC2::TransitGatewayRouteTable", "AWS::ControlTower::EnabledControl", "AWS::Route53::RecordSet", @@ -78,6 +82,7 @@ "AWS::DataSync::LocationHDFS", "AWS::Events::Archive", "AWS::MSK::Cluster", + "AWS::SecurityHub::DelegatedAdmin", "AWS::ControlTower::EnabledBaseline", "AWS::EC2::VPCEndpointConnectionNotification", "AWS::CodePipeline::Pipeline", @@ -122,6 +127,7 @@ "AWS::SSM::Document", "AWS::IAM::Role", "AWS::Events::ApiDestination", + "AWS::MediaLive::Multiplexprogram", "AWS::ElastiCache::ServerlessCache", "AWS::CloudFront::CloudFrontOriginAccessIdentity", "AWS::ApiGateway::ApiKey", @@ -180,6 +186,7 @@ "AWS::Athena::WorkGroup", "AWS::ServiceCatalog::PortfolioShare", "AWS::IAM::ServerCertificate", + "AWS::GlobalAccelerator::CrossAccountAttachment", "AWS::Events::EventBus", "AWS::SQS::QueueInlinePolicy", "AWS::Organizations::Organization", @@ -204,6 +211,7 @@ "AWS::EKS::Cluster", "AWS::EFS::FileSystem", "AWS::Logs::QueryDefinition", + "AWS::SecurityHub::ProductSubscription", "AWS::IAM::InstanceProfile", "AWS::DataSync::LocationNFS", "AWS::CertificateManager::Certificate", @@ -373,7 +381,9 @@ "AWS::ServiceCatalogAppRegistry::AttributeGroup", "AWS::AppSync::GraphQLApi", "AWS::EC2::EgressOnlyInternetGateway", + "AWS::SecurityHub::Insight", "AWS::EC2::VPCCidrBlock", + "AWS::MediaTailor::VodSource", "AWS::ACMPCA::CertificateAuthority", "AWS::Athena::PreparedStatement", "AWS::AutoScaling::ScheduledAction", @@ -395,6 +405,7 @@ "AWS::ElasticLoadBalancingV2::ListenerRule", "AWS::ElasticLoadBalancingV2::TrustStore", "AWS::EC2::KeyPair", + "AWS::MediaTailor::LiveSource", "AWS::EC2::EIPAssociation", "AWS::ElasticBeanstalk::Application", "AWS::IoT::ThingPrincipalAttachment", @@ -405,6 +416,7 @@ "AWS::StepFunctions::StateMachine", "AWS::RDS::DBClusterParameterGroup", "AWS::WAF::XssMatchSet", + "AWS::MediaLive::Multiplex", "AWS::Scheduler::ScheduleGroup", "AWS::Route53::KeySigningKey", "AWS::Events::Connection", @@ -424,6 +436,7 @@ "AWS::CloudFront::ResponseHeadersPolicy", "AWS::SecurityHub::AutomationRule", "AWS::MSK::ClusterPolicy", + "AWS::MediaTailor::SourceLocation", "AWS::GuardDuty::Master", "AWS::KMS::Alias", "AWS::XRay::SamplingRule", @@ -460,6 +473,7 @@ "AWS::LakeFormation::DataLakeSettings", "AWS::AutoScaling::ScalingPolicy", "AWS::ECR::RegistryPolicy", + "AWS::Redshift::ScheduledAction", "AWS::RDS::DBSecurityGroup", "AWS::CloudWatch::MetricStream", "AWS::SSM::Parameter", @@ -491,6 +505,7 @@ "AWS::EC2::LaunchTemplate", "AWS::CloudFront::OriginRequestPolicy", "AWS::DataSync::LocationFSxONTAP", + "AWS::MediaTailor::PlaybackConfiguration", "AWS::PCAConnectorAD::ServicePrincipalName", "AWS::ElasticBeanstalk::Environment", "AWS::Lambda::Version", @@ -510,6 +525,7 @@ "AWS::S3::AccessPoint", "AWS::Batch::JobQueue", "AWS::ElasticLoadBalancingV2::Listener", + "AWS::Redshift::EventSubscription", "AWS::CloudFormation::WaitConditionHandle", "AWS::GlobalAccelerator::Accelerator", "AWS::EKS::Addon", @@ -525,7 +541,6 @@ "aws-guardduty-filter.json", "aws-ecs-service.json", "aws-dms-replicationconfig.json", - "aws-ec2-securitygroupegress.json", "aws-glue-dataqualityruleset.json", "aws-config-configurationrecorder.json", "aws-ec2-networkperformancemetricsubscription.json", @@ -533,16 +548,19 @@ "aws-ecr-replicationconfiguration.json", "aws-appconfig-extensionassociation.json", "aws-ec2-ipampoolcidr.json", + "aws-redshift-clustersubnetgroup.json", "aws-rds-dbinstance.json", "aws-ec2-vpcdhcpoptionsassociation.json", "aws-ec2-networkacl.json", - "aws-lambda-eventsourcemapping.json", "aws-logs-resourcepolicy.json", "aws-servicecatalog-launchnotificationconstraint.json", "aws-transfer-certificate.json", "aws-cloudwatch-compositealarm.json", "aws-route53resolver-firewalldomainlist.json", + "aws-redshift-endpointaccess.json", "aws-appconfig-application.json", + "aws-mediatailor-channel.json", + "aws-mediatailor-channelpolicy.json", "aws-datasync-locationfsxwindows.json", "aws-autoscaling-warmpool.json", "aws-applicationautoscaling-scalabletarget.json", @@ -555,6 +573,7 @@ "aws-wafv2-regexpatternset.json", "aws-eks-fargateprofile.json", "aws-route53-dnssec.json", + "aws-redshift-endpointauthorization.json", "aws-ec2-transitgatewayroutetable.json", "aws-controltower-enabledcontrol.json", "aws-route53-recordset.json", @@ -576,6 +595,7 @@ "aws-datasync-locationhdfs.json", "aws-events-archive.json", "aws-msk-cluster.json", + "aws-securityhub-delegatedadmin.json", "aws-controltower-enabledbaseline.json", "aws-ec2-vpcendpointconnectionnotification.json", "aws-codepipeline-pipeline.json", @@ -590,6 +610,7 @@ "aws-internetmonitor-monitor.json", "aws-transfer-workflow.json", "aws-glue-devendpoint.json", + "aws-elasticache-usergroup.json", "aws-logs-deliverydestination.json", "aws-imagebuilder-imagerecipe.json", "aws-opsworks-elasticloadbalancerattachment.json", @@ -615,13 +636,13 @@ "aws-ssm-document.json", "aws-iam-role.json", "aws-events-apidestination.json", + "aws-medialive-multiplexprogram.json", "aws-elasticache-serverlesscache.json", "aws-cloudfront-cloudfrontoriginaccessidentity.json", "aws-autoscaling-launchconfiguration.json", "aws-lambda-alias.json", "aws-logs-loganomalydetector.json", "aws-ec2-transitgatewaymulticastdomainassociation.json", - "aws-ec2-transitgatewayroutetableassociation.json", "aws-appconfig-environment.json", "aws-imagebuilder-image.json", "aws-elasticache-securitygroupingress.json", @@ -662,6 +683,7 @@ "aws-athena-workgroup.json", "aws-servicecatalog-portfolioshare.json", "aws-iam-servercertificate.json", + "aws-globalaccelerator-crossaccountattachment.json", "aws-events-eventbus.json", "aws-sqs-queueinlinepolicy.json", "aws-organizations-organization.json", @@ -685,6 +707,7 @@ "aws-eks-cluster.json", "aws-efs-filesystem.json", "aws-logs-querydefinition.json", + "aws-securityhub-productsubscription.json", "aws-datasync-locationnfs.json", "aws-certificatemanager-certificate.json", "aws-sdb-domain.json", @@ -734,6 +757,7 @@ "aws-datasync-locationsmb.json", "aws-securityhub-standard.json", "aws-sns-topicinlinepolicy.json", + "aws-redshift-clusterparametergroup.json", "aws-organizations-policy.json", "aws-glue-trigger.json", "aws-globalaccelerator-listener.json", @@ -773,6 +797,7 @@ "aws-logs-accountpolicy.json", "aws-s3-bucketpolicy.json", "aws-appsync-graphqlschema.json", + "aws-redshift-cluster.json", "aws-emr-instancefleetconfig.json", "aws-emr-cluster.json", "aws-rds-dbcluster.json", @@ -797,6 +822,7 @@ "aws-lambda-layerversionpermission.json", "aws-secretsmanager-secret.json", "aws-route53resolver-resolverconfig.json", + "aws-elasticache-user.json", "aws-logs-subscriptionfilter.json", "aws-codedeploy-application.json", "aws-lakeformation-principalpermissions.json", @@ -831,7 +857,8 @@ "aws-servicecatalogappregistry-attributegroup.json", "aws-appsync-graphqlapi.json", "aws-ec2-egressonlyinternetgateway.json", - "aws-acmpca-certificateauthority.json", + "aws-securityhub-insight.json", + "aws-mediatailor-vodsource.json", "aws-athena-preparedstatement.json", "aws-autoscaling-scheduledaction.json", "aws-lakeformation-resource.json", @@ -850,6 +877,7 @@ "aws-elasticloadbalancingv2-listenerrule.json", "aws-elasticloadbalancingv2-truststore.json", "aws-ec2-keypair.json", + "aws-mediatailor-livesource.json", "aws-ec2-eipassociation.json", "aws-ec2-capacityreservation.json", "aws-elasticloadbalancing-loadbalancer.json", @@ -857,6 +885,7 @@ "aws-iam-rolepolicy.json", "aws-stepfunctions-statemachine.json", "aws-rds-dbclusterparametergroup.json", + "aws-medialive-multiplex.json", "aws-scheduler-schedulegroup.json", "aws-route53-keysigningkey.json", "aws-events-connection.json", @@ -864,6 +893,7 @@ "aws-mediaconnect-flowvpcinterface.json", "aws-glue-workflow.json", "aws-ec2-prefixlist.json", + "aws-ec2-instance.json", "aws-ec2-subnetcidrblock.json", "aws-waf-sqlinjectionmatchset.json", "aws-ec2-transitgatewayvpcattachment.json", @@ -874,6 +904,7 @@ "aws-cloudfront-responseheaderspolicy.json", "aws-securityhub-automationrule.json", "aws-msk-clusterpolicy.json", + "aws-mediatailor-sourcelocation.json", "aws-guardduty-master.json", "aws-xray-samplingrule.json", "aws-route53resolver-resolverrule.json", @@ -900,6 +931,7 @@ "aws-athena-namedquery.json", "aws-lakeformation-datalakesettings.json", "aws-ecr-registrypolicy.json", + "aws-redshift-scheduledaction.json", "aws-rds-dbsecuritygroup.json", "aws-cloudwatch-metricstream.json", "aws-ssm-parameter.json", @@ -925,6 +957,7 @@ "aws-ec2-launchtemplate.json", "aws-cloudfront-originrequestpolicy.json", "aws-datasync-locationfsxontap.json", + "aws-mediatailor-playbackconfiguration.json", "aws-pcaconnectorad-serviceprincipalname.json", "aws-lambda-version.json", "aws-ec2-dhcpoptions.json", @@ -941,6 +974,7 @@ "aws-s3-accesspoint.json", "aws-batch-jobqueue.json", "aws-elasticloadbalancingv2-listener.json", + "aws-redshift-eventsubscription.json", "aws-cloudformation-waitconditionhandle.json", "aws-globalaccelerator-accelerator.json", "aws-eks-addon.json", diff --git a/src/cfnlint/data/schemas/providers/ap_south_2/aws-acmpca-certificateauthority.json b/src/cfnlint/data/schemas/providers/ap_south_2/aws-acmpca-certificateauthority.json new file mode 100644 index 0000000000..08ec85e5fa --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_south_2/aws-acmpca-certificateauthority.json @@ -0,0 +1,429 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Type", + "/properties/KeyAlgorithm", + "/properties/SigningAlgorithm", + "/properties/Subject", + "/properties/CsrExtensions", + "/properties/KeyStorageSecurityStandard", + "/properties/UsageMode" + ], + "definitions": { + "AccessDescription": { + "additionalProperties": false, + "properties": { + "AccessLocation": { + "$ref": "#/definitions/GeneralName" + }, + "AccessMethod": { + "$ref": "#/definitions/AccessMethod" + } + }, + "required": [ + "AccessMethod", + "AccessLocation" + ], + "type": "object" + }, + "AccessMethod": { + "additionalProperties": false, + "properties": { + "AccessMethodType": { + "$ref": "#/definitions/AccessMethodType" + }, + "CustomObjectIdentifier": { + "$ref": "#/definitions/CustomObjectIdentifier" + } + }, + "type": "object" + }, + "AccessMethodType": { + "type": "string" + }, + "Arn": { + "type": "string" + }, + "CrlConfiguration": { + "additionalProperties": false, + "properties": { + "CrlDistributionPointExtensionConfiguration": { + "$ref": "#/definitions/CrlDistributionPointExtensionConfiguration" + }, + "CustomCname": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + }, + "ExpirationInDays": { + "type": "integer" + }, + "S3BucketName": { + "type": "string" + }, + "S3ObjectAcl": { + "type": "string" + } + }, + "type": "object" + }, + "CrlDistributionPointExtensionConfiguration": { + "additionalProperties": false, + "properties": { + "OmitExtension": { + "type": "boolean" + } + }, + "required": [ + "OmitExtension" + ], + "type": "object" + }, + "CsrExtensions": { + "additionalProperties": false, + "properties": { + "KeyUsage": { + "$ref": "#/definitions/KeyUsage" + }, + "SubjectInformationAccess": { + "$ref": "#/definitions/SubjectInformationAccess" + } + }, + "type": "object" + }, + "CustomAttribute": { + "additionalProperties": false, + "properties": { + "ObjectIdentifier": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "ObjectIdentifier", + "Value" + ], + "type": "object" + }, + "CustomAttributeList": { + "items": { + "$ref": "#/definitions/CustomAttribute" + }, + "type": "array" + }, + "CustomObjectIdentifier": { + "type": "string" + }, + "DnsName": { + "type": "string" + }, + "EdiPartyName": { + "additionalProperties": false, + "properties": { + "NameAssigner": { + "type": "string" + }, + "PartyName": { + "type": "string" + } + }, + "required": [ + "PartyName", + "NameAssigner" + ], + "type": "object" + }, + "GeneralName": { + "additionalProperties": false, + "properties": { + "DirectoryName": { + "$ref": "#/definitions/Subject" + }, + "DnsName": { + "$ref": "#/definitions/DnsName" + }, + "EdiPartyName": { + "$ref": "#/definitions/EdiPartyName" + }, + "IpAddress": { + "$ref": "#/definitions/IpAddress" + }, + "OtherName": { + "$ref": "#/definitions/OtherName" + }, + "RegisteredId": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Rfc822Name": { + "$ref": "#/definitions/Rfc822Name" + }, + "UniformResourceIdentifier": { + "$ref": "#/definitions/UniformResourceIdentifier" + } + }, + "type": "object" + }, + "IpAddress": { + "type": "string" + }, + "KeyUsage": { + "additionalProperties": false, + "properties": { + "CRLSign": { + "default": false, + "type": "boolean" + }, + "DataEncipherment": { + "default": false, + "type": "boolean" + }, + "DecipherOnly": { + "default": false, + "type": "boolean" + }, + "DigitalSignature": { + "default": false, + "type": "boolean" + }, + "EncipherOnly": { + "default": false, + "type": "boolean" + }, + "KeyAgreement": { + "default": false, + "type": "boolean" + }, + "KeyCertSign": { + "default": false, + "type": "boolean" + }, + "KeyEncipherment": { + "default": false, + "type": "boolean" + }, + "NonRepudiation": { + "default": false, + "type": "boolean" + } + }, + "type": "object" + }, + "OcspConfiguration": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + }, + "OcspCustomCname": { + "type": "string" + } + }, + "type": "object" + }, + "OtherName": { + "additionalProperties": false, + "properties": { + "TypeId": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "TypeId", + "Value" + ], + "type": "object" + }, + "RevocationConfiguration": { + "additionalProperties": false, + "properties": { + "CrlConfiguration": { + "$ref": "#/definitions/CrlConfiguration" + }, + "OcspConfiguration": { + "$ref": "#/definitions/OcspConfiguration" + } + }, + "type": "object" + }, + "Rfc822Name": { + "type": "string" + }, + "Subject": { + "additionalProperties": false, + "properties": { + "CommonName": { + "type": "string" + }, + "Country": { + "type": "string" + }, + "CustomAttributes": { + "$ref": "#/definitions/CustomAttributeList" + }, + "DistinguishedNameQualifier": { + "type": "string" + }, + "GenerationQualifier": { + "type": "string" + }, + "GivenName": { + "type": "string" + }, + "Initials": { + "type": "string" + }, + "Locality": { + "type": "string" + }, + "Organization": { + "type": "string" + }, + "OrganizationalUnit": { + "type": "string" + }, + "Pseudonym": { + "type": "string" + }, + "SerialNumber": { + "type": "string" + }, + "State": { + "type": "string" + }, + "Surname": { + "type": "string" + }, + "Title": { + "type": "string" + } + }, + "type": "object" + }, + "SubjectInformationAccess": { + "items": { + "$ref": "#/definitions/AccessDescription" + }, + "type": "array" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "UniformResourceIdentifier": { + "type": "string" + } + }, + "handlers": { + "create": { + "permissions": [ + "acm-pca:CreateCertificateAuthority", + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr" + ] + }, + "delete": { + "permissions": [ + "acm-pca:DeleteCertificateAuthority", + "acm-pca:DescribeCertificateAuthority" + ] + }, + "list": { + "permissions": [ + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr", + "acm-pca:ListCertificateAuthorities", + "acm-pca:ListTags" + ] + }, + "read": { + "permissions": [ + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr", + "acm-pca:ListTags" + ] + }, + "update": { + "permissions": [ + "acm-pca:ListTags", + "acm-pca:TagCertificateAuthority", + "acm-pca:UntagCertificateAuthority", + "acm-pca:UpdateCertificateAuthority" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "$ref": "#/definitions/Arn" + }, + "CertificateSigningRequest": { + "type": "string" + }, + "CsrExtensions": { + "$ref": "#/definitions/CsrExtensions" + }, + "KeyAlgorithm": { + "type": "string" + }, + "KeyStorageSecurityStandard": { + "type": "string" + }, + "RevocationConfiguration": { + "$ref": "#/definitions/RevocationConfiguration" + }, + "SigningAlgorithm": { + "type": "string" + }, + "Subject": { + "$ref": "#/definitions/Subject" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "Type": { + "type": "string" + }, + "UsageMode": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CertificateSigningRequest" + ], + "required": [ + "Type", + "KeyAlgorithm", + "SigningAlgorithm", + "Subject" + ], + "sourceUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_ACMPCA.html", + "typeName": "AWS::ACMPCA::CertificateAuthority", + "writeOnlyProperties": [ + "/properties/Subject", + "/properties/Subject", + "/properties/CsrExtensions", + "/properties/Tags", + "/properties/RevocationConfiguration", + "/properties/KeyStorageSecurityStandard" + ] +} diff --git a/src/cfnlint/data/schemas/providers/ap_south_2/aws-dynamodb-globaltable.json b/src/cfnlint/data/schemas/providers/ap_south_2/aws-dynamodb-globaltable.json index 4e5ba995cb..ae37e9142b 100644 --- a/src/cfnlint/data/schemas/providers/ap_south_2/aws-dynamodb-globaltable.json +++ b/src/cfnlint/data/schemas/providers/ap_south_2/aws-dynamodb-globaltable.json @@ -8,6 +8,27 @@ ] ], "additionalProperties": false, + "allOf": [ + { + "if": { + "required": [ + "LocalSecondaryIndexes" + ], + "type": "object" + }, + "then": { + "properties": { + "AttributeDefinitions": { + "minItems": 2 + }, + "KeySchema": { + "minItems": 2 + } + }, + "type": "object" + } + } + ], "createOnlyProperties": [ "/properties/LocalSecondaryIndexes", "/properties/TableName", @@ -79,13 +100,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "minItems": 1, - "type": "array", - "uniqueItems": true + "minItems": 1 }, "Projection": { "$ref": "#/definitions/Projection" @@ -102,22 +119,60 @@ "type": "object" }, "KeySchema": { - "additionalProperties": false, - "properties": { - "AttributeName": { - "maxLength": 255, - "minLength": 1, - "type": "string" + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "KeyType": { + "enum": [ + "HASH", + "RANGE" + ], + "type": "string" + } }, - "KeyType": { - "type": "string" - } + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" }, - "required": [ - "KeyType", - "AttributeName" + "prefixItems": [ + { + "additionalProperties": false, + "properties": { + "KeyType": { + "const": "HASH", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + }, + { + "properties": { + "KeyType": { + "const": "RANGE", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + } ], - "type": "object" + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "KinesisStreamSpecification": { "additionalProperties": false, @@ -147,12 +202,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "type": "array", - "uniqueItems": true + "minItems": 2 }, "Projection": { "$ref": "#/definitions/Projection" @@ -511,7 +563,10 @@ }, "minItems": 1, "type": "array", - "uniqueItems": true + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "BillingMode": { "type": "string" @@ -525,13 +580,9 @@ "uniqueItems": true }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "minItems": 1, - "type": "array", - "uniqueItems": true + "minItems": 1 }, "LocalSecondaryIndexes": { "insertionOrder": false, diff --git a/src/cfnlint/data/schemas/providers/ap_south_2/aws-dynamodb-table.json b/src/cfnlint/data/schemas/providers/ap_south_2/aws-dynamodb-table.json index efc82f1d70..f21d084b10 100644 --- a/src/cfnlint/data/schemas/providers/ap_south_2/aws-dynamodb-table.json +++ b/src/cfnlint/data/schemas/providers/ap_south_2/aws-dynamodb-table.json @@ -1,5 +1,26 @@ { "additionalProperties": false, + "allOf": [ + { + "if": { + "required": [ + "LocalSecondaryIndexes" + ], + "type": "object" + }, + "then": { + "properties": { + "AttributeDefinitions": { + "minItems": 2 + }, + "KeySchema": { + "minItems": 2 + } + }, + "type": "object" + } + } + ], "cfnLint": [ "AWS::DynamoDB::Table/Properties" ], @@ -95,11 +116,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 }, "Projection": { "$ref": "#/definitions/Projection" @@ -147,24 +166,57 @@ "type": "object" }, "KeySchema": { - "additionalProperties": false, - "properties": { - "AttributeName": { - "type": "string" + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "type": "string" + }, + "KeyType": { + "enum": [ + "HASH", + "RANGE" + ], + "type": "string" + } }, - "KeyType": { - "enum": [ - "HASH", - "RANGE" + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" + }, + "prefixItems": [ + { + "properties": { + "KeyType": { + "const": "HASH", + "type": "string" + } + }, + "required": [ + "KeyType" ], - "type": "string" + "type": "object" + }, + { + "properties": { + "KeyType": { + "const": "RANGE", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" } - }, - "required": [ - "KeyType", - "AttributeName" ], - "type": "object" + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "KinesisStreamSpecification": { "additionalProperties": false, @@ -192,11 +244,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 2 }, "Projection": { "$ref": "#/definitions/Projection" @@ -451,7 +501,10 @@ "$ref": "#/definitions/AttributeDefinition" }, "type": "array", - "uniqueItems": true + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "BillingMode": { "enum": [ @@ -479,11 +532,9 @@ "KeySchema": { "oneOf": [ { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 }, { "type": "object" diff --git a/src/cfnlint/data/schemas/providers/ap_south_2/aws-ec2-instance.json b/src/cfnlint/data/schemas/providers/ap_south_2/aws-ec2-instance.json deleted file mode 100644 index 7b3bfed595..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_south_2/aws-ec2-instance.json +++ /dev/null @@ -1,571 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ElasticGpuSpecifications", - "/properties/Ipv6Addresses", - "/properties/PlacementGroupName", - "/properties/HostResourceGroupArn", - "/properties/ImageId", - "/properties/CpuOptions", - "/properties/PrivateIpAddress", - "/properties/ElasticInferenceAccelerators", - "/properties/EnclaveOptions", - "/properties/HibernationOptions", - "/properties/KeyName", - "/properties/LicenseSpecifications", - "/properties/NetworkInterfaces", - "/properties/AvailabilityZone", - "/properties/SubnetId", - "/properties/LaunchTemplate", - "/properties/SecurityGroups", - "/properties/Ipv6AddressCount" - ], - "definitions": { - "AssociationParameter": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "BlockDeviceMapping": { - "additionalProperties": false, - "properties": { - "DeviceName": { - "type": "string" - }, - "Ebs": { - "$ref": "#/definitions/Ebs" - }, - "NoDevice": { - "$ref": "#/definitions/NoDevice" - }, - "VirtualName": { - "type": "string" - } - }, - "required": [ - "DeviceName" - ], - "requiredXor": [ - "VirtualName", - "Ebs", - "NoDevice" - ], - "type": "object" - }, - "CpuOptions": { - "additionalProperties": false, - "properties": { - "CoreCount": { - "type": "integer" - }, - "ThreadsPerCore": { - "type": "integer" - } - }, - "type": "object" - }, - "CreditSpecification": { - "additionalProperties": false, - "properties": { - "CPUCredits": { - "type": "string" - } - }, - "type": "object" - }, - "Ebs": { - "additionalProperties": false, - "properties": { - "DeleteOnTermination": { - "type": "boolean" - }, - "Encrypted": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "KmsKeyId": { - "type": "string" - }, - "SnapshotId": { - "type": "string" - }, - "VolumeSize": { - "type": "integer" - }, - "VolumeType": { - "type": "string" - } - }, - "type": "object" - }, - "ElasticGpuSpecification": { - "additionalProperties": false, - "properties": { - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "ElasticInferenceAccelerator": { - "additionalProperties": false, - "properties": { - "Count": { - "type": "integer" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "EnclaveOptions": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - } - }, - "type": "object" - }, - "HibernationOptions": { - "additionalProperties": false, - "properties": { - "Configured": { - "type": "boolean" - } - }, - "type": "object" - }, - "InstanceIpv6Address": { - "additionalProperties": false, - "properties": { - "Ipv6Address": { - "type": "string" - } - }, - "required": [ - "Ipv6Address" - ], - "type": "object" - }, - "LaunchTemplateSpecification": { - "additionalProperties": false, - "properties": { - "LaunchTemplateId": { - "type": "string" - }, - "LaunchTemplateName": { - "type": "string" - }, - "Version": { - "type": "string" - } - }, - "required": [ - "Version" - ], - "type": "object" - }, - "LicenseSpecification": { - "additionalProperties": false, - "properties": { - "LicenseConfigurationArn": { - "type": "string" - } - }, - "required": [ - "LicenseConfigurationArn" - ], - "type": "object" - }, - "NetworkInterface": { - "additionalProperties": false, - "properties": { - "AssociateCarrierIpAddress": { - "type": "boolean" - }, - "AssociatePublicIpAddress": { - "type": "boolean" - }, - "DeleteOnTermination": { - "type": "boolean" - }, - "Description": { - "type": "string" - }, - "DeviceIndex": { - "type": "string" - }, - "GroupSet": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": false - }, - "NetworkInterfaceId": { - "type": "string" - }, - "PrivateIpAddress": { - "type": "string" - }, - "PrivateIpAddresses": { - "items": { - "$ref": "#/definitions/PrivateIpAddressSpecification" - }, - "type": "array", - "uniqueItems": false - }, - "SecondaryPrivateIpAddressCount": { - "type": "integer" - }, - "SubnetId": { - "type": "string" - } - }, - "required": [ - "DeviceIndex" - ], - "type": "object" - }, - "NoDevice": { - "additionalProperties": false, - "type": "object" - }, - "PrivateDnsNameOptions": { - "additionalProperties": false, - "properties": { - "EnableResourceNameDnsAAAARecord": { - "type": "boolean" - }, - "EnableResourceNameDnsARecord": { - "type": "boolean" - }, - "HostnameType": { - "type": "string" - } - }, - "type": "object" - }, - "PrivateIpAddressSpecification": { - "additionalProperties": false, - "properties": { - "Primary": { - "type": "boolean" - }, - "PrivateIpAddress": { - "type": "string" - } - }, - "required": [ - "PrivateIpAddress", - "Primary" - ], - "type": "object" - }, - "SsmAssociation": { - "additionalProperties": false, - "properties": { - "AssociationParameters": { - "items": { - "$ref": "#/definitions/AssociationParameter" - }, - "type": "array", - "uniqueItems": false - }, - "DocumentName": { - "type": "string" - } - }, - "required": [ - "DocumentName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "Volume": { - "additionalProperties": false, - "properties": { - "Device": { - "type": "string" - }, - "VolumeId": { - "type": "string" - } - }, - "required": [ - "VolumeId", - "Device" - ], - "type": "object" - } - }, - "dependentExcluded": { - "NetworkInterfaces": [ - "SubnetId" - ], - "SubnetId": [ - "NetworkInterfaces" - ] - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AdditionalInfo": { - "type": "string" - }, - "Affinity": { - "enum": [ - "default", - "host" - ], - "type": "string" - }, - "AvailabilityZone": { - "cfnLint": [ - "AWS::EC2::Instance/Properties/AvailabilityZone" - ], - "type": "string" - }, - "BlockDeviceMappings": { - "items": { - "$ref": "#/definitions/BlockDeviceMapping" - }, - "type": "array", - "uniqueItems": false - }, - "CpuOptions": { - "$ref": "#/definitions/CpuOptions" - }, - "CreditSpecification": { - "$ref": "#/definitions/CreditSpecification" - }, - "DisableApiTermination": { - "type": "boolean" - }, - "EbsOptimized": { - "type": "boolean" - }, - "ElasticGpuSpecifications": { - "items": { - "$ref": "#/definitions/ElasticGpuSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "ElasticInferenceAccelerators": { - "items": { - "$ref": "#/definitions/ElasticInferenceAccelerator" - }, - "type": "array", - "uniqueItems": true - }, - "EnclaveOptions": { - "$ref": "#/definitions/EnclaveOptions" - }, - "HibernationOptions": { - "$ref": "#/definitions/HibernationOptions" - }, - "HostId": { - "type": "string" - }, - "HostResourceGroupArn": { - "type": "string" - }, - "IamInstanceProfile": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "ImageId": { - "type": "string" - }, - "InstanceInitiatedShutdownBehavior": { - "type": "string" - }, - "InstanceType": { - "cfnLint": [ - "AWS::EC2::Instance/Properties/InstanceType" - ], - "type": "string" - }, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": false - }, - "KernelId": { - "type": "string" - }, - "KeyName": { - "type": "string" - }, - "LaunchTemplate": { - "$ref": "#/definitions/LaunchTemplateSpecification" - }, - "LicenseSpecifications": { - "items": { - "$ref": "#/definitions/LicenseSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "Monitoring": { - "type": "boolean" - }, - "NetworkInterfaces": { - "items": { - "$ref": "#/definitions/NetworkInterface" - }, - "type": "array", - "uniqueItems": false - }, - "PlacementGroupName": { - "type": "string" - }, - "PrivateDnsName": { - "type": "string" - }, - "PrivateDnsNameOptions": { - "$ref": "#/definitions/PrivateDnsNameOptions" - }, - "PrivateIp": { - "type": "string" - }, - "PrivateIpAddress": { - "type": "string" - }, - "PropagateTagsToVolumeOnCreation": { - "type": "boolean" - }, - "PublicDnsName": { - "type": "string" - }, - "PublicIp": { - "type": "string" - }, - "RamdiskId": { - "type": "string" - }, - "SecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SecurityGroups": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SourceDestCheck": { - "type": "boolean" - }, - "SsmAssociations": { - "items": { - "$ref": "#/definitions/SsmAssociation" - }, - "type": "array", - "uniqueItems": false - }, - "SubnetId": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "Tenancy": { - "enum": [ - "default", - "dedicated", - "host" - ], - "type": "string" - }, - "UserData": { - "type": "string" - }, - "Volumes": { - "items": { - "$ref": "#/definitions/Volume" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/PublicIp", - "/properties/Id", - "/properties/PublicDnsName", - "/properties/PrivateDnsName", - "/properties/PrivateIp" - ], - "requiredXor": [ - "ImageId", - "LaunchTemplate" - ], - "typeName": "AWS::EC2::Instance" -} diff --git a/src/cfnlint/data/schemas/providers/ap_south_2/aws-ec2-securitygroupegress.json b/src/cfnlint/data/schemas/providers/ap_south_2/aws-ec2-securitygroupegress.json new file mode 100644 index 0000000000..f94631dad2 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_south_2/aws-ec2-securitygroupegress.json @@ -0,0 +1,98 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::EC2::SecurityGroupEgress/Properties" + ], + "createOnlyProperties": [ + "/properties/IpProtocol", + "/properties/DestinationSecurityGroupId", + "/properties/ToPort", + "/properties/CidrIp", + "/properties/FromPort", + "/properties/GroupId", + "/properties/CidrIpv6", + "/properties/DestinationPrefixListId" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:AuthorizeSecurityGroupEgress", + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "delete": { + "permissions": [ + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "update": { + "permissions": [ + "ec2:UpdateSecurityGroupRuleDescriptionsEgress" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CidrIp": { + "type": "string" + }, + "CidrIpv6": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "DestinationPrefixListId": { + "type": "string" + }, + "DestinationSecurityGroupId": { + "type": "string" + }, + "FromPort": { + "minimum": -1, + "type": "integer" + }, + "GroupId": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "IpProtocol": { + "type": "string" + }, + "ToPort": { + "minimum": -1, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IpProtocol", + "GroupId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SecurityGroupEgress" +} diff --git a/src/cfnlint/data/schemas/providers/ap_south_2/aws-ec2-transitgatewayroutetableassociation.json b/src/cfnlint/data/schemas/providers/ap_south_2/aws-ec2-transitgatewayroutetableassociation.json new file mode 100644 index 0000000000..890b2c4be2 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_south_2/aws-ec2-transitgatewayroutetableassociation.json @@ -0,0 +1,29 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TransitGatewayRouteTableId", + "/properties/TransitGatewayAttachmentId" + ], + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "type": "string" + }, + "TransitGatewayAttachmentId": { + "type": "string" + }, + "TransitGatewayRouteTableId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "TransitGatewayRouteTableId", + "TransitGatewayAttachmentId" + ], + "typeName": "AWS::EC2::TransitGatewayRouteTableAssociation" +} diff --git a/src/cfnlint/data/schemas/providers/ap_south_2/aws-elasticache-user.json b/src/cfnlint/data/schemas/providers/ap_south_2/aws-elasticache-user.json deleted file mode 100644 index 0775783108..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_south_2/aws-elasticache-user.json +++ /dev/null @@ -1,166 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/UserId", - "/properties/UserName", - "/properties/Engine" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z0-9 _\\.\\/=+:\\-@]*$", - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "pattern": "^[a-zA-Z0-9 _\\.\\/=+:\\-@]*$", - "type": "string" - } - }, - "required": [ - "Key" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "elasticache:CreateUser", - "elasticache:DescribeUsers", - "elasticache:ListTagsForResource", - "elasticache:AddTagsToResource" - ] - }, - "delete": { - "permissions": [ - "elasticache:DeleteUser", - "elasticache:DescribeUsers" - ] - }, - "list": { - "permissions": [ - "elasticache:DescribeUsers", - "elasticache:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "elasticache:DescribeUsers", - "elasticache:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "elasticache:ModifyUser", - "elasticache:DescribeUsers", - "elasticache:ListTagsForResource", - "elasticache:AddTagsToResource", - "elasticache:RemoveTagsFromResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/UserId" - ], - "properties": { - "AccessString": { - "type": "string" - }, - "Arn": { - "type": "string" - }, - "AuthenticationMode": { - "additionalProperties": false, - "properties": { - "Passwords": { - "$comment": "List of passwords.", - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Type": { - "enum": [ - "password", - "no-password-required", - "iam" - ], - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "Engine": { - "enum": [ - "redis" - ], - "type": "string" - }, - "NoPasswordRequired": { - "type": "boolean" - }, - "Passwords": { - "$comment": "List of passwords.", - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Status": { - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "UserId": { - "pattern": "[a-z][a-z0-9\\\\-]*", - "type": "string" - }, - "UserName": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Status", - "/properties/Arn" - ], - "required": [ - "UserId", - "UserName", - "Engine" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticache", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::ElastiCache::User", - "writeOnlyProperties": [ - "/properties/Passwords", - "/properties/NoPasswordRequired", - "/properties/AccessString", - "/properties/AuthenticationMode" - ] -} diff --git a/src/cfnlint/data/schemas/providers/ap_south_2/aws-lambda-eventsourcemapping.json b/src/cfnlint/data/schemas/providers/ap_south_2/aws-lambda-eventsourcemapping.json new file mode 100644 index 0000000000..cb7599c139 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_south_2/aws-lambda-eventsourcemapping.json @@ -0,0 +1,353 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::Lambda::EventSourceMapping/Properties" + ], + "createOnlyProperties": [ + "/properties/EventSourceArn", + "/properties/StartingPosition", + "/properties/StartingPositionTimestamp", + "/properties/SelfManagedEventSource", + "/properties/AmazonManagedKafkaEventSourceConfig", + "/properties/SelfManagedKafkaEventSourceConfig" + ], + "definitions": { + "AmazonManagedKafkaEventSourceConfig": { + "additionalProperties": false, + "properties": { + "ConsumerGroupId": { + "$ref": "#/definitions/ConsumerGroupId" + } + }, + "type": "object" + }, + "ConsumerGroupId": { + "maxLength": 200, + "minLength": 1, + "pattern": "[a-zA-Z0-9-\\/*:_+=.@-]*", + "type": "string" + }, + "DestinationConfig": { + "additionalProperties": false, + "properties": { + "OnFailure": { + "$ref": "#/definitions/OnFailure" + } + }, + "type": "object" + }, + "DocumentDBEventSourceConfig": { + "additionalProperties": false, + "properties": { + "CollectionName": { + "maxLength": 57, + "minLength": 1, + "type": "string" + }, + "DatabaseName": { + "maxLength": 63, + "minLength": 1, + "type": "string" + }, + "FullDocument": { + "enum": [ + "UpdateLookup", + "Default" + ], + "type": "string" + } + }, + "type": "object" + }, + "Endpoints": { + "additionalProperties": false, + "properties": { + "KafkaBootstrapServers": { + "items": { + "maxLength": 300, + "minLength": 1, + "pattern": "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9]):[0-9]{1,5}", + "type": "string" + }, + "maxItems": 10, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "Filter": { + "additionalProperties": false, + "properties": { + "Pattern": { + "maxLength": 4096, + "minLength": 0, + "pattern": ".*", + "type": "string" + } + }, + "type": "object" + }, + "FilterCriteria": { + "additionalProperties": false, + "properties": { + "Filters": { + "items": { + "$ref": "#/definitions/Filter" + }, + "maxItems": 20, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "MaximumConcurrency": { + "maximum": 1000, + "minimum": 2, + "type": "integer" + }, + "OnFailure": { + "additionalProperties": false, + "properties": { + "Destination": { + "maxLength": 1024, + "minLength": 12, + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "type": "string" + } + }, + "type": "object" + }, + "ScalingConfig": { + "additionalProperties": false, + "properties": { + "MaximumConcurrency": { + "$ref": "#/definitions/MaximumConcurrency" + } + }, + "type": "object" + }, + "SelfManagedEventSource": { + "additionalProperties": false, + "properties": { + "Endpoints": { + "$ref": "#/definitions/Endpoints" + } + }, + "type": "object" + }, + "SelfManagedKafkaEventSourceConfig": { + "additionalProperties": false, + "properties": { + "ConsumerGroupId": { + "$ref": "#/definitions/ConsumerGroupId" + } + }, + "type": "object" + }, + "SourceAccessConfiguration": { + "additionalProperties": false, + "properties": { + "Type": { + "enum": [ + "BASIC_AUTH", + "VPC_SUBNET", + "VPC_SECURITY_GROUP", + "SASL_SCRAM_512_AUTH", + "SASL_SCRAM_256_AUTH", + "VIRTUAL_HOST", + "CLIENT_CERTIFICATE_TLS_AUTH", + "SERVER_ROOT_CA_CERTIFICATE" + ], + "type": "string" + }, + "URI": { + "maxLength": 200, + "minLength": 1, + "pattern": "[a-zA-Z0-9-\\/*:_+=.@-]*", + "type": "string" + } + }, + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "lambda:CreateEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + }, + "delete": { + "permissions": [ + "lambda:DeleteEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + }, + "list": { + "permissions": [ + "lambda:ListEventSourceMappings" + ] + }, + "read": { + "permissions": [ + "lambda:GetEventSourceMapping" + ] + }, + "update": { + "permissions": [ + "lambda:UpdateEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AmazonManagedKafkaEventSourceConfig": { + "$ref": "#/definitions/AmazonManagedKafkaEventSourceConfig" + }, + "BatchSize": { + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "BisectBatchOnFunctionError": { + "type": "boolean" + }, + "DestinationConfig": { + "$ref": "#/definitions/DestinationConfig" + }, + "DocumentDBEventSourceConfig": { + "$ref": "#/definitions/DocumentDBEventSourceConfig" + }, + "Enabled": { + "type": "boolean" + }, + "EventSourceArn": { + "maxLength": 1024, + "minLength": 12, + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "type": "string" + }, + "FilterCriteria": { + "$ref": "#/definitions/FilterCriteria" + }, + "FunctionName": { + "maxLength": 140, + "minLength": 1, + "pattern": "(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?", + "type": "string" + }, + "FunctionResponseTypes": { + "items": { + "enum": [ + "ReportBatchItemFailures" + ], + "type": "string" + }, + "maxLength": 1, + "minLength": 0, + "type": "array", + "uniqueItems": true + }, + "Id": { + "maxLength": 36, + "minLength": 36, + "pattern": "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + "type": "string" + }, + "MaximumBatchingWindowInSeconds": { + "maximum": 300, + "minimum": 0, + "type": "integer" + }, + "MaximumRecordAgeInSeconds": { + "maximum": 604800, + "minimum": -1, + "type": "integer" + }, + "MaximumRetryAttempts": { + "maximum": 10000, + "minimum": -1, + "type": "integer" + }, + "ParallelizationFactor": { + "maximum": 10, + "minimum": 1, + "type": "integer" + }, + "Queues": { + "items": { + "maxLength": 1000, + "minLength": 1, + "pattern": "[\\s\\S]*", + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "ScalingConfig": { + "$ref": "#/definitions/ScalingConfig" + }, + "SelfManagedEventSource": { + "$ref": "#/definitions/SelfManagedEventSource" + }, + "SelfManagedKafkaEventSourceConfig": { + "$ref": "#/definitions/SelfManagedKafkaEventSourceConfig" + }, + "SourceAccessConfigurations": { + "items": { + "$ref": "#/definitions/SourceAccessConfiguration" + }, + "maxItems": 22, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "StartingPosition": { + "enum": [ + "TRIM_HORIZON", + "LATEST", + "AT_TIMESTAMP" + ], + "maxLength": 12, + "minLength": 6, + "pattern": "(LATEST|TRIM_HORIZON|AT_TIMESTAMP)+", + "type": "string" + }, + "StartingPositionTimestamp": { + "type": "number" + }, + "Topics": { + "items": { + "maxLength": 249, + "minLength": 1, + "pattern": "^[^.]([a-zA-Z0-9\\-_.]+)", + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "TumblingWindowInSeconds": { + "maximum": 900, + "minimum": 0, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "FunctionName" + ], + "typeName": "AWS::Lambda::EventSourceMapping" +} diff --git a/src/cfnlint/data/schemas/providers/ap_south_2/aws-redshift-cluster.json b/src/cfnlint/data/schemas/providers/ap_south_2/aws-redshift-cluster.json deleted file mode 100644 index a354cb134c..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_south_2/aws-redshift-cluster.json +++ /dev/null @@ -1,184 +0,0 @@ -{ - "additionalProperties": false, - "cfnLint": "AWS::Redshift::Cluster/Properties", - "createOnlyProperties": [ - "/properties/KmsKeyId", - "/properties/MasterUsername", - "/properties/OwnerAccount", - "/properties/SnapshotIdentifier", - "/properties/Encrypted", - "/properties/Port", - "/properties/DBName", - "/properties/SnapshotClusterIdentifier", - "/properties/AvailabilityZone", - "/properties/ClusterSubnetGroupName", - "/properties/ClusterIdentifier", - "/properties/ElasticIp" - ], - "definitions": { - "LoggingProperties": { - "additionalProperties": false, - "properties": { - "BucketName": { - "type": "string" - }, - "S3KeyPrefix": { - "type": "string" - } - }, - "required": [ - "BucketName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AllowVersionUpgrade": { - "type": "boolean" - }, - "AutomatedSnapshotRetentionPeriod": { - "type": "integer" - }, - "AvailabilityZone": { - "type": "string" - }, - "ClusterIdentifier": { - "type": "string" - }, - "ClusterParameterGroupName": { - "type": "string" - }, - "ClusterSecurityGroups": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "ClusterSubnetGroupName": { - "type": "string" - }, - "ClusterType": { - "type": "string" - }, - "ClusterVersion": { - "type": "string" - }, - "DBName": { - "type": "string" - }, - "ElasticIp": { - "type": "string" - }, - "Encrypted": { - "type": "boolean" - }, - "EndpointAddress": { - "type": "string" - }, - "EndpointPort": { - "type": "string" - }, - "HsmClientCertificateIdentifier": { - "type": "string" - }, - "HsmConfigurationIdentifier": { - "type": "string" - }, - "IamRoles": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Id": { - "type": "string" - }, - "KmsKeyId": { - "type": "string" - }, - "LoggingProperties": { - "$ref": "#/definitions/LoggingProperties" - }, - "MasterUserPassword": { - "type": "string" - }, - "MasterUsername": { - "type": "string" - }, - "NodeType": { - "cfnLint": "AWS::Redshift::Cluster/Properties/NodeType", - "type": "string" - }, - "NumberOfNodes": { - "maximum": 100, - "minimum": 1, - "type": "integer" - }, - "OwnerAccount": { - "type": "string" - }, - "Port": { - "type": "integer" - }, - "PreferredMaintenanceWindow": { - "type": "string" - }, - "PubliclyAccessible": { - "type": "boolean" - }, - "SnapshotClusterIdentifier": { - "type": "string" - }, - "SnapshotIdentifier": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "VpcSecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/EndpointPort", - "/properties/EndpointAddress" - ], - "required": [ - "MasterUserPassword", - "NodeType", - "MasterUsername", - "DBName", - "ClusterType" - ], - "typeName": "AWS::Redshift::Cluster" -} diff --git a/src/cfnlint/data/schemas/providers/ap_south_2/aws-redshift-clusterparametergroup.json b/src/cfnlint/data/schemas/providers/ap_south_2/aws-redshift-clusterparametergroup.json deleted file mode 100644 index da0d11f5b9..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_south_2/aws-redshift-clusterparametergroup.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ParameterGroupFamily", - "/properties/Description" - ], - "definitions": { - "Parameter": { - "additionalProperties": false, - "properties": { - "ParameterName": { - "type": "string" - }, - "ParameterValue": { - "type": "string" - } - }, - "required": [ - "ParameterValue", - "ParameterName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Description": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "ParameterGroupFamily": { - "type": "string" - }, - "Parameters": { - "items": { - "$ref": "#/definitions/Parameter" - }, - "type": "array", - "uniqueItems": false - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Description", - "ParameterGroupFamily" - ], - "typeName": "AWS::Redshift::ClusterParameterGroup" -} diff --git a/src/cfnlint/data/schemas/providers/ap_south_2/aws-redshift-clustersubnetgroup.json b/src/cfnlint/data/schemas/providers/ap_south_2/aws-redshift-clustersubnetgroup.json deleted file mode 100644 index 96ded934d4..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_south_2/aws-redshift-clustersubnetgroup.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "additionalProperties": false, - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Description": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "SubnetIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Description", - "SubnetIds" - ], - "typeName": "AWS::Redshift::ClusterSubnetGroup" -} 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 3efc1ac0c2..56ce30a46b 100644 --- a/src/cfnlint/data/schemas/providers/ap_southeast_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/ap_southeast_1/__init__.py @@ -10,6 +10,7 @@ "AWS::ApiGatewayV2::ApiMapping", "AWS::CE::AnomalySubscription", "AWS::Shield::DRTAccess", + "AWS::Deadline::Farm", "AWS::SSO::Assignment", "AWS::Glue::Partition", "AWS::RDS::Integration", @@ -42,6 +43,7 @@ "AWS::EC2::NetworkPerformanceMetricSubscription", "AWS::MediaLive::Channel", "AWS::Greengrass::DeviceDefinition", + "AWS::CleanRoomsML::TrainingDataset", "AWS::CloudFront::ContinuousDeploymentPolicy", "AWS::QuickSight::Analysis", "AWS::Kendra::Faq", @@ -129,6 +131,7 @@ "AWS::CloudTrail::EventDataStore", "AWS::AppIntegrations::Application", "AWS::KinesisFirehose::DeliveryStream", + "AWS::Deadline::QueueFleetAssociation", "AWS::EC2::NetworkInsightsAccessScope", "AWS::Cognito::UserPoolUserToGroupAttachment", "AWS::PCAConnectorAD::DirectoryRegistration", @@ -219,6 +222,7 @@ "AWS::RoboMaker::SimulationApplication", "AWS::NetworkManager::TransitGatewayRegistration", "AWS::Amplify::App", + "AWS::EntityResolution::PolicyStatement", "AWS::InspectorV2::Filter", "AWS::ElastiCache::ReplicationGroup", "AWS::StepFunctions::StateMachineAlias", @@ -280,6 +284,7 @@ "AWS::Lambda::Alias", "AWS::Logs::LogAnomalyDetector", "AWS::WAF::IPSet", + "AWS::Deadline::Fleet", "AWS::IoTTwinMaker::Workspace", "AWS::VpcLattice::ServiceNetworkServiceAssociation", "AWS::EC2::TransitGatewayMulticastDomainAssociation", @@ -387,6 +392,7 @@ "AWS::MediaPackageV2::ChannelPolicy", "AWS::ApiGatewayV2::VpcLink", "AWS::IoT::JobTemplate", + "AWS::Deadline::Queue", "AWS::ServiceCatalog::PortfolioProductAssociation", "AWS::DataBrew::Project", "AWS::VpcLattice::TargetGroup", @@ -402,6 +408,7 @@ "AWS::IAM::ServerCertificate", "AWS::CodeStarConnections::Connection", "AWS::IoT::SecurityProfile", + "AWS::GlobalAccelerator::CrossAccountAttachment", "AWS::Events::EventBus", "AWS::DocDB::EventSubscription", "AWS::SQS::QueueInlinePolicy", @@ -474,6 +481,7 @@ "AWS::Cognito::UserPoolUICustomizationAttachment", "AWS::SageMaker::NotebookInstanceLifecycleConfig", "AWS::ImageBuilder::ContainerRecipe", + "AWS::CodeConnections::Connection", "AWS::Connect::Rule", "AWS::EFS::AccessPoint", "AWS::Omics::ReferenceStore", @@ -505,6 +513,7 @@ "AWS::ImageBuilder::Workflow", "AWS::ECS::TaskSet", "AWS::Omics::VariantStore", + "AWS::SecurityLake::AwsLogSource", "AWS::AppSync::ApiKey", "AWS::CloudFormation::TypeActivation", "AWS::GroundStation::DataflowEndpointGroup", @@ -566,6 +575,7 @@ "AWS::EC2::CustomerGateway", "AWS::IAM::GroupPolicy", "AWS::Scheduler::Schedule", + "AWS::Deadline::LicenseEndpoint", "AWS::WAF::ByteMatchSet", "AWS::AmplifyUIBuilder::Theme", "AWS::Neptune::DBClusterParameterGroup", @@ -593,6 +603,7 @@ "AWS::Glue::Trigger", "AWS::GlobalAccelerator::Listener", "AWS::VerifiedPermissions::PolicyStore", + "AWS::Deadline::QueueEnvironment", "AWS::Signer::SigningProfile", "AWS::KendraRanking::ExecutionPlan", "AWS::EC2::VPCPeeringConnection", @@ -671,6 +682,7 @@ "AWS::CodeBuild::SourceCredential", "AWS::EMR::InstanceFleetConfig", "AWS::EMR::Cluster", + "AWS::SecurityLake::DataLake", "AWS::CodePipeline::Webhook", "AWS::ApiGatewayV2::DomainName", "AWS::CustomerProfiles::EventStream", @@ -762,6 +774,7 @@ "AWS::WorkSpacesWeb::TrustStore", "AWS::CustomerProfiles::Domain", "AWS::IoT::Policy", + "AWS::APS::Scraper", "AWS::EC2::TransitGatewayRoute", "AWS::SSM::MaintenanceWindow", "AWS::DataZone::Domain", @@ -784,6 +797,7 @@ "AWS::DevOpsGuru::LogAnomalyDetectionIntegration", "AWS::NetworkManager::Link", "AWS::QLDB::Stream", + "AWS::SecurityLake::Subscriber", "AWS::SageMaker::NotebookInstance", "AWS::IoTSiteWise::Dashboard", "AWS::Pinpoint::APNSVoipChannel", @@ -944,6 +958,7 @@ "AWS::CleanRooms::Collaboration", "AWS::SSM::Association", "AWS::EC2::ClientVpnEndpoint", + "AWS::EntityResolution::IdNamespace", "AWS::CloudFront::ResponseHeadersPolicy", "AWS::SecurityHub::AutomationRule", "AWS::MSK::ClusterPolicy", @@ -971,8 +986,10 @@ "AWS::Route53Resolver::OutpostResolver", "AWS::ACMPCA::Certificate", "AWS::EC2::IPAMAllocation", + "AWS::Deadline::StorageProfile", "AWS::WorkSpaces::Workspace", "AWS::EMR::Studio", + "AWS::Deadline::MeteredProduct", "AWS::EC2::InstanceConnectEndpoint", "AWS::DAX::ParameterGroup", "AWS::DataZone::SubscriptionTarget", @@ -1145,6 +1162,7 @@ "aws-apigatewayv2-apimapping.json", "aws-ce-anomalysubscription.json", "aws-shield-drtaccess.json", + "aws-deadline-farm.json", "aws-sso-assignment.json", "aws-glue-partition.json", "aws-rds-integration.json", @@ -1176,6 +1194,7 @@ "aws-ec2-networkperformancemetricsubscription.json", "aws-medialive-channel.json", "aws-greengrass-devicedefinition.json", + "aws-cleanroomsml-trainingdataset.json", "aws-cloudfront-continuousdeploymentpolicy.json", "aws-quicksight-analysis.json", "aws-kendra-faq.json", @@ -1196,7 +1215,6 @@ "aws-apigatewayv2-integrationresponse.json", "aws-iotevents-input.json", "aws-ec2-networkacl.json", - "aws-lambda-eventsourcemapping.json", "aws-budgets-budgetsaction.json", "aws-logs-resourcepolicy.json", "aws-lex-botversion.json", @@ -1263,6 +1281,7 @@ "aws-cloudtrail-eventdatastore.json", "aws-appintegrations-application.json", "aws-kinesisfirehose-deliverystream.json", + "aws-deadline-queuefleetassociation.json", "aws-ec2-networkinsightsaccessscope.json", "aws-cognito-userpoolusertogroupattachment.json", "aws-pcaconnectorad-directoryregistration.json", @@ -1302,6 +1321,7 @@ "aws-iotsitewise-portal.json", "aws-events-archive.json", "aws-msk-cluster.json", + "aws-securityhub-delegatedadmin.json", "aws-controltower-enabledbaseline.json", "aws-appstream-appblockbuilder.json", "aws-ec2-vpcendpointconnectionnotification.json", @@ -1352,6 +1372,7 @@ "aws-robomaker-simulationapplication.json", "aws-networkmanager-transitgatewayregistration.json", "aws-amplify-app.json", + "aws-entityresolution-policystatement.json", "aws-inspectorv2-filter.json", "aws-elasticache-replicationgroup.json", "aws-stepfunctions-statemachinealias.json", @@ -1412,6 +1433,7 @@ "aws-lambda-alias.json", "aws-logs-loganomalydetector.json", "aws-waf-ipset.json", + "aws-deadline-fleet.json", "aws-iottwinmaker-workspace.json", "aws-vpclattice-servicenetworkserviceassociation.json", "aws-ec2-transitgatewaymulticastdomainassociation.json", @@ -1518,6 +1540,7 @@ "aws-mediaconnect-bridgesource.json", "aws-mediapackagev2-channelpolicy.json", "aws-iot-jobtemplate.json", + "aws-deadline-queue.json", "aws-servicecatalog-portfolioproductassociation.json", "aws-databrew-project.json", "aws-vpclattice-targetgroup.json", @@ -1533,6 +1556,7 @@ "aws-iam-servercertificate.json", "aws-codestarconnections-connection.json", "aws-iot-securityprofile.json", + "aws-globalaccelerator-crossaccountattachment.json", "aws-events-eventbus.json", "aws-docdb-eventsubscription.json", "aws-sqs-queueinlinepolicy.json", @@ -1583,8 +1607,10 @@ "aws-codebuild-project.json", "aws-efs-filesystem.json", "aws-pinpoint-apnsvoipsandboxchannel.json", + "aws-config-organizationconformancepack.json", "aws-connect-quickconnect.json", "aws-logs-querydefinition.json", + "aws-securityhub-productsubscription.json", "aws-iam-instanceprofile.json", "aws-iot-billinggroup.json", "aws-appstream-application.json", @@ -1592,7 +1618,6 @@ "aws-amplify-domain.json", "aws-kinesisanalyticsv2-applicationoutput.json", "aws-medialive-inputsecuritygroup.json", - "aws-sagemaker-domain.json", "aws-greengrass-coredefinitionversion.json", "aws-codebuild-fleet.json", "aws-certificatemanager-certificate.json", @@ -1603,6 +1628,7 @@ "aws-cognito-userpooluicustomizationattachment.json", "aws-sagemaker-notebookinstancelifecycleconfig.json", "aws-imagebuilder-containerrecipe.json", + "aws-codeconnections-connection.json", "aws-connect-rule.json", "aws-efs-accesspoint.json", "aws-omics-referencestore.json", @@ -1634,6 +1660,7 @@ "aws-imagebuilder-workflow.json", "aws-ecs-taskset.json", "aws-omics-variantstore.json", + "aws-securitylake-awslogsource.json", "aws-appsync-apikey.json", "aws-cloudformation-typeactivation.json", "aws-groundstation-dataflowendpointgroup.json", @@ -1694,6 +1721,7 @@ "aws-ec2-customergateway.json", "aws-iam-grouppolicy.json", "aws-scheduler-schedule.json", + "aws-deadline-licenseendpoint.json", "aws-waf-bytematchset.json", "aws-amplifyuibuilder-theme.json", "aws-emrserverless-application.json", @@ -1720,6 +1748,7 @@ "aws-glue-trigger.json", "aws-globalaccelerator-listener.json", "aws-verifiedpermissions-policystore.json", + "aws-deadline-queueenvironment.json", "aws-signer-signingprofile.json", "aws-kendraranking-executionplan.json", "aws-ec2-vpcpeeringconnection.json", @@ -1798,6 +1827,7 @@ "aws-codebuild-sourcecredential.json", "aws-emr-instancefleetconfig.json", "aws-emr-cluster.json", + "aws-securitylake-datalake.json", "aws-codepipeline-webhook.json", "aws-apigatewayv2-domainname.json", "aws-customerprofiles-eventstream.json", @@ -1833,12 +1863,11 @@ "aws-datasync-locationefs.json", "aws-ec2-localgatewayroutetable.json", "aws-apigateway-resource.json", - "aws-sagemaker-appimageconfig.json", - "aws-verifiedpermissions-identitysource.json", "aws-macie-session.json", "aws-elasticloadbalancingv2-targetgroup.json", "aws-applicationautoscaling-scalingpolicy.json", "aws-pipes-pipe.json", + "aws-iotsitewise-gateway.json", "aws-emr-studiosessionmapping.json", "aws-cloudformation-macro.json", "aws-robomaker-robotapplication.json", @@ -1886,6 +1915,7 @@ "aws-workspacesweb-truststore.json", "aws-customerprofiles-domain.json", "aws-iot-policy.json", + "aws-aps-scraper.json", "aws-ec2-transitgatewayroute.json", "aws-ssm-maintenancewindow.json", "aws-datazone-domain.json", @@ -1908,6 +1938,7 @@ "aws-devopsguru-loganomalydetectionintegration.json", "aws-networkmanager-link.json", "aws-qldb-stream.json", + "aws-securitylake-subscriber.json", "aws-sagemaker-notebookinstance.json", "aws-iotsitewise-dashboard.json", "aws-pinpoint-apnsvoipchannel.json", @@ -1943,6 +1974,7 @@ "aws-gamelift-matchmakingruleset.json", "aws-ec2-egressonlyinternetgateway.json", "aws-athena-capacityreservation.json", + "aws-securityhub-insight.json", "aws-config-conformancepack.json", "aws-ec2-vpccidrblock.json", "aws-aps-workspace.json", @@ -1952,7 +1984,6 @@ "aws-iam-virtualmfadevice.json", "aws-ec2-networkinsightspath.json", "aws-mediatailor-vodsource.json", - "aws-acmpca-certificateauthority.json", "aws-athena-preparedstatement.json", "aws-autoscaling-scheduledaction.json", "aws-omics-sequencestore.json", @@ -2043,9 +2074,9 @@ "aws-glue-workflow.json", "aws-apigatewayv2-authorizer.json", "aws-iot-accountauditconfiguration.json", - "aws-sagemaker-userprofile.json", "aws-personalize-dataset.json", "aws-ec2-prefixlist.json", + "aws-ec2-instance.json", "aws-opensearchserverless-securityconfig.json", "aws-networkmanager-device.json", "aws-proton-environmentaccountconnection.json", @@ -2063,6 +2094,7 @@ "aws-cleanrooms-collaboration.json", "aws-ssm-association.json", "aws-ec2-clientvpnendpoint.json", + "aws-entityresolution-idnamespace.json", "aws-cloudfront-responseheaderspolicy.json", "aws-securityhub-automationrule.json", "aws-msk-clusterpolicy.json", @@ -2089,8 +2121,10 @@ "aws-route53resolver-outpostresolver.json", "aws-acmpca-certificate.json", "aws-ec2-ipamallocation.json", + "aws-deadline-storageprofile.json", "aws-workspaces-workspace.json", "aws-emr-studio.json", + "aws-deadline-meteredproduct.json", "aws-ec2-instanceconnectendpoint.json", "aws-dax-parametergroup.json", "aws-datazone-subscriptiontarget.json", @@ -2108,7 +2142,6 @@ "aws-organizations-organizationalunit.json", "aws-appsync-datasource.json", "aws-sqs-queue.json", - "aws-ec2-securitygroupingress.json", "aws-guardduty-detector.json", "aws-sagemaker-modelqualityjobdefinition.json", "aws-iot-provisioningtemplate.json", diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-acmpca-certificateauthority.json b/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-acmpca-certificateauthority.json new file mode 100644 index 0000000000..08ec85e5fa --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-acmpca-certificateauthority.json @@ -0,0 +1,429 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Type", + "/properties/KeyAlgorithm", + "/properties/SigningAlgorithm", + "/properties/Subject", + "/properties/CsrExtensions", + "/properties/KeyStorageSecurityStandard", + "/properties/UsageMode" + ], + "definitions": { + "AccessDescription": { + "additionalProperties": false, + "properties": { + "AccessLocation": { + "$ref": "#/definitions/GeneralName" + }, + "AccessMethod": { + "$ref": "#/definitions/AccessMethod" + } + }, + "required": [ + "AccessMethod", + "AccessLocation" + ], + "type": "object" + }, + "AccessMethod": { + "additionalProperties": false, + "properties": { + "AccessMethodType": { + "$ref": "#/definitions/AccessMethodType" + }, + "CustomObjectIdentifier": { + "$ref": "#/definitions/CustomObjectIdentifier" + } + }, + "type": "object" + }, + "AccessMethodType": { + "type": "string" + }, + "Arn": { + "type": "string" + }, + "CrlConfiguration": { + "additionalProperties": false, + "properties": { + "CrlDistributionPointExtensionConfiguration": { + "$ref": "#/definitions/CrlDistributionPointExtensionConfiguration" + }, + "CustomCname": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + }, + "ExpirationInDays": { + "type": "integer" + }, + "S3BucketName": { + "type": "string" + }, + "S3ObjectAcl": { + "type": "string" + } + }, + "type": "object" + }, + "CrlDistributionPointExtensionConfiguration": { + "additionalProperties": false, + "properties": { + "OmitExtension": { + "type": "boolean" + } + }, + "required": [ + "OmitExtension" + ], + "type": "object" + }, + "CsrExtensions": { + "additionalProperties": false, + "properties": { + "KeyUsage": { + "$ref": "#/definitions/KeyUsage" + }, + "SubjectInformationAccess": { + "$ref": "#/definitions/SubjectInformationAccess" + } + }, + "type": "object" + }, + "CustomAttribute": { + "additionalProperties": false, + "properties": { + "ObjectIdentifier": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "ObjectIdentifier", + "Value" + ], + "type": "object" + }, + "CustomAttributeList": { + "items": { + "$ref": "#/definitions/CustomAttribute" + }, + "type": "array" + }, + "CustomObjectIdentifier": { + "type": "string" + }, + "DnsName": { + "type": "string" + }, + "EdiPartyName": { + "additionalProperties": false, + "properties": { + "NameAssigner": { + "type": "string" + }, + "PartyName": { + "type": "string" + } + }, + "required": [ + "PartyName", + "NameAssigner" + ], + "type": "object" + }, + "GeneralName": { + "additionalProperties": false, + "properties": { + "DirectoryName": { + "$ref": "#/definitions/Subject" + }, + "DnsName": { + "$ref": "#/definitions/DnsName" + }, + "EdiPartyName": { + "$ref": "#/definitions/EdiPartyName" + }, + "IpAddress": { + "$ref": "#/definitions/IpAddress" + }, + "OtherName": { + "$ref": "#/definitions/OtherName" + }, + "RegisteredId": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Rfc822Name": { + "$ref": "#/definitions/Rfc822Name" + }, + "UniformResourceIdentifier": { + "$ref": "#/definitions/UniformResourceIdentifier" + } + }, + "type": "object" + }, + "IpAddress": { + "type": "string" + }, + "KeyUsage": { + "additionalProperties": false, + "properties": { + "CRLSign": { + "default": false, + "type": "boolean" + }, + "DataEncipherment": { + "default": false, + "type": "boolean" + }, + "DecipherOnly": { + "default": false, + "type": "boolean" + }, + "DigitalSignature": { + "default": false, + "type": "boolean" + }, + "EncipherOnly": { + "default": false, + "type": "boolean" + }, + "KeyAgreement": { + "default": false, + "type": "boolean" + }, + "KeyCertSign": { + "default": false, + "type": "boolean" + }, + "KeyEncipherment": { + "default": false, + "type": "boolean" + }, + "NonRepudiation": { + "default": false, + "type": "boolean" + } + }, + "type": "object" + }, + "OcspConfiguration": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + }, + "OcspCustomCname": { + "type": "string" + } + }, + "type": "object" + }, + "OtherName": { + "additionalProperties": false, + "properties": { + "TypeId": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "TypeId", + "Value" + ], + "type": "object" + }, + "RevocationConfiguration": { + "additionalProperties": false, + "properties": { + "CrlConfiguration": { + "$ref": "#/definitions/CrlConfiguration" + }, + "OcspConfiguration": { + "$ref": "#/definitions/OcspConfiguration" + } + }, + "type": "object" + }, + "Rfc822Name": { + "type": "string" + }, + "Subject": { + "additionalProperties": false, + "properties": { + "CommonName": { + "type": "string" + }, + "Country": { + "type": "string" + }, + "CustomAttributes": { + "$ref": "#/definitions/CustomAttributeList" + }, + "DistinguishedNameQualifier": { + "type": "string" + }, + "GenerationQualifier": { + "type": "string" + }, + "GivenName": { + "type": "string" + }, + "Initials": { + "type": "string" + }, + "Locality": { + "type": "string" + }, + "Organization": { + "type": "string" + }, + "OrganizationalUnit": { + "type": "string" + }, + "Pseudonym": { + "type": "string" + }, + "SerialNumber": { + "type": "string" + }, + "State": { + "type": "string" + }, + "Surname": { + "type": "string" + }, + "Title": { + "type": "string" + } + }, + "type": "object" + }, + "SubjectInformationAccess": { + "items": { + "$ref": "#/definitions/AccessDescription" + }, + "type": "array" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "UniformResourceIdentifier": { + "type": "string" + } + }, + "handlers": { + "create": { + "permissions": [ + "acm-pca:CreateCertificateAuthority", + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr" + ] + }, + "delete": { + "permissions": [ + "acm-pca:DeleteCertificateAuthority", + "acm-pca:DescribeCertificateAuthority" + ] + }, + "list": { + "permissions": [ + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr", + "acm-pca:ListCertificateAuthorities", + "acm-pca:ListTags" + ] + }, + "read": { + "permissions": [ + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr", + "acm-pca:ListTags" + ] + }, + "update": { + "permissions": [ + "acm-pca:ListTags", + "acm-pca:TagCertificateAuthority", + "acm-pca:UntagCertificateAuthority", + "acm-pca:UpdateCertificateAuthority" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "$ref": "#/definitions/Arn" + }, + "CertificateSigningRequest": { + "type": "string" + }, + "CsrExtensions": { + "$ref": "#/definitions/CsrExtensions" + }, + "KeyAlgorithm": { + "type": "string" + }, + "KeyStorageSecurityStandard": { + "type": "string" + }, + "RevocationConfiguration": { + "$ref": "#/definitions/RevocationConfiguration" + }, + "SigningAlgorithm": { + "type": "string" + }, + "Subject": { + "$ref": "#/definitions/Subject" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "Type": { + "type": "string" + }, + "UsageMode": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CertificateSigningRequest" + ], + "required": [ + "Type", + "KeyAlgorithm", + "SigningAlgorithm", + "Subject" + ], + "sourceUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_ACMPCA.html", + "typeName": "AWS::ACMPCA::CertificateAuthority", + "writeOnlyProperties": [ + "/properties/Subject", + "/properties/Subject", + "/properties/CsrExtensions", + "/properties/Tags", + "/properties/RevocationConfiguration", + "/properties/KeyStorageSecurityStandard" + ] +} diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-config-organizationconformancepack.json b/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-config-organizationconformancepack.json deleted file mode 100644 index 884dc86cd9..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-config-organizationconformancepack.json +++ /dev/null @@ -1,151 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/OrganizationConformancePackName" - ], - "definitions": { - "AccountId": { - "type": "string" - }, - "ConformancePackInputParameter": { - "properties": { - "ParameterName": { - "$ref": "#/definitions/ParameterName" - }, - "ParameterValue": { - "$ref": "#/definitions/ParameterValue" - } - }, - "required": [ - "ParameterName", - "ParameterValue" - ], - "type": "object" - }, - "ParameterName": { - "maxLength": 255, - "minLength": 0, - "type": "string" - }, - "ParameterValue": { - "maxLength": 4096, - "minLength": 0, - "type": "string" - } - }, - "documentationUrl": "https://docs.aws.amazon.com/config/latest/developerguide/conformance-pack-organization-apis.html", - "handlers": { - "create": { - "permissions": [ - "config:PutOrganizationConformancePack", - "config:DescribeOrganizationConformancePackStatuses", - "config:GetOrganizationConformancePackDetailedStatus", - "config:DescribeOrganizationConformancePacks", - "s3:GetObject", - "s3:GetBucketAcl", - "iam:CreateServiceLinkedRole", - "iam:PassRole", - "organizations:ListDelegatedAdministrators", - "organizations:EnableAWSServiceAccess" - ], - "timeoutInMinutes": 706 - }, - "delete": { - "permissions": [ - "config:DeleteOrganizationConformancePack", - "config:DescribeOrganizationConformancePackStatuses", - "config:GetOrganizationConformancePackDetailedStatus", - "organizations:ListDelegatedAdministrators" - ], - "timeoutInMinutes": 706 - }, - "list": { - "permissions": [ - "config:DescribeOrganizationConformancePacks" - ] - }, - "read": { - "permissions": [ - "config:DescribeOrganizationConformancePacks" - ] - }, - "update": { - "permissions": [ - "config:PutOrganizationConformancePack", - "config:DescribeOrganizationConformancePackStatuses", - "config:GetOrganizationConformancePackDetailedStatus", - "s3:GetObject", - "s3:GetBucketAcl", - "iam:CreateServiceLinkedRole", - "iam:PassRole", - "organizations:ListDelegatedAdministrators", - "organizations:EnableAWSServiceAccess" - ], - "timeoutInMinutes": 706 - } - }, - "primaryIdentifier": [ - "/properties/OrganizationConformancePackName" - ], - "properties": { - "ConformancePackInputParameters": { - "items": { - "$ref": "#/definitions/ConformancePackInputParameter" - }, - "maxItems": 60, - "minItems": 0, - "type": "array" - }, - "DeliveryS3Bucket": { - "maxLength": 63, - "minLength": 0, - "type": "string" - }, - "DeliveryS3KeyPrefix": { - "maxLength": 1024, - "minLength": 0, - "type": "string" - }, - "ExcludedAccounts": { - "items": { - "$ref": "#/definitions/AccountId" - }, - "maxItems": 1000, - "minItems": 0, - "type": "array" - }, - "OrganizationConformancePackName": { - "maxLength": 128, - "minLength": 1, - "pattern": "[a-zA-Z][-a-zA-Z0-9]*", - "type": "string" - }, - "TemplateBody": { - "maxLength": 51200, - "minLength": 1, - "type": "string" - }, - "TemplateS3Uri": { - "maxLength": 1024, - "minLength": 1, - "pattern": "s3://.*", - "type": "string" - } - }, - "required": [ - "OrganizationConformancePackName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-config.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagProperty": "/properties/Tags", - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::Config::OrganizationConformancePack", - "writeOnlyProperties": [ - "/properties/TemplateBody", - "/properties/TemplateS3Uri" - ] -} diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-ec2-instance.json b/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-ec2-instance.json deleted file mode 100644 index 7b3bfed595..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-ec2-instance.json +++ /dev/null @@ -1,571 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ElasticGpuSpecifications", - "/properties/Ipv6Addresses", - "/properties/PlacementGroupName", - "/properties/HostResourceGroupArn", - "/properties/ImageId", - "/properties/CpuOptions", - "/properties/PrivateIpAddress", - "/properties/ElasticInferenceAccelerators", - "/properties/EnclaveOptions", - "/properties/HibernationOptions", - "/properties/KeyName", - "/properties/LicenseSpecifications", - "/properties/NetworkInterfaces", - "/properties/AvailabilityZone", - "/properties/SubnetId", - "/properties/LaunchTemplate", - "/properties/SecurityGroups", - "/properties/Ipv6AddressCount" - ], - "definitions": { - "AssociationParameter": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "BlockDeviceMapping": { - "additionalProperties": false, - "properties": { - "DeviceName": { - "type": "string" - }, - "Ebs": { - "$ref": "#/definitions/Ebs" - }, - "NoDevice": { - "$ref": "#/definitions/NoDevice" - }, - "VirtualName": { - "type": "string" - } - }, - "required": [ - "DeviceName" - ], - "requiredXor": [ - "VirtualName", - "Ebs", - "NoDevice" - ], - "type": "object" - }, - "CpuOptions": { - "additionalProperties": false, - "properties": { - "CoreCount": { - "type": "integer" - }, - "ThreadsPerCore": { - "type": "integer" - } - }, - "type": "object" - }, - "CreditSpecification": { - "additionalProperties": false, - "properties": { - "CPUCredits": { - "type": "string" - } - }, - "type": "object" - }, - "Ebs": { - "additionalProperties": false, - "properties": { - "DeleteOnTermination": { - "type": "boolean" - }, - "Encrypted": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "KmsKeyId": { - "type": "string" - }, - "SnapshotId": { - "type": "string" - }, - "VolumeSize": { - "type": "integer" - }, - "VolumeType": { - "type": "string" - } - }, - "type": "object" - }, - "ElasticGpuSpecification": { - "additionalProperties": false, - "properties": { - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "ElasticInferenceAccelerator": { - "additionalProperties": false, - "properties": { - "Count": { - "type": "integer" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "EnclaveOptions": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - } - }, - "type": "object" - }, - "HibernationOptions": { - "additionalProperties": false, - "properties": { - "Configured": { - "type": "boolean" - } - }, - "type": "object" - }, - "InstanceIpv6Address": { - "additionalProperties": false, - "properties": { - "Ipv6Address": { - "type": "string" - } - }, - "required": [ - "Ipv6Address" - ], - "type": "object" - }, - "LaunchTemplateSpecification": { - "additionalProperties": false, - "properties": { - "LaunchTemplateId": { - "type": "string" - }, - "LaunchTemplateName": { - "type": "string" - }, - "Version": { - "type": "string" - } - }, - "required": [ - "Version" - ], - "type": "object" - }, - "LicenseSpecification": { - "additionalProperties": false, - "properties": { - "LicenseConfigurationArn": { - "type": "string" - } - }, - "required": [ - "LicenseConfigurationArn" - ], - "type": "object" - }, - "NetworkInterface": { - "additionalProperties": false, - "properties": { - "AssociateCarrierIpAddress": { - "type": "boolean" - }, - "AssociatePublicIpAddress": { - "type": "boolean" - }, - "DeleteOnTermination": { - "type": "boolean" - }, - "Description": { - "type": "string" - }, - "DeviceIndex": { - "type": "string" - }, - "GroupSet": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": false - }, - "NetworkInterfaceId": { - "type": "string" - }, - "PrivateIpAddress": { - "type": "string" - }, - "PrivateIpAddresses": { - "items": { - "$ref": "#/definitions/PrivateIpAddressSpecification" - }, - "type": "array", - "uniqueItems": false - }, - "SecondaryPrivateIpAddressCount": { - "type": "integer" - }, - "SubnetId": { - "type": "string" - } - }, - "required": [ - "DeviceIndex" - ], - "type": "object" - }, - "NoDevice": { - "additionalProperties": false, - "type": "object" - }, - "PrivateDnsNameOptions": { - "additionalProperties": false, - "properties": { - "EnableResourceNameDnsAAAARecord": { - "type": "boolean" - }, - "EnableResourceNameDnsARecord": { - "type": "boolean" - }, - "HostnameType": { - "type": "string" - } - }, - "type": "object" - }, - "PrivateIpAddressSpecification": { - "additionalProperties": false, - "properties": { - "Primary": { - "type": "boolean" - }, - "PrivateIpAddress": { - "type": "string" - } - }, - "required": [ - "PrivateIpAddress", - "Primary" - ], - "type": "object" - }, - "SsmAssociation": { - "additionalProperties": false, - "properties": { - "AssociationParameters": { - "items": { - "$ref": "#/definitions/AssociationParameter" - }, - "type": "array", - "uniqueItems": false - }, - "DocumentName": { - "type": "string" - } - }, - "required": [ - "DocumentName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "Volume": { - "additionalProperties": false, - "properties": { - "Device": { - "type": "string" - }, - "VolumeId": { - "type": "string" - } - }, - "required": [ - "VolumeId", - "Device" - ], - "type": "object" - } - }, - "dependentExcluded": { - "NetworkInterfaces": [ - "SubnetId" - ], - "SubnetId": [ - "NetworkInterfaces" - ] - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AdditionalInfo": { - "type": "string" - }, - "Affinity": { - "enum": [ - "default", - "host" - ], - "type": "string" - }, - "AvailabilityZone": { - "cfnLint": [ - "AWS::EC2::Instance/Properties/AvailabilityZone" - ], - "type": "string" - }, - "BlockDeviceMappings": { - "items": { - "$ref": "#/definitions/BlockDeviceMapping" - }, - "type": "array", - "uniqueItems": false - }, - "CpuOptions": { - "$ref": "#/definitions/CpuOptions" - }, - "CreditSpecification": { - "$ref": "#/definitions/CreditSpecification" - }, - "DisableApiTermination": { - "type": "boolean" - }, - "EbsOptimized": { - "type": "boolean" - }, - "ElasticGpuSpecifications": { - "items": { - "$ref": "#/definitions/ElasticGpuSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "ElasticInferenceAccelerators": { - "items": { - "$ref": "#/definitions/ElasticInferenceAccelerator" - }, - "type": "array", - "uniqueItems": true - }, - "EnclaveOptions": { - "$ref": "#/definitions/EnclaveOptions" - }, - "HibernationOptions": { - "$ref": "#/definitions/HibernationOptions" - }, - "HostId": { - "type": "string" - }, - "HostResourceGroupArn": { - "type": "string" - }, - "IamInstanceProfile": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "ImageId": { - "type": "string" - }, - "InstanceInitiatedShutdownBehavior": { - "type": "string" - }, - "InstanceType": { - "cfnLint": [ - "AWS::EC2::Instance/Properties/InstanceType" - ], - "type": "string" - }, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": false - }, - "KernelId": { - "type": "string" - }, - "KeyName": { - "type": "string" - }, - "LaunchTemplate": { - "$ref": "#/definitions/LaunchTemplateSpecification" - }, - "LicenseSpecifications": { - "items": { - "$ref": "#/definitions/LicenseSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "Monitoring": { - "type": "boolean" - }, - "NetworkInterfaces": { - "items": { - "$ref": "#/definitions/NetworkInterface" - }, - "type": "array", - "uniqueItems": false - }, - "PlacementGroupName": { - "type": "string" - }, - "PrivateDnsName": { - "type": "string" - }, - "PrivateDnsNameOptions": { - "$ref": "#/definitions/PrivateDnsNameOptions" - }, - "PrivateIp": { - "type": "string" - }, - "PrivateIpAddress": { - "type": "string" - }, - "PropagateTagsToVolumeOnCreation": { - "type": "boolean" - }, - "PublicDnsName": { - "type": "string" - }, - "PublicIp": { - "type": "string" - }, - "RamdiskId": { - "type": "string" - }, - "SecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SecurityGroups": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SourceDestCheck": { - "type": "boolean" - }, - "SsmAssociations": { - "items": { - "$ref": "#/definitions/SsmAssociation" - }, - "type": "array", - "uniqueItems": false - }, - "SubnetId": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "Tenancy": { - "enum": [ - "default", - "dedicated", - "host" - ], - "type": "string" - }, - "UserData": { - "type": "string" - }, - "Volumes": { - "items": { - "$ref": "#/definitions/Volume" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/PublicIp", - "/properties/Id", - "/properties/PublicDnsName", - "/properties/PrivateDnsName", - "/properties/PrivateIp" - ], - "requiredXor": [ - "ImageId", - "LaunchTemplate" - ], - "typeName": "AWS::EC2::Instance" -} diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-ec2-securitygroupingress.json b/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-ec2-securitygroupingress.json new file mode 100644 index 0000000000..83ebc2ae5c --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-ec2-securitygroupingress.json @@ -0,0 +1,121 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::EC2::SecurityGroupIngress/Properties" + ], + "createOnlyProperties": [ + "/properties/GroupName", + "/properties/IpProtocol", + "/properties/SourceSecurityGroupId", + "/properties/SourcePrefixListId", + "/properties/ToPort", + "/properties/CidrIp", + "/properties/SourceSecurityGroupName", + "/properties/SourceSecurityGroupOwnerId", + "/properties/FromPort", + "/properties/GroupId", + "/properties/CidrIpv6" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeSecurityGroupRules", + "ec2:AuthorizeSecurityGroupIngress" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeSecurityGroupRules", + "ec2:RevokeSecurityGroupIngress" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroups", + "ec2:DescribeSecurityGroupRules" + ] + }, + "update": { + "permissions": [ + "ec2:UpdateSecurityGroupRuleDescriptionsIngress" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CidrIp": { + "type": "string" + }, + "CidrIpv6": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "FromPort": { + "minimum": -1, + "type": "integer" + }, + "GroupId": { + "type": "string" + }, + "GroupName": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "IpProtocol": { + "type": "string" + }, + "SourcePrefixListId": { + "type": "string" + }, + "SourceSecurityGroupId": { + "type": "string" + }, + "SourceSecurityGroupName": { + "type": "string" + }, + "SourceSecurityGroupOwnerId": { + "type": "string" + }, + "ToPort": { + "minimum": -1, + "type": "integer" + } + }, + "propertyTransform": { + "/properties/FromPort": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$ipProtocol := $mapVal ? $mapVal : $lowercase(IpProtocol);$ipProtocol in ['imcp', 'tcp', 'udp', 'imcp'] ? FromPort : -1)", + "/properties/IpProtocol": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$mapVal ? $mapVal : $lowercase(IpProtocol))", + "/properties/ToPort": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$ipProtocol := $mapVal ? $mapVal : $lowercase(IpProtocol);$ipProtocol in ['imcp', 'tcp', 'udp', 'imcp'] ? ToPort : -1)" + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IpProtocol" + ], + "requiredXor": [ + "CidrIp", + "CidrIpv6", + "SourcePrefixListId", + "SourceSecurityGroupId", + "SourceSecurityGroupName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SecurityGroupIngress" +} diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-gammadilithium-jobdefinition.json b/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-gammadilithium-jobdefinition.json index ac35ac594b..349bfa79f7 100644 --- a/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-gammadilithium-jobdefinition.json +++ b/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-gammadilithium-jobdefinition.json @@ -308,6 +308,9 @@ "EksContainerSecurityContext": { "additionalProperties": false, "properties": { + "AllowPrivilegeEscalation": { + "type": "boolean" + }, "Privileged": { "type": "boolean" }, @@ -461,6 +464,18 @@ }, "type": "object" }, + "ImagePullSecret": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, "LinuxParameters": { "additionalProperties": false, "properties": { @@ -613,6 +628,13 @@ "HostNetwork": { "type": "boolean" }, + "ImagePullSecrets": { + "items": { + "$ref": "#/definitions/ImagePullSecret" + }, + "type": "array", + "uniqueItems": false + }, "InitContainers": { "items": { "$ref": "#/definitions/EksContainer" diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-iotsitewise-gateway.json b/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-iotsitewise-gateway.json deleted file mode 100644 index 20b0ba8baa..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-iotsitewise-gateway.json +++ /dev/null @@ -1,179 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/GatewayPlatform" - ], - "definitions": { - "CapabilityConfiguration": { - "type": "string" - }, - "CapabilityNamespace": { - "type": "string" - }, - "GatewayCapabilitySummary": { - "additionalProperties": false, - "properties": { - "CapabilityConfiguration": { - "$ref": "#/definitions/CapabilityConfiguration" - }, - "CapabilityNamespace": { - "$ref": "#/definitions/CapabilityNamespace" - } - }, - "required": [ - "CapabilityNamespace" - ], - "type": "object" - }, - "GatewayPlatform": { - "additionalProperties": false, - "oneOf": [ - { - "required": [ - "Greengrass" - ] - }, - { - "required": [ - "GreengrassV2" - ] - } - ], - "properties": { - "Greengrass": { - "$ref": "#/definitions/Greengrass" - }, - "GreengrassV2": { - "$ref": "#/definitions/GreengrassV2" - } - }, - "type": "object" - }, - "Greengrass": { - "additionalProperties": false, - "properties": { - "GroupArn": { - "type": "string" - } - }, - "required": [ - "GroupArn" - ], - "type": "object" - }, - "GreengrassV2": { - "additionalProperties": false, - "properties": { - "CoreDeviceThingName": { - "type": "string" - } - }, - "required": [ - "CoreDeviceThingName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "iotsitewise:CreateGateway", - "iotsitewise:DescribeGateway", - "iotsitewise:DescribeGatewayCapabilityConfiguration", - "iotsitewise:UpdateGatewayCapabilityConfiguration", - "iam:PassRole", - "iam:GetRole", - "greengrass:GetCoreDevice", - "iotsitewise:ListTagsForResource", - "iotsitewise:TagResource", - "iot:DescribeThing" - ] - }, - "delete": { - "permissions": [ - "iotsitewise:DescribeGateway", - "iotsitewise:DescribeGatewayCapabilityConfiguration", - "iotsitewise:DeleteGateway" - ] - }, - "list": { - "permissions": [ - "iotsitewise:ListGateways" - ] - }, - "read": { - "permissions": [ - "iotsitewise:DescribeGateway", - "iotsitewise:DescribeGatewayCapabilityConfiguration", - "iotsitewise:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "iotsitewise:UpdateGateway", - "iotsitewise:UpdateGatewayCapabilityConfiguration", - "iotsitewise:TagResource", - "iotsitewise:UntagResource", - "iotsitewise:DescribeGateway", - "iotsitewise:DescribeGatewayCapabilityConfiguration", - "iotsitewise:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/GatewayId" - ], - "properties": { - "GatewayCapabilitySummaries": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/GatewayCapabilitySummary" - }, - "type": "array", - "uniqueItems": true - }, - "GatewayId": { - "type": "string" - }, - "GatewayName": { - "type": "string" - }, - "GatewayPlatform": { - "$ref": "#/definitions/GatewayPlatform" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/GatewayId" - ], - "required": [ - "GatewayName", - "GatewayPlatform" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-IoTSiteWise.git", - "taggable": true, - "typeName": "AWS::IoTSiteWise::Gateway" -} diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-lambda-eventsourcemapping.json b/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-lambda-eventsourcemapping.json new file mode 100644 index 0000000000..cb7599c139 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-lambda-eventsourcemapping.json @@ -0,0 +1,353 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::Lambda::EventSourceMapping/Properties" + ], + "createOnlyProperties": [ + "/properties/EventSourceArn", + "/properties/StartingPosition", + "/properties/StartingPositionTimestamp", + "/properties/SelfManagedEventSource", + "/properties/AmazonManagedKafkaEventSourceConfig", + "/properties/SelfManagedKafkaEventSourceConfig" + ], + "definitions": { + "AmazonManagedKafkaEventSourceConfig": { + "additionalProperties": false, + "properties": { + "ConsumerGroupId": { + "$ref": "#/definitions/ConsumerGroupId" + } + }, + "type": "object" + }, + "ConsumerGroupId": { + "maxLength": 200, + "minLength": 1, + "pattern": "[a-zA-Z0-9-\\/*:_+=.@-]*", + "type": "string" + }, + "DestinationConfig": { + "additionalProperties": false, + "properties": { + "OnFailure": { + "$ref": "#/definitions/OnFailure" + } + }, + "type": "object" + }, + "DocumentDBEventSourceConfig": { + "additionalProperties": false, + "properties": { + "CollectionName": { + "maxLength": 57, + "minLength": 1, + "type": "string" + }, + "DatabaseName": { + "maxLength": 63, + "minLength": 1, + "type": "string" + }, + "FullDocument": { + "enum": [ + "UpdateLookup", + "Default" + ], + "type": "string" + } + }, + "type": "object" + }, + "Endpoints": { + "additionalProperties": false, + "properties": { + "KafkaBootstrapServers": { + "items": { + "maxLength": 300, + "minLength": 1, + "pattern": "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9]):[0-9]{1,5}", + "type": "string" + }, + "maxItems": 10, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "Filter": { + "additionalProperties": false, + "properties": { + "Pattern": { + "maxLength": 4096, + "minLength": 0, + "pattern": ".*", + "type": "string" + } + }, + "type": "object" + }, + "FilterCriteria": { + "additionalProperties": false, + "properties": { + "Filters": { + "items": { + "$ref": "#/definitions/Filter" + }, + "maxItems": 20, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "MaximumConcurrency": { + "maximum": 1000, + "minimum": 2, + "type": "integer" + }, + "OnFailure": { + "additionalProperties": false, + "properties": { + "Destination": { + "maxLength": 1024, + "minLength": 12, + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "type": "string" + } + }, + "type": "object" + }, + "ScalingConfig": { + "additionalProperties": false, + "properties": { + "MaximumConcurrency": { + "$ref": "#/definitions/MaximumConcurrency" + } + }, + "type": "object" + }, + "SelfManagedEventSource": { + "additionalProperties": false, + "properties": { + "Endpoints": { + "$ref": "#/definitions/Endpoints" + } + }, + "type": "object" + }, + "SelfManagedKafkaEventSourceConfig": { + "additionalProperties": false, + "properties": { + "ConsumerGroupId": { + "$ref": "#/definitions/ConsumerGroupId" + } + }, + "type": "object" + }, + "SourceAccessConfiguration": { + "additionalProperties": false, + "properties": { + "Type": { + "enum": [ + "BASIC_AUTH", + "VPC_SUBNET", + "VPC_SECURITY_GROUP", + "SASL_SCRAM_512_AUTH", + "SASL_SCRAM_256_AUTH", + "VIRTUAL_HOST", + "CLIENT_CERTIFICATE_TLS_AUTH", + "SERVER_ROOT_CA_CERTIFICATE" + ], + "type": "string" + }, + "URI": { + "maxLength": 200, + "minLength": 1, + "pattern": "[a-zA-Z0-9-\\/*:_+=.@-]*", + "type": "string" + } + }, + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "lambda:CreateEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + }, + "delete": { + "permissions": [ + "lambda:DeleteEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + }, + "list": { + "permissions": [ + "lambda:ListEventSourceMappings" + ] + }, + "read": { + "permissions": [ + "lambda:GetEventSourceMapping" + ] + }, + "update": { + "permissions": [ + "lambda:UpdateEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AmazonManagedKafkaEventSourceConfig": { + "$ref": "#/definitions/AmazonManagedKafkaEventSourceConfig" + }, + "BatchSize": { + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "BisectBatchOnFunctionError": { + "type": "boolean" + }, + "DestinationConfig": { + "$ref": "#/definitions/DestinationConfig" + }, + "DocumentDBEventSourceConfig": { + "$ref": "#/definitions/DocumentDBEventSourceConfig" + }, + "Enabled": { + "type": "boolean" + }, + "EventSourceArn": { + "maxLength": 1024, + "minLength": 12, + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "type": "string" + }, + "FilterCriteria": { + "$ref": "#/definitions/FilterCriteria" + }, + "FunctionName": { + "maxLength": 140, + "minLength": 1, + "pattern": "(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?", + "type": "string" + }, + "FunctionResponseTypes": { + "items": { + "enum": [ + "ReportBatchItemFailures" + ], + "type": "string" + }, + "maxLength": 1, + "minLength": 0, + "type": "array", + "uniqueItems": true + }, + "Id": { + "maxLength": 36, + "minLength": 36, + "pattern": "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + "type": "string" + }, + "MaximumBatchingWindowInSeconds": { + "maximum": 300, + "minimum": 0, + "type": "integer" + }, + "MaximumRecordAgeInSeconds": { + "maximum": 604800, + "minimum": -1, + "type": "integer" + }, + "MaximumRetryAttempts": { + "maximum": 10000, + "minimum": -1, + "type": "integer" + }, + "ParallelizationFactor": { + "maximum": 10, + "minimum": 1, + "type": "integer" + }, + "Queues": { + "items": { + "maxLength": 1000, + "minLength": 1, + "pattern": "[\\s\\S]*", + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "ScalingConfig": { + "$ref": "#/definitions/ScalingConfig" + }, + "SelfManagedEventSource": { + "$ref": "#/definitions/SelfManagedEventSource" + }, + "SelfManagedKafkaEventSourceConfig": { + "$ref": "#/definitions/SelfManagedKafkaEventSourceConfig" + }, + "SourceAccessConfigurations": { + "items": { + "$ref": "#/definitions/SourceAccessConfiguration" + }, + "maxItems": 22, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "StartingPosition": { + "enum": [ + "TRIM_HORIZON", + "LATEST", + "AT_TIMESTAMP" + ], + "maxLength": 12, + "minLength": 6, + "pattern": "(LATEST|TRIM_HORIZON|AT_TIMESTAMP)+", + "type": "string" + }, + "StartingPositionTimestamp": { + "type": "number" + }, + "Topics": { + "items": { + "maxLength": 249, + "minLength": 1, + "pattern": "^[^.]([a-zA-Z0-9\\-_.]+)", + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "TumblingWindowInSeconds": { + "maximum": 900, + "minimum": 0, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "FunctionName" + ], + "typeName": "AWS::Lambda::EventSourceMapping" +} diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-sagemaker-appimageconfig.json b/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-sagemaker-appimageconfig.json new file mode 100644 index 0000000000..01116f524b --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-sagemaker-appimageconfig.json @@ -0,0 +1,238 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AppImageConfigName", + "/properties/Tags" + ], + "definitions": { + "ContainerConfig": { + "additionalProperties": false, + "properties": { + "ContainerArguments": { + "items": { + "$ref": "#/definitions/CustomImageContainerArguments" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "ContainerEntrypoint": { + "items": { + "$ref": "#/definitions/CustomImageContainerEntrypoint" + }, + "maxItems": 1, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "ContainerEnvironmentVariables": { + "items": { + "$ref": "#/definitions/CustomImageContainerEnvironmentVariable" + }, + "maxItems": 25, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "CustomImageContainerArguments": { + "maxLength": 64, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "CustomImageContainerEntrypoint": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "CustomImageContainerEnvironmentVariable": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "FileSystemConfig": { + "additionalProperties": false, + "properties": { + "DefaultGid": { + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "DefaultUid": { + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "MountPath": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^/.*", + "type": "string" + } + }, + "type": "object" + }, + "JupyterLabAppImageConfig": { + "additionalProperties": false, + "properties": { + "ContainerConfig": { + "$ref": "#/definitions/ContainerConfig" + } + }, + "type": "object" + }, + "KernelGatewayImageConfig": { + "additionalProperties": false, + "properties": { + "FileSystemConfig": { + "$ref": "#/definitions/FileSystemConfig" + }, + "KernelSpecs": { + "items": { + "$ref": "#/definitions/KernelSpec" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "KernelSpecs" + ], + "type": "object" + }, + "KernelSpec": { + "additionalProperties": false, + "properties": { + "DisplayName": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Name": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "sagemaker:CreateAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + }, + "delete": { + "permissions": [ + "sagemaker:DeleteAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + }, + "list": { + "permissions": [ + "sagemaker:ListAppImageConfigs" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeAppImageConfig" + ] + }, + "update": { + "permissions": [ + "sagemaker:UpdateAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + } + }, + "primaryIdentifier": [ + "/properties/AppImageConfigName" + ], + "properties": { + "AppImageConfigArn": { + "maxLength": 256, + "minLength": 1, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:app-image-config/.*", + "type": "string" + }, + "AppImageConfigName": { + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", + "type": "string" + }, + "JupyterLabAppImageConfig": { + "$ref": "#/definitions/JupyterLabAppImageConfig" + }, + "KernelGatewayImageConfig": { + "$ref": "#/definitions/KernelGatewayImageConfig" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/AppImageConfigArn" + ], + "required": [ + "AppImageConfigName" + ], + "typeName": "AWS::SageMaker::AppImageConfig", + "writeOnlyProperties": [ + "/properties/Tags" + ] +} diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-sagemaker-domain.json b/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-sagemaker-domain.json new file mode 100644 index 0000000000..e57c036025 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-sagemaker-domain.json @@ -0,0 +1,739 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AuthMode", + "/properties/DomainName", + "/properties/DomainSettings/RStudioServerProDomainSettings/DefaultResourceSpec", + "/properties/KmsKeyId", + "/properties/VpcId", + "/properties/Tags" + ], + "definitions": { + "CodeEditorAppSettings": { + "additionalProperties": false, + "properties": { + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + }, + "LifecycleConfigArns": { + "items": { + "$ref": "#/definitions/StudioLifecycleConfigArn" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "CodeRepository": { + "additionalProperties": false, + "properties": { + "RepositoryUrl": { + "maxLength": 256, + "pattern": "^https://([.\\-_a-zA-Z0-9]+/?){3,1016}$", + "type": "string" + } + }, + "required": [ + "RepositoryUrl" + ], + "type": "object" + }, + "CustomFileSystemConfig": { + "additionalProperties": false, + "properties": { + "EFSFileSystemConfig": { + "$ref": "#/definitions/EFSFileSystemConfig" + } + }, + "type": "object" + }, + "CustomImage": { + "additionalProperties": false, + "properties": { + "AppImageConfigName": { + "maxLength": 63, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", + "type": "string" + }, + "ImageName": { + "maxLength": 63, + "pattern": "^[a-zA-Z0-9]([-.]?[a-zA-Z0-9]){0,62}$", + "type": "string" + }, + "ImageVersionNumber": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "AppImageConfigName", + "ImageName" + ], + "type": "object" + }, + "CustomPosixUserConfig": { + "additionalProperties": false, + "properties": { + "Gid": { + "maximum": 4000000, + "minimum": 1001, + "type": "integer" + }, + "Uid": { + "maximum": 4000000, + "minimum": 10000, + "type": "integer" + } + }, + "required": [ + "Uid", + "Gid" + ], + "type": "object" + }, + "DefaultEbsStorageSettings": { + "additionalProperties": false, + "properties": { + "DefaultEbsVolumeSizeInGb": { + "$ref": "#/definitions/SpaceEbsVolumeSizeInGb" + }, + "MaximumEbsVolumeSizeInGb": { + "$ref": "#/definitions/SpaceEbsVolumeSizeInGb" + } + }, + "required": [ + "DefaultEbsVolumeSizeInGb", + "MaximumEbsVolumeSizeInGb" + ], + "type": "object" + }, + "DefaultSpaceSettings": { + "additionalProperties": false, + "properties": { + "ExecutionRole": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "JupyterServerAppSettings": { + "$ref": "#/definitions/JupyterServerAppSettings" + }, + "KernelGatewayAppSettings": { + "$ref": "#/definitions/KernelGatewayAppSettings" + }, + "SecurityGroups": { + "insertionOrder": false, + "items": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 5, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "ExecutionRole" + ], + "type": "object" + }, + "DefaultSpaceStorageSettings": { + "additionalProperties": false, + "properties": { + "DefaultEbsStorageSettings": { + "$ref": "#/definitions/DefaultEbsStorageSettings" + } + }, + "type": "object" + }, + "DockerSettings": { + "additionalProperties": false, + "properties": { + "EnableDockerAccess": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "VpcOnlyTrustedAccounts": { + "insertionOrder": false, + "items": { + "maxLength": 12, + "pattern": "^[0-9]$", + "type": "string" + }, + "maxItems": 10, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "DomainSettings": { + "additionalProperties": false, + "properties": { + "DockerSettings": { + "$ref": "#/definitions/DockerSettings" + }, + "RStudioServerProDomainSettings": { + "$ref": "#/definitions/RStudioServerProDomainSettings" + }, + "SecurityGroupIds": { + "insertionOrder": false, + "items": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 3, + "minItems": 1, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "EFSFileSystemConfig": { + "additionalProperties": false, + "properties": { + "FileSystemId": { + "maxLength": 21, + "minLength": 11, + "pattern": "^(fs-[0-9a-f]{8,})$", + "type": "string" + }, + "FileSystemPath": { + "maxLength": 256, + "minLength": 1, + "pattern": "^\\/\\S*$", + "type": "string" + } + }, + "required": [ + "FileSystemId" + ], + "type": "object" + }, + "JupyterLabAppSettings": { + "additionalProperties": false, + "properties": { + "CodeRepositories": { + "items": { + "$ref": "#/definitions/CodeRepository" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "CustomImages": { + "items": { + "$ref": "#/definitions/CustomImage" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + }, + "LifecycleConfigArns": { + "items": { + "$ref": "#/definitions/StudioLifecycleConfigArn" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "JupyterServerAppSettings": { + "additionalProperties": false, + "properties": { + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + } + }, + "type": "object" + }, + "KernelGatewayAppSettings": { + "additionalProperties": false, + "properties": { + "CustomImages": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/CustomImage" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + } + }, + "type": "object" + }, + "RSessionAppSettings": { + "additionalProperties": false, + "properties": { + "CustomImages": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/CustomImage" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + } + }, + "type": "object" + }, + "RStudioServerProAppSettings": { + "additionalProperties": false, + "properties": { + "AccessStatus": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "UserGroup": { + "enum": [ + "R_STUDIO_ADMIN", + "R_STUDIO_USER" + ], + "type": "string" + } + }, + "type": "object" + }, + "RStudioServerProDomainSettings": { + "additionalProperties": false, + "properties": { + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + }, + "DomainExecutionRoleArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "RStudioConnectUrl": { + "pattern": "^(https:|http:|www\\.)\\S*", + "type": "string" + }, + "RStudioPackageManagerUrl": { + "pattern": "^(https:|http:|www\\.)\\S*", + "type": "string" + } + }, + "required": [ + "DomainExecutionRoleArn" + ], + "type": "object" + }, + "ResourceSpec": { + "additionalProperties": false, + "properties": { + "InstanceType": { + "enum": [ + "system", + "ml.t3.micro", + "ml.t3.small", + "ml.t3.medium", + "ml.t3.large", + "ml.t3.xlarge", + "ml.t3.2xlarge", + "ml.m5.large", + "ml.m5.xlarge", + "ml.m5.2xlarge", + "ml.m5.4xlarge", + "ml.m5.8xlarge", + "ml.m5.12xlarge", + "ml.m5.16xlarge", + "ml.m5.24xlarge", + "ml.c5.large", + "ml.c5.xlarge", + "ml.c5.2xlarge", + "ml.c5.4xlarge", + "ml.c5.9xlarge", + "ml.c5.12xlarge", + "ml.c5.18xlarge", + "ml.c5.24xlarge", + "ml.p3.2xlarge", + "ml.p3.8xlarge", + "ml.p3.16xlarge", + "ml.g4dn.xlarge", + "ml.g4dn.2xlarge", + "ml.g4dn.4xlarge", + "ml.g4dn.8xlarge", + "ml.g4dn.12xlarge", + "ml.g4dn.16xlarge", + "ml.r5.large", + "ml.r5.xlarge", + "ml.r5.2xlarge", + "ml.r5.4xlarge", + "ml.r5.8xlarge", + "ml.r5.12xlarge", + "ml.r5.16xlarge", + "ml.r5.24xlarge", + "ml.p3dn.24xlarge", + "ml.m5d.large", + "ml.m5d.xlarge", + "ml.m5d.2xlarge", + "ml.m5d.4xlarge", + "ml.m5d.8xlarge", + "ml.m5d.12xlarge", + "ml.m5d.16xlarge", + "ml.m5d.24xlarge", + "ml.g5.xlarge", + "ml.g5.2xlarge", + "ml.g5.4xlarge", + "ml.g5.8xlarge", + "ml.g5.12xlarge", + "ml.g5.16xlarge", + "ml.g5.24xlarge", + "ml.g5.48xlarge", + "ml.p4d.24xlarge", + "ml.p4de.24xlarge", + "ml.geospatial.interactive", + "ml.trn1.2xlarge", + "ml.trn1.32xlarge", + "ml.trn1n.32xlarge" + ], + "type": "string" + }, + "LifecycleConfigArn": { + "maxLength": 256, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:studio-lifecycle-config/.*", + "type": "string" + }, + "SageMakerImageArn": { + "maxLength": 256, + "pattern": "^arn:aws(-[\\w]+)*:sagemaker:.+:[0-9]{12}:image/[a-z0-9]([-.]?[a-z0-9])*$", + "type": "string" + }, + "SageMakerImageVersionArn": { + "maxLength": 256, + "pattern": "^arn:aws(-[\\w]+)*:sagemaker:.+:[0-9]{12}:image-version/[a-z0-9]([-.]?[a-z0-9])*/[0-9]+$", + "type": "string" + } + }, + "type": "object" + }, + "SharingSettings": { + "additionalProperties": false, + "properties": { + "NotebookOutputOption": { + "enum": [ + "Allowed", + "Disabled" + ], + "type": "string" + }, + "S3KmsKeyId": { + "maxLength": 2048, + "pattern": ".*", + "type": "string" + }, + "S3OutputPath": { + "maxLength": 1024, + "pattern": "^(https|s3)://([^/]+)/?(.*)$", + "type": "string" + } + }, + "type": "object" + }, + "SpaceEbsVolumeSizeInGb": { + "maximum": 16384, + "minimum": 5, + "type": "integer" + }, + "StudioLifecycleConfigArn": { + "maxLength": 256, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:studio-lifecycle-config/.*", + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "UserSettings": { + "additionalProperties": false, + "properties": { + "CodeEditorAppSettings": { + "$ref": "#/definitions/CodeEditorAppSettings" + }, + "CustomFileSystemConfigs": { + "items": { + "$ref": "#/definitions/CustomFileSystemConfig" + }, + "maxItems": 2, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "CustomPosixUserConfig": { + "$ref": "#/definitions/CustomPosixUserConfig" + }, + "DefaultLandingUri": { + "maxLength": 1023, + "type": "string" + }, + "ExecutionRole": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "JupyterLabAppSettings": { + "$ref": "#/definitions/JupyterLabAppSettings" + }, + "JupyterServerAppSettings": { + "$ref": "#/definitions/JupyterServerAppSettings" + }, + "KernelGatewayAppSettings": { + "$ref": "#/definitions/KernelGatewayAppSettings" + }, + "RSessionAppSettings": { + "$ref": "#/definitions/RSessionAppSettings" + }, + "RStudioServerProAppSettings": { + "$ref": "#/definitions/RStudioServerProAppSettings" + }, + "SecurityGroups": { + "insertionOrder": false, + "items": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 5, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "SharingSettings": { + "$ref": "#/definitions/SharingSettings" + }, + "SpaceStorageSettings": { + "$ref": "#/definitions/DefaultSpaceStorageSettings" + }, + "StudioWebPortal": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + } + }, + "required": [ + "ExecutionRole" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "sagemaker:CreateApp", + "sagemaker:CreateDomain", + "sagemaker:DescribeDomain", + "sagemaker:DescribeImage", + "sagemaker:DescribeImageVersion", + "iam:CreateServiceLinkedRole", + "iam:PassRole", + "efs:CreateFileSystem", + "kms:CreateGrant", + "kms:Decrypt", + "kms:DescribeKey", + "kms:GenerateDataKeyWithoutPlainText" + ] + }, + "delete": { + "permissions": [ + "sagemaker:DeleteApp", + "sagemaker:DeleteDomain", + "sagemaker:DescribeDomain" + ] + }, + "list": { + "permissions": [ + "sagemaker:ListDomains" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeDomain" + ] + }, + "update": { + "permissions": [ + "sagemaker:CreateApp", + "sagemaker:UpdateDomain", + "sagemaker:DescribeDomain", + "sagemaker:DescribeImage", + "sagemaker:DescribeImageVersion", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/DomainId" + ], + "properties": { + "AppNetworkAccessType": { + "enum": [ + "PublicInternetOnly", + "VpcOnly" + ], + "type": "string" + }, + "AppSecurityGroupManagement": { + "enum": [ + "Service", + "Customer" + ], + "type": "string" + }, + "AuthMode": { + "enum": [ + "SSO", + "IAM" + ], + "type": "string" + }, + "DefaultSpaceSettings": { + "$ref": "#/definitions/DefaultSpaceSettings" + }, + "DefaultUserSettings": { + "$ref": "#/definitions/UserSettings" + }, + "DomainArn": { + "maxLength": 256, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:domain/.*", + "type": "string" + }, + "DomainId": { + "maxLength": 63, + "pattern": "^d-(-*[a-z0-9])+", + "type": "string" + }, + "DomainName": { + "maxLength": 63, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", + "type": "string" + }, + "DomainSettings": { + "$ref": "#/definitions/DomainSettings" + }, + "HomeEfsFileSystemId": { + "maxLength": 32, + "type": "string" + }, + "KmsKeyId": { + "maxLength": 2048, + "pattern": ".*", + "type": "string" + }, + "SecurityGroupIdForDomainBoundary": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "SingleSignOnApplicationArn": { + "pattern": "^arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):sso::[0-9]+:application/[a-zA-Z0-9-_.]+/apl-[a-zA-Z0-9]+$", + "type": "string" + }, + "SingleSignOnManagedApplicationInstanceId": { + "maxLength": 256, + "type": "string" + }, + "SubnetIds": { + "insertionOrder": false, + "items": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 16, + "minItems": 1, + "type": "array", + "uniqueItems": false + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "Url": { + "maxLength": 1024, + "type": "string" + }, + "VpcId": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/DomainArn", + "/properties/Url", + "/properties/DomainId", + "/properties/HomeEfsFileSystemId", + "/properties/SecurityGroupIdForDomainBoundary", + "/properties/SingleSignOnManagedApplicationInstanceId", + "/properties/SingleSignOnApplicationArn" + ], + "required": [ + "AuthMode", + "DefaultUserSettings", + "DomainName", + "SubnetIds", + "VpcId" + ], + "typeName": "AWS::SageMaker::Domain", + "writeOnlyProperties": [ + "/properties/Tags" + ] +} diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-sagemaker-userprofile.json b/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-sagemaker-userprofile.json new file mode 100644 index 0000000000..d0f8848903 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-sagemaker-userprofile.json @@ -0,0 +1,524 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DomainId", + "/properties/UserProfileName", + "/properties/SingleSignOnUserIdentifier", + "/properties/SingleSignOnUserValue", + "/properties/UserSettings/RStudioServerProAppSettings/AccessStatus", + "/properties/UserSettings/RStudioServerProAppSettings/UserGroup", + "/properties/Tags" + ], + "definitions": { + "CodeEditorAppSettings": { + "additionalProperties": false, + "properties": { + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + }, + "LifecycleConfigArns": { + "items": { + "$ref": "#/definitions/StudioLifecycleConfigArn" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "CodeRepository": { + "additionalProperties": false, + "properties": { + "RepositoryUrl": { + "maxLength": 256, + "pattern": "^https://([.\\-_a-zA-Z0-9]+/?){3,1016}$", + "type": "string" + } + }, + "required": [ + "RepositoryUrl" + ], + "type": "object" + }, + "CustomFileSystemConfig": { + "additionalProperties": false, + "properties": { + "EFSFileSystemConfig": { + "$ref": "#/definitions/EFSFileSystemConfig" + } + }, + "type": "object" + }, + "CustomImage": { + "additionalProperties": false, + "properties": { + "AppImageConfigName": { + "maxLength": 63, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", + "type": "string" + }, + "ImageName": { + "maxLength": 63, + "pattern": "^[a-zA-Z0-9]([-.]?[a-zA-Z0-9]){0,62}$", + "type": "string" + }, + "ImageVersionNumber": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "AppImageConfigName", + "ImageName" + ], + "type": "object" + }, + "CustomPosixUserConfig": { + "additionalProperties": false, + "properties": { + "Gid": { + "maximum": 4000000, + "minimum": 1001, + "type": "integer" + }, + "Uid": { + "maximum": 4000000, + "minimum": 10000, + "type": "integer" + } + }, + "required": [ + "Uid", + "Gid" + ], + "type": "object" + }, + "DefaultEbsStorageSettings": { + "additionalProperties": false, + "properties": { + "DefaultEbsVolumeSizeInGb": { + "$ref": "#/definitions/SpaceEbsVolumeSizeInGb" + }, + "MaximumEbsVolumeSizeInGb": { + "$ref": "#/definitions/SpaceEbsVolumeSizeInGb" + } + }, + "required": [ + "DefaultEbsVolumeSizeInGb", + "MaximumEbsVolumeSizeInGb" + ], + "type": "object" + }, + "DefaultSpaceStorageSettings": { + "additionalProperties": false, + "properties": { + "DefaultEbsStorageSettings": { + "$ref": "#/definitions/DefaultEbsStorageSettings" + } + }, + "type": "object" + }, + "EFSFileSystemConfig": { + "additionalProperties": false, + "properties": { + "FileSystemId": { + "maxLength": 21, + "minLength": 11, + "pattern": "^(fs-[0-9a-f]{8,})$", + "type": "string" + }, + "FileSystemPath": { + "maxLength": 256, + "minLength": 1, + "pattern": "^\\/\\S*$", + "type": "string" + } + }, + "required": [ + "FileSystemId" + ], + "type": "object" + }, + "JupyterLabAppSettings": { + "additionalProperties": false, + "properties": { + "CodeRepositories": { + "items": { + "$ref": "#/definitions/CodeRepository" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "CustomImages": { + "items": { + "$ref": "#/definitions/CustomImage" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + }, + "LifecycleConfigArns": { + "items": { + "$ref": "#/definitions/StudioLifecycleConfigArn" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "JupyterServerAppSettings": { + "additionalProperties": false, + "properties": { + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + } + }, + "type": "object" + }, + "KernelGatewayAppSettings": { + "additionalProperties": false, + "properties": { + "CustomImages": { + "items": { + "$ref": "#/definitions/CustomImage" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + } + }, + "type": "object" + }, + "RStudioServerProAppSettings": { + "additionalProperties": false, + "properties": { + "AccessStatus": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "UserGroup": { + "enum": [ + "R_STUDIO_ADMIN", + "R_STUDIO_USER" + ], + "type": "string" + } + }, + "type": "object" + }, + "ResourceSpec": { + "additionalProperties": false, + "properties": { + "InstanceType": { + "enum": [ + "system", + "ml.t3.micro", + "ml.t3.small", + "ml.t3.medium", + "ml.t3.large", + "ml.t3.xlarge", + "ml.t3.2xlarge", + "ml.m5.large", + "ml.m5.xlarge", + "ml.m5.2xlarge", + "ml.m5.4xlarge", + "ml.m5.8xlarge", + "ml.m5.12xlarge", + "ml.m5.16xlarge", + "ml.m5.24xlarge", + "ml.c5.large", + "ml.c5.xlarge", + "ml.c5.2xlarge", + "ml.c5.4xlarge", + "ml.c5.9xlarge", + "ml.c5.12xlarge", + "ml.c5.18xlarge", + "ml.c5.24xlarge", + "ml.p3.2xlarge", + "ml.p3.8xlarge", + "ml.p3.16xlarge", + "ml.g4dn.xlarge", + "ml.g4dn.2xlarge", + "ml.g4dn.4xlarge", + "ml.g4dn.8xlarge", + "ml.g4dn.12xlarge", + "ml.g4dn.16xlarge", + "ml.r5.large", + "ml.r5.xlarge", + "ml.r5.2xlarge", + "ml.r5.4xlarge", + "ml.r5.8xlarge", + "ml.r5.12xlarge", + "ml.r5.16xlarge", + "ml.r5.24xlarge", + "ml.p3dn.24xlarge", + "ml.m5d.large", + "ml.m5d.xlarge", + "ml.m5d.2xlarge", + "ml.m5d.4xlarge", + "ml.m5d.8xlarge", + "ml.m5d.12xlarge", + "ml.m5d.16xlarge", + "ml.m5d.24xlarge", + "ml.g5.xlarge", + "ml.g5.2xlarge", + "ml.g5.4xlarge", + "ml.g5.8xlarge", + "ml.g5.12xlarge", + "ml.g5.16xlarge", + "ml.g5.24xlarge", + "ml.g5.48xlarge", + "ml.p4d.24xlarge", + "ml.p4de.24xlarge", + "ml.geospatial.interactive", + "ml.trn1.2xlarge", + "ml.trn1.32xlarge", + "ml.trn1n.32xlarge" + ], + "type": "string" + }, + "SageMakerImageArn": { + "maxLength": 256, + "pattern": "^arn:aws(-[\\w]+)*:sagemaker:.+:[0-9]{12}:image/[a-z0-9]([-.]?[a-z0-9])*$", + "type": "string" + }, + "SageMakerImageVersionArn": { + "maxLength": 256, + "pattern": "^arn:aws(-[\\w]+)*:sagemaker:.+:[0-9]{12}:image-version/[a-z0-9]([-.]?[a-z0-9])*/[0-9]+$", + "type": "string" + } + }, + "type": "object" + }, + "SharingSettings": { + "additionalProperties": false, + "properties": { + "NotebookOutputOption": { + "enum": [ + "Allowed", + "Disabled" + ], + "type": "string" + }, + "S3KmsKeyId": { + "maxLength": 2048, + "pattern": ".*", + "type": "string" + }, + "S3OutputPath": { + "maxLength": 1024, + "pattern": "^(https|s3)://([^/]+)/?(.*)$", + "type": "string" + } + }, + "type": "object" + }, + "SpaceEbsVolumeSizeInGb": { + "maximum": 16384, + "minimum": 5, + "type": "integer" + }, + "StudioLifecycleConfigArn": { + "maxLength": 256, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:studio-lifecycle-config/.*", + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "UserSettings": { + "additionalProperties": false, + "properties": { + "CodeEditorAppSettings": { + "$ref": "#/definitions/CodeEditorAppSettings" + }, + "CustomFileSystemConfigs": { + "items": { + "$ref": "#/definitions/CustomFileSystemConfig" + }, + "maxItems": 2, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "CustomPosixUserConfig": { + "$ref": "#/definitions/CustomPosixUserConfig" + }, + "DefaultLandingUri": { + "maxLength": 1023, + "type": "string" + }, + "ExecutionRole": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "JupyterLabAppSettings": { + "$ref": "#/definitions/JupyterLabAppSettings" + }, + "JupyterServerAppSettings": { + "$ref": "#/definitions/JupyterServerAppSettings" + }, + "KernelGatewayAppSettings": { + "$ref": "#/definitions/KernelGatewayAppSettings" + }, + "RStudioServerProAppSettings": { + "$ref": "#/definitions/RStudioServerProAppSettings" + }, + "SecurityGroups": { + "items": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 5, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "SharingSettings": { + "$ref": "#/definitions/SharingSettings" + }, + "SpaceStorageSettings": { + "$ref": "#/definitions/DefaultSpaceStorageSettings" + }, + "StudioWebPortal": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + } + }, + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "sagemaker:CreateUserProfile", + "sagemaker:DescribeUserProfile", + "sagemaker:DescribeImage", + "sagemaker:DescribeImageVersion", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "sagemaker:DeleteUserProfile", + "sagemaker:DescribeUserProfile" + ] + }, + "list": { + "permissions": [ + "sagemaker:ListUserProfiles" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeUserProfile" + ] + }, + "update": { + "permissions": [ + "sagemaker:UpdateUserProfile", + "sagemaker:DescribeUserProfile", + "sagemaker:DescribeImage", + "sagemaker:DescribeImageVersion", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/UserProfileName", + "/properties/DomainId" + ], + "properties": { + "DomainId": { + "maxLength": 63, + "minLength": 1, + "type": "string" + }, + "SingleSignOnUserIdentifier": { + "pattern": "UserName", + "type": "string" + }, + "SingleSignOnUserValue": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "UserProfileArn": { + "maxLength": 256, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:user-profile/.*", + "type": "string" + }, + "UserProfileName": { + "maxLength": 63, + "minLength": 1, + "type": "string" + }, + "UserSettings": { + "$ref": "#/definitions/UserSettings", + "maxItems": 50, + "minItems": 0, + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/UserProfileArn" + ], + "required": [ + "DomainId", + "UserProfileName" + ], + "typeName": "AWS::SageMaker::UserProfile", + "writeOnlyProperties": [ + "/properties/Tags" + ] +} diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-securityhub-delegatedadmin.json b/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-securityhub-delegatedadmin.json deleted file mode 100644 index 12b73dd551..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-securityhub-delegatedadmin.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AdminAccountId" - ], - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AdminAccountId": { - "type": "string" - }, - "DelegatedAdminIdentifier": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "Status": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/DelegatedAdminIdentifier", - "/properties/Status" - ], - "required": [ - "AdminAccountId" - ], - "typeName": "AWS::SecurityHub::DelegatedAdmin" -} diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-securityhub-insight.json b/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-securityhub-insight.json deleted file mode 100644 index 3fc396909f..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-securityhub-insight.json +++ /dev/null @@ -1,844 +0,0 @@ -{ - "additionalProperties": false, - "definitions": { - "AwsSecurityFindingFilters": { - "additionalProperties": false, - "properties": { - "AwsAccountId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "AwsAccountName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "CompanyName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ComplianceAssociatedStandardsId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ComplianceSecurityControlId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ComplianceSecurityControlParametersName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ComplianceSecurityControlParametersValue": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ComplianceStatus": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "Confidence": { - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "type": "array", - "uniqueItems": true - }, - "CreatedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "Criticality": { - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "type": "array", - "uniqueItems": true - }, - "Description": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "FindingProviderFieldsConfidence": { - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "type": "array", - "uniqueItems": true - }, - "FindingProviderFieldsCriticality": { - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "type": "array", - "uniqueItems": true - }, - "FindingProviderFieldsRelatedFindingsId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "FindingProviderFieldsRelatedFindingsProductArn": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "FindingProviderFieldsSeverityLabel": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "FindingProviderFieldsSeverityOriginal": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "FindingProviderFieldsTypes": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "FirstObservedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "GeneratorId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "Id": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "LastObservedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "MalwareName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "MalwarePath": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "MalwareState": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "MalwareType": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkDestinationDomain": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkDestinationIpV4": { - "items": { - "$ref": "#/definitions/IpFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkDestinationIpV6": { - "items": { - "$ref": "#/definitions/IpFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkDestinationPort": { - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkDirection": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkProtocol": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkSourceDomain": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkSourceIpV4": { - "items": { - "$ref": "#/definitions/IpFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkSourceIpV6": { - "items": { - "$ref": "#/definitions/IpFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkSourceMac": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkSourcePort": { - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NoteText": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NoteUpdatedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NoteUpdatedBy": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ProcessLaunchedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ProcessName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ProcessParentPid": { - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ProcessPath": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ProcessPid": { - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ProcessTerminatedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ProductArn": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ProductFields": { - "items": { - "$ref": "#/definitions/MapFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ProductName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "RecommendationText": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "RecordState": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "Region": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "RelatedFindingsId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "RelatedFindingsProductArn": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceApplicationArn": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceApplicationName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceIamInstanceProfileArn": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceImageId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceIpV4Addresses": { - "items": { - "$ref": "#/definitions/IpFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceIpV6Addresses": { - "items": { - "$ref": "#/definitions/IpFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceKeyName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceLaunchedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceSubnetId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceType": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceVpcId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsIamAccessKeyCreatedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsIamAccessKeyPrincipalName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsIamAccessKeyStatus": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsIamUserUserName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsS3BucketOwnerId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsS3BucketOwnerName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceContainerImageId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceContainerImageName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceContainerLaunchedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceContainerName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceDetailsOther": { - "items": { - "$ref": "#/definitions/MapFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourcePartition": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceRegion": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceTags": { - "items": { - "$ref": "#/definitions/MapFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceType": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "Sample": { - "items": { - "$ref": "#/definitions/BooleanFilter" - }, - "type": "array", - "uniqueItems": true - }, - "SeverityLabel": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "SourceUrl": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ThreatIntelIndicatorCategory": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ThreatIntelIndicatorLastObservedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ThreatIntelIndicatorSource": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ThreatIntelIndicatorSourceUrl": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ThreatIntelIndicatorType": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ThreatIntelIndicatorValue": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "Title": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "Type": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "UpdatedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "UserDefinedFields": { - "items": { - "$ref": "#/definitions/MapFilter" - }, - "type": "array", - "uniqueItems": true - }, - "VerificationState": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "VulnerabilitiesExploitAvailable": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "VulnerabilitiesFixAvailable": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "WorkflowState": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "WorkflowStatus": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "BooleanFilter": { - "additionalProperties": false, - "properties": { - "Value": { - "type": "boolean" - } - }, - "required": [ - "Value" - ], - "type": "object" - }, - "DateFilter": { - "additionalProperties": false, - "properties": { - "DateRange": { - "$ref": "#/definitions/DateRange" - }, - "End": { - "type": "string" - }, - "Start": { - "type": "string" - } - }, - "type": "object" - }, - "DateRange": { - "additionalProperties": false, - "properties": { - "Unit": { - "type": "string" - }, - "Value": { - "type": "number" - } - }, - "required": [ - "Value", - "Unit" - ], - "type": "object" - }, - "IpFilter": { - "additionalProperties": false, - "properties": { - "Cidr": { - "type": "string" - } - }, - "type": "object" - }, - "MapFilter": { - "additionalProperties": false, - "properties": { - "Comparison": { - "type": "string" - }, - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Comparison", - "Value", - "Key" - ], - "type": "object" - }, - "NumberFilter": { - "additionalProperties": false, - "properties": { - "Eq": { - "type": "number" - }, - "Gte": { - "type": "number" - }, - "Lte": { - "type": "number" - } - }, - "type": "object" - }, - "StringFilter": { - "additionalProperties": false, - "properties": { - "Comparison": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Comparison", - "Value" - ], - "type": "object" - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Filters": { - "$ref": "#/definitions/AwsSecurityFindingFilters" - }, - "GroupByAttribute": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "InsightArn": { - "type": "string" - }, - "Name": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/InsightArn" - ], - "required": [ - "Filters", - "GroupByAttribute", - "Name" - ], - "typeName": "AWS::SecurityHub::Insight" -} diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-securityhub-productsubscription.json b/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-securityhub-productsubscription.json deleted file mode 100644 index 4001045463..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-securityhub-productsubscription.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ProductArn" - ], - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Id": { - "type": "string" - }, - "ProductArn": { - "type": "string" - }, - "ProductSubscriptionArn": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/ProductSubscriptionArn" - ], - "required": [ - "ProductArn" - ], - "typeName": "AWS::SecurityHub::ProductSubscription" -} diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-verifiedpermissions-identitysource.json b/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-verifiedpermissions-identitysource.json new file mode 100644 index 0000000000..46a0ad88f1 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-verifiedpermissions-identitysource.json @@ -0,0 +1,221 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PolicyStoreId" + ], + "definitions": { + "CognitoGroupConfiguration": { + "additionalProperties": false, + "properties": { + "GroupEntityType": { + "maxLength": 200, + "minLength": 1, + "pattern": "^([_a-zA-Z][_a-zA-Z0-9]*::)*[_a-zA-Z][_a-zA-Z0-9]*$", + "type": "string" + } + }, + "required": [ + "GroupEntityType" + ], + "type": "object" + }, + "CognitoUserPoolConfiguration": { + "additionalProperties": false, + "properties": { + "ClientIds": { + "insertionOrder": false, + "items": { + "maxLength": 255, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "maxItems": 1000, + "minItems": 0, + "type": "array" + }, + "GroupConfiguration": { + "$ref": "#/definitions/CognitoGroupConfiguration" + }, + "UserPoolArn": { + "maxLength": 255, + "minLength": 1, + "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", + "type": "string" + } + }, + "required": [ + "UserPoolArn" + ], + "type": "object" + }, + "IdentitySourceConfiguration": { + "additionalProperties": false, + "properties": { + "CognitoUserPoolConfiguration": { + "$ref": "#/definitions/CognitoUserPoolConfiguration" + } + }, + "required": [ + "CognitoUserPoolConfiguration" + ], + "title": "CognitoUserPoolConfiguration", + "type": "object" + }, + "IdentitySourceDetails": { + "additionalProperties": false, + "properties": { + "ClientIds": { + "insertionOrder": false, + "items": { + "maxLength": 255, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "maxItems": 1000, + "minItems": 0, + "type": "array" + }, + "DiscoveryUrl": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^https://.*$", + "type": "string" + }, + "OpenIdIssuer": { + "$ref": "#/definitions/OpenIdIssuer" + }, + "UserPoolArn": { + "maxLength": 255, + "minLength": 1, + "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", + "type": "string" + } + }, + "type": "object" + }, + "OpenIdIssuer": { + "enum": [ + "COGNITO" + ], + "type": "string" + } + }, + "deprecatedProperties": [ + "/properties/Details" + ], + "handlers": { + "create": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "delete": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "PolicyStoreId": { + "$ref": "resource-schema.json#/properties/PolicyStoreId" + } + }, + "required": [ + "PolicyStoreId" + ] + }, + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "read": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "update": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + } + }, + "primaryIdentifier": [ + "/properties/IdentitySourceId", + "/properties/PolicyStoreId" + ], + "properties": { + "Configuration": { + "$ref": "#/definitions/IdentitySourceConfiguration" + }, + "Details": { + "$ref": "#/definitions/IdentitySourceDetails" + }, + "IdentitySourceId": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]*$", + "type": "string" + }, + "PolicyStoreId": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]*$", + "type": "string" + }, + "PrincipalEntityType": { + "maxLength": 200, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Details", + "/properties/IdentitySourceId" + ], + "required": [ + "Configuration", + "PolicyStoreId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-avp", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::VerifiedPermissions::IdentitySource" +} 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 6cfa4c0728..8131b48bdc 100644 --- a/src/cfnlint/data/schemas/providers/ap_southeast_2/__init__.py +++ b/src/cfnlint/data/schemas/providers/ap_southeast_2/__init__.py @@ -10,6 +10,7 @@ "AWS::ApiGatewayV2::ApiMapping", "AWS::CE::AnomalySubscription", "AWS::Shield::DRTAccess", + "AWS::Deadline::Farm", "AWS::SSO::Assignment", "AWS::Glue::Partition", "AWS::RDS::Integration", @@ -42,6 +43,7 @@ "AWS::EC2::NetworkPerformanceMetricSubscription", "AWS::MediaLive::Channel", "AWS::Greengrass::DeviceDefinition", + "AWS::CleanRoomsML::TrainingDataset", "AWS::CloudFront::ContinuousDeploymentPolicy", "AWS::QuickSight::Analysis", "AWS::Kendra::Faq", @@ -133,6 +135,7 @@ "AWS::CloudTrail::EventDataStore", "AWS::AppIntegrations::Application", "AWS::KinesisFirehose::DeliveryStream", + "AWS::Deadline::QueueFleetAssociation", "AWS::EC2::NetworkInsightsAccessScope", "AWS::Cognito::UserPoolUserToGroupAttachment", "AWS::PCAConnectorAD::DirectoryRegistration", @@ -173,6 +176,7 @@ "AWS::IoTSiteWise::Portal", "AWS::Events::Archive", "AWS::MSK::Cluster", + "AWS::SecurityHub::DelegatedAdmin", "AWS::ControlTower::EnabledBaseline", "AWS::AppStream::AppBlockBuilder", "AWS::EC2::VPCEndpointConnectionNotification", @@ -223,6 +227,7 @@ "AWS::RoboMaker::SimulationApplication", "AWS::NetworkManager::TransitGatewayRegistration", "AWS::Amplify::App", + "AWS::EntityResolution::PolicyStatement", "AWS::InspectorV2::Filter", "AWS::ElastiCache::ReplicationGroup", "AWS::StepFunctions::StateMachineAlias", @@ -283,6 +288,7 @@ "AWS::Lambda::Alias", "AWS::Logs::LogAnomalyDetector", "AWS::WAF::IPSet", + "AWS::Deadline::Fleet", "AWS::IoTTwinMaker::Workspace", "AWS::VpcLattice::ServiceNetworkServiceAssociation", "AWS::EC2::TransitGatewayMulticastDomainAssociation", @@ -394,6 +400,7 @@ "AWS::MediaPackageV2::ChannelPolicy", "AWS::ApiGatewayV2::VpcLink", "AWS::IoT::JobTemplate", + "AWS::Deadline::Queue", "AWS::ServiceCatalog::PortfolioProductAssociation", "AWS::DataBrew::Project", "AWS::VpcLattice::TargetGroup", @@ -409,6 +416,7 @@ "AWS::IAM::ServerCertificate", "AWS::CodeStarConnections::Connection", "AWS::IoT::SecurityProfile", + "AWS::GlobalAccelerator::CrossAccountAttachment", "AWS::Events::EventBus", "AWS::DocDB::EventSubscription", "AWS::SQS::QueueInlinePolicy", @@ -461,6 +469,7 @@ "AWS::Config::OrganizationConformancePack", "AWS::Connect::QuickConnect", "AWS::Logs::QueryDefinition", + "AWS::SecurityHub::ProductSubscription", "AWS::IAM::InstanceProfile", "AWS::IoT::BillingGroup", "AWS::AppStream::Application", @@ -479,6 +488,7 @@ "AWS::Cognito::UserPoolUICustomizationAttachment", "AWS::SageMaker::NotebookInstanceLifecycleConfig", "AWS::ImageBuilder::ContainerRecipe", + "AWS::CodeConnections::Connection", "AWS::Connect::Rule", "AWS::EFS::AccessPoint", "AWS::Redshift::ClusterSecurityGroupIngress", @@ -509,6 +519,7 @@ "AWS::EC2::ClientVpnRoute", "AWS::ImageBuilder::Workflow", "AWS::ECS::TaskSet", + "AWS::SecurityLake::AwsLogSource", "AWS::AppSync::ApiKey", "AWS::CloudFormation::TypeActivation", "AWS::GroundStation::DataflowEndpointGroup", @@ -571,6 +582,7 @@ "AWS::EC2::CustomerGateway", "AWS::IAM::GroupPolicy", "AWS::Scheduler::Schedule", + "AWS::Deadline::LicenseEndpoint", "AWS::WAF::ByteMatchSet", "AWS::AmplifyUIBuilder::Theme", "AWS::Neptune::DBClusterParameterGroup", @@ -598,6 +610,7 @@ "AWS::Glue::Trigger", "AWS::GlobalAccelerator::Listener", "AWS::VerifiedPermissions::PolicyStore", + "AWS::Deadline::QueueEnvironment", "AWS::Signer::SigningProfile", "AWS::KendraRanking::ExecutionPlan", "AWS::EC2::VPCPeeringConnection", @@ -678,6 +691,7 @@ "AWS::CodeBuild::SourceCredential", "AWS::EMR::InstanceFleetConfig", "AWS::EMR::Cluster", + "AWS::SecurityLake::DataLake", "AWS::CodePipeline::Webhook", "AWS::ApiGatewayV2::DomainName", "AWS::CustomerProfiles::EventStream", @@ -769,6 +783,7 @@ "AWS::WorkSpacesWeb::TrustStore", "AWS::CustomerProfiles::Domain", "AWS::IoT::Policy", + "AWS::APS::Scraper", "AWS::EC2::TransitGatewayRoute", "AWS::SSM::MaintenanceWindow", "AWS::DataZone::Domain", @@ -791,6 +806,7 @@ "AWS::DevOpsGuru::LogAnomalyDetectionIntegration", "AWS::NetworkManager::Link", "AWS::QLDB::Stream", + "AWS::SecurityLake::Subscriber", "AWS::SageMaker::NotebookInstance", "AWS::IoTSiteWise::Dashboard", "AWS::Pinpoint::APNSVoipChannel", @@ -826,6 +842,7 @@ "AWS::GameLift::MatchmakingRuleSet", "AWS::EC2::EgressOnlyInternetGateway", "AWS::Athena::CapacityReservation", + "AWS::SecurityHub::Insight", "AWS::Config::ConformancePack", "AWS::EC2::VPCCidrBlock", "AWS::APS::Workspace", @@ -955,6 +972,7 @@ "AWS::CleanRooms::Collaboration", "AWS::SSM::Association", "AWS::EC2::ClientVpnEndpoint", + "AWS::EntityResolution::IdNamespace", "AWS::CloudFront::ResponseHeadersPolicy", "AWS::SecurityHub::AutomationRule", "AWS::MSK::ClusterPolicy", @@ -982,9 +1000,11 @@ "AWS::Route53Resolver::OutpostResolver", "AWS::ACMPCA::Certificate", "AWS::EC2::IPAMAllocation", + "AWS::Deadline::StorageProfile", "AWS::WorkSpaces::Workspace", "AWS::Inspector::AssessmentTemplate", "AWS::EMR::Studio", + "AWS::Deadline::MeteredProduct", "AWS::EC2::InstanceConnectEndpoint", "AWS::DAX::ParameterGroup", "AWS::DataZone::SubscriptionTarget", @@ -1159,6 +1179,7 @@ "aws-apigatewayv2-apimapping.json", "aws-ce-anomalysubscription.json", "aws-shield-drtaccess.json", + "aws-deadline-farm.json", "aws-sso-assignment.json", "aws-glue-partition.json", "aws-rds-integration.json", @@ -1174,12 +1195,10 @@ "aws-ram-resourceshare.json", "aws-memorydb-cluster.json", "aws-dms-replicationconfig.json", - "aws-dynamodb-table.json", "aws-amazonmq-configurationassociation.json", "aws-wafregional-ipset.json", "aws-redshiftserverless-namespace.json", "aws-apprunner-observabilityconfiguration.json", - "aws-ec2-securitygroupegress.json", "aws-ec2-localgatewayroutetablevpcassociation.json", "aws-config-organizationconfigrule.json", "aws-glue-dataqualityruleset.json", @@ -1190,6 +1209,7 @@ "aws-ec2-networkperformancemetricsubscription.json", "aws-medialive-channel.json", "aws-greengrass-devicedefinition.json", + "aws-cleanroomsml-trainingdataset.json", "aws-cloudfront-continuousdeploymentpolicy.json", "aws-quicksight-analysis.json", "aws-kendra-faq.json", @@ -1210,7 +1230,6 @@ "aws-apigatewayv2-integrationresponse.json", "aws-iotevents-input.json", "aws-ec2-networkacl.json", - "aws-lambda-eventsourcemapping.json", "aws-budgets-budgetsaction.json", "aws-logs-resourcepolicy.json", "aws-lex-botversion.json", @@ -1280,6 +1299,7 @@ "aws-cloudtrail-eventdatastore.json", "aws-appintegrations-application.json", "aws-kinesisfirehose-deliverystream.json", + "aws-deadline-queuefleetassociation.json", "aws-ec2-networkinsightsaccessscope.json", "aws-cognito-userpoolusertogroupattachment.json", "aws-pcaconnectorad-directoryregistration.json", @@ -1320,6 +1340,7 @@ "aws-iotsitewise-portal.json", "aws-events-archive.json", "aws-msk-cluster.json", + "aws-securityhub-delegatedadmin.json", "aws-controltower-enabledbaseline.json", "aws-appstream-appblockbuilder.json", "aws-ec2-vpcendpointconnectionnotification.json", @@ -1369,6 +1390,7 @@ "aws-codegurureviewer-repositoryassociation.json", "aws-networkmanager-transitgatewayregistration.json", "aws-amplify-app.json", + "aws-entityresolution-policystatement.json", "aws-inspectorv2-filter.json", "aws-elasticache-replicationgroup.json", "aws-stepfunctions-statemachinealias.json", @@ -1428,6 +1450,7 @@ "aws-lambda-alias.json", "aws-logs-loganomalydetector.json", "aws-waf-ipset.json", + "aws-deadline-fleet.json", "aws-iottwinmaker-workspace.json", "aws-vpclattice-servicenetworkserviceassociation.json", "aws-ec2-transitgatewaymulticastdomainassociation.json", @@ -1482,7 +1505,6 @@ "aws-servicecatalog-launchtemplateconstraint.json", "aws-devopsguru-resourcecollection.json", "aws-wafv2-loggingconfiguration.json", - "aws-dynamodb-globaltable.json", "alexa-ask-skill.json", "aws-backup-backupplan.json", "aws-pinpoint-eventstream.json", @@ -1538,6 +1560,7 @@ "aws-mediapackagev2-channelpolicy.json", "aws-apigatewayv2-vpclink.json", "aws-iot-jobtemplate.json", + "aws-deadline-queue.json", "aws-servicecatalog-portfolioproductassociation.json", "aws-databrew-project.json", "aws-vpclattice-targetgroup.json", @@ -1553,6 +1576,7 @@ "aws-iam-servercertificate.json", "aws-codestarconnections-connection.json", "aws-iot-securityprofile.json", + "aws-globalaccelerator-crossaccountattachment.json", "aws-events-eventbus.json", "aws-docdb-eventsubscription.json", "aws-sqs-queueinlinepolicy.json", @@ -1579,6 +1603,7 @@ "aws-ec2-transitgatewaymulticastgroupmember.json", "aws-ec2-volumeattachment.json", "aws-glue-securityconfiguration.json", + "aws-networkfirewall-tlsinspectionconfiguration.json", "aws-opensearchserverless-collection.json", "aws-databrew-ruleset.json", "aws-gamelift-matchmakingconfiguration.json", @@ -1603,6 +1628,7 @@ "aws-config-organizationconformancepack.json", "aws-connect-quickconnect.json", "aws-logs-querydefinition.json", + "aws-securityhub-productsubscription.json", "aws-iam-instanceprofile.json", "aws-iot-billinggroup.json", "aws-appstream-application.json", @@ -1621,6 +1647,7 @@ "aws-cognito-userpooluicustomizationattachment.json", "aws-sagemaker-notebookinstancelifecycleconfig.json", "aws-imagebuilder-containerrecipe.json", + "aws-codeconnections-connection.json", "aws-connect-rule.json", "aws-efs-accesspoint.json", "aws-redshift-clustersecuritygroupingress.json", @@ -1651,6 +1678,7 @@ "aws-ec2-clientvpnroute.json", "aws-imagebuilder-workflow.json", "aws-ecs-taskset.json", + "aws-securitylake-awslogsource.json", "aws-appsync-apikey.json", "aws-cloudformation-typeactivation.json", "aws-groundstation-dataflowendpointgroup.json", @@ -1712,6 +1740,7 @@ "aws-ec2-customergateway.json", "aws-iam-grouppolicy.json", "aws-scheduler-schedule.json", + "aws-deadline-licenseendpoint.json", "aws-waf-bytematchset.json", "aws-amplifyuibuilder-theme.json", "aws-emrserverless-application.json", @@ -1738,6 +1767,7 @@ "aws-glue-trigger.json", "aws-globalaccelerator-listener.json", "aws-verifiedpermissions-policystore.json", + "aws-deadline-queueenvironment.json", "aws-signer-signingprofile.json", "aws-kendraranking-executionplan.json", "aws-ec2-vpcpeeringconnection.json", @@ -1818,6 +1848,7 @@ "aws-codebuild-sourcecredential.json", "aws-emr-instancefleetconfig.json", "aws-emr-cluster.json", + "aws-securitylake-datalake.json", "aws-codepipeline-webhook.json", "aws-apigatewayv2-domainname.json", "aws-customerprofiles-eventstream.json", @@ -1854,8 +1885,6 @@ "aws-datasync-locationefs.json", "aws-ec2-localgatewayroutetable.json", "aws-apigateway-resource.json", - "aws-sagemaker-appimageconfig.json", - "aws-verifiedpermissions-identitysource.json", "aws-macie-session.json", "aws-elasticloadbalancingv2-targetgroup.json", "aws-applicationautoscaling-scalingpolicy.json", @@ -1906,6 +1935,7 @@ "aws-workspacesweb-truststore.json", "aws-customerprofiles-domain.json", "aws-iot-policy.json", + "aws-aps-scraper.json", "aws-ec2-transitgatewayroute.json", "aws-ssm-maintenancewindow.json", "aws-datazone-domain.json", @@ -1928,6 +1958,7 @@ "aws-devopsguru-loganomalydetectionintegration.json", "aws-networkmanager-link.json", "aws-qldb-stream.json", + "aws-securitylake-subscriber.json", "aws-sagemaker-notebookinstance.json", "aws-iotsitewise-dashboard.json", "aws-pinpoint-apnsvoipchannel.json", @@ -1963,6 +1994,7 @@ "aws-gamelift-matchmakingruleset.json", "aws-ec2-egressonlyinternetgateway.json", "aws-athena-capacityreservation.json", + "aws-securityhub-insight.json", "aws-config-conformancepack.json", "aws-ec2-vpccidrblock.json", "aws-aps-workspace.json", @@ -2069,6 +2101,7 @@ "aws-sagemaker-userprofile.json", "aws-personalize-dataset.json", "aws-ec2-prefixlist.json", + "aws-ec2-instance.json", "aws-opensearchserverless-securityconfig.json", "aws-networkmanager-device.json", "aws-proton-environmentaccountconnection.json", @@ -2087,6 +2120,7 @@ "aws-cleanrooms-collaboration.json", "aws-ssm-association.json", "aws-ec2-clientvpnendpoint.json", + "aws-entityresolution-idnamespace.json", "aws-cloudfront-responseheaderspolicy.json", "aws-securityhub-automationrule.json", "aws-msk-clusterpolicy.json", @@ -2114,9 +2148,11 @@ "aws-route53resolver-outpostresolver.json", "aws-acmpca-certificate.json", "aws-ec2-ipamallocation.json", + "aws-deadline-storageprofile.json", "aws-workspaces-workspace.json", "aws-inspector-assessmenttemplate.json", "aws-emr-studio.json", + "aws-deadline-meteredproduct.json", "aws-ec2-instanceconnectendpoint.json", "aws-dax-parametergroup.json", "aws-datazone-subscriptiontarget.json", diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_2/aws-dynamodb-globaltable.json b/src/cfnlint/data/schemas/providers/ap_southeast_2/aws-dynamodb-globaltable.json new file mode 100644 index 0000000000..748ce4bf8f --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_southeast_2/aws-dynamodb-globaltable.json @@ -0,0 +1,673 @@ +{ + "additionalIdentifiers": [ + [ + "/properties/Arn" + ], + [ + "/properties/StreamArn" + ] + ], + "additionalProperties": false, + "allOf": [ + { + "if": { + "required": [ + "LocalSecondaryIndexes" + ], + "type": "object" + }, + "then": { + "properties": { + "AttributeDefinitions": { + "minItems": 2 + }, + "KeySchema": { + "minItems": 2 + } + }, + "type": "object" + } + } + ], + "createOnlyProperties": [ + "/properties/LocalSecondaryIndexes", + "/properties/TableName", + "/properties/KeySchema" + ], + "definitions": { + "AttributeDefinition": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "AttributeType": { + "type": "string" + } + }, + "required": [ + "AttributeName", + "AttributeType" + ], + "type": "object" + }, + "CapacityAutoScalingSettings": { + "additionalProperties": false, + "properties": { + "MaxCapacity": { + "minimum": 1, + "type": "integer" + }, + "MinCapacity": { + "minimum": 1, + "type": "integer" + }, + "SeedCapacity": { + "minimum": 1, + "type": "integer" + }, + "TargetTrackingScalingPolicyConfiguration": { + "$ref": "#/definitions/TargetTrackingScalingPolicyConfiguration" + } + }, + "required": [ + "MinCapacity", + "MaxCapacity", + "TargetTrackingScalingPolicyConfiguration" + ], + "type": "object" + }, + "ContributorInsightsSpecification": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "GlobalSecondaryIndex": { + "additionalProperties": false, + "properties": { + "IndexName": { + "maxLength": 255, + "minLength": 3, + "type": "string" + }, + "KeySchema": { + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 + }, + "Projection": { + "$ref": "#/definitions/Projection" + }, + "WriteProvisionedThroughputSettings": { + "$ref": "#/definitions/WriteProvisionedThroughputSettings" + } + }, + "required": [ + "IndexName", + "Projection", + "KeySchema" + ], + "type": "object" + }, + "KeySchema": { + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "KeyType": { + "enum": [ + "HASH", + "RANGE" + ], + "type": "string" + } + }, + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" + }, + "prefixItems": [ + { + "additionalProperties": false, + "properties": { + "KeyType": { + "const": "HASH", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + }, + { + "properties": { + "KeyType": { + "const": "RANGE", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + } + ], + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] + }, + "KinesisStreamSpecification": { + "additionalProperties": false, + "properties": { + "ApproximateCreationDateTimePrecision": { + "enum": [ + "MICROSECOND", + "MILLISECOND" + ], + "type": "string" + }, + "StreamArn": { + "type": "string" + } + }, + "required": [ + "StreamArn" + ], + "type": "object" + }, + "LocalSecondaryIndex": { + "additionalProperties": false, + "properties": { + "IndexName": { + "maxLength": 255, + "minLength": 3, + "type": "string" + }, + "KeySchema": { + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 2 + }, + "Projection": { + "$ref": "#/definitions/Projection" + } + }, + "required": [ + "IndexName", + "Projection", + "KeySchema" + ], + "type": "object" + }, + "PointInTimeRecoverySpecification": { + "additionalProperties": false, + "properties": { + "PointInTimeRecoveryEnabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "Projection": { + "additionalProperties": false, + "properties": { + "NonKeyAttributes": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "ProjectionType": { + "type": "string" + } + }, + "type": "object" + }, + "ReadProvisionedThroughputSettings": { + "additionalProperties": false, + "properties": { + "ReadCapacityAutoScalingSettings": { + "$ref": "#/definitions/CapacityAutoScalingSettings" + }, + "ReadCapacityUnits": { + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "ReplicaGlobalSecondaryIndexSpecification": { + "additionalProperties": false, + "properties": { + "ContributorInsightsSpecification": { + "$ref": "#/definitions/ContributorInsightsSpecification" + }, + "IndexName": { + "maxLength": 255, + "minLength": 3, + "type": "string" + }, + "ReadProvisionedThroughputSettings": { + "$ref": "#/definitions/ReadProvisionedThroughputSettings" + } + }, + "required": [ + "IndexName" + ], + "type": "object" + }, + "ReplicaSSESpecification": { + "additionalProperties": false, + "properties": { + "KMSMasterKeyId": { + "type": "string" + } + }, + "required": [ + "KMSMasterKeyId" + ], + "type": "object" + }, + "ReplicaSpecification": { + "additionalProperties": false, + "properties": { + "ContributorInsightsSpecification": { + "$ref": "#/definitions/ContributorInsightsSpecification" + }, + "DeletionProtectionEnabled": { + "type": "boolean" + }, + "GlobalSecondaryIndexes": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ReplicaGlobalSecondaryIndexSpecification" + }, + "type": "array", + "uniqueItems": true + }, + "KinesisStreamSpecification": { + "$ref": "#/definitions/KinesisStreamSpecification" + }, + "PointInTimeRecoverySpecification": { + "$ref": "#/definitions/PointInTimeRecoverySpecification" + }, + "ReadProvisionedThroughputSettings": { + "$ref": "#/definitions/ReadProvisionedThroughputSettings" + }, + "Region": { + "type": "string" + }, + "ReplicaStreamSpecification": { + "$ref": "#/definitions/ReplicaStreamSpecification" + }, + "ResourcePolicy": { + "$ref": "#/definitions/ResourcePolicy" + }, + "SSESpecification": { + "$ref": "#/definitions/ReplicaSSESpecification" + }, + "TableClass": { + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "Region" + ], + "type": "object" + }, + "ReplicaStreamSpecification": { + "additionalProperties": false, + "properties": { + "ResourcePolicy": { + "$ref": "#/definitions/ResourcePolicy" + } + }, + "required": [ + "ResourcePolicy" + ], + "type": "object" + }, + "ResourcePolicy": { + "additionalProperties": false, + "properties": { + "PolicyDocument": { + "type": "object" + } + }, + "required": [ + "PolicyDocument" + ], + "type": "object" + }, + "SSESpecification": { + "additionalProperties": false, + "properties": { + "SSEEnabled": { + "type": "boolean" + }, + "SSEType": { + "type": "string" + } + }, + "required": [ + "SSEEnabled" + ], + "type": "object" + }, + "StreamSpecification": { + "additionalProperties": false, + "properties": { + "StreamViewType": { + "type": "string" + } + }, + "required": [ + "StreamViewType" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TargetTrackingScalingPolicyConfiguration": { + "additionalProperties": false, + "properties": { + "DisableScaleIn": { + "type": "boolean" + }, + "ScaleInCooldown": { + "minimum": 0, + "type": "integer" + }, + "ScaleOutCooldown": { + "minimum": 0, + "type": "integer" + }, + "TargetValue": { + "format": "double", + "type": "number" + } + }, + "required": [ + "TargetValue" + ], + "type": "object" + }, + "TimeToLiveSpecification": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "WriteProvisionedThroughputSettings": { + "additionalProperties": false, + "properties": { + "WriteCapacityAutoScalingSettings": { + "$ref": "#/definitions/CapacityAutoScalingSettings" + } + }, + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "dynamodb:CreateTable", + "dynamodb:CreateTableReplica", + "dynamodb:Describe*", + "dynamodb:UpdateTimeToLive", + "dynamodb:UpdateContributorInsights", + "dynamodb:UpdateContinuousBackups", + "dynamodb:ListTagsOfResource", + "dynamodb:Query", + "dynamodb:Scan", + "dynamodb:UpdateItem", + "dynamodb:PutItem", + "dynamodb:GetItem", + "dynamodb:DeleteItem", + "dynamodb:BatchWriteItem", + "dynamodb:TagResource", + "dynamodb:EnableKinesisStreamingDestination", + "dynamodb:DisableKinesisStreamingDestination", + "dynamodb:UpdateTableReplicaAutoScaling", + "dynamodb:TagResource", + "dynamodb:GetResourcePolicy", + "dynamodb:PutResourcePolicy", + "application-autoscaling:DeleteScalingPolicy", + "application-autoscaling:DeleteScheduledAction", + "application-autoscaling:DeregisterScalableTarget", + "application-autoscaling:Describe*", + "application-autoscaling:PutScalingPolicy", + "application-autoscaling:PutScheduledAction", + "application-autoscaling:RegisterScalableTarget", + "kinesis:ListStreams", + "kinesis:DescribeStream", + "kinesis:PutRecords", + "kms:CreateGrant", + "kms:DescribeKey", + "kms:ListAliases", + "kms:Decrypt", + "kms:RevokeGrant", + "cloudwatch:PutMetricData", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "dynamodb:Describe*", + "dynamodb:DeleteTable", + "application-autoscaling:DeleteScalingPolicy", + "application-autoscaling:DeleteScheduledAction", + "application-autoscaling:DeregisterScalableTarget", + "application-autoscaling:Describe*", + "application-autoscaling:PutScalingPolicy", + "application-autoscaling:PutScheduledAction", + "application-autoscaling:RegisterScalableTarget" + ] + }, + "list": { + "permissions": [ + "dynamodb:ListTables", + "cloudwatch:PutMetricData" + ] + }, + "read": { + "permissions": [ + "dynamodb:Describe*", + "dynamodb:GetResourcePolicy", + "application-autoscaling:Describe*", + "cloudwatch:PutMetricData", + "dynamodb:ListTagsOfResource", + "kms:DescribeKey" + ] + }, + "update": { + "permissions": [ + "dynamodb:Describe*", + "dynamodb:CreateTableReplica", + "dynamodb:UpdateTable", + "dynamodb:UpdateTimeToLive", + "dynamodb:UpdateContinuousBackups", + "dynamodb:UpdateContributorInsights", + "dynamodb:ListTagsOfResource", + "dynamodb:Query", + "dynamodb:Scan", + "dynamodb:UpdateItem", + "dynamodb:PutItem", + "dynamodb:GetItem", + "dynamodb:DeleteItem", + "dynamodb:BatchWriteItem", + "dynamodb:DeleteTable", + "dynamodb:DeleteTableReplica", + "dynamodb:UpdateItem", + "dynamodb:TagResource", + "dynamodb:UntagResource", + "dynamodb:EnableKinesisStreamingDestination", + "dynamodb:DisableKinesisStreamingDestination", + "dynamodb:UpdateTableReplicaAutoScaling", + "dynamodb:UpdateKinesisStreamingDestination", + "dynamodb:GetResourcePolicy", + "dynamodb:PutResourcePolicy", + "dynamodb:DeleteResourcePolicy", + "application-autoscaling:DeleteScalingPolicy", + "application-autoscaling:DeleteScheduledAction", + "application-autoscaling:DeregisterScalableTarget", + "application-autoscaling:Describe*", + "application-autoscaling:PutScalingPolicy", + "application-autoscaling:PutScheduledAction", + "application-autoscaling:RegisterScalableTarget", + "kinesis:ListStreams", + "kinesis:DescribeStream", + "kinesis:PutRecords", + "kms:CreateGrant", + "kms:DescribeKey", + "kms:ListAliases", + "kms:RevokeGrant", + "cloudwatch:PutMetricData" + ], + "timeoutInMinutes": 1200 + } + }, + "primaryIdentifier": [ + "/properties/TableName" + ], + "properties": { + "Arn": { + "type": "string" + }, + "AttributeDefinitions": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AttributeDefinition" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] + }, + "BillingMode": { + "type": "string" + }, + "GlobalSecondaryIndexes": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/GlobalSecondaryIndex" + }, + "type": "array", + "uniqueItems": true + }, + "KeySchema": { + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 + }, + "LocalSecondaryIndexes": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LocalSecondaryIndex" + }, + "type": "array", + "uniqueItems": true + }, + "Replicas": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ReplicaSpecification" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "SSESpecification": { + "$ref": "#/definitions/SSESpecification" + }, + "StreamArn": { + "type": "string" + }, + "StreamSpecification": { + "$ref": "#/definitions/StreamSpecification" + }, + "TableId": { + "type": "string" + }, + "TableName": { + "type": "string" + }, + "TimeToLiveSpecification": { + "$ref": "#/definitions/TimeToLiveSpecification" + }, + "WriteProvisionedThroughputSettings": { + "$ref": "#/definitions/WriteProvisionedThroughputSettings" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/StreamArn", + "/properties/TableId" + ], + "required": [ + "KeySchema", + "AttributeDefinitions", + "Replicas" + ], + "typeName": "AWS::DynamoDB::GlobalTable", + "writeOnlyProperties": [ + "/properties/Replicas/*/ReadProvisionedThroughputSettings/ReadCapacityAutoScalingSettings/SeedCapacity", + "/properties/Replicas/*/GlobalSecondaryIndexes/*/ReadProvisionedThroughputSettings/ReadCapacityAutoScalingSettings/SeedCapacity", + "/properties/WriteProvisionedThroughputSettings/WriteCapacityAutoScalingSettings/SeedCapacity", + "/properties/GlobalSecondaryIndexes/*/WriteProvisionedThroughputSettings/WriteCapacityAutoScalingSettings/SeedCapacity" + ] +} diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_2/aws-dynamodb-table.json b/src/cfnlint/data/schemas/providers/ap_southeast_2/aws-dynamodb-table.json new file mode 100644 index 0000000000..55c218dadf --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_southeast_2/aws-dynamodb-table.json @@ -0,0 +1,625 @@ +{ + "additionalProperties": false, + "allOf": [ + { + "if": { + "required": [ + "LocalSecondaryIndexes" + ], + "type": "object" + }, + "then": { + "properties": { + "AttributeDefinitions": { + "minItems": 2 + }, + "KeySchema": { + "minItems": 2 + } + }, + "type": "object" + } + } + ], + "cfnLint": [ + "AWS::DynamoDB::Table/Properties" + ], + "createOnlyProperties": [ + "/properties/TableName", + "/properties/ImportSourceSpecification" + ], + "definitions": { + "AttributeDefinition": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "type": "string" + }, + "AttributeType": { + "enum": [ + "S", + "N", + "B" + ], + "type": "string" + } + }, + "required": [ + "AttributeName", + "AttributeType" + ], + "type": "object" + }, + "ContributorInsightsSpecification": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "Csv": { + "additionalProperties": false, + "properties": { + "Delimiter": { + "type": "string" + }, + "HeaderList": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "DeprecatedHashKeyElement": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "type": "string" + }, + "AttributeType": { + "type": "string" + } + }, + "required": [ + "AttributeType", + "AttributeName" + ], + "type": "object" + }, + "DeprecatedKeySchema": { + "additionalProperties": false, + "properties": { + "HashKeyElement": { + "$ref": "#/definitions/DeprecatedHashKeyElement" + } + }, + "required": [ + "HashKeyElement" + ], + "type": "object" + }, + "GlobalSecondaryIndex": { + "additionalProperties": false, + "properties": { + "ContributorInsightsSpecification": { + "$ref": "#/definitions/ContributorInsightsSpecification" + }, + "IndexName": { + "type": "string" + }, + "KeySchema": { + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 + }, + "Projection": { + "$ref": "#/definitions/Projection" + }, + "ProvisionedThroughput": { + "$ref": "#/definitions/ProvisionedThroughput" + } + }, + "required": [ + "IndexName", + "Projection", + "KeySchema" + ], + "type": "object" + }, + "ImportSourceSpecification": { + "additionalProperties": false, + "properties": { + "InputCompressionType": { + "type": "string" + }, + "InputFormat": { + "type": "string" + }, + "InputFormatOptions": { + "$ref": "#/definitions/InputFormatOptions" + }, + "S3BucketSource": { + "$ref": "#/definitions/S3BucketSource" + } + }, + "required": [ + "S3BucketSource", + "InputFormat" + ], + "type": "object" + }, + "InputFormatOptions": { + "additionalProperties": false, + "properties": { + "Csv": { + "$ref": "#/definitions/Csv" + } + }, + "type": "object" + }, + "KeySchema": { + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "type": "string" + }, + "KeyType": { + "enum": [ + "HASH", + "RANGE" + ], + "type": "string" + } + }, + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" + }, + "prefixItems": [ + { + "properties": { + "KeyType": { + "const": "HASH", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + }, + { + "properties": { + "KeyType": { + "const": "RANGE", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + } + ], + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] + }, + "KinesisStreamSpecification": { + "additionalProperties": false, + "properties": { + "ApproximateCreationDateTimePrecision": { + "enum": [ + "MICROSECOND", + "MILLISECOND" + ], + "type": "string" + }, + "StreamArn": { + "type": "string" + } + }, + "required": [ + "StreamArn" + ], + "type": "object" + }, + "LocalSecondaryIndex": { + "additionalProperties": false, + "properties": { + "IndexName": { + "type": "string" + }, + "KeySchema": { + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 2 + }, + "Projection": { + "$ref": "#/definitions/Projection" + } + }, + "required": [ + "IndexName", + "Projection", + "KeySchema" + ], + "type": "object" + }, + "PointInTimeRecoverySpecification": { + "additionalProperties": false, + "properties": { + "PointInTimeRecoveryEnabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "Projection": { + "additionalProperties": false, + "properties": { + "NonKeyAttributes": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "ProjectionType": { + "enum": [ + "ALL", + "KEYS_ONLY", + "INCLUDE" + ], + "type": "string" + } + }, + "type": "object" + }, + "ProvisionedThroughput": { + "additionalProperties": false, + "properties": { + "ReadCapacityUnits": { + "type": "integer" + }, + "WriteCapacityUnits": { + "type": "integer" + } + }, + "required": [ + "WriteCapacityUnits", + "ReadCapacityUnits" + ], + "type": "object" + }, + "ResourcePolicy": { + "additionalProperties": false, + "properties": { + "PolicyDocument": { + "type": "object" + } + }, + "required": [ + "PolicyDocument" + ], + "type": "object" + }, + "S3BucketSource": { + "additionalProperties": false, + "properties": { + "S3Bucket": { + "type": "string" + }, + "S3BucketOwner": { + "type": "string" + }, + "S3KeyPrefix": { + "type": "string" + } + }, + "required": [ + "S3Bucket" + ], + "type": "object" + }, + "SSESpecification": { + "additionalProperties": false, + "cfnLint": [ + "AWS::DynamoDB::Table/Properties/SSESpecification" + ], + "properties": { + "KMSMasterKeyId": { + "type": "string" + }, + "SSEEnabled": { + "type": "boolean" + }, + "SSEType": { + "type": "string" + } + }, + "required": [ + "SSEEnabled" + ], + "type": "object" + }, + "StreamSpecification": { + "additionalProperties": false, + "properties": { + "ResourcePolicy": { + "$ref": "#/definitions/ResourcePolicy" + }, + "StreamViewType": { + "enum": [ + "NEW_IMAGE", + "OLD_IMAGE", + "NEW_AND_OLD_IMAGES", + "KEYS_ONLY" + ], + "type": "string" + } + }, + "required": [ + "StreamViewType" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TimeToLiveSpecification": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "dynamodb:CreateTable", + "dynamodb:DescribeImport", + "dynamodb:DescribeTable", + "dynamodb:DescribeTimeToLive", + "dynamodb:UpdateTimeToLive", + "dynamodb:UpdateContributorInsights", + "dynamodb:UpdateContinuousBackups", + "dynamodb:DescribeContinuousBackups", + "dynamodb:DescribeContributorInsights", + "dynamodb:EnableKinesisStreamingDestination", + "dynamodb:DisableKinesisStreamingDestination", + "dynamodb:DescribeKinesisStreamingDestination", + "dynamodb:ImportTable", + "dynamodb:ListTagsOfResource", + "dynamodb:TagResource", + "dynamodb:UpdateTable", + "dynamodb:GetResourcePolicy", + "dynamodb:PutResourcePolicy", + "kinesis:DescribeStream", + "kinesis:PutRecords", + "iam:CreateServiceLinkedRole", + "kms:CreateGrant", + "kms:Decrypt", + "kms:DescribeKey", + "kms:ListAliases", + "kms:Encrypt", + "kms:RevokeGrant", + "logs:CreateLogGroup", + "logs:CreateLogStream", + "logs:DescribeLogGroups", + "logs:DescribeLogStreams", + "logs:PutLogEvents", + "logs:PutRetentionPolicy", + "s3:GetObject", + "s3:GetObjectMetadata", + "s3:ListBucket" + ], + "timeoutInMinutes": 720 + }, + "delete": { + "permissions": [ + "dynamodb:DeleteTable", + "dynamodb:DescribeTable" + ], + "timeoutInMinutes": 720 + }, + "list": { + "permissions": [ + "dynamodb:ListTables" + ] + }, + "read": { + "permissions": [ + "dynamodb:DescribeTable", + "dynamodb:DescribeContinuousBackups", + "dynamodb:DescribeContributorInsights", + "dynamodb:DescribeKinesisStreamingDestination", + "dynamodb:ListTagsOfResource", + "dynamodb:GetResourcePolicy" + ] + }, + "update": { + "permissions": [ + "dynamodb:UpdateTable", + "dynamodb:DescribeTable", + "dynamodb:DescribeTimeToLive", + "dynamodb:UpdateTimeToLive", + "dynamodb:UpdateContinuousBackups", + "dynamodb:UpdateContributorInsights", + "dynamodb:UpdateKinesisStreamingDestination", + "dynamodb:DescribeContinuousBackups", + "dynamodb:DescribeKinesisStreamingDestination", + "dynamodb:ListTagsOfResource", + "dynamodb:TagResource", + "dynamodb:UntagResource", + "dynamodb:DescribeContributorInsights", + "dynamodb:EnableKinesisStreamingDestination", + "dynamodb:DisableKinesisStreamingDestination", + "dynamodb:GetResourcePolicy", + "dynamodb:PutResourcePolicy", + "dynamodb:DeleteResourcePolicy", + "kinesis:DescribeStream", + "kinesis:PutRecords", + "iam:CreateServiceLinkedRole", + "kms:CreateGrant", + "kms:DescribeKey", + "kms:ListAliases", + "kms:RevokeGrant" + ], + "timeoutInMinutes": 720 + } + }, + "primaryIdentifier": [ + "/properties/TableName" + ], + "properties": { + "Arn": { + "type": "string" + }, + "AttributeDefinitions": { + "items": { + "$ref": "#/definitions/AttributeDefinition" + }, + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] + }, + "BillingMode": { + "enum": [ + "PROVISIONED", + "PAY_PER_REQUEST" + ], + "type": "string" + }, + "ContributorInsightsSpecification": { + "$ref": "#/definitions/ContributorInsightsSpecification" + }, + "DeletionProtectionEnabled": { + "type": "boolean" + }, + "GlobalSecondaryIndexes": { + "items": { + "$ref": "#/definitions/GlobalSecondaryIndex" + }, + "type": "array", + "uniqueItems": false + }, + "ImportSourceSpecification": { + "$ref": "#/definitions/ImportSourceSpecification" + }, + "KeySchema": { + "oneOf": [ + { + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 + }, + { + "type": "object" + } + ] + }, + "KinesisStreamSpecification": { + "$ref": "#/definitions/KinesisStreamSpecification" + }, + "LocalSecondaryIndexes": { + "items": { + "$ref": "#/definitions/LocalSecondaryIndex" + }, + "type": "array", + "uniqueItems": false + }, + "PointInTimeRecoverySpecification": { + "$ref": "#/definitions/PointInTimeRecoverySpecification" + }, + "ProvisionedThroughput": { + "$ref": "#/definitions/ProvisionedThroughput" + }, + "ResourcePolicy": { + "$ref": "#/definitions/ResourcePolicy" + }, + "SSESpecification": { + "$ref": "#/definitions/SSESpecification" + }, + "StreamArn": { + "type": "string" + }, + "StreamSpecification": { + "$ref": "#/definitions/StreamSpecification" + }, + "TableClass": { + "type": "string" + }, + "TableName": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "TimeToLiveSpecification": { + "$ref": "#/definitions/TimeToLiveSpecification" + } + }, + "propertyTransform": { + "/properties/SSESpecification/KMSMasterKeyId": "$join([\"arn:(aws)[-]{0,1}[a-z]{0,3}[-]{0,1}[a-z]{0,3}:kms:[a-z]{2}[-]{1}[a-z]{3,10}[-]{0,1}[a-z]{0,4}[-]{1}[1-4]{1}:[0-9]{12}[:]{1}key\\/\", SSESpecification.KMSMasterKeyId]) $OR $join([\"arn:(aws)[-]{0,1}[a-z]{0,3}[-]{0,1}[a-z]{0,3}:kms:[a-z]{2}[-]{1}[a-z]{3,10}[-]{0,1}[a-z]{0,4}[-]{1}[1-4]{1}:[0-9]{12}[:]{1}key\\/\", KMSMasterKeyId])" + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/StreamArn" + ], + "required": [ + "KeySchema" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::DynamoDB::Table", + "writeOnlyProperties": [ + "/properties/ImportSourceSpecification" + ] +} diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_2/aws-ec2-instance.json b/src/cfnlint/data/schemas/providers/ap_southeast_2/aws-ec2-instance.json deleted file mode 100644 index 7b3bfed595..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_southeast_2/aws-ec2-instance.json +++ /dev/null @@ -1,571 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ElasticGpuSpecifications", - "/properties/Ipv6Addresses", - "/properties/PlacementGroupName", - "/properties/HostResourceGroupArn", - "/properties/ImageId", - "/properties/CpuOptions", - "/properties/PrivateIpAddress", - "/properties/ElasticInferenceAccelerators", - "/properties/EnclaveOptions", - "/properties/HibernationOptions", - "/properties/KeyName", - "/properties/LicenseSpecifications", - "/properties/NetworkInterfaces", - "/properties/AvailabilityZone", - "/properties/SubnetId", - "/properties/LaunchTemplate", - "/properties/SecurityGroups", - "/properties/Ipv6AddressCount" - ], - "definitions": { - "AssociationParameter": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "BlockDeviceMapping": { - "additionalProperties": false, - "properties": { - "DeviceName": { - "type": "string" - }, - "Ebs": { - "$ref": "#/definitions/Ebs" - }, - "NoDevice": { - "$ref": "#/definitions/NoDevice" - }, - "VirtualName": { - "type": "string" - } - }, - "required": [ - "DeviceName" - ], - "requiredXor": [ - "VirtualName", - "Ebs", - "NoDevice" - ], - "type": "object" - }, - "CpuOptions": { - "additionalProperties": false, - "properties": { - "CoreCount": { - "type": "integer" - }, - "ThreadsPerCore": { - "type": "integer" - } - }, - "type": "object" - }, - "CreditSpecification": { - "additionalProperties": false, - "properties": { - "CPUCredits": { - "type": "string" - } - }, - "type": "object" - }, - "Ebs": { - "additionalProperties": false, - "properties": { - "DeleteOnTermination": { - "type": "boolean" - }, - "Encrypted": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "KmsKeyId": { - "type": "string" - }, - "SnapshotId": { - "type": "string" - }, - "VolumeSize": { - "type": "integer" - }, - "VolumeType": { - "type": "string" - } - }, - "type": "object" - }, - "ElasticGpuSpecification": { - "additionalProperties": false, - "properties": { - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "ElasticInferenceAccelerator": { - "additionalProperties": false, - "properties": { - "Count": { - "type": "integer" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "EnclaveOptions": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - } - }, - "type": "object" - }, - "HibernationOptions": { - "additionalProperties": false, - "properties": { - "Configured": { - "type": "boolean" - } - }, - "type": "object" - }, - "InstanceIpv6Address": { - "additionalProperties": false, - "properties": { - "Ipv6Address": { - "type": "string" - } - }, - "required": [ - "Ipv6Address" - ], - "type": "object" - }, - "LaunchTemplateSpecification": { - "additionalProperties": false, - "properties": { - "LaunchTemplateId": { - "type": "string" - }, - "LaunchTemplateName": { - "type": "string" - }, - "Version": { - "type": "string" - } - }, - "required": [ - "Version" - ], - "type": "object" - }, - "LicenseSpecification": { - "additionalProperties": false, - "properties": { - "LicenseConfigurationArn": { - "type": "string" - } - }, - "required": [ - "LicenseConfigurationArn" - ], - "type": "object" - }, - "NetworkInterface": { - "additionalProperties": false, - "properties": { - "AssociateCarrierIpAddress": { - "type": "boolean" - }, - "AssociatePublicIpAddress": { - "type": "boolean" - }, - "DeleteOnTermination": { - "type": "boolean" - }, - "Description": { - "type": "string" - }, - "DeviceIndex": { - "type": "string" - }, - "GroupSet": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": false - }, - "NetworkInterfaceId": { - "type": "string" - }, - "PrivateIpAddress": { - "type": "string" - }, - "PrivateIpAddresses": { - "items": { - "$ref": "#/definitions/PrivateIpAddressSpecification" - }, - "type": "array", - "uniqueItems": false - }, - "SecondaryPrivateIpAddressCount": { - "type": "integer" - }, - "SubnetId": { - "type": "string" - } - }, - "required": [ - "DeviceIndex" - ], - "type": "object" - }, - "NoDevice": { - "additionalProperties": false, - "type": "object" - }, - "PrivateDnsNameOptions": { - "additionalProperties": false, - "properties": { - "EnableResourceNameDnsAAAARecord": { - "type": "boolean" - }, - "EnableResourceNameDnsARecord": { - "type": "boolean" - }, - "HostnameType": { - "type": "string" - } - }, - "type": "object" - }, - "PrivateIpAddressSpecification": { - "additionalProperties": false, - "properties": { - "Primary": { - "type": "boolean" - }, - "PrivateIpAddress": { - "type": "string" - } - }, - "required": [ - "PrivateIpAddress", - "Primary" - ], - "type": "object" - }, - "SsmAssociation": { - "additionalProperties": false, - "properties": { - "AssociationParameters": { - "items": { - "$ref": "#/definitions/AssociationParameter" - }, - "type": "array", - "uniqueItems": false - }, - "DocumentName": { - "type": "string" - } - }, - "required": [ - "DocumentName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "Volume": { - "additionalProperties": false, - "properties": { - "Device": { - "type": "string" - }, - "VolumeId": { - "type": "string" - } - }, - "required": [ - "VolumeId", - "Device" - ], - "type": "object" - } - }, - "dependentExcluded": { - "NetworkInterfaces": [ - "SubnetId" - ], - "SubnetId": [ - "NetworkInterfaces" - ] - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AdditionalInfo": { - "type": "string" - }, - "Affinity": { - "enum": [ - "default", - "host" - ], - "type": "string" - }, - "AvailabilityZone": { - "cfnLint": [ - "AWS::EC2::Instance/Properties/AvailabilityZone" - ], - "type": "string" - }, - "BlockDeviceMappings": { - "items": { - "$ref": "#/definitions/BlockDeviceMapping" - }, - "type": "array", - "uniqueItems": false - }, - "CpuOptions": { - "$ref": "#/definitions/CpuOptions" - }, - "CreditSpecification": { - "$ref": "#/definitions/CreditSpecification" - }, - "DisableApiTermination": { - "type": "boolean" - }, - "EbsOptimized": { - "type": "boolean" - }, - "ElasticGpuSpecifications": { - "items": { - "$ref": "#/definitions/ElasticGpuSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "ElasticInferenceAccelerators": { - "items": { - "$ref": "#/definitions/ElasticInferenceAccelerator" - }, - "type": "array", - "uniqueItems": true - }, - "EnclaveOptions": { - "$ref": "#/definitions/EnclaveOptions" - }, - "HibernationOptions": { - "$ref": "#/definitions/HibernationOptions" - }, - "HostId": { - "type": "string" - }, - "HostResourceGroupArn": { - "type": "string" - }, - "IamInstanceProfile": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "ImageId": { - "type": "string" - }, - "InstanceInitiatedShutdownBehavior": { - "type": "string" - }, - "InstanceType": { - "cfnLint": [ - "AWS::EC2::Instance/Properties/InstanceType" - ], - "type": "string" - }, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": false - }, - "KernelId": { - "type": "string" - }, - "KeyName": { - "type": "string" - }, - "LaunchTemplate": { - "$ref": "#/definitions/LaunchTemplateSpecification" - }, - "LicenseSpecifications": { - "items": { - "$ref": "#/definitions/LicenseSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "Monitoring": { - "type": "boolean" - }, - "NetworkInterfaces": { - "items": { - "$ref": "#/definitions/NetworkInterface" - }, - "type": "array", - "uniqueItems": false - }, - "PlacementGroupName": { - "type": "string" - }, - "PrivateDnsName": { - "type": "string" - }, - "PrivateDnsNameOptions": { - "$ref": "#/definitions/PrivateDnsNameOptions" - }, - "PrivateIp": { - "type": "string" - }, - "PrivateIpAddress": { - "type": "string" - }, - "PropagateTagsToVolumeOnCreation": { - "type": "boolean" - }, - "PublicDnsName": { - "type": "string" - }, - "PublicIp": { - "type": "string" - }, - "RamdiskId": { - "type": "string" - }, - "SecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SecurityGroups": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SourceDestCheck": { - "type": "boolean" - }, - "SsmAssociations": { - "items": { - "$ref": "#/definitions/SsmAssociation" - }, - "type": "array", - "uniqueItems": false - }, - "SubnetId": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "Tenancy": { - "enum": [ - "default", - "dedicated", - "host" - ], - "type": "string" - }, - "UserData": { - "type": "string" - }, - "Volumes": { - "items": { - "$ref": "#/definitions/Volume" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/PublicIp", - "/properties/Id", - "/properties/PublicDnsName", - "/properties/PrivateDnsName", - "/properties/PrivateIp" - ], - "requiredXor": [ - "ImageId", - "LaunchTemplate" - ], - "typeName": "AWS::EC2::Instance" -} diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_2/aws-ec2-securitygroupegress.json b/src/cfnlint/data/schemas/providers/ap_southeast_2/aws-ec2-securitygroupegress.json new file mode 100644 index 0000000000..f94631dad2 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_southeast_2/aws-ec2-securitygroupegress.json @@ -0,0 +1,98 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::EC2::SecurityGroupEgress/Properties" + ], + "createOnlyProperties": [ + "/properties/IpProtocol", + "/properties/DestinationSecurityGroupId", + "/properties/ToPort", + "/properties/CidrIp", + "/properties/FromPort", + "/properties/GroupId", + "/properties/CidrIpv6", + "/properties/DestinationPrefixListId" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:AuthorizeSecurityGroupEgress", + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "delete": { + "permissions": [ + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "update": { + "permissions": [ + "ec2:UpdateSecurityGroupRuleDescriptionsEgress" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CidrIp": { + "type": "string" + }, + "CidrIpv6": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "DestinationPrefixListId": { + "type": "string" + }, + "DestinationSecurityGroupId": { + "type": "string" + }, + "FromPort": { + "minimum": -1, + "type": "integer" + }, + "GroupId": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "IpProtocol": { + "type": "string" + }, + "ToPort": { + "minimum": -1, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IpProtocol", + "GroupId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SecurityGroupEgress" +} diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_2/aws-lambda-eventsourcemapping.json b/src/cfnlint/data/schemas/providers/ap_southeast_2/aws-lambda-eventsourcemapping.json new file mode 100644 index 0000000000..cb7599c139 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_southeast_2/aws-lambda-eventsourcemapping.json @@ -0,0 +1,353 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::Lambda::EventSourceMapping/Properties" + ], + "createOnlyProperties": [ + "/properties/EventSourceArn", + "/properties/StartingPosition", + "/properties/StartingPositionTimestamp", + "/properties/SelfManagedEventSource", + "/properties/AmazonManagedKafkaEventSourceConfig", + "/properties/SelfManagedKafkaEventSourceConfig" + ], + "definitions": { + "AmazonManagedKafkaEventSourceConfig": { + "additionalProperties": false, + "properties": { + "ConsumerGroupId": { + "$ref": "#/definitions/ConsumerGroupId" + } + }, + "type": "object" + }, + "ConsumerGroupId": { + "maxLength": 200, + "minLength": 1, + "pattern": "[a-zA-Z0-9-\\/*:_+=.@-]*", + "type": "string" + }, + "DestinationConfig": { + "additionalProperties": false, + "properties": { + "OnFailure": { + "$ref": "#/definitions/OnFailure" + } + }, + "type": "object" + }, + "DocumentDBEventSourceConfig": { + "additionalProperties": false, + "properties": { + "CollectionName": { + "maxLength": 57, + "minLength": 1, + "type": "string" + }, + "DatabaseName": { + "maxLength": 63, + "minLength": 1, + "type": "string" + }, + "FullDocument": { + "enum": [ + "UpdateLookup", + "Default" + ], + "type": "string" + } + }, + "type": "object" + }, + "Endpoints": { + "additionalProperties": false, + "properties": { + "KafkaBootstrapServers": { + "items": { + "maxLength": 300, + "minLength": 1, + "pattern": "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9]):[0-9]{1,5}", + "type": "string" + }, + "maxItems": 10, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "Filter": { + "additionalProperties": false, + "properties": { + "Pattern": { + "maxLength": 4096, + "minLength": 0, + "pattern": ".*", + "type": "string" + } + }, + "type": "object" + }, + "FilterCriteria": { + "additionalProperties": false, + "properties": { + "Filters": { + "items": { + "$ref": "#/definitions/Filter" + }, + "maxItems": 20, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "MaximumConcurrency": { + "maximum": 1000, + "minimum": 2, + "type": "integer" + }, + "OnFailure": { + "additionalProperties": false, + "properties": { + "Destination": { + "maxLength": 1024, + "minLength": 12, + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "type": "string" + } + }, + "type": "object" + }, + "ScalingConfig": { + "additionalProperties": false, + "properties": { + "MaximumConcurrency": { + "$ref": "#/definitions/MaximumConcurrency" + } + }, + "type": "object" + }, + "SelfManagedEventSource": { + "additionalProperties": false, + "properties": { + "Endpoints": { + "$ref": "#/definitions/Endpoints" + } + }, + "type": "object" + }, + "SelfManagedKafkaEventSourceConfig": { + "additionalProperties": false, + "properties": { + "ConsumerGroupId": { + "$ref": "#/definitions/ConsumerGroupId" + } + }, + "type": "object" + }, + "SourceAccessConfiguration": { + "additionalProperties": false, + "properties": { + "Type": { + "enum": [ + "BASIC_AUTH", + "VPC_SUBNET", + "VPC_SECURITY_GROUP", + "SASL_SCRAM_512_AUTH", + "SASL_SCRAM_256_AUTH", + "VIRTUAL_HOST", + "CLIENT_CERTIFICATE_TLS_AUTH", + "SERVER_ROOT_CA_CERTIFICATE" + ], + "type": "string" + }, + "URI": { + "maxLength": 200, + "minLength": 1, + "pattern": "[a-zA-Z0-9-\\/*:_+=.@-]*", + "type": "string" + } + }, + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "lambda:CreateEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + }, + "delete": { + "permissions": [ + "lambda:DeleteEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + }, + "list": { + "permissions": [ + "lambda:ListEventSourceMappings" + ] + }, + "read": { + "permissions": [ + "lambda:GetEventSourceMapping" + ] + }, + "update": { + "permissions": [ + "lambda:UpdateEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AmazonManagedKafkaEventSourceConfig": { + "$ref": "#/definitions/AmazonManagedKafkaEventSourceConfig" + }, + "BatchSize": { + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "BisectBatchOnFunctionError": { + "type": "boolean" + }, + "DestinationConfig": { + "$ref": "#/definitions/DestinationConfig" + }, + "DocumentDBEventSourceConfig": { + "$ref": "#/definitions/DocumentDBEventSourceConfig" + }, + "Enabled": { + "type": "boolean" + }, + "EventSourceArn": { + "maxLength": 1024, + "minLength": 12, + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "type": "string" + }, + "FilterCriteria": { + "$ref": "#/definitions/FilterCriteria" + }, + "FunctionName": { + "maxLength": 140, + "minLength": 1, + "pattern": "(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?", + "type": "string" + }, + "FunctionResponseTypes": { + "items": { + "enum": [ + "ReportBatchItemFailures" + ], + "type": "string" + }, + "maxLength": 1, + "minLength": 0, + "type": "array", + "uniqueItems": true + }, + "Id": { + "maxLength": 36, + "minLength": 36, + "pattern": "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + "type": "string" + }, + "MaximumBatchingWindowInSeconds": { + "maximum": 300, + "minimum": 0, + "type": "integer" + }, + "MaximumRecordAgeInSeconds": { + "maximum": 604800, + "minimum": -1, + "type": "integer" + }, + "MaximumRetryAttempts": { + "maximum": 10000, + "minimum": -1, + "type": "integer" + }, + "ParallelizationFactor": { + "maximum": 10, + "minimum": 1, + "type": "integer" + }, + "Queues": { + "items": { + "maxLength": 1000, + "minLength": 1, + "pattern": "[\\s\\S]*", + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "ScalingConfig": { + "$ref": "#/definitions/ScalingConfig" + }, + "SelfManagedEventSource": { + "$ref": "#/definitions/SelfManagedEventSource" + }, + "SelfManagedKafkaEventSourceConfig": { + "$ref": "#/definitions/SelfManagedKafkaEventSourceConfig" + }, + "SourceAccessConfigurations": { + "items": { + "$ref": "#/definitions/SourceAccessConfiguration" + }, + "maxItems": 22, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "StartingPosition": { + "enum": [ + "TRIM_HORIZON", + "LATEST", + "AT_TIMESTAMP" + ], + "maxLength": 12, + "minLength": 6, + "pattern": "(LATEST|TRIM_HORIZON|AT_TIMESTAMP)+", + "type": "string" + }, + "StartingPositionTimestamp": { + "type": "number" + }, + "Topics": { + "items": { + "maxLength": 249, + "minLength": 1, + "pattern": "^[^.]([a-zA-Z0-9\\-_.]+)", + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "TumblingWindowInSeconds": { + "maximum": 900, + "minimum": 0, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "FunctionName" + ], + "typeName": "AWS::Lambda::EventSourceMapping" +} diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_2/aws-sagemaker-appimageconfig.json b/src/cfnlint/data/schemas/providers/ap_southeast_2/aws-sagemaker-appimageconfig.json new file mode 100644 index 0000000000..01116f524b --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_southeast_2/aws-sagemaker-appimageconfig.json @@ -0,0 +1,238 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AppImageConfigName", + "/properties/Tags" + ], + "definitions": { + "ContainerConfig": { + "additionalProperties": false, + "properties": { + "ContainerArguments": { + "items": { + "$ref": "#/definitions/CustomImageContainerArguments" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "ContainerEntrypoint": { + "items": { + "$ref": "#/definitions/CustomImageContainerEntrypoint" + }, + "maxItems": 1, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "ContainerEnvironmentVariables": { + "items": { + "$ref": "#/definitions/CustomImageContainerEnvironmentVariable" + }, + "maxItems": 25, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "CustomImageContainerArguments": { + "maxLength": 64, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "CustomImageContainerEntrypoint": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "CustomImageContainerEnvironmentVariable": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "FileSystemConfig": { + "additionalProperties": false, + "properties": { + "DefaultGid": { + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "DefaultUid": { + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "MountPath": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^/.*", + "type": "string" + } + }, + "type": "object" + }, + "JupyterLabAppImageConfig": { + "additionalProperties": false, + "properties": { + "ContainerConfig": { + "$ref": "#/definitions/ContainerConfig" + } + }, + "type": "object" + }, + "KernelGatewayImageConfig": { + "additionalProperties": false, + "properties": { + "FileSystemConfig": { + "$ref": "#/definitions/FileSystemConfig" + }, + "KernelSpecs": { + "items": { + "$ref": "#/definitions/KernelSpec" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "KernelSpecs" + ], + "type": "object" + }, + "KernelSpec": { + "additionalProperties": false, + "properties": { + "DisplayName": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Name": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "sagemaker:CreateAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + }, + "delete": { + "permissions": [ + "sagemaker:DeleteAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + }, + "list": { + "permissions": [ + "sagemaker:ListAppImageConfigs" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeAppImageConfig" + ] + }, + "update": { + "permissions": [ + "sagemaker:UpdateAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + } + }, + "primaryIdentifier": [ + "/properties/AppImageConfigName" + ], + "properties": { + "AppImageConfigArn": { + "maxLength": 256, + "minLength": 1, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:app-image-config/.*", + "type": "string" + }, + "AppImageConfigName": { + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", + "type": "string" + }, + "JupyterLabAppImageConfig": { + "$ref": "#/definitions/JupyterLabAppImageConfig" + }, + "KernelGatewayImageConfig": { + "$ref": "#/definitions/KernelGatewayImageConfig" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/AppImageConfigArn" + ], + "required": [ + "AppImageConfigName" + ], + "typeName": "AWS::SageMaker::AppImageConfig", + "writeOnlyProperties": [ + "/properties/Tags" + ] +} diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_2/aws-verifiedpermissions-identitysource.json b/src/cfnlint/data/schemas/providers/ap_southeast_2/aws-verifiedpermissions-identitysource.json new file mode 100644 index 0000000000..46a0ad88f1 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_southeast_2/aws-verifiedpermissions-identitysource.json @@ -0,0 +1,221 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PolicyStoreId" + ], + "definitions": { + "CognitoGroupConfiguration": { + "additionalProperties": false, + "properties": { + "GroupEntityType": { + "maxLength": 200, + "minLength": 1, + "pattern": "^([_a-zA-Z][_a-zA-Z0-9]*::)*[_a-zA-Z][_a-zA-Z0-9]*$", + "type": "string" + } + }, + "required": [ + "GroupEntityType" + ], + "type": "object" + }, + "CognitoUserPoolConfiguration": { + "additionalProperties": false, + "properties": { + "ClientIds": { + "insertionOrder": false, + "items": { + "maxLength": 255, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "maxItems": 1000, + "minItems": 0, + "type": "array" + }, + "GroupConfiguration": { + "$ref": "#/definitions/CognitoGroupConfiguration" + }, + "UserPoolArn": { + "maxLength": 255, + "minLength": 1, + "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", + "type": "string" + } + }, + "required": [ + "UserPoolArn" + ], + "type": "object" + }, + "IdentitySourceConfiguration": { + "additionalProperties": false, + "properties": { + "CognitoUserPoolConfiguration": { + "$ref": "#/definitions/CognitoUserPoolConfiguration" + } + }, + "required": [ + "CognitoUserPoolConfiguration" + ], + "title": "CognitoUserPoolConfiguration", + "type": "object" + }, + "IdentitySourceDetails": { + "additionalProperties": false, + "properties": { + "ClientIds": { + "insertionOrder": false, + "items": { + "maxLength": 255, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "maxItems": 1000, + "minItems": 0, + "type": "array" + }, + "DiscoveryUrl": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^https://.*$", + "type": "string" + }, + "OpenIdIssuer": { + "$ref": "#/definitions/OpenIdIssuer" + }, + "UserPoolArn": { + "maxLength": 255, + "minLength": 1, + "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", + "type": "string" + } + }, + "type": "object" + }, + "OpenIdIssuer": { + "enum": [ + "COGNITO" + ], + "type": "string" + } + }, + "deprecatedProperties": [ + "/properties/Details" + ], + "handlers": { + "create": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "delete": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "PolicyStoreId": { + "$ref": "resource-schema.json#/properties/PolicyStoreId" + } + }, + "required": [ + "PolicyStoreId" + ] + }, + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "read": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "update": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + } + }, + "primaryIdentifier": [ + "/properties/IdentitySourceId", + "/properties/PolicyStoreId" + ], + "properties": { + "Configuration": { + "$ref": "#/definitions/IdentitySourceConfiguration" + }, + "Details": { + "$ref": "#/definitions/IdentitySourceDetails" + }, + "IdentitySourceId": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]*$", + "type": "string" + }, + "PolicyStoreId": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]*$", + "type": "string" + }, + "PrincipalEntityType": { + "maxLength": 200, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Details", + "/properties/IdentitySourceId" + ], + "required": [ + "Configuration", + "PolicyStoreId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-avp", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::VerifiedPermissions::IdentitySource" +} diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_3/__init__.py b/src/cfnlint/data/schemas/providers/ap_southeast_3/__init__.py index 0584ec2589..20474ec7f4 100644 --- a/src/cfnlint/data/schemas/providers/ap_southeast_3/__init__.py +++ b/src/cfnlint/data/schemas/providers/ap_southeast_3/__init__.py @@ -18,6 +18,7 @@ "AWS::AmazonMQ::ConfigurationAssociation", "AWS::EC2::SecurityGroupEgress", "AWS::EC2::LocalGatewayRouteTableVPCAssociation", + "AWS::NetworkManager::TransitGatewayPeering", "AWS::Config::ConfigurationRecorder", "AWS::EC2::NetworkPerformanceMetricSubscription", "AWS::CloudFront::ContinuousDeploymentPolicy", @@ -37,6 +38,7 @@ "AWS::ApiGateway::DocumentationPart", "AWS::CloudWatch::CompositeAlarm", "AWS::Route53Resolver::FirewallDomainList", + "AWS::Redshift::EndpointAccess", "AWS::AppConfig::Application", "AWS::OpsWorks::Stack", "AWS::Lambda::Url", @@ -57,8 +59,10 @@ "AWS::WAFv2::RegexPatternSet", "AWS::EKS::FargateProfile", "AWS::Route53::DNSSEC", + "AWS::Redshift::EndpointAuthorization", "AWS::EC2::TransitGatewayRouteTable", "AWS::ControlTower::EnabledControl", + "AWS::NetworkManager::ConnectAttachment", "AWS::S3::AccessGrantsInstance", "AWS::Cognito::IdentityPoolRoleAttachment", "AWS::Route53::RecordSet", @@ -90,6 +94,7 @@ "AWS::DataSync::LocationHDFS", "AWS::Events::Archive", "AWS::MSK::Cluster", + "AWS::SecurityHub::DelegatedAdmin", "AWS::ControlTower::EnabledBaseline", "AWS::EC2::VPCEndpointConnectionNotification", "AWS::CodePipeline::Pipeline", @@ -110,6 +115,7 @@ "AWS::AppConfig::DeploymentStrategy", "AWS::SageMaker::ModelPackage", "AWS::EventSchemas::Discoverer", + "AWS::NetworkManager::ConnectPeer", "AWS::ElastiCache::UserGroup", "AWS::Logs::DeliveryDestination", "AWS::ImageBuilder::ImageRecipe", @@ -117,6 +123,7 @@ "AWS::OpsWorks::ElasticLoadBalancerAttachment", "AWS::AppMesh::VirtualService", "AWS::S3ObjectLambda::AccessPointPolicy", + "AWS::NetworkManager::TransitGatewayRegistration", "AWS::InspectorV2::Filter", "AWS::ElastiCache::ReplicationGroup", "AWS::StepFunctions::StateMachineAlias", @@ -150,6 +157,7 @@ "AWS::SageMaker::EndpointConfig", "AWS::AppMesh::GatewayRoute", "AWS::ApiGateway::ApiKey", + "AWS::NetworkManager::TransitGatewayRouteTableAttachment", "AWS::AutoScaling::LaunchConfiguration", "AWS::ApiGateway::ClientCertificate", "AWS::KinesisAnalyticsV2::Application", @@ -211,7 +219,9 @@ "AWS::Athena::WorkGroup", "AWS::SageMaker::ImageVersion", "AWS::ApiGateway::VpcLink", + "AWS::NetworkManager::CustomerGatewayAssociation", "AWS::IAM::ServerCertificate", + "AWS::GlobalAccelerator::CrossAccountAttachment", "AWS::Events::EventBus", "AWS::SQS::QueueInlinePolicy", "AWS::Organizations::Organization", @@ -237,6 +247,7 @@ "AWS::EKS::Cluster", "AWS::EFS::FileSystem", "AWS::Logs::QueryDefinition", + "AWS::SecurityHub::ProductSubscription", "AWS::IAM::InstanceProfile", "AWS::DataSync::LocationNFS", "AWS::SageMaker::Domain", @@ -278,8 +289,10 @@ "AWS::EC2::TransitGatewayAttachment", "AWS::Cognito::UserPoolUser", "AWS::CodeDeploy::DeploymentConfig", + "AWS::NetworkManager::GlobalNetwork", "AWS::StepFunctions::StateMachineVersion", "AWS::ServiceCatalogAppRegistry::Application", + "AWS::NetworkManager::Site", "AWS::Backup::BackupVault", "AWS::EC2::CustomerGateway", "AWS::IAM::GroupPolicy", @@ -317,6 +330,7 @@ "AWS::WAFv2::WebACL", "AWS::GlobalAccelerator::EndpointGroup", "AWS::EC2::TransitGatewayConnect", + "AWS::NetworkManager::SiteToSiteVpnAttachment", "AWS::EC2::SecurityGroup", "AWS::EC2::CapacityReservationFleet", "AWS::OpsWorks::Volume", @@ -333,6 +347,7 @@ "AWS::EC2::VPNConnection", "AWS::WAF::WebACL", "AWS::Shield::ProtectionGroup", + "AWS::NetworkManager::VpcAttachment", "AWS::IAM::User", "AWS::EMR::InstanceGroupConfig", "AWS::StepFunctions::Activity", @@ -402,6 +417,7 @@ "AWS::EC2::IPAMResourceDiscovery", "AWS::ImageBuilder::InfrastructureConfiguration", "AWS::CloudFormation::WaitCondition", + "AWS::NetworkManager::Link", "AWS::SageMaker::NotebookInstance", "AWS::SSO::InstanceAccessControlAttributeConfiguration", "AWS::EC2::VerifiedAccessEndpoint", @@ -421,6 +437,7 @@ "AWS::ServiceCatalogAppRegistry::AttributeGroup", "AWS::AppSync::GraphQLApi", "AWS::EC2::EgressOnlyInternetGateway", + "AWS::SecurityHub::Insight", "AWS::EC2::VPCCidrBlock", "AWS::ACMPCA::CertificateAuthority", "AWS::Athena::PreparedStatement", @@ -433,7 +450,6 @@ "AWS::Config::AggregationAuthorization", "AWS::DataSync::Agent", "AWS::IoTWireless::Destination", - "AWS::Cognito::UserPoolIdentityProvider", "AWS::Logs::LogGroup", "AWS::ECS::Cluster", "AWS::IoTWireless::WirelessDevice", @@ -470,6 +486,7 @@ "AWS::SageMaker::UserProfile", "AWS::EC2::PrefixList", "AWS::EC2::Instance", + "AWS::NetworkManager::Device", "AWS::EC2::SubnetCidrBlock", "AWS::ElasticBeanstalk::ApplicationVersion", "AWS::AppMesh::VirtualGateway", @@ -512,6 +529,7 @@ "AWS::EC2::SecurityGroupIngress", "AWS::GuardDuty::Detector", "AWS::ApiGateway::Stage", + "AWS::NetworkManager::CoreNetwork", "AWS::IoTWireless::DeviceProfile", "AWS::Batch::ComputeEnvironment", "AWS::DataPipeline::Pipeline", @@ -524,6 +542,7 @@ "AWS::AutoScaling::ScalingPolicy", "AWS::ResourceExplorer2::DefaultViewAssociation", "AWS::ECR::RegistryPolicy", + "AWS::Redshift::ScheduledAction", "AWS::RDS::DBSecurityGroup", "AWS::CloudWatch::MetricStream", "AWS::SSM::Parameter", @@ -557,6 +576,7 @@ "AWS::EC2::LaunchTemplate", "AWS::CloudFront::OriginRequestPolicy", "AWS::DataSync::LocationFSxONTAP", + "AWS::NetworkManager::LinkAssociation", "AWS::Cognito::UserPoolRiskConfigurationAttachment", "AWS::PCAConnectorAD::ServicePrincipalName", "AWS::ElasticBeanstalk::Environment", @@ -580,6 +600,7 @@ "AWS::S3Outposts::BucketPolicy", "AWS::Batch::JobQueue", "AWS::ElasticLoadBalancingV2::Listener", + "AWS::Redshift::EventSubscription", "AWS::CloudFormation::WaitConditionHandle", "AWS::GlobalAccelerator::Accelerator", "AWS::EKS::Addon", @@ -597,8 +618,8 @@ "aws-ecs-service.json", "aws-ram-resourceshare.json", "aws-dms-replicationconfig.json", - "aws-ec2-securitygroupegress.json", "aws-ec2-localgatewayroutetablevpcassociation.json", + "aws-networkmanager-transitgatewaypeering.json", "aws-config-configurationrecorder.json", "aws-ec2-networkperformancemetricsubscription.json", "aws-cloudfront-continuousdeploymentpolicy.json", @@ -606,14 +627,15 @@ "aws-appconfig-extensionassociation.json", "aws-s3outposts-accesspoint.json", "aws-ec2-ipampoolcidr.json", + "aws-redshift-clustersubnetgroup.json", "aws-rds-dbinstance.json", "aws-ec2-vpcdhcpoptionsassociation.json", "aws-ec2-networkacl.json", - "aws-lambda-eventsourcemapping.json", "aws-logs-resourcepolicy.json", "aws-transfer-certificate.json", "aws-cloudwatch-compositealarm.json", "aws-route53resolver-firewalldomainlist.json", + "aws-redshift-endpointaccess.json", "aws-appconfig-application.json", "aws-lambda-url.json", "aws-datasync-locationfsxwindows.json", @@ -628,8 +650,10 @@ "aws-wafv2-regexpatternset.json", "aws-eks-fargateprofile.json", "aws-route53-dnssec.json", + "aws-redshift-endpointauthorization.json", "aws-ec2-transitgatewayroutetable.json", "aws-controltower-enabledcontrol.json", + "aws-networkmanager-connectattachment.json", "aws-s3-accessgrantsinstance.json", "aws-cognito-identitypoolroleattachment.json", "aws-route53-recordset.json", @@ -656,6 +680,7 @@ "aws-datasync-locationhdfs.json", "aws-events-archive.json", "aws-msk-cluster.json", + "aws-securityhub-delegatedadmin.json", "aws-controltower-enabledbaseline.json", "aws-ec2-vpcendpointconnectionnotification.json", "aws-codepipeline-pipeline.json", @@ -675,12 +700,14 @@ "aws-appconfig-deploymentstrategy.json", "aws-sagemaker-modelpackage.json", "aws-eventschemas-discoverer.json", + "aws-networkmanager-connectpeer.json", "aws-elasticache-usergroup.json", "aws-logs-deliverydestination.json", "aws-imagebuilder-imagerecipe.json", "aws-opsworks-elasticloadbalancerattachment.json", "aws-appmesh-virtualservice.json", "aws-s3objectlambda-accesspointpolicy.json", + "aws-networkmanager-transitgatewayregistration.json", "aws-inspectorv2-filter.json", "aws-elasticache-replicationgroup.json", "aws-stepfunctions-statemachinealias.json", @@ -711,13 +738,13 @@ "aws-cloudfront-cloudfrontoriginaccessidentity.json", "aws-sagemaker-endpointconfig.json", "aws-appmesh-gatewayroute.json", + "aws-networkmanager-transitgatewayroutetableattachment.json", "aws-autoscaling-launchconfiguration.json", "aws-kinesisanalyticsv2-application.json", "aws-lambda-alias.json", "aws-logs-loganomalydetector.json", "aws-ec2-transitgatewaymulticastdomainassociation.json", "aws-s3outposts-endpoint.json", - "aws-ec2-transitgatewayroutetableassociation.json", "aws-appconfig-environment.json", "aws-imagebuilder-image.json", "aws-elasticache-securitygroupingress.json", @@ -765,7 +792,9 @@ "aws-batch-schedulingpolicy.json", "aws-athena-workgroup.json", "aws-sagemaker-imageversion.json", + "aws-networkmanager-customergatewayassociation.json", "aws-iam-servercertificate.json", + "aws-globalaccelerator-crossaccountattachment.json", "aws-events-eventbus.json", "aws-sqs-queueinlinepolicy.json", "aws-organizations-organization.json", @@ -789,6 +818,7 @@ "aws-eks-cluster.json", "aws-efs-filesystem.json", "aws-logs-querydefinition.json", + "aws-securityhub-productsubscription.json", "aws-iam-instanceprofile.json", "aws-datasync-locationnfs.json", "aws-sagemaker-domain.json", @@ -825,9 +855,12 @@ "aws-iam-samlprovider.json", "aws-cloudfront-keygroup.json", "aws-ec2-networkinterfaceattachment.json", + "aws-cognito-userpooluser.json", "aws-codedeploy-deploymentconfig.json", + "aws-networkmanager-globalnetwork.json", "aws-stepfunctions-statemachineversion.json", "aws-servicecatalogappregistry-application.json", + "aws-networkmanager-site.json", "aws-backup-backupvault.json", "aws-ec2-customergateway.json", "aws-iam-grouppolicy.json", @@ -841,6 +874,7 @@ "aws-securityhub-standard.json", "aws-rolesanywhere-crl.json", "aws-sns-topicinlinepolicy.json", + "aws-redshift-clusterparametergroup.json", "aws-organizations-policy.json", "aws-globalaccelerator-listener.json", "aws-verifiedpermissions-policystore.json", @@ -861,6 +895,7 @@ "aws-wafv2-webacl.json", "aws-globalaccelerator-endpointgroup.json", "aws-ec2-transitgatewayconnect.json", + "aws-networkmanager-sitetositevpnattachment.json", "aws-ec2-securitygroup.json", "aws-ec2-capacityreservationfleet.json", "aws-opsworks-volume.json", @@ -874,6 +909,7 @@ "aws-efs-mounttarget.json", "aws-ec2-vpnconnection.json", "aws-shield-protectiongroup.json", + "aws-networkmanager-vpcattachment.json", "aws-iam-user.json", "aws-emr-instancegroupconfig.json", "aws-sagemaker-project.json", @@ -881,6 +917,7 @@ "aws-logs-accountpolicy.json", "aws-s3-bucketpolicy.json", "aws-appsync-graphqlschema.json", + "aws-redshift-cluster.json", "aws-emr-instancefleetconfig.json", "aws-emr-cluster.json", "aws-rds-dbcluster.json", @@ -902,7 +939,6 @@ "aws-appconfig-hostedconfigurationversion.json", "aws-datasync-locationefs.json", "aws-ec2-localgatewayroutetable.json", - "aws-sagemaker-appimageconfig.json", "aws-elasticloadbalancingv2-targetgroup.json", "aws-applicationautoscaling-scalingpolicy.json", "aws-pipes-pipe.json", @@ -912,6 +948,7 @@ "aws-lambda-layerversionpermission.json", "aws-secretsmanager-secret.json", "aws-route53resolver-resolverconfig.json", + "aws-elasticache-user.json", "aws-sagemaker-image.json", "aws-logs-subscriptionfilter.json", "aws-codedeploy-application.json", @@ -935,6 +972,7 @@ "aws-lakeformation-tagassociation.json", "aws-ec2-ipamresourcediscovery.json", "aws-imagebuilder-infrastructureconfiguration.json", + "aws-networkmanager-link.json", "aws-sagemaker-notebookinstance.json", "aws-sso-instanceaccesscontrolattributeconfiguration.json", "aws-ec2-verifiedaccessendpoint.json", @@ -954,8 +992,7 @@ "aws-servicecatalogappregistry-attributegroup.json", "aws-appsync-graphqlapi.json", "aws-ec2-egressonlyinternetgateway.json", - "aws-ec2-vpccidrblock.json", - "aws-acmpca-certificateauthority.json", + "aws-securityhub-insight.json", "aws-athena-preparedstatement.json", "aws-autoscaling-scheduledaction.json", "aws-lakeformation-resource.json", @@ -998,6 +1035,8 @@ "aws-athena-datacatalog.json", "aws-sagemaker-userprofile.json", "aws-ec2-prefixlist.json", + "aws-ec2-instance.json", + "aws-networkmanager-device.json", "aws-ec2-subnetcidrblock.json", "aws-appmesh-virtualgateway.json", "aws-waf-sqlinjectionmatchset.json", @@ -1034,6 +1073,7 @@ "aws-sqs-queue.json", "aws-ec2-securitygroupingress.json", "aws-guardduty-detector.json", + "aws-networkmanager-corenetwork.json", "aws-iotwireless-deviceprofile.json", "aws-batch-computeenvironment.json", "aws-events-eventbuspolicy.json", @@ -1042,6 +1082,7 @@ "aws-autoscaling-scalingpolicy.json", "aws-resourceexplorer2-defaultviewassociation.json", "aws-ecr-registrypolicy.json", + "aws-redshift-scheduledaction.json", "aws-rds-dbsecuritygroup.json", "aws-cloudwatch-metricstream.json", "aws-ssm-parameter.json", @@ -1070,6 +1111,7 @@ "aws-ec2-launchtemplate.json", "aws-cloudfront-originrequestpolicy.json", "aws-datasync-locationfsxontap.json", + "aws-networkmanager-linkassociation.json", "aws-cognito-userpoolriskconfigurationattachment.json", "aws-pcaconnectorad-serviceprincipalname.json", "aws-elasticbeanstalk-environment.json", @@ -1092,6 +1134,7 @@ "aws-s3outposts-bucketpolicy.json", "aws-batch-jobqueue.json", "aws-elasticloadbalancingv2-listener.json", + "aws-redshift-eventsubscription.json", "aws-cloudformation-waitconditionhandle.json", "aws-globalaccelerator-accelerator.json", "aws-eks-addon.json", diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-acmpca-certificateauthority.json b/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-acmpca-certificateauthority.json new file mode 100644 index 0000000000..08ec85e5fa --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-acmpca-certificateauthority.json @@ -0,0 +1,429 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Type", + "/properties/KeyAlgorithm", + "/properties/SigningAlgorithm", + "/properties/Subject", + "/properties/CsrExtensions", + "/properties/KeyStorageSecurityStandard", + "/properties/UsageMode" + ], + "definitions": { + "AccessDescription": { + "additionalProperties": false, + "properties": { + "AccessLocation": { + "$ref": "#/definitions/GeneralName" + }, + "AccessMethod": { + "$ref": "#/definitions/AccessMethod" + } + }, + "required": [ + "AccessMethod", + "AccessLocation" + ], + "type": "object" + }, + "AccessMethod": { + "additionalProperties": false, + "properties": { + "AccessMethodType": { + "$ref": "#/definitions/AccessMethodType" + }, + "CustomObjectIdentifier": { + "$ref": "#/definitions/CustomObjectIdentifier" + } + }, + "type": "object" + }, + "AccessMethodType": { + "type": "string" + }, + "Arn": { + "type": "string" + }, + "CrlConfiguration": { + "additionalProperties": false, + "properties": { + "CrlDistributionPointExtensionConfiguration": { + "$ref": "#/definitions/CrlDistributionPointExtensionConfiguration" + }, + "CustomCname": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + }, + "ExpirationInDays": { + "type": "integer" + }, + "S3BucketName": { + "type": "string" + }, + "S3ObjectAcl": { + "type": "string" + } + }, + "type": "object" + }, + "CrlDistributionPointExtensionConfiguration": { + "additionalProperties": false, + "properties": { + "OmitExtension": { + "type": "boolean" + } + }, + "required": [ + "OmitExtension" + ], + "type": "object" + }, + "CsrExtensions": { + "additionalProperties": false, + "properties": { + "KeyUsage": { + "$ref": "#/definitions/KeyUsage" + }, + "SubjectInformationAccess": { + "$ref": "#/definitions/SubjectInformationAccess" + } + }, + "type": "object" + }, + "CustomAttribute": { + "additionalProperties": false, + "properties": { + "ObjectIdentifier": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "ObjectIdentifier", + "Value" + ], + "type": "object" + }, + "CustomAttributeList": { + "items": { + "$ref": "#/definitions/CustomAttribute" + }, + "type": "array" + }, + "CustomObjectIdentifier": { + "type": "string" + }, + "DnsName": { + "type": "string" + }, + "EdiPartyName": { + "additionalProperties": false, + "properties": { + "NameAssigner": { + "type": "string" + }, + "PartyName": { + "type": "string" + } + }, + "required": [ + "PartyName", + "NameAssigner" + ], + "type": "object" + }, + "GeneralName": { + "additionalProperties": false, + "properties": { + "DirectoryName": { + "$ref": "#/definitions/Subject" + }, + "DnsName": { + "$ref": "#/definitions/DnsName" + }, + "EdiPartyName": { + "$ref": "#/definitions/EdiPartyName" + }, + "IpAddress": { + "$ref": "#/definitions/IpAddress" + }, + "OtherName": { + "$ref": "#/definitions/OtherName" + }, + "RegisteredId": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Rfc822Name": { + "$ref": "#/definitions/Rfc822Name" + }, + "UniformResourceIdentifier": { + "$ref": "#/definitions/UniformResourceIdentifier" + } + }, + "type": "object" + }, + "IpAddress": { + "type": "string" + }, + "KeyUsage": { + "additionalProperties": false, + "properties": { + "CRLSign": { + "default": false, + "type": "boolean" + }, + "DataEncipherment": { + "default": false, + "type": "boolean" + }, + "DecipherOnly": { + "default": false, + "type": "boolean" + }, + "DigitalSignature": { + "default": false, + "type": "boolean" + }, + "EncipherOnly": { + "default": false, + "type": "boolean" + }, + "KeyAgreement": { + "default": false, + "type": "boolean" + }, + "KeyCertSign": { + "default": false, + "type": "boolean" + }, + "KeyEncipherment": { + "default": false, + "type": "boolean" + }, + "NonRepudiation": { + "default": false, + "type": "boolean" + } + }, + "type": "object" + }, + "OcspConfiguration": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + }, + "OcspCustomCname": { + "type": "string" + } + }, + "type": "object" + }, + "OtherName": { + "additionalProperties": false, + "properties": { + "TypeId": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "TypeId", + "Value" + ], + "type": "object" + }, + "RevocationConfiguration": { + "additionalProperties": false, + "properties": { + "CrlConfiguration": { + "$ref": "#/definitions/CrlConfiguration" + }, + "OcspConfiguration": { + "$ref": "#/definitions/OcspConfiguration" + } + }, + "type": "object" + }, + "Rfc822Name": { + "type": "string" + }, + "Subject": { + "additionalProperties": false, + "properties": { + "CommonName": { + "type": "string" + }, + "Country": { + "type": "string" + }, + "CustomAttributes": { + "$ref": "#/definitions/CustomAttributeList" + }, + "DistinguishedNameQualifier": { + "type": "string" + }, + "GenerationQualifier": { + "type": "string" + }, + "GivenName": { + "type": "string" + }, + "Initials": { + "type": "string" + }, + "Locality": { + "type": "string" + }, + "Organization": { + "type": "string" + }, + "OrganizationalUnit": { + "type": "string" + }, + "Pseudonym": { + "type": "string" + }, + "SerialNumber": { + "type": "string" + }, + "State": { + "type": "string" + }, + "Surname": { + "type": "string" + }, + "Title": { + "type": "string" + } + }, + "type": "object" + }, + "SubjectInformationAccess": { + "items": { + "$ref": "#/definitions/AccessDescription" + }, + "type": "array" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "UniformResourceIdentifier": { + "type": "string" + } + }, + "handlers": { + "create": { + "permissions": [ + "acm-pca:CreateCertificateAuthority", + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr" + ] + }, + "delete": { + "permissions": [ + "acm-pca:DeleteCertificateAuthority", + "acm-pca:DescribeCertificateAuthority" + ] + }, + "list": { + "permissions": [ + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr", + "acm-pca:ListCertificateAuthorities", + "acm-pca:ListTags" + ] + }, + "read": { + "permissions": [ + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr", + "acm-pca:ListTags" + ] + }, + "update": { + "permissions": [ + "acm-pca:ListTags", + "acm-pca:TagCertificateAuthority", + "acm-pca:UntagCertificateAuthority", + "acm-pca:UpdateCertificateAuthority" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "$ref": "#/definitions/Arn" + }, + "CertificateSigningRequest": { + "type": "string" + }, + "CsrExtensions": { + "$ref": "#/definitions/CsrExtensions" + }, + "KeyAlgorithm": { + "type": "string" + }, + "KeyStorageSecurityStandard": { + "type": "string" + }, + "RevocationConfiguration": { + "$ref": "#/definitions/RevocationConfiguration" + }, + "SigningAlgorithm": { + "type": "string" + }, + "Subject": { + "$ref": "#/definitions/Subject" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "Type": { + "type": "string" + }, + "UsageMode": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CertificateSigningRequest" + ], + "required": [ + "Type", + "KeyAlgorithm", + "SigningAlgorithm", + "Subject" + ], + "sourceUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_ACMPCA.html", + "typeName": "AWS::ACMPCA::CertificateAuthority", + "writeOnlyProperties": [ + "/properties/Subject", + "/properties/Subject", + "/properties/CsrExtensions", + "/properties/Tags", + "/properties/RevocationConfiguration", + "/properties/KeyStorageSecurityStandard" + ] +} diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-cognito-userpoolidentityprovider.json b/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-cognito-userpoolidentityprovider.json deleted file mode 100644 index bcc53d547a..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-cognito-userpoolidentityprovider.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/UserPoolId", - "/properties/ProviderName", - "/properties/ProviderType" - ], - "handlers": { - "create": { - "permissions": [ - "cognito-idp:CreateIdentityProvider", - "cognito-idp:DescribeIdentityProvider" - ], - "timeoutInMinutes": 2 - }, - "delete": { - "permissions": [ - "cognito-idp:DeleteIdentityProvider", - "cognito-idp:DescribeIdentityProvider" - ], - "timeoutInMinutes": 2 - }, - "list": { - "handlerSchema": { - "properties": { - "UserPoolId": { - "$ref": "resource-schema.json#/properties/UserPoolId" - } - }, - "required": [ - "UserPoolId" - ] - }, - "permissions": [ - "cognito-idp:ListIdentityProviders" - ] - }, - "read": { - "permissions": [ - "cognito-idp:DescribeIdentityProvider" - ] - }, - "update": { - "permissions": [ - "cognito-idp:UpdateIdentityProvider", - "cognito-idp:DescribeIdentityProvider" - ], - "timeoutInMinutes": 2 - } - }, - "primaryIdentifier": [ - "/properties/UserPoolId", - "/properties/ProviderName" - ], - "properties": { - "AttributeMapping": { - "additionalProperties": false, - "patternProperties": { - "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$": { - "type": "string" - } - }, - "type": "object" - }, - "IdpIdentifiers": { - "items": { - "type": "string" - }, - "type": "array" - }, - "ProviderDetails": { - "additionalProperties": false, - "patternProperties": { - "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$": { - "type": "string" - } - }, - "type": "object" - }, - "ProviderName": { - "type": "string" - }, - "ProviderType": { - "type": "string" - }, - "UserPoolId": { - "type": "string" - } - }, - "required": [ - "UserPoolId", - "ProviderName", - "ProviderType", - "ProviderDetails" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::Cognito::UserPoolIdentityProvider" -} diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-cognito-userpooluser.json b/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-cognito-userpooluser.json deleted file mode 100644 index ccf2f3a943..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-cognito-userpooluser.json +++ /dev/null @@ -1,133 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DesiredDeliveryMediums", - "/properties/ForceAliasCreation", - "/properties/UserAttributes", - "/properties/Username", - "/properties/UserPoolId", - "/properties/ValidationData", - "/properties/ClientMetadata", - "/properties/MessageAction" - ], - "definitions": { - "AttributeType": { - "additionalProperties": false, - "properties": { - "Name": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "cognito-idp:AdminCreateUser", - "iam:PassRole" - ], - "timeoutInMinutes": 2 - }, - "delete": { - "permissions": [ - "cognito-idp:AdminDeleteUser" - ], - "timeoutInMinutes": 2 - }, - "list": { - "handlerSchema": { - "properties": { - "UserPoolId": { - "$ref": "resource-schema.json#/properties/UserPoolId" - } - }, - "required": [ - "UserPoolId" - ] - }, - "permissions": [ - "cognito-idp:ListUsers" - ] - }, - "read": { - "permissions": [ - "cognito-idp:AdminGetUser" - ] - } - }, - "primaryIdentifier": [ - "/properties/UserPoolId", - "/properties/Username" - ], - "properties": { - "ClientMetadata": { - "additionalProperties": false, - "patternProperties": { - "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$": { - "type": "string" - } - }, - "type": "object" - }, - "DesiredDeliveryMediums": { - "items": { - "enum": [ - "SMS", - "EMAIL" - ], - "type": "string" - }, - "type": "array" - }, - "ForceAliasCreation": { - "type": "boolean" - }, - "MessageAction": { - "enum": [ - "RESEND", - "SUPPRESS" - ], - "type": "string" - }, - "UserAttributes": { - "items": { - "$ref": "#/definitions/AttributeType" - }, - "type": "array" - }, - "UserPoolId": { - "type": "string" - }, - "Username": { - "type": "string" - }, - "ValidationData": { - "items": { - "$ref": "#/definitions/AttributeType" - }, - "type": "array" - } - }, - "required": [ - "UserPoolId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::Cognito::UserPoolUser", - "writeOnlyProperties": [ - "/properties/DesiredDeliveryMediums", - "/properties/ForceAliasCreation", - "/properties/ValidationData", - "/properties/ClientMetadata", - "/properties/MessageAction" - ] -} diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-dynamodb-globaltable.json b/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-dynamodb-globaltable.json index 4e5ba995cb..ae37e9142b 100644 --- a/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-dynamodb-globaltable.json +++ b/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-dynamodb-globaltable.json @@ -8,6 +8,27 @@ ] ], "additionalProperties": false, + "allOf": [ + { + "if": { + "required": [ + "LocalSecondaryIndexes" + ], + "type": "object" + }, + "then": { + "properties": { + "AttributeDefinitions": { + "minItems": 2 + }, + "KeySchema": { + "minItems": 2 + } + }, + "type": "object" + } + } + ], "createOnlyProperties": [ "/properties/LocalSecondaryIndexes", "/properties/TableName", @@ -79,13 +100,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "minItems": 1, - "type": "array", - "uniqueItems": true + "minItems": 1 }, "Projection": { "$ref": "#/definitions/Projection" @@ -102,22 +119,60 @@ "type": "object" }, "KeySchema": { - "additionalProperties": false, - "properties": { - "AttributeName": { - "maxLength": 255, - "minLength": 1, - "type": "string" + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "KeyType": { + "enum": [ + "HASH", + "RANGE" + ], + "type": "string" + } }, - "KeyType": { - "type": "string" - } + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" }, - "required": [ - "KeyType", - "AttributeName" + "prefixItems": [ + { + "additionalProperties": false, + "properties": { + "KeyType": { + "const": "HASH", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + }, + { + "properties": { + "KeyType": { + "const": "RANGE", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + } ], - "type": "object" + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "KinesisStreamSpecification": { "additionalProperties": false, @@ -147,12 +202,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "type": "array", - "uniqueItems": true + "minItems": 2 }, "Projection": { "$ref": "#/definitions/Projection" @@ -511,7 +563,10 @@ }, "minItems": 1, "type": "array", - "uniqueItems": true + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "BillingMode": { "type": "string" @@ -525,13 +580,9 @@ "uniqueItems": true }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "minItems": 1, - "type": "array", - "uniqueItems": true + "minItems": 1 }, "LocalSecondaryIndexes": { "insertionOrder": false, diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-dynamodb-table.json b/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-dynamodb-table.json index efc82f1d70..f21d084b10 100644 --- a/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-dynamodb-table.json +++ b/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-dynamodb-table.json @@ -1,5 +1,26 @@ { "additionalProperties": false, + "allOf": [ + { + "if": { + "required": [ + "LocalSecondaryIndexes" + ], + "type": "object" + }, + "then": { + "properties": { + "AttributeDefinitions": { + "minItems": 2 + }, + "KeySchema": { + "minItems": 2 + } + }, + "type": "object" + } + } + ], "cfnLint": [ "AWS::DynamoDB::Table/Properties" ], @@ -95,11 +116,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 }, "Projection": { "$ref": "#/definitions/Projection" @@ -147,24 +166,57 @@ "type": "object" }, "KeySchema": { - "additionalProperties": false, - "properties": { - "AttributeName": { - "type": "string" + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "type": "string" + }, + "KeyType": { + "enum": [ + "HASH", + "RANGE" + ], + "type": "string" + } }, - "KeyType": { - "enum": [ - "HASH", - "RANGE" + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" + }, + "prefixItems": [ + { + "properties": { + "KeyType": { + "const": "HASH", + "type": "string" + } + }, + "required": [ + "KeyType" ], - "type": "string" + "type": "object" + }, + { + "properties": { + "KeyType": { + "const": "RANGE", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" } - }, - "required": [ - "KeyType", - "AttributeName" ], - "type": "object" + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "KinesisStreamSpecification": { "additionalProperties": false, @@ -192,11 +244,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 2 }, "Projection": { "$ref": "#/definitions/Projection" @@ -451,7 +501,10 @@ "$ref": "#/definitions/AttributeDefinition" }, "type": "array", - "uniqueItems": true + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "BillingMode": { "enum": [ @@ -479,11 +532,9 @@ "KeySchema": { "oneOf": [ { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 }, { "type": "object" diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-ec2-instance.json b/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-ec2-instance.json deleted file mode 100644 index 7b3bfed595..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-ec2-instance.json +++ /dev/null @@ -1,571 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ElasticGpuSpecifications", - "/properties/Ipv6Addresses", - "/properties/PlacementGroupName", - "/properties/HostResourceGroupArn", - "/properties/ImageId", - "/properties/CpuOptions", - "/properties/PrivateIpAddress", - "/properties/ElasticInferenceAccelerators", - "/properties/EnclaveOptions", - "/properties/HibernationOptions", - "/properties/KeyName", - "/properties/LicenseSpecifications", - "/properties/NetworkInterfaces", - "/properties/AvailabilityZone", - "/properties/SubnetId", - "/properties/LaunchTemplate", - "/properties/SecurityGroups", - "/properties/Ipv6AddressCount" - ], - "definitions": { - "AssociationParameter": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "BlockDeviceMapping": { - "additionalProperties": false, - "properties": { - "DeviceName": { - "type": "string" - }, - "Ebs": { - "$ref": "#/definitions/Ebs" - }, - "NoDevice": { - "$ref": "#/definitions/NoDevice" - }, - "VirtualName": { - "type": "string" - } - }, - "required": [ - "DeviceName" - ], - "requiredXor": [ - "VirtualName", - "Ebs", - "NoDevice" - ], - "type": "object" - }, - "CpuOptions": { - "additionalProperties": false, - "properties": { - "CoreCount": { - "type": "integer" - }, - "ThreadsPerCore": { - "type": "integer" - } - }, - "type": "object" - }, - "CreditSpecification": { - "additionalProperties": false, - "properties": { - "CPUCredits": { - "type": "string" - } - }, - "type": "object" - }, - "Ebs": { - "additionalProperties": false, - "properties": { - "DeleteOnTermination": { - "type": "boolean" - }, - "Encrypted": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "KmsKeyId": { - "type": "string" - }, - "SnapshotId": { - "type": "string" - }, - "VolumeSize": { - "type": "integer" - }, - "VolumeType": { - "type": "string" - } - }, - "type": "object" - }, - "ElasticGpuSpecification": { - "additionalProperties": false, - "properties": { - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "ElasticInferenceAccelerator": { - "additionalProperties": false, - "properties": { - "Count": { - "type": "integer" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "EnclaveOptions": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - } - }, - "type": "object" - }, - "HibernationOptions": { - "additionalProperties": false, - "properties": { - "Configured": { - "type": "boolean" - } - }, - "type": "object" - }, - "InstanceIpv6Address": { - "additionalProperties": false, - "properties": { - "Ipv6Address": { - "type": "string" - } - }, - "required": [ - "Ipv6Address" - ], - "type": "object" - }, - "LaunchTemplateSpecification": { - "additionalProperties": false, - "properties": { - "LaunchTemplateId": { - "type": "string" - }, - "LaunchTemplateName": { - "type": "string" - }, - "Version": { - "type": "string" - } - }, - "required": [ - "Version" - ], - "type": "object" - }, - "LicenseSpecification": { - "additionalProperties": false, - "properties": { - "LicenseConfigurationArn": { - "type": "string" - } - }, - "required": [ - "LicenseConfigurationArn" - ], - "type": "object" - }, - "NetworkInterface": { - "additionalProperties": false, - "properties": { - "AssociateCarrierIpAddress": { - "type": "boolean" - }, - "AssociatePublicIpAddress": { - "type": "boolean" - }, - "DeleteOnTermination": { - "type": "boolean" - }, - "Description": { - "type": "string" - }, - "DeviceIndex": { - "type": "string" - }, - "GroupSet": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": false - }, - "NetworkInterfaceId": { - "type": "string" - }, - "PrivateIpAddress": { - "type": "string" - }, - "PrivateIpAddresses": { - "items": { - "$ref": "#/definitions/PrivateIpAddressSpecification" - }, - "type": "array", - "uniqueItems": false - }, - "SecondaryPrivateIpAddressCount": { - "type": "integer" - }, - "SubnetId": { - "type": "string" - } - }, - "required": [ - "DeviceIndex" - ], - "type": "object" - }, - "NoDevice": { - "additionalProperties": false, - "type": "object" - }, - "PrivateDnsNameOptions": { - "additionalProperties": false, - "properties": { - "EnableResourceNameDnsAAAARecord": { - "type": "boolean" - }, - "EnableResourceNameDnsARecord": { - "type": "boolean" - }, - "HostnameType": { - "type": "string" - } - }, - "type": "object" - }, - "PrivateIpAddressSpecification": { - "additionalProperties": false, - "properties": { - "Primary": { - "type": "boolean" - }, - "PrivateIpAddress": { - "type": "string" - } - }, - "required": [ - "PrivateIpAddress", - "Primary" - ], - "type": "object" - }, - "SsmAssociation": { - "additionalProperties": false, - "properties": { - "AssociationParameters": { - "items": { - "$ref": "#/definitions/AssociationParameter" - }, - "type": "array", - "uniqueItems": false - }, - "DocumentName": { - "type": "string" - } - }, - "required": [ - "DocumentName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "Volume": { - "additionalProperties": false, - "properties": { - "Device": { - "type": "string" - }, - "VolumeId": { - "type": "string" - } - }, - "required": [ - "VolumeId", - "Device" - ], - "type": "object" - } - }, - "dependentExcluded": { - "NetworkInterfaces": [ - "SubnetId" - ], - "SubnetId": [ - "NetworkInterfaces" - ] - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AdditionalInfo": { - "type": "string" - }, - "Affinity": { - "enum": [ - "default", - "host" - ], - "type": "string" - }, - "AvailabilityZone": { - "cfnLint": [ - "AWS::EC2::Instance/Properties/AvailabilityZone" - ], - "type": "string" - }, - "BlockDeviceMappings": { - "items": { - "$ref": "#/definitions/BlockDeviceMapping" - }, - "type": "array", - "uniqueItems": false - }, - "CpuOptions": { - "$ref": "#/definitions/CpuOptions" - }, - "CreditSpecification": { - "$ref": "#/definitions/CreditSpecification" - }, - "DisableApiTermination": { - "type": "boolean" - }, - "EbsOptimized": { - "type": "boolean" - }, - "ElasticGpuSpecifications": { - "items": { - "$ref": "#/definitions/ElasticGpuSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "ElasticInferenceAccelerators": { - "items": { - "$ref": "#/definitions/ElasticInferenceAccelerator" - }, - "type": "array", - "uniqueItems": true - }, - "EnclaveOptions": { - "$ref": "#/definitions/EnclaveOptions" - }, - "HibernationOptions": { - "$ref": "#/definitions/HibernationOptions" - }, - "HostId": { - "type": "string" - }, - "HostResourceGroupArn": { - "type": "string" - }, - "IamInstanceProfile": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "ImageId": { - "type": "string" - }, - "InstanceInitiatedShutdownBehavior": { - "type": "string" - }, - "InstanceType": { - "cfnLint": [ - "AWS::EC2::Instance/Properties/InstanceType" - ], - "type": "string" - }, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": false - }, - "KernelId": { - "type": "string" - }, - "KeyName": { - "type": "string" - }, - "LaunchTemplate": { - "$ref": "#/definitions/LaunchTemplateSpecification" - }, - "LicenseSpecifications": { - "items": { - "$ref": "#/definitions/LicenseSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "Monitoring": { - "type": "boolean" - }, - "NetworkInterfaces": { - "items": { - "$ref": "#/definitions/NetworkInterface" - }, - "type": "array", - "uniqueItems": false - }, - "PlacementGroupName": { - "type": "string" - }, - "PrivateDnsName": { - "type": "string" - }, - "PrivateDnsNameOptions": { - "$ref": "#/definitions/PrivateDnsNameOptions" - }, - "PrivateIp": { - "type": "string" - }, - "PrivateIpAddress": { - "type": "string" - }, - "PropagateTagsToVolumeOnCreation": { - "type": "boolean" - }, - "PublicDnsName": { - "type": "string" - }, - "PublicIp": { - "type": "string" - }, - "RamdiskId": { - "type": "string" - }, - "SecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SecurityGroups": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SourceDestCheck": { - "type": "boolean" - }, - "SsmAssociations": { - "items": { - "$ref": "#/definitions/SsmAssociation" - }, - "type": "array", - "uniqueItems": false - }, - "SubnetId": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "Tenancy": { - "enum": [ - "default", - "dedicated", - "host" - ], - "type": "string" - }, - "UserData": { - "type": "string" - }, - "Volumes": { - "items": { - "$ref": "#/definitions/Volume" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/PublicIp", - "/properties/Id", - "/properties/PublicDnsName", - "/properties/PrivateDnsName", - "/properties/PrivateIp" - ], - "requiredXor": [ - "ImageId", - "LaunchTemplate" - ], - "typeName": "AWS::EC2::Instance" -} diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-ec2-securitygroupegress.json b/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-ec2-securitygroupegress.json new file mode 100644 index 0000000000..f94631dad2 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-ec2-securitygroupegress.json @@ -0,0 +1,98 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::EC2::SecurityGroupEgress/Properties" + ], + "createOnlyProperties": [ + "/properties/IpProtocol", + "/properties/DestinationSecurityGroupId", + "/properties/ToPort", + "/properties/CidrIp", + "/properties/FromPort", + "/properties/GroupId", + "/properties/CidrIpv6", + "/properties/DestinationPrefixListId" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:AuthorizeSecurityGroupEgress", + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "delete": { + "permissions": [ + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "update": { + "permissions": [ + "ec2:UpdateSecurityGroupRuleDescriptionsEgress" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CidrIp": { + "type": "string" + }, + "CidrIpv6": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "DestinationPrefixListId": { + "type": "string" + }, + "DestinationSecurityGroupId": { + "type": "string" + }, + "FromPort": { + "minimum": -1, + "type": "integer" + }, + "GroupId": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "IpProtocol": { + "type": "string" + }, + "ToPort": { + "minimum": -1, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IpProtocol", + "GroupId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SecurityGroupEgress" +} diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-ec2-transitgatewayroutetableassociation.json b/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-ec2-transitgatewayroutetableassociation.json new file mode 100644 index 0000000000..890b2c4be2 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-ec2-transitgatewayroutetableassociation.json @@ -0,0 +1,29 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TransitGatewayRouteTableId", + "/properties/TransitGatewayAttachmentId" + ], + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "type": "string" + }, + "TransitGatewayAttachmentId": { + "type": "string" + }, + "TransitGatewayRouteTableId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "TransitGatewayRouteTableId", + "TransitGatewayAttachmentId" + ], + "typeName": "AWS::EC2::TransitGatewayRouteTableAssociation" +} 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 new file mode 100644 index 0000000000..decf420b9b --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-ec2-vpccidrblock.json @@ -0,0 +1,102 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Ipv6Pool", + "/properties/VpcId", + "/properties/AmazonProvidedIpv6CidrBlock", + "/properties/Ipv6CidrBlock", + "/properties/CidrBlock", + "/properties/Ipv4IpamPoolId", + "/properties/Ipv4NetmaskLength", + "/properties/Ipv6IpamPoolId", + "/properties/Ipv6NetmaskLength" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:AssociateVpcCidrBlock", + "ec2:DescribeVpcs", + "ec2:AllocateIpamPoolCidr" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeVpcs", + "ec2:DisassociateVpcCidrBlock" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "VpcId": { + "type": "string" + } + }, + "required": [ + "VpcId" + ] + }, + "permissions": [ + "ec2:DescribeVpcs" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeVpcs" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id", + "/properties/VpcId" + ], + "properties": { + "AmazonProvidedIpv6CidrBlock": { + "type": "boolean" + }, + "CidrBlock": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "Ipv4IpamPoolId": { + "type": "string" + }, + "Ipv4NetmaskLength": { + "type": "integer" + }, + "Ipv6CidrBlock": { + "type": "string" + }, + "Ipv6IpamPoolId": { + "type": "string" + }, + "Ipv6NetmaskLength": { + "type": "integer" + }, + "Ipv6Pool": { + "type": "string" + }, + "VpcId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "replacementStrategy": "delete_then_create", + "required": [ + "VpcId" + ], + "tagging": { + "taggable": false + }, + "typeName": "AWS::EC2::VPCCidrBlock", + "writeOnlyProperties": [ + "/properties/Ipv4IpamPoolId", + "/properties/Ipv4NetmaskLength", + "/properties/Ipv6IpamPoolId", + "/properties/Ipv6NetmaskLength" + ] +} diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-elasticache-user.json b/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-elasticache-user.json deleted file mode 100644 index 0775783108..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-elasticache-user.json +++ /dev/null @@ -1,166 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/UserId", - "/properties/UserName", - "/properties/Engine" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z0-9 _\\.\\/=+:\\-@]*$", - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "pattern": "^[a-zA-Z0-9 _\\.\\/=+:\\-@]*$", - "type": "string" - } - }, - "required": [ - "Key" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "elasticache:CreateUser", - "elasticache:DescribeUsers", - "elasticache:ListTagsForResource", - "elasticache:AddTagsToResource" - ] - }, - "delete": { - "permissions": [ - "elasticache:DeleteUser", - "elasticache:DescribeUsers" - ] - }, - "list": { - "permissions": [ - "elasticache:DescribeUsers", - "elasticache:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "elasticache:DescribeUsers", - "elasticache:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "elasticache:ModifyUser", - "elasticache:DescribeUsers", - "elasticache:ListTagsForResource", - "elasticache:AddTagsToResource", - "elasticache:RemoveTagsFromResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/UserId" - ], - "properties": { - "AccessString": { - "type": "string" - }, - "Arn": { - "type": "string" - }, - "AuthenticationMode": { - "additionalProperties": false, - "properties": { - "Passwords": { - "$comment": "List of passwords.", - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Type": { - "enum": [ - "password", - "no-password-required", - "iam" - ], - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "Engine": { - "enum": [ - "redis" - ], - "type": "string" - }, - "NoPasswordRequired": { - "type": "boolean" - }, - "Passwords": { - "$comment": "List of passwords.", - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Status": { - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "UserId": { - "pattern": "[a-z][a-z0-9\\\\-]*", - "type": "string" - }, - "UserName": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Status", - "/properties/Arn" - ], - "required": [ - "UserId", - "UserName", - "Engine" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticache", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::ElastiCache::User", - "writeOnlyProperties": [ - "/properties/Passwords", - "/properties/NoPasswordRequired", - "/properties/AccessString", - "/properties/AuthenticationMode" - ] -} diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-lambda-eventsourcemapping.json b/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-lambda-eventsourcemapping.json new file mode 100644 index 0000000000..cb7599c139 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-lambda-eventsourcemapping.json @@ -0,0 +1,353 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::Lambda::EventSourceMapping/Properties" + ], + "createOnlyProperties": [ + "/properties/EventSourceArn", + "/properties/StartingPosition", + "/properties/StartingPositionTimestamp", + "/properties/SelfManagedEventSource", + "/properties/AmazonManagedKafkaEventSourceConfig", + "/properties/SelfManagedKafkaEventSourceConfig" + ], + "definitions": { + "AmazonManagedKafkaEventSourceConfig": { + "additionalProperties": false, + "properties": { + "ConsumerGroupId": { + "$ref": "#/definitions/ConsumerGroupId" + } + }, + "type": "object" + }, + "ConsumerGroupId": { + "maxLength": 200, + "minLength": 1, + "pattern": "[a-zA-Z0-9-\\/*:_+=.@-]*", + "type": "string" + }, + "DestinationConfig": { + "additionalProperties": false, + "properties": { + "OnFailure": { + "$ref": "#/definitions/OnFailure" + } + }, + "type": "object" + }, + "DocumentDBEventSourceConfig": { + "additionalProperties": false, + "properties": { + "CollectionName": { + "maxLength": 57, + "minLength": 1, + "type": "string" + }, + "DatabaseName": { + "maxLength": 63, + "minLength": 1, + "type": "string" + }, + "FullDocument": { + "enum": [ + "UpdateLookup", + "Default" + ], + "type": "string" + } + }, + "type": "object" + }, + "Endpoints": { + "additionalProperties": false, + "properties": { + "KafkaBootstrapServers": { + "items": { + "maxLength": 300, + "minLength": 1, + "pattern": "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9]):[0-9]{1,5}", + "type": "string" + }, + "maxItems": 10, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "Filter": { + "additionalProperties": false, + "properties": { + "Pattern": { + "maxLength": 4096, + "minLength": 0, + "pattern": ".*", + "type": "string" + } + }, + "type": "object" + }, + "FilterCriteria": { + "additionalProperties": false, + "properties": { + "Filters": { + "items": { + "$ref": "#/definitions/Filter" + }, + "maxItems": 20, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "MaximumConcurrency": { + "maximum": 1000, + "minimum": 2, + "type": "integer" + }, + "OnFailure": { + "additionalProperties": false, + "properties": { + "Destination": { + "maxLength": 1024, + "minLength": 12, + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "type": "string" + } + }, + "type": "object" + }, + "ScalingConfig": { + "additionalProperties": false, + "properties": { + "MaximumConcurrency": { + "$ref": "#/definitions/MaximumConcurrency" + } + }, + "type": "object" + }, + "SelfManagedEventSource": { + "additionalProperties": false, + "properties": { + "Endpoints": { + "$ref": "#/definitions/Endpoints" + } + }, + "type": "object" + }, + "SelfManagedKafkaEventSourceConfig": { + "additionalProperties": false, + "properties": { + "ConsumerGroupId": { + "$ref": "#/definitions/ConsumerGroupId" + } + }, + "type": "object" + }, + "SourceAccessConfiguration": { + "additionalProperties": false, + "properties": { + "Type": { + "enum": [ + "BASIC_AUTH", + "VPC_SUBNET", + "VPC_SECURITY_GROUP", + "SASL_SCRAM_512_AUTH", + "SASL_SCRAM_256_AUTH", + "VIRTUAL_HOST", + "CLIENT_CERTIFICATE_TLS_AUTH", + "SERVER_ROOT_CA_CERTIFICATE" + ], + "type": "string" + }, + "URI": { + "maxLength": 200, + "minLength": 1, + "pattern": "[a-zA-Z0-9-\\/*:_+=.@-]*", + "type": "string" + } + }, + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "lambda:CreateEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + }, + "delete": { + "permissions": [ + "lambda:DeleteEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + }, + "list": { + "permissions": [ + "lambda:ListEventSourceMappings" + ] + }, + "read": { + "permissions": [ + "lambda:GetEventSourceMapping" + ] + }, + "update": { + "permissions": [ + "lambda:UpdateEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AmazonManagedKafkaEventSourceConfig": { + "$ref": "#/definitions/AmazonManagedKafkaEventSourceConfig" + }, + "BatchSize": { + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "BisectBatchOnFunctionError": { + "type": "boolean" + }, + "DestinationConfig": { + "$ref": "#/definitions/DestinationConfig" + }, + "DocumentDBEventSourceConfig": { + "$ref": "#/definitions/DocumentDBEventSourceConfig" + }, + "Enabled": { + "type": "boolean" + }, + "EventSourceArn": { + "maxLength": 1024, + "minLength": 12, + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "type": "string" + }, + "FilterCriteria": { + "$ref": "#/definitions/FilterCriteria" + }, + "FunctionName": { + "maxLength": 140, + "minLength": 1, + "pattern": "(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?", + "type": "string" + }, + "FunctionResponseTypes": { + "items": { + "enum": [ + "ReportBatchItemFailures" + ], + "type": "string" + }, + "maxLength": 1, + "minLength": 0, + "type": "array", + "uniqueItems": true + }, + "Id": { + "maxLength": 36, + "minLength": 36, + "pattern": "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + "type": "string" + }, + "MaximumBatchingWindowInSeconds": { + "maximum": 300, + "minimum": 0, + "type": "integer" + }, + "MaximumRecordAgeInSeconds": { + "maximum": 604800, + "minimum": -1, + "type": "integer" + }, + "MaximumRetryAttempts": { + "maximum": 10000, + "minimum": -1, + "type": "integer" + }, + "ParallelizationFactor": { + "maximum": 10, + "minimum": 1, + "type": "integer" + }, + "Queues": { + "items": { + "maxLength": 1000, + "minLength": 1, + "pattern": "[\\s\\S]*", + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "ScalingConfig": { + "$ref": "#/definitions/ScalingConfig" + }, + "SelfManagedEventSource": { + "$ref": "#/definitions/SelfManagedEventSource" + }, + "SelfManagedKafkaEventSourceConfig": { + "$ref": "#/definitions/SelfManagedKafkaEventSourceConfig" + }, + "SourceAccessConfigurations": { + "items": { + "$ref": "#/definitions/SourceAccessConfiguration" + }, + "maxItems": 22, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "StartingPosition": { + "enum": [ + "TRIM_HORIZON", + "LATEST", + "AT_TIMESTAMP" + ], + "maxLength": 12, + "minLength": 6, + "pattern": "(LATEST|TRIM_HORIZON|AT_TIMESTAMP)+", + "type": "string" + }, + "StartingPositionTimestamp": { + "type": "number" + }, + "Topics": { + "items": { + "maxLength": 249, + "minLength": 1, + "pattern": "^[^.]([a-zA-Z0-9\\-_.]+)", + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "TumblingWindowInSeconds": { + "maximum": 900, + "minimum": 0, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "FunctionName" + ], + "typeName": "AWS::Lambda::EventSourceMapping" +} diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-redshift-cluster.json b/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-redshift-cluster.json deleted file mode 100644 index a354cb134c..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-redshift-cluster.json +++ /dev/null @@ -1,184 +0,0 @@ -{ - "additionalProperties": false, - "cfnLint": "AWS::Redshift::Cluster/Properties", - "createOnlyProperties": [ - "/properties/KmsKeyId", - "/properties/MasterUsername", - "/properties/OwnerAccount", - "/properties/SnapshotIdentifier", - "/properties/Encrypted", - "/properties/Port", - "/properties/DBName", - "/properties/SnapshotClusterIdentifier", - "/properties/AvailabilityZone", - "/properties/ClusterSubnetGroupName", - "/properties/ClusterIdentifier", - "/properties/ElasticIp" - ], - "definitions": { - "LoggingProperties": { - "additionalProperties": false, - "properties": { - "BucketName": { - "type": "string" - }, - "S3KeyPrefix": { - "type": "string" - } - }, - "required": [ - "BucketName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AllowVersionUpgrade": { - "type": "boolean" - }, - "AutomatedSnapshotRetentionPeriod": { - "type": "integer" - }, - "AvailabilityZone": { - "type": "string" - }, - "ClusterIdentifier": { - "type": "string" - }, - "ClusterParameterGroupName": { - "type": "string" - }, - "ClusterSecurityGroups": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "ClusterSubnetGroupName": { - "type": "string" - }, - "ClusterType": { - "type": "string" - }, - "ClusterVersion": { - "type": "string" - }, - "DBName": { - "type": "string" - }, - "ElasticIp": { - "type": "string" - }, - "Encrypted": { - "type": "boolean" - }, - "EndpointAddress": { - "type": "string" - }, - "EndpointPort": { - "type": "string" - }, - "HsmClientCertificateIdentifier": { - "type": "string" - }, - "HsmConfigurationIdentifier": { - "type": "string" - }, - "IamRoles": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Id": { - "type": "string" - }, - "KmsKeyId": { - "type": "string" - }, - "LoggingProperties": { - "$ref": "#/definitions/LoggingProperties" - }, - "MasterUserPassword": { - "type": "string" - }, - "MasterUsername": { - "type": "string" - }, - "NodeType": { - "cfnLint": "AWS::Redshift::Cluster/Properties/NodeType", - "type": "string" - }, - "NumberOfNodes": { - "maximum": 100, - "minimum": 1, - "type": "integer" - }, - "OwnerAccount": { - "type": "string" - }, - "Port": { - "type": "integer" - }, - "PreferredMaintenanceWindow": { - "type": "string" - }, - "PubliclyAccessible": { - "type": "boolean" - }, - "SnapshotClusterIdentifier": { - "type": "string" - }, - "SnapshotIdentifier": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "VpcSecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/EndpointPort", - "/properties/EndpointAddress" - ], - "required": [ - "MasterUserPassword", - "NodeType", - "MasterUsername", - "DBName", - "ClusterType" - ], - "typeName": "AWS::Redshift::Cluster" -} diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-redshift-clusterparametergroup.json b/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-redshift-clusterparametergroup.json deleted file mode 100644 index da0d11f5b9..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-redshift-clusterparametergroup.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ParameterGroupFamily", - "/properties/Description" - ], - "definitions": { - "Parameter": { - "additionalProperties": false, - "properties": { - "ParameterName": { - "type": "string" - }, - "ParameterValue": { - "type": "string" - } - }, - "required": [ - "ParameterValue", - "ParameterName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Description": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "ParameterGroupFamily": { - "type": "string" - }, - "Parameters": { - "items": { - "$ref": "#/definitions/Parameter" - }, - "type": "array", - "uniqueItems": false - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Description", - "ParameterGroupFamily" - ], - "typeName": "AWS::Redshift::ClusterParameterGroup" -} diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-redshift-clustersubnetgroup.json b/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-redshift-clustersubnetgroup.json deleted file mode 100644 index 96ded934d4..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-redshift-clustersubnetgroup.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "additionalProperties": false, - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Description": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "SubnetIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Description", - "SubnetIds" - ], - "typeName": "AWS::Redshift::ClusterSubnetGroup" -} diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-sagemaker-appimageconfig.json b/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-sagemaker-appimageconfig.json new file mode 100644 index 0000000000..01116f524b --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-sagemaker-appimageconfig.json @@ -0,0 +1,238 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AppImageConfigName", + "/properties/Tags" + ], + "definitions": { + "ContainerConfig": { + "additionalProperties": false, + "properties": { + "ContainerArguments": { + "items": { + "$ref": "#/definitions/CustomImageContainerArguments" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "ContainerEntrypoint": { + "items": { + "$ref": "#/definitions/CustomImageContainerEntrypoint" + }, + "maxItems": 1, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "ContainerEnvironmentVariables": { + "items": { + "$ref": "#/definitions/CustomImageContainerEnvironmentVariable" + }, + "maxItems": 25, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "CustomImageContainerArguments": { + "maxLength": 64, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "CustomImageContainerEntrypoint": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "CustomImageContainerEnvironmentVariable": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "FileSystemConfig": { + "additionalProperties": false, + "properties": { + "DefaultGid": { + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "DefaultUid": { + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "MountPath": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^/.*", + "type": "string" + } + }, + "type": "object" + }, + "JupyterLabAppImageConfig": { + "additionalProperties": false, + "properties": { + "ContainerConfig": { + "$ref": "#/definitions/ContainerConfig" + } + }, + "type": "object" + }, + "KernelGatewayImageConfig": { + "additionalProperties": false, + "properties": { + "FileSystemConfig": { + "$ref": "#/definitions/FileSystemConfig" + }, + "KernelSpecs": { + "items": { + "$ref": "#/definitions/KernelSpec" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "KernelSpecs" + ], + "type": "object" + }, + "KernelSpec": { + "additionalProperties": false, + "properties": { + "DisplayName": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Name": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "sagemaker:CreateAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + }, + "delete": { + "permissions": [ + "sagemaker:DeleteAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + }, + "list": { + "permissions": [ + "sagemaker:ListAppImageConfigs" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeAppImageConfig" + ] + }, + "update": { + "permissions": [ + "sagemaker:UpdateAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + } + }, + "primaryIdentifier": [ + "/properties/AppImageConfigName" + ], + "properties": { + "AppImageConfigArn": { + "maxLength": 256, + "minLength": 1, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:app-image-config/.*", + "type": "string" + }, + "AppImageConfigName": { + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", + "type": "string" + }, + "JupyterLabAppImageConfig": { + "$ref": "#/definitions/JupyterLabAppImageConfig" + }, + "KernelGatewayImageConfig": { + "$ref": "#/definitions/KernelGatewayImageConfig" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/AppImageConfigArn" + ], + "required": [ + "AppImageConfigName" + ], + "typeName": "AWS::SageMaker::AppImageConfig", + "writeOnlyProperties": [ + "/properties/Tags" + ] +} 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 a56944a078..15f81eec76 100644 --- a/src/cfnlint/data/schemas/providers/ap_southeast_4/__init__.py +++ b/src/cfnlint/data/schemas/providers/ap_southeast_4/__init__.py @@ -37,6 +37,7 @@ "AWS::ApiGateway::DocumentationPart", "AWS::CloudWatch::CompositeAlarm", "AWS::Route53Resolver::FirewallDomainList", + "AWS::Redshift::EndpointAccess", "AWS::AppConfig::Application", "AWS::OpsWorks::Stack", "AWS::MediaTailor::Channel", @@ -55,6 +56,7 @@ "AWS::WAFv2::RegexPatternSet", "AWS::EKS::FargateProfile", "AWS::Route53::DNSSEC", + "AWS::Redshift::EndpointAuthorization", "AWS::EC2::TransitGatewayRouteTable", "AWS::ControlTower::EnabledControl", "AWS::Route53::RecordSet", @@ -78,6 +80,7 @@ "AWS::LakeFormation::DataCellsFilter", "AWS::DataSync::LocationHDFS", "AWS::MSK::Cluster", + "AWS::SecurityHub::DelegatedAdmin", "AWS::ControlTower::EnabledBaseline", "AWS::EC2::VPCEndpointConnectionNotification", "AWS::CodePipeline::Pipeline", @@ -185,6 +188,7 @@ "AWS::ServiceCatalog::PortfolioShare", "AWS::ApiGateway::VpcLink", "AWS::IAM::ServerCertificate", + "AWS::GlobalAccelerator::CrossAccountAttachment", "AWS::Events::EventBus", "AWS::SQS::QueueInlinePolicy", "AWS::Organizations::Organization", @@ -209,6 +213,7 @@ "AWS::EFS::FileSystem", "AWS::Config::OrganizationConformancePack", "AWS::Logs::QueryDefinition", + "AWS::SecurityHub::ProductSubscription", "AWS::IAM::InstanceProfile", "AWS::DataSync::LocationNFS", "AWS::CertificateManager::Certificate", @@ -380,6 +385,7 @@ "AWS::ServiceCatalogAppRegistry::AttributeGroup", "AWS::MediaPackageV2::OriginEndpoint", "AWS::EC2::EgressOnlyInternetGateway", + "AWS::SecurityHub::Insight", "AWS::Config::ConformancePack", "AWS::EC2::VPCCidrBlock", "AWS::MediaTailor::VodSource", @@ -473,6 +479,7 @@ "AWS::LakeFormation::DataLakeSettings", "AWS::AutoScaling::ScalingPolicy", "AWS::ECR::RegistryPolicy", + "AWS::Redshift::ScheduledAction", "AWS::RDS::DBSecurityGroup", "AWS::CloudWatch::MetricStream", "AWS::SSM::Parameter", @@ -526,6 +533,7 @@ "AWS::S3::AccessPoint", "AWS::Batch::JobQueue", "AWS::ElasticLoadBalancingV2::Listener", + "AWS::Redshift::EventSubscription", "AWS::CloudFormation::WaitConditionHandle", "AWS::GlobalAccelerator::Accelerator", "AWS::EKS::Addon", @@ -542,7 +550,6 @@ "aws-guardduty-filter.json", "aws-ecs-service.json", "aws-dms-replicationconfig.json", - "aws-ec2-securitygroupegress.json", "aws-glue-dataqualityruleset.json", "aws-config-configurationrecorder.json", "aws-ec2-networkperformancemetricsubscription.json", @@ -550,15 +557,16 @@ "aws-ecr-replicationconfiguration.json", "aws-appconfig-extensionassociation.json", "aws-ec2-ipampoolcidr.json", + "aws-redshift-clustersubnetgroup.json", "aws-rds-dbinstance.json", "aws-ec2-vpcdhcpoptionsassociation.json", "aws-ec2-networkacl.json", - "aws-lambda-eventsourcemapping.json", "aws-logs-resourcepolicy.json", "aws-servicecatalog-launchnotificationconstraint.json", "aws-transfer-certificate.json", "aws-cloudwatch-compositealarm.json", "aws-route53resolver-firewalldomainlist.json", + "aws-redshift-endpointaccess.json", "aws-appconfig-application.json", "aws-mediatailor-channel.json", "aws-mediatailor-channelpolicy.json", @@ -572,6 +580,7 @@ "aws-wafv2-regexpatternset.json", "aws-eks-fargateprofile.json", "aws-route53-dnssec.json", + "aws-redshift-endpointauthorization.json", "aws-ec2-transitgatewayroutetable.json", "aws-controltower-enabledcontrol.json", "aws-route53-recordset.json", @@ -592,6 +601,7 @@ "aws-lakeformation-datacellsfilter.json", "aws-datasync-locationhdfs.json", "aws-msk-cluster.json", + "aws-securityhub-delegatedadmin.json", "aws-controltower-enabledbaseline.json", "aws-ec2-vpcendpointconnectionnotification.json", "aws-codepipeline-pipeline.json", @@ -637,7 +647,6 @@ "aws-cloudfront-cloudfrontoriginaccessidentity.json", "aws-logs-loganomalydetector.json", "aws-ec2-transitgatewaymulticastdomainassociation.json", - "aws-ec2-transitgatewayroutetableassociation.json", "aws-appconfig-environment.json", "aws-imagebuilder-image.json", "aws-elasticache-securitygroupingress.json", @@ -681,6 +690,7 @@ "aws-athena-workgroup.json", "aws-servicecatalog-portfolioshare.json", "aws-iam-servercertificate.json", + "aws-globalaccelerator-crossaccountattachment.json", "aws-events-eventbus.json", "aws-sqs-queueinlinepolicy.json", "aws-organizations-organization.json", @@ -703,6 +713,7 @@ "aws-efs-filesystem.json", "aws-config-organizationconformancepack.json", "aws-logs-querydefinition.json", + "aws-securityhub-productsubscription.json", "aws-datasync-locationnfs.json", "aws-certificatemanager-certificate.json", "aws-sdb-domain.json", @@ -753,6 +764,7 @@ "aws-datasync-locationsmb.json", "aws-securityhub-standard.json", "aws-sns-topicinlinepolicy.json", + "aws-redshift-clusterparametergroup.json", "aws-organizations-policy.json", "aws-glue-trigger.json", "aws-globalaccelerator-listener.json", @@ -792,6 +804,7 @@ "aws-mediaconnect-flow.json", "aws-logs-accountpolicy.json", "aws-s3-bucketpolicy.json", + "aws-redshift-cluster.json", "aws-emr-instancefleetconfig.json", "aws-emr-cluster.json", "aws-rds-dbcluster.json", @@ -842,7 +855,6 @@ "aws-ec2-subnetnetworkaclassociation.json", "aws-servicecatalog-serviceaction.json", "aws-iam-userpolicy.json", - "aws-cloudfront-originaccesscontrol.json", "aws-secretsmanager-rotationschedule.json", "aws-lambda-permission.json", "aws-networkfirewall-firewallpolicy.json", @@ -851,8 +863,9 @@ "aws-servicecatalogappregistry-attributegroup.json", "aws-mediapackagev2-originendpoint.json", "aws-ec2-egressonlyinternetgateway.json", + "aws-securityhub-insight.json", + "aws-config-conformancepack.json", "aws-mediatailor-vodsource.json", - "aws-acmpca-certificateauthority.json", "aws-athena-preparedstatement.json", "aws-lakeformation-resource.json", "aws-ec2-ipamscope.json", @@ -887,6 +900,7 @@ "aws-mediaconnect-flowvpcinterface.json", "aws-glue-workflow.json", "aws-ec2-prefixlist.json", + "aws-ec2-instance.json", "aws-ec2-subnetcidrblock.json", "aws-waf-sqlinjectionmatchset.json", "aws-ec2-flowlog.json", @@ -924,6 +938,7 @@ "aws-athena-namedquery.json", "aws-lakeformation-datalakesettings.json", "aws-ecr-registrypolicy.json", + "aws-redshift-scheduledaction.json", "aws-rds-dbsecuritygroup.json", "aws-cloudwatch-metricstream.json", "aws-ssm-parameter.json", @@ -966,6 +981,7 @@ "aws-s3-accesspoint.json", "aws-batch-jobqueue.json", "aws-elasticloadbalancingv2-listener.json", + "aws-redshift-eventsubscription.json", "aws-cloudformation-waitconditionhandle.json", "aws-globalaccelerator-accelerator.json", "aws-eks-addon.json", diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-acmpca-certificateauthority.json b/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-acmpca-certificateauthority.json new file mode 100644 index 0000000000..08ec85e5fa --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-acmpca-certificateauthority.json @@ -0,0 +1,429 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Type", + "/properties/KeyAlgorithm", + "/properties/SigningAlgorithm", + "/properties/Subject", + "/properties/CsrExtensions", + "/properties/KeyStorageSecurityStandard", + "/properties/UsageMode" + ], + "definitions": { + "AccessDescription": { + "additionalProperties": false, + "properties": { + "AccessLocation": { + "$ref": "#/definitions/GeneralName" + }, + "AccessMethod": { + "$ref": "#/definitions/AccessMethod" + } + }, + "required": [ + "AccessMethod", + "AccessLocation" + ], + "type": "object" + }, + "AccessMethod": { + "additionalProperties": false, + "properties": { + "AccessMethodType": { + "$ref": "#/definitions/AccessMethodType" + }, + "CustomObjectIdentifier": { + "$ref": "#/definitions/CustomObjectIdentifier" + } + }, + "type": "object" + }, + "AccessMethodType": { + "type": "string" + }, + "Arn": { + "type": "string" + }, + "CrlConfiguration": { + "additionalProperties": false, + "properties": { + "CrlDistributionPointExtensionConfiguration": { + "$ref": "#/definitions/CrlDistributionPointExtensionConfiguration" + }, + "CustomCname": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + }, + "ExpirationInDays": { + "type": "integer" + }, + "S3BucketName": { + "type": "string" + }, + "S3ObjectAcl": { + "type": "string" + } + }, + "type": "object" + }, + "CrlDistributionPointExtensionConfiguration": { + "additionalProperties": false, + "properties": { + "OmitExtension": { + "type": "boolean" + } + }, + "required": [ + "OmitExtension" + ], + "type": "object" + }, + "CsrExtensions": { + "additionalProperties": false, + "properties": { + "KeyUsage": { + "$ref": "#/definitions/KeyUsage" + }, + "SubjectInformationAccess": { + "$ref": "#/definitions/SubjectInformationAccess" + } + }, + "type": "object" + }, + "CustomAttribute": { + "additionalProperties": false, + "properties": { + "ObjectIdentifier": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "ObjectIdentifier", + "Value" + ], + "type": "object" + }, + "CustomAttributeList": { + "items": { + "$ref": "#/definitions/CustomAttribute" + }, + "type": "array" + }, + "CustomObjectIdentifier": { + "type": "string" + }, + "DnsName": { + "type": "string" + }, + "EdiPartyName": { + "additionalProperties": false, + "properties": { + "NameAssigner": { + "type": "string" + }, + "PartyName": { + "type": "string" + } + }, + "required": [ + "PartyName", + "NameAssigner" + ], + "type": "object" + }, + "GeneralName": { + "additionalProperties": false, + "properties": { + "DirectoryName": { + "$ref": "#/definitions/Subject" + }, + "DnsName": { + "$ref": "#/definitions/DnsName" + }, + "EdiPartyName": { + "$ref": "#/definitions/EdiPartyName" + }, + "IpAddress": { + "$ref": "#/definitions/IpAddress" + }, + "OtherName": { + "$ref": "#/definitions/OtherName" + }, + "RegisteredId": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Rfc822Name": { + "$ref": "#/definitions/Rfc822Name" + }, + "UniformResourceIdentifier": { + "$ref": "#/definitions/UniformResourceIdentifier" + } + }, + "type": "object" + }, + "IpAddress": { + "type": "string" + }, + "KeyUsage": { + "additionalProperties": false, + "properties": { + "CRLSign": { + "default": false, + "type": "boolean" + }, + "DataEncipherment": { + "default": false, + "type": "boolean" + }, + "DecipherOnly": { + "default": false, + "type": "boolean" + }, + "DigitalSignature": { + "default": false, + "type": "boolean" + }, + "EncipherOnly": { + "default": false, + "type": "boolean" + }, + "KeyAgreement": { + "default": false, + "type": "boolean" + }, + "KeyCertSign": { + "default": false, + "type": "boolean" + }, + "KeyEncipherment": { + "default": false, + "type": "boolean" + }, + "NonRepudiation": { + "default": false, + "type": "boolean" + } + }, + "type": "object" + }, + "OcspConfiguration": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + }, + "OcspCustomCname": { + "type": "string" + } + }, + "type": "object" + }, + "OtherName": { + "additionalProperties": false, + "properties": { + "TypeId": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "TypeId", + "Value" + ], + "type": "object" + }, + "RevocationConfiguration": { + "additionalProperties": false, + "properties": { + "CrlConfiguration": { + "$ref": "#/definitions/CrlConfiguration" + }, + "OcspConfiguration": { + "$ref": "#/definitions/OcspConfiguration" + } + }, + "type": "object" + }, + "Rfc822Name": { + "type": "string" + }, + "Subject": { + "additionalProperties": false, + "properties": { + "CommonName": { + "type": "string" + }, + "Country": { + "type": "string" + }, + "CustomAttributes": { + "$ref": "#/definitions/CustomAttributeList" + }, + "DistinguishedNameQualifier": { + "type": "string" + }, + "GenerationQualifier": { + "type": "string" + }, + "GivenName": { + "type": "string" + }, + "Initials": { + "type": "string" + }, + "Locality": { + "type": "string" + }, + "Organization": { + "type": "string" + }, + "OrganizationalUnit": { + "type": "string" + }, + "Pseudonym": { + "type": "string" + }, + "SerialNumber": { + "type": "string" + }, + "State": { + "type": "string" + }, + "Surname": { + "type": "string" + }, + "Title": { + "type": "string" + } + }, + "type": "object" + }, + "SubjectInformationAccess": { + "items": { + "$ref": "#/definitions/AccessDescription" + }, + "type": "array" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "UniformResourceIdentifier": { + "type": "string" + } + }, + "handlers": { + "create": { + "permissions": [ + "acm-pca:CreateCertificateAuthority", + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr" + ] + }, + "delete": { + "permissions": [ + "acm-pca:DeleteCertificateAuthority", + "acm-pca:DescribeCertificateAuthority" + ] + }, + "list": { + "permissions": [ + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr", + "acm-pca:ListCertificateAuthorities", + "acm-pca:ListTags" + ] + }, + "read": { + "permissions": [ + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr", + "acm-pca:ListTags" + ] + }, + "update": { + "permissions": [ + "acm-pca:ListTags", + "acm-pca:TagCertificateAuthority", + "acm-pca:UntagCertificateAuthority", + "acm-pca:UpdateCertificateAuthority" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "$ref": "#/definitions/Arn" + }, + "CertificateSigningRequest": { + "type": "string" + }, + "CsrExtensions": { + "$ref": "#/definitions/CsrExtensions" + }, + "KeyAlgorithm": { + "type": "string" + }, + "KeyStorageSecurityStandard": { + "type": "string" + }, + "RevocationConfiguration": { + "$ref": "#/definitions/RevocationConfiguration" + }, + "SigningAlgorithm": { + "type": "string" + }, + "Subject": { + "$ref": "#/definitions/Subject" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "Type": { + "type": "string" + }, + "UsageMode": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CertificateSigningRequest" + ], + "required": [ + "Type", + "KeyAlgorithm", + "SigningAlgorithm", + "Subject" + ], + "sourceUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_ACMPCA.html", + "typeName": "AWS::ACMPCA::CertificateAuthority", + "writeOnlyProperties": [ + "/properties/Subject", + "/properties/Subject", + "/properties/CsrExtensions", + "/properties/Tags", + "/properties/RevocationConfiguration", + "/properties/KeyStorageSecurityStandard" + ] +} diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-cloudfront-originaccesscontrol.json b/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-cloudfront-originaccesscontrol.json new file mode 100644 index 0000000000..2da12fdee1 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-cloudfront-originaccesscontrol.json @@ -0,0 +1,88 @@ +{ + "additionalProperties": false, + "definitions": { + "OriginAccessControlConfig": { + "additionalProperties": false, + "properties": { + "Description": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "OriginAccessControlOriginType": { + "pattern": "^(s3|mediastore)$", + "type": "string" + }, + "SigningBehavior": { + "pattern": "^(never|no-override|always)$", + "type": "string" + }, + "SigningProtocol": { + "pattern": "^(sigv4)$", + "type": "string" + } + }, + "required": [ + "Name", + "SigningProtocol", + "SigningBehavior", + "OriginAccessControlOriginType" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "cloudfront:CreateOriginAccessControl" + ] + }, + "delete": { + "permissions": [ + "cloudfront:DeleteOriginAccessControl", + "cloudfront:GetOriginAccessControl" + ] + }, + "list": { + "permissions": [ + "cloudfront:ListOriginAccessControls" + ] + }, + "read": { + "permissions": [ + "cloudfront:GetOriginAccessControl" + ] + }, + "update": { + "permissions": [ + "cloudfront:UpdateOriginAccessControl", + "cloudfront:GetOriginAccessControl" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "type": "string" + }, + "OriginAccessControlConfig": { + "$ref": "#/definitions/OriginAccessControlConfig" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "OriginAccessControlConfig" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::CloudFront::OriginAccessControl" +} diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-config-conformancepack.json b/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-config-conformancepack.json deleted file mode 100644 index cc35e80876..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-config-conformancepack.json +++ /dev/null @@ -1,140 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ConformancePackName" - ], - "definitions": { - "ConformancePackInputParameter": { - "additionalProperties": false, - "properties": { - "ParameterName": { - "$ref": "#/definitions/ParameterName" - }, - "ParameterValue": { - "$ref": "#/definitions/ParameterValue" - } - }, - "required": [ - "ParameterName", - "ParameterValue" - ], - "type": "object" - }, - "ParameterName": { - "maxLength": 255, - "minLength": 0, - "type": "string" - }, - "ParameterValue": { - "maxLength": 4096, - "minLength": 0, - "type": "string" - } - }, - "documentationUrl": "https://docs.aws.amazon.com/config/latest/developerguide/conformance-packs.html", - "handlers": { - "create": { - "permissions": [ - "config:PutConformancePack", - "config:DescribeConformancePackStatus", - "config:DescribeConformancePacks", - "s3:GetObject", - "s3:GetBucketAcl", - "iam:CreateServiceLinkedRole", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "config:DeleteConformancePack", - "config:DescribeConformancePackStatus" - ] - }, - "list": { - "permissions": [ - "config:DescribeConformancePacks" - ] - }, - "read": { - "permissions": [ - "config:DescribeConformancePacks" - ] - }, - "update": { - "permissions": [ - "config:PutConformancePack", - "config:DescribeConformancePackStatus", - "s3:GetObject", - "s3:GetBucketAcl", - "iam:CreateServiceLinkedRole", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/ConformancePackName" - ], - "properties": { - "ConformancePackInputParameters": { - "items": { - "$ref": "#/definitions/ConformancePackInputParameter" - }, - "maxItems": 60, - "minItems": 0, - "type": "array" - }, - "ConformancePackName": { - "maxLength": 256, - "minLength": 1, - "pattern": "[a-zA-Z][-a-zA-Z0-9]*", - "type": "string" - }, - "DeliveryS3Bucket": { - "maxLength": 63, - "minLength": 0, - "type": "string" - }, - "DeliveryS3KeyPrefix": { - "maxLength": 1024, - "minLength": 0, - "type": "string" - }, - "TemplateBody": { - "maxLength": 51200, - "minLength": 1, - "type": "string" - }, - "TemplateS3Uri": { - "maxLength": 1024, - "minLength": 1, - "pattern": "s3://.*", - "type": "string" - }, - "TemplateSSMDocumentDetails": { - "additionalProperties": false, - "properties": { - "DocumentName": { - "maxLength": 128, - "minLength": 3, - "type": "string" - }, - "DocumentVersion": { - "maxLength": 128, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - } - }, - "required": [ - "ConformancePackName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-config.git", - "typeName": "AWS::Config::ConformancePack", - "writeOnlyProperties": [ - "/properties/TemplateBody", - "/properties/TemplateS3Uri", - "/properties/TemplateSSMDocumentDetails" - ] -} diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-dynamodb-globaltable.json b/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-dynamodb-globaltable.json index 4e5ba995cb..ae37e9142b 100644 --- a/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-dynamodb-globaltable.json +++ b/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-dynamodb-globaltable.json @@ -8,6 +8,27 @@ ] ], "additionalProperties": false, + "allOf": [ + { + "if": { + "required": [ + "LocalSecondaryIndexes" + ], + "type": "object" + }, + "then": { + "properties": { + "AttributeDefinitions": { + "minItems": 2 + }, + "KeySchema": { + "minItems": 2 + } + }, + "type": "object" + } + } + ], "createOnlyProperties": [ "/properties/LocalSecondaryIndexes", "/properties/TableName", @@ -79,13 +100,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "minItems": 1, - "type": "array", - "uniqueItems": true + "minItems": 1 }, "Projection": { "$ref": "#/definitions/Projection" @@ -102,22 +119,60 @@ "type": "object" }, "KeySchema": { - "additionalProperties": false, - "properties": { - "AttributeName": { - "maxLength": 255, - "minLength": 1, - "type": "string" + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "KeyType": { + "enum": [ + "HASH", + "RANGE" + ], + "type": "string" + } }, - "KeyType": { - "type": "string" - } + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" }, - "required": [ - "KeyType", - "AttributeName" + "prefixItems": [ + { + "additionalProperties": false, + "properties": { + "KeyType": { + "const": "HASH", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + }, + { + "properties": { + "KeyType": { + "const": "RANGE", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + } ], - "type": "object" + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "KinesisStreamSpecification": { "additionalProperties": false, @@ -147,12 +202,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "type": "array", - "uniqueItems": true + "minItems": 2 }, "Projection": { "$ref": "#/definitions/Projection" @@ -511,7 +563,10 @@ }, "minItems": 1, "type": "array", - "uniqueItems": true + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "BillingMode": { "type": "string" @@ -525,13 +580,9 @@ "uniqueItems": true }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "minItems": 1, - "type": "array", - "uniqueItems": true + "minItems": 1 }, "LocalSecondaryIndexes": { "insertionOrder": false, diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-dynamodb-table.json b/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-dynamodb-table.json index efc82f1d70..f21d084b10 100644 --- a/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-dynamodb-table.json +++ b/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-dynamodb-table.json @@ -1,5 +1,26 @@ { "additionalProperties": false, + "allOf": [ + { + "if": { + "required": [ + "LocalSecondaryIndexes" + ], + "type": "object" + }, + "then": { + "properties": { + "AttributeDefinitions": { + "minItems": 2 + }, + "KeySchema": { + "minItems": 2 + } + }, + "type": "object" + } + } + ], "cfnLint": [ "AWS::DynamoDB::Table/Properties" ], @@ -95,11 +116,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 }, "Projection": { "$ref": "#/definitions/Projection" @@ -147,24 +166,57 @@ "type": "object" }, "KeySchema": { - "additionalProperties": false, - "properties": { - "AttributeName": { - "type": "string" + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "type": "string" + }, + "KeyType": { + "enum": [ + "HASH", + "RANGE" + ], + "type": "string" + } }, - "KeyType": { - "enum": [ - "HASH", - "RANGE" + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" + }, + "prefixItems": [ + { + "properties": { + "KeyType": { + "const": "HASH", + "type": "string" + } + }, + "required": [ + "KeyType" ], - "type": "string" + "type": "object" + }, + { + "properties": { + "KeyType": { + "const": "RANGE", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" } - }, - "required": [ - "KeyType", - "AttributeName" ], - "type": "object" + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "KinesisStreamSpecification": { "additionalProperties": false, @@ -192,11 +244,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 2 }, "Projection": { "$ref": "#/definitions/Projection" @@ -451,7 +501,10 @@ "$ref": "#/definitions/AttributeDefinition" }, "type": "array", - "uniqueItems": true + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "BillingMode": { "enum": [ @@ -479,11 +532,9 @@ "KeySchema": { "oneOf": [ { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 }, { "type": "object" diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-ec2-instance.json b/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-ec2-instance.json deleted file mode 100644 index 7b3bfed595..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-ec2-instance.json +++ /dev/null @@ -1,571 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ElasticGpuSpecifications", - "/properties/Ipv6Addresses", - "/properties/PlacementGroupName", - "/properties/HostResourceGroupArn", - "/properties/ImageId", - "/properties/CpuOptions", - "/properties/PrivateIpAddress", - "/properties/ElasticInferenceAccelerators", - "/properties/EnclaveOptions", - "/properties/HibernationOptions", - "/properties/KeyName", - "/properties/LicenseSpecifications", - "/properties/NetworkInterfaces", - "/properties/AvailabilityZone", - "/properties/SubnetId", - "/properties/LaunchTemplate", - "/properties/SecurityGroups", - "/properties/Ipv6AddressCount" - ], - "definitions": { - "AssociationParameter": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "BlockDeviceMapping": { - "additionalProperties": false, - "properties": { - "DeviceName": { - "type": "string" - }, - "Ebs": { - "$ref": "#/definitions/Ebs" - }, - "NoDevice": { - "$ref": "#/definitions/NoDevice" - }, - "VirtualName": { - "type": "string" - } - }, - "required": [ - "DeviceName" - ], - "requiredXor": [ - "VirtualName", - "Ebs", - "NoDevice" - ], - "type": "object" - }, - "CpuOptions": { - "additionalProperties": false, - "properties": { - "CoreCount": { - "type": "integer" - }, - "ThreadsPerCore": { - "type": "integer" - } - }, - "type": "object" - }, - "CreditSpecification": { - "additionalProperties": false, - "properties": { - "CPUCredits": { - "type": "string" - } - }, - "type": "object" - }, - "Ebs": { - "additionalProperties": false, - "properties": { - "DeleteOnTermination": { - "type": "boolean" - }, - "Encrypted": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "KmsKeyId": { - "type": "string" - }, - "SnapshotId": { - "type": "string" - }, - "VolumeSize": { - "type": "integer" - }, - "VolumeType": { - "type": "string" - } - }, - "type": "object" - }, - "ElasticGpuSpecification": { - "additionalProperties": false, - "properties": { - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "ElasticInferenceAccelerator": { - "additionalProperties": false, - "properties": { - "Count": { - "type": "integer" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "EnclaveOptions": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - } - }, - "type": "object" - }, - "HibernationOptions": { - "additionalProperties": false, - "properties": { - "Configured": { - "type": "boolean" - } - }, - "type": "object" - }, - "InstanceIpv6Address": { - "additionalProperties": false, - "properties": { - "Ipv6Address": { - "type": "string" - } - }, - "required": [ - "Ipv6Address" - ], - "type": "object" - }, - "LaunchTemplateSpecification": { - "additionalProperties": false, - "properties": { - "LaunchTemplateId": { - "type": "string" - }, - "LaunchTemplateName": { - "type": "string" - }, - "Version": { - "type": "string" - } - }, - "required": [ - "Version" - ], - "type": "object" - }, - "LicenseSpecification": { - "additionalProperties": false, - "properties": { - "LicenseConfigurationArn": { - "type": "string" - } - }, - "required": [ - "LicenseConfigurationArn" - ], - "type": "object" - }, - "NetworkInterface": { - "additionalProperties": false, - "properties": { - "AssociateCarrierIpAddress": { - "type": "boolean" - }, - "AssociatePublicIpAddress": { - "type": "boolean" - }, - "DeleteOnTermination": { - "type": "boolean" - }, - "Description": { - "type": "string" - }, - "DeviceIndex": { - "type": "string" - }, - "GroupSet": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": false - }, - "NetworkInterfaceId": { - "type": "string" - }, - "PrivateIpAddress": { - "type": "string" - }, - "PrivateIpAddresses": { - "items": { - "$ref": "#/definitions/PrivateIpAddressSpecification" - }, - "type": "array", - "uniqueItems": false - }, - "SecondaryPrivateIpAddressCount": { - "type": "integer" - }, - "SubnetId": { - "type": "string" - } - }, - "required": [ - "DeviceIndex" - ], - "type": "object" - }, - "NoDevice": { - "additionalProperties": false, - "type": "object" - }, - "PrivateDnsNameOptions": { - "additionalProperties": false, - "properties": { - "EnableResourceNameDnsAAAARecord": { - "type": "boolean" - }, - "EnableResourceNameDnsARecord": { - "type": "boolean" - }, - "HostnameType": { - "type": "string" - } - }, - "type": "object" - }, - "PrivateIpAddressSpecification": { - "additionalProperties": false, - "properties": { - "Primary": { - "type": "boolean" - }, - "PrivateIpAddress": { - "type": "string" - } - }, - "required": [ - "PrivateIpAddress", - "Primary" - ], - "type": "object" - }, - "SsmAssociation": { - "additionalProperties": false, - "properties": { - "AssociationParameters": { - "items": { - "$ref": "#/definitions/AssociationParameter" - }, - "type": "array", - "uniqueItems": false - }, - "DocumentName": { - "type": "string" - } - }, - "required": [ - "DocumentName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "Volume": { - "additionalProperties": false, - "properties": { - "Device": { - "type": "string" - }, - "VolumeId": { - "type": "string" - } - }, - "required": [ - "VolumeId", - "Device" - ], - "type": "object" - } - }, - "dependentExcluded": { - "NetworkInterfaces": [ - "SubnetId" - ], - "SubnetId": [ - "NetworkInterfaces" - ] - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AdditionalInfo": { - "type": "string" - }, - "Affinity": { - "enum": [ - "default", - "host" - ], - "type": "string" - }, - "AvailabilityZone": { - "cfnLint": [ - "AWS::EC2::Instance/Properties/AvailabilityZone" - ], - "type": "string" - }, - "BlockDeviceMappings": { - "items": { - "$ref": "#/definitions/BlockDeviceMapping" - }, - "type": "array", - "uniqueItems": false - }, - "CpuOptions": { - "$ref": "#/definitions/CpuOptions" - }, - "CreditSpecification": { - "$ref": "#/definitions/CreditSpecification" - }, - "DisableApiTermination": { - "type": "boolean" - }, - "EbsOptimized": { - "type": "boolean" - }, - "ElasticGpuSpecifications": { - "items": { - "$ref": "#/definitions/ElasticGpuSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "ElasticInferenceAccelerators": { - "items": { - "$ref": "#/definitions/ElasticInferenceAccelerator" - }, - "type": "array", - "uniqueItems": true - }, - "EnclaveOptions": { - "$ref": "#/definitions/EnclaveOptions" - }, - "HibernationOptions": { - "$ref": "#/definitions/HibernationOptions" - }, - "HostId": { - "type": "string" - }, - "HostResourceGroupArn": { - "type": "string" - }, - "IamInstanceProfile": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "ImageId": { - "type": "string" - }, - "InstanceInitiatedShutdownBehavior": { - "type": "string" - }, - "InstanceType": { - "cfnLint": [ - "AWS::EC2::Instance/Properties/InstanceType" - ], - "type": "string" - }, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": false - }, - "KernelId": { - "type": "string" - }, - "KeyName": { - "type": "string" - }, - "LaunchTemplate": { - "$ref": "#/definitions/LaunchTemplateSpecification" - }, - "LicenseSpecifications": { - "items": { - "$ref": "#/definitions/LicenseSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "Monitoring": { - "type": "boolean" - }, - "NetworkInterfaces": { - "items": { - "$ref": "#/definitions/NetworkInterface" - }, - "type": "array", - "uniqueItems": false - }, - "PlacementGroupName": { - "type": "string" - }, - "PrivateDnsName": { - "type": "string" - }, - "PrivateDnsNameOptions": { - "$ref": "#/definitions/PrivateDnsNameOptions" - }, - "PrivateIp": { - "type": "string" - }, - "PrivateIpAddress": { - "type": "string" - }, - "PropagateTagsToVolumeOnCreation": { - "type": "boolean" - }, - "PublicDnsName": { - "type": "string" - }, - "PublicIp": { - "type": "string" - }, - "RamdiskId": { - "type": "string" - }, - "SecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SecurityGroups": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SourceDestCheck": { - "type": "boolean" - }, - "SsmAssociations": { - "items": { - "$ref": "#/definitions/SsmAssociation" - }, - "type": "array", - "uniqueItems": false - }, - "SubnetId": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "Tenancy": { - "enum": [ - "default", - "dedicated", - "host" - ], - "type": "string" - }, - "UserData": { - "type": "string" - }, - "Volumes": { - "items": { - "$ref": "#/definitions/Volume" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/PublicIp", - "/properties/Id", - "/properties/PublicDnsName", - "/properties/PrivateDnsName", - "/properties/PrivateIp" - ], - "requiredXor": [ - "ImageId", - "LaunchTemplate" - ], - "typeName": "AWS::EC2::Instance" -} diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-ec2-securitygroupegress.json b/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-ec2-securitygroupegress.json new file mode 100644 index 0000000000..f94631dad2 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-ec2-securitygroupegress.json @@ -0,0 +1,98 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::EC2::SecurityGroupEgress/Properties" + ], + "createOnlyProperties": [ + "/properties/IpProtocol", + "/properties/DestinationSecurityGroupId", + "/properties/ToPort", + "/properties/CidrIp", + "/properties/FromPort", + "/properties/GroupId", + "/properties/CidrIpv6", + "/properties/DestinationPrefixListId" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:AuthorizeSecurityGroupEgress", + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "delete": { + "permissions": [ + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "update": { + "permissions": [ + "ec2:UpdateSecurityGroupRuleDescriptionsEgress" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CidrIp": { + "type": "string" + }, + "CidrIpv6": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "DestinationPrefixListId": { + "type": "string" + }, + "DestinationSecurityGroupId": { + "type": "string" + }, + "FromPort": { + "minimum": -1, + "type": "integer" + }, + "GroupId": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "IpProtocol": { + "type": "string" + }, + "ToPort": { + "minimum": -1, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IpProtocol", + "GroupId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SecurityGroupEgress" +} diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-ec2-transitgatewayroutetableassociation.json b/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-ec2-transitgatewayroutetableassociation.json new file mode 100644 index 0000000000..890b2c4be2 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-ec2-transitgatewayroutetableassociation.json @@ -0,0 +1,29 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TransitGatewayRouteTableId", + "/properties/TransitGatewayAttachmentId" + ], + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "type": "string" + }, + "TransitGatewayAttachmentId": { + "type": "string" + }, + "TransitGatewayRouteTableId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "TransitGatewayRouteTableId", + "TransitGatewayAttachmentId" + ], + "typeName": "AWS::EC2::TransitGatewayRouteTableAssociation" +} diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-lambda-eventsourcemapping.json b/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-lambda-eventsourcemapping.json new file mode 100644 index 0000000000..cb7599c139 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-lambda-eventsourcemapping.json @@ -0,0 +1,353 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::Lambda::EventSourceMapping/Properties" + ], + "createOnlyProperties": [ + "/properties/EventSourceArn", + "/properties/StartingPosition", + "/properties/StartingPositionTimestamp", + "/properties/SelfManagedEventSource", + "/properties/AmazonManagedKafkaEventSourceConfig", + "/properties/SelfManagedKafkaEventSourceConfig" + ], + "definitions": { + "AmazonManagedKafkaEventSourceConfig": { + "additionalProperties": false, + "properties": { + "ConsumerGroupId": { + "$ref": "#/definitions/ConsumerGroupId" + } + }, + "type": "object" + }, + "ConsumerGroupId": { + "maxLength": 200, + "minLength": 1, + "pattern": "[a-zA-Z0-9-\\/*:_+=.@-]*", + "type": "string" + }, + "DestinationConfig": { + "additionalProperties": false, + "properties": { + "OnFailure": { + "$ref": "#/definitions/OnFailure" + } + }, + "type": "object" + }, + "DocumentDBEventSourceConfig": { + "additionalProperties": false, + "properties": { + "CollectionName": { + "maxLength": 57, + "minLength": 1, + "type": "string" + }, + "DatabaseName": { + "maxLength": 63, + "minLength": 1, + "type": "string" + }, + "FullDocument": { + "enum": [ + "UpdateLookup", + "Default" + ], + "type": "string" + } + }, + "type": "object" + }, + "Endpoints": { + "additionalProperties": false, + "properties": { + "KafkaBootstrapServers": { + "items": { + "maxLength": 300, + "minLength": 1, + "pattern": "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9]):[0-9]{1,5}", + "type": "string" + }, + "maxItems": 10, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "Filter": { + "additionalProperties": false, + "properties": { + "Pattern": { + "maxLength": 4096, + "minLength": 0, + "pattern": ".*", + "type": "string" + } + }, + "type": "object" + }, + "FilterCriteria": { + "additionalProperties": false, + "properties": { + "Filters": { + "items": { + "$ref": "#/definitions/Filter" + }, + "maxItems": 20, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "MaximumConcurrency": { + "maximum": 1000, + "minimum": 2, + "type": "integer" + }, + "OnFailure": { + "additionalProperties": false, + "properties": { + "Destination": { + "maxLength": 1024, + "minLength": 12, + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "type": "string" + } + }, + "type": "object" + }, + "ScalingConfig": { + "additionalProperties": false, + "properties": { + "MaximumConcurrency": { + "$ref": "#/definitions/MaximumConcurrency" + } + }, + "type": "object" + }, + "SelfManagedEventSource": { + "additionalProperties": false, + "properties": { + "Endpoints": { + "$ref": "#/definitions/Endpoints" + } + }, + "type": "object" + }, + "SelfManagedKafkaEventSourceConfig": { + "additionalProperties": false, + "properties": { + "ConsumerGroupId": { + "$ref": "#/definitions/ConsumerGroupId" + } + }, + "type": "object" + }, + "SourceAccessConfiguration": { + "additionalProperties": false, + "properties": { + "Type": { + "enum": [ + "BASIC_AUTH", + "VPC_SUBNET", + "VPC_SECURITY_GROUP", + "SASL_SCRAM_512_AUTH", + "SASL_SCRAM_256_AUTH", + "VIRTUAL_HOST", + "CLIENT_CERTIFICATE_TLS_AUTH", + "SERVER_ROOT_CA_CERTIFICATE" + ], + "type": "string" + }, + "URI": { + "maxLength": 200, + "minLength": 1, + "pattern": "[a-zA-Z0-9-\\/*:_+=.@-]*", + "type": "string" + } + }, + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "lambda:CreateEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + }, + "delete": { + "permissions": [ + "lambda:DeleteEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + }, + "list": { + "permissions": [ + "lambda:ListEventSourceMappings" + ] + }, + "read": { + "permissions": [ + "lambda:GetEventSourceMapping" + ] + }, + "update": { + "permissions": [ + "lambda:UpdateEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AmazonManagedKafkaEventSourceConfig": { + "$ref": "#/definitions/AmazonManagedKafkaEventSourceConfig" + }, + "BatchSize": { + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "BisectBatchOnFunctionError": { + "type": "boolean" + }, + "DestinationConfig": { + "$ref": "#/definitions/DestinationConfig" + }, + "DocumentDBEventSourceConfig": { + "$ref": "#/definitions/DocumentDBEventSourceConfig" + }, + "Enabled": { + "type": "boolean" + }, + "EventSourceArn": { + "maxLength": 1024, + "minLength": 12, + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "type": "string" + }, + "FilterCriteria": { + "$ref": "#/definitions/FilterCriteria" + }, + "FunctionName": { + "maxLength": 140, + "minLength": 1, + "pattern": "(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?", + "type": "string" + }, + "FunctionResponseTypes": { + "items": { + "enum": [ + "ReportBatchItemFailures" + ], + "type": "string" + }, + "maxLength": 1, + "minLength": 0, + "type": "array", + "uniqueItems": true + }, + "Id": { + "maxLength": 36, + "minLength": 36, + "pattern": "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + "type": "string" + }, + "MaximumBatchingWindowInSeconds": { + "maximum": 300, + "minimum": 0, + "type": "integer" + }, + "MaximumRecordAgeInSeconds": { + "maximum": 604800, + "minimum": -1, + "type": "integer" + }, + "MaximumRetryAttempts": { + "maximum": 10000, + "minimum": -1, + "type": "integer" + }, + "ParallelizationFactor": { + "maximum": 10, + "minimum": 1, + "type": "integer" + }, + "Queues": { + "items": { + "maxLength": 1000, + "minLength": 1, + "pattern": "[\\s\\S]*", + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "ScalingConfig": { + "$ref": "#/definitions/ScalingConfig" + }, + "SelfManagedEventSource": { + "$ref": "#/definitions/SelfManagedEventSource" + }, + "SelfManagedKafkaEventSourceConfig": { + "$ref": "#/definitions/SelfManagedKafkaEventSourceConfig" + }, + "SourceAccessConfigurations": { + "items": { + "$ref": "#/definitions/SourceAccessConfiguration" + }, + "maxItems": 22, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "StartingPosition": { + "enum": [ + "TRIM_HORIZON", + "LATEST", + "AT_TIMESTAMP" + ], + "maxLength": 12, + "minLength": 6, + "pattern": "(LATEST|TRIM_HORIZON|AT_TIMESTAMP)+", + "type": "string" + }, + "StartingPositionTimestamp": { + "type": "number" + }, + "Topics": { + "items": { + "maxLength": 249, + "minLength": 1, + "pattern": "^[^.]([a-zA-Z0-9\\-_.]+)", + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "TumblingWindowInSeconds": { + "maximum": 900, + "minimum": 0, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "FunctionName" + ], + "typeName": "AWS::Lambda::EventSourceMapping" +} diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-redshift-cluster.json b/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-redshift-cluster.json deleted file mode 100644 index a354cb134c..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-redshift-cluster.json +++ /dev/null @@ -1,184 +0,0 @@ -{ - "additionalProperties": false, - "cfnLint": "AWS::Redshift::Cluster/Properties", - "createOnlyProperties": [ - "/properties/KmsKeyId", - "/properties/MasterUsername", - "/properties/OwnerAccount", - "/properties/SnapshotIdentifier", - "/properties/Encrypted", - "/properties/Port", - "/properties/DBName", - "/properties/SnapshotClusterIdentifier", - "/properties/AvailabilityZone", - "/properties/ClusterSubnetGroupName", - "/properties/ClusterIdentifier", - "/properties/ElasticIp" - ], - "definitions": { - "LoggingProperties": { - "additionalProperties": false, - "properties": { - "BucketName": { - "type": "string" - }, - "S3KeyPrefix": { - "type": "string" - } - }, - "required": [ - "BucketName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AllowVersionUpgrade": { - "type": "boolean" - }, - "AutomatedSnapshotRetentionPeriod": { - "type": "integer" - }, - "AvailabilityZone": { - "type": "string" - }, - "ClusterIdentifier": { - "type": "string" - }, - "ClusterParameterGroupName": { - "type": "string" - }, - "ClusterSecurityGroups": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "ClusterSubnetGroupName": { - "type": "string" - }, - "ClusterType": { - "type": "string" - }, - "ClusterVersion": { - "type": "string" - }, - "DBName": { - "type": "string" - }, - "ElasticIp": { - "type": "string" - }, - "Encrypted": { - "type": "boolean" - }, - "EndpointAddress": { - "type": "string" - }, - "EndpointPort": { - "type": "string" - }, - "HsmClientCertificateIdentifier": { - "type": "string" - }, - "HsmConfigurationIdentifier": { - "type": "string" - }, - "IamRoles": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Id": { - "type": "string" - }, - "KmsKeyId": { - "type": "string" - }, - "LoggingProperties": { - "$ref": "#/definitions/LoggingProperties" - }, - "MasterUserPassword": { - "type": "string" - }, - "MasterUsername": { - "type": "string" - }, - "NodeType": { - "cfnLint": "AWS::Redshift::Cluster/Properties/NodeType", - "type": "string" - }, - "NumberOfNodes": { - "maximum": 100, - "minimum": 1, - "type": "integer" - }, - "OwnerAccount": { - "type": "string" - }, - "Port": { - "type": "integer" - }, - "PreferredMaintenanceWindow": { - "type": "string" - }, - "PubliclyAccessible": { - "type": "boolean" - }, - "SnapshotClusterIdentifier": { - "type": "string" - }, - "SnapshotIdentifier": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "VpcSecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/EndpointPort", - "/properties/EndpointAddress" - ], - "required": [ - "MasterUserPassword", - "NodeType", - "MasterUsername", - "DBName", - "ClusterType" - ], - "typeName": "AWS::Redshift::Cluster" -} diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-redshift-clusterparametergroup.json b/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-redshift-clusterparametergroup.json deleted file mode 100644 index da0d11f5b9..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-redshift-clusterparametergroup.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ParameterGroupFamily", - "/properties/Description" - ], - "definitions": { - "Parameter": { - "additionalProperties": false, - "properties": { - "ParameterName": { - "type": "string" - }, - "ParameterValue": { - "type": "string" - } - }, - "required": [ - "ParameterValue", - "ParameterName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Description": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "ParameterGroupFamily": { - "type": "string" - }, - "Parameters": { - "items": { - "$ref": "#/definitions/Parameter" - }, - "type": "array", - "uniqueItems": false - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Description", - "ParameterGroupFamily" - ], - "typeName": "AWS::Redshift::ClusterParameterGroup" -} diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-redshift-clustersubnetgroup.json b/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-redshift-clustersubnetgroup.json deleted file mode 100644 index 96ded934d4..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-redshift-clustersubnetgroup.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "additionalProperties": false, - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Description": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "SubnetIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Description", - "SubnetIds" - ], - "typeName": "AWS::Redshift::ClusterSubnetGroup" -} 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 4d6505fa74..3b7183a347 100644 --- a/src/cfnlint/data/schemas/providers/ca_central_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/ca_central_1/__init__.py @@ -151,6 +151,7 @@ "AWS::IoTSiteWise::Portal", "AWS::Events::Archive", "AWS::MSK::Cluster", + "AWS::SecurityHub::DelegatedAdmin", "AWS::ControlTower::EnabledBaseline", "AWS::AppStream::AppBlockBuilder", "AWS::EC2::VPCEndpointConnectionNotification", @@ -369,6 +370,7 @@ "AWS::IAM::ServerCertificate", "AWS::CodeStarConnections::Connection", "AWS::IoT::SecurityProfile", + "AWS::GlobalAccelerator::CrossAccountAttachment", "AWS::Events::EventBus", "AWS::DocDB::EventSubscription", "AWS::SQS::QueueInlinePolicy", @@ -417,6 +419,7 @@ "AWS::Config::OrganizationConformancePack", "AWS::Connect::QuickConnect", "AWS::Logs::QueryDefinition", + "AWS::SecurityHub::ProductSubscription", "AWS::IAM::InstanceProfile", "AWS::IoT::BillingGroup", "AWS::AppStream::Application", @@ -432,6 +435,7 @@ "AWS::Cognito::UserPoolUICustomizationAttachment", "AWS::SageMaker::NotebookInstanceLifecycleConfig", "AWS::ImageBuilder::ContainerRecipe", + "AWS::CodeConnections::Connection", "AWS::Connect::Rule", "AWS::EFS::AccessPoint", "AWS::Redshift::ClusterSecurityGroupIngress", @@ -461,6 +465,7 @@ "AWS::EC2::ClientVpnRoute", "AWS::ImageBuilder::Workflow", "AWS::ECS::TaskSet", + "AWS::SecurityLake::AwsLogSource", "AWS::AppSync::ApiKey", "AWS::CloudFormation::TypeActivation", "AWS::Location::Map", @@ -614,6 +619,7 @@ "AWS::CodeBuild::SourceCredential", "AWS::EMR::InstanceFleetConfig", "AWS::EMR::Cluster", + "AWS::SecurityLake::DataLake", "AWS::CodePipeline::Webhook", "AWS::ApiGatewayV2::DomainName", "AWS::CustomerProfiles::EventStream", @@ -717,6 +723,7 @@ "AWS::DevOpsGuru::LogAnomalyDetectionIntegration", "AWS::NetworkManager::Link", "AWS::QLDB::Stream", + "AWS::SecurityLake::Subscriber", "AWS::SageMaker::NotebookInstance", "AWS::IoTSiteWise::Dashboard", "AWS::Pinpoint::APNSVoipChannel", @@ -748,6 +755,7 @@ "AWS::AppSync::GraphQLApi", "AWS::GameLift::MatchmakingRuleSet", "AWS::EC2::EgressOnlyInternetGateway", + "AWS::SecurityHub::Insight", "AWS::Config::ConformancePack", "AWS::EC2::VPCCidrBlock", "AWS::Kendra::DataSource", @@ -1055,7 +1063,6 @@ "aws-dms-replicationconfig.json", "aws-amazonmq-configurationassociation.json", "aws-redshiftserverless-namespace.json", - "aws-ec2-securitygroupegress.json", "aws-ec2-localgatewayroutetablevpcassociation.json", "aws-config-organizationconfigrule.json", "aws-glue-dataqualityruleset.json", @@ -1083,7 +1090,6 @@ "aws-apigatewayv2-integrationresponse.json", "aws-iotevents-input.json", "aws-ec2-networkacl.json", - "aws-lambda-eventsourcemapping.json", "aws-budgets-budgetsaction.json", "aws-logs-resourcepolicy.json", "aws-lex-botversion.json", @@ -1178,6 +1184,7 @@ "aws-iotsitewise-portal.json", "aws-events-archive.json", "aws-msk-cluster.json", + "aws-securityhub-delegatedadmin.json", "aws-controltower-enabledbaseline.json", "aws-appstream-appblockbuilder.json", "aws-ec2-vpcendpointconnectionnotification.json", @@ -1391,6 +1398,7 @@ "aws-iam-servercertificate.json", "aws-codestarconnections-connection.json", "aws-iot-securityprofile.json", + "aws-globalaccelerator-crossaccountattachment.json", "aws-events-eventbus.json", "aws-docdb-eventsubscription.json", "aws-sqs-queueinlinepolicy.json", @@ -1438,6 +1446,7 @@ "aws-config-organizationconformancepack.json", "aws-connect-quickconnect.json", "aws-logs-querydefinition.json", + "aws-securityhub-productsubscription.json", "aws-iam-instanceprofile.json", "aws-iot-billinggroup.json", "aws-appstream-application.json", @@ -1453,6 +1462,7 @@ "aws-cognito-userpooluicustomizationattachment.json", "aws-sagemaker-notebookinstancelifecycleconfig.json", "aws-imagebuilder-containerrecipe.json", + "aws-codeconnections-connection.json", "aws-connect-rule.json", "aws-efs-accesspoint.json", "aws-redshift-clustersecuritygroupingress.json", @@ -1481,6 +1491,7 @@ "aws-ec2-clientvpnroute.json", "aws-imagebuilder-workflow.json", "aws-ecs-taskset.json", + "aws-securitylake-awslogsource.json", "aws-appsync-apikey.json", "aws-cloudformation-typeactivation.json", "aws-location-map.json", @@ -1630,6 +1641,7 @@ "aws-codebuild-sourcecredential.json", "aws-emr-instancefleetconfig.json", "aws-emr-cluster.json", + "aws-securitylake-datalake.json", "aws-codepipeline-webhook.json", "aws-apigatewayv2-domainname.json", "aws-customerprofiles-eventstream.json", @@ -1662,11 +1674,11 @@ "aws-ec2-localgatewayroutetable.json", "aws-apigateway-resource.json", "aws-sagemaker-appimageconfig.json", - "aws-verifiedpermissions-identitysource.json", "aws-macie-session.json", "aws-elasticloadbalancingv2-targetgroup.json", "aws-applicationautoscaling-scalingpolicy.json", "aws-pipes-pipe.json", + "aws-iotsitewise-gateway.json", "aws-emr-studiosessionmapping.json", "aws-cloudformation-macro.json", "aws-sagemaker-workteam.json", @@ -1730,6 +1742,7 @@ "aws-devopsguru-loganomalydetectionintegration.json", "aws-networkmanager-link.json", "aws-qldb-stream.json", + "aws-securitylake-subscriber.json", "aws-sagemaker-notebookinstance.json", "aws-iotsitewise-dashboard.json", "aws-pinpoint-apnsvoipchannel.json", @@ -1761,6 +1774,7 @@ "aws-appsync-graphqlapi.json", "aws-gamelift-matchmakingruleset.json", "aws-ec2-egressonlyinternetgateway.json", + "aws-securityhub-insight.json", "aws-config-conformancepack.json", "aws-ec2-vpccidrblock.json", "aws-kendra-datasource.json", @@ -1769,7 +1783,6 @@ "aws-ec2-networkinsightspath.json", "aws-mediatailor-vodsource.json", "aws-neptune-dbparametergroup.json", - "aws-acmpca-certificateauthority.json", "aws-athena-preparedstatement.json", "aws-autoscaling-scheduledaction.json", "aws-cognito-identitypoolprincipaltag.json", @@ -1852,6 +1865,7 @@ "aws-sagemaker-userprofile.json", "aws-personalize-dataset.json", "aws-ec2-prefixlist.json", + "aws-ec2-instance.json", "aws-networkmanager-device.json", "aws-proton-environmentaccountconnection.json", "aws-ec2-subnetcidrblock.json", diff --git a/src/cfnlint/data/schemas/providers/ca_central_1/aws-acmpca-certificateauthority.json b/src/cfnlint/data/schemas/providers/ca_central_1/aws-acmpca-certificateauthority.json new file mode 100644 index 0000000000..08ec85e5fa --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ca_central_1/aws-acmpca-certificateauthority.json @@ -0,0 +1,429 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Type", + "/properties/KeyAlgorithm", + "/properties/SigningAlgorithm", + "/properties/Subject", + "/properties/CsrExtensions", + "/properties/KeyStorageSecurityStandard", + "/properties/UsageMode" + ], + "definitions": { + "AccessDescription": { + "additionalProperties": false, + "properties": { + "AccessLocation": { + "$ref": "#/definitions/GeneralName" + }, + "AccessMethod": { + "$ref": "#/definitions/AccessMethod" + } + }, + "required": [ + "AccessMethod", + "AccessLocation" + ], + "type": "object" + }, + "AccessMethod": { + "additionalProperties": false, + "properties": { + "AccessMethodType": { + "$ref": "#/definitions/AccessMethodType" + }, + "CustomObjectIdentifier": { + "$ref": "#/definitions/CustomObjectIdentifier" + } + }, + "type": "object" + }, + "AccessMethodType": { + "type": "string" + }, + "Arn": { + "type": "string" + }, + "CrlConfiguration": { + "additionalProperties": false, + "properties": { + "CrlDistributionPointExtensionConfiguration": { + "$ref": "#/definitions/CrlDistributionPointExtensionConfiguration" + }, + "CustomCname": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + }, + "ExpirationInDays": { + "type": "integer" + }, + "S3BucketName": { + "type": "string" + }, + "S3ObjectAcl": { + "type": "string" + } + }, + "type": "object" + }, + "CrlDistributionPointExtensionConfiguration": { + "additionalProperties": false, + "properties": { + "OmitExtension": { + "type": "boolean" + } + }, + "required": [ + "OmitExtension" + ], + "type": "object" + }, + "CsrExtensions": { + "additionalProperties": false, + "properties": { + "KeyUsage": { + "$ref": "#/definitions/KeyUsage" + }, + "SubjectInformationAccess": { + "$ref": "#/definitions/SubjectInformationAccess" + } + }, + "type": "object" + }, + "CustomAttribute": { + "additionalProperties": false, + "properties": { + "ObjectIdentifier": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "ObjectIdentifier", + "Value" + ], + "type": "object" + }, + "CustomAttributeList": { + "items": { + "$ref": "#/definitions/CustomAttribute" + }, + "type": "array" + }, + "CustomObjectIdentifier": { + "type": "string" + }, + "DnsName": { + "type": "string" + }, + "EdiPartyName": { + "additionalProperties": false, + "properties": { + "NameAssigner": { + "type": "string" + }, + "PartyName": { + "type": "string" + } + }, + "required": [ + "PartyName", + "NameAssigner" + ], + "type": "object" + }, + "GeneralName": { + "additionalProperties": false, + "properties": { + "DirectoryName": { + "$ref": "#/definitions/Subject" + }, + "DnsName": { + "$ref": "#/definitions/DnsName" + }, + "EdiPartyName": { + "$ref": "#/definitions/EdiPartyName" + }, + "IpAddress": { + "$ref": "#/definitions/IpAddress" + }, + "OtherName": { + "$ref": "#/definitions/OtherName" + }, + "RegisteredId": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Rfc822Name": { + "$ref": "#/definitions/Rfc822Name" + }, + "UniformResourceIdentifier": { + "$ref": "#/definitions/UniformResourceIdentifier" + } + }, + "type": "object" + }, + "IpAddress": { + "type": "string" + }, + "KeyUsage": { + "additionalProperties": false, + "properties": { + "CRLSign": { + "default": false, + "type": "boolean" + }, + "DataEncipherment": { + "default": false, + "type": "boolean" + }, + "DecipherOnly": { + "default": false, + "type": "boolean" + }, + "DigitalSignature": { + "default": false, + "type": "boolean" + }, + "EncipherOnly": { + "default": false, + "type": "boolean" + }, + "KeyAgreement": { + "default": false, + "type": "boolean" + }, + "KeyCertSign": { + "default": false, + "type": "boolean" + }, + "KeyEncipherment": { + "default": false, + "type": "boolean" + }, + "NonRepudiation": { + "default": false, + "type": "boolean" + } + }, + "type": "object" + }, + "OcspConfiguration": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + }, + "OcspCustomCname": { + "type": "string" + } + }, + "type": "object" + }, + "OtherName": { + "additionalProperties": false, + "properties": { + "TypeId": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "TypeId", + "Value" + ], + "type": "object" + }, + "RevocationConfiguration": { + "additionalProperties": false, + "properties": { + "CrlConfiguration": { + "$ref": "#/definitions/CrlConfiguration" + }, + "OcspConfiguration": { + "$ref": "#/definitions/OcspConfiguration" + } + }, + "type": "object" + }, + "Rfc822Name": { + "type": "string" + }, + "Subject": { + "additionalProperties": false, + "properties": { + "CommonName": { + "type": "string" + }, + "Country": { + "type": "string" + }, + "CustomAttributes": { + "$ref": "#/definitions/CustomAttributeList" + }, + "DistinguishedNameQualifier": { + "type": "string" + }, + "GenerationQualifier": { + "type": "string" + }, + "GivenName": { + "type": "string" + }, + "Initials": { + "type": "string" + }, + "Locality": { + "type": "string" + }, + "Organization": { + "type": "string" + }, + "OrganizationalUnit": { + "type": "string" + }, + "Pseudonym": { + "type": "string" + }, + "SerialNumber": { + "type": "string" + }, + "State": { + "type": "string" + }, + "Surname": { + "type": "string" + }, + "Title": { + "type": "string" + } + }, + "type": "object" + }, + "SubjectInformationAccess": { + "items": { + "$ref": "#/definitions/AccessDescription" + }, + "type": "array" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "UniformResourceIdentifier": { + "type": "string" + } + }, + "handlers": { + "create": { + "permissions": [ + "acm-pca:CreateCertificateAuthority", + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr" + ] + }, + "delete": { + "permissions": [ + "acm-pca:DeleteCertificateAuthority", + "acm-pca:DescribeCertificateAuthority" + ] + }, + "list": { + "permissions": [ + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr", + "acm-pca:ListCertificateAuthorities", + "acm-pca:ListTags" + ] + }, + "read": { + "permissions": [ + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr", + "acm-pca:ListTags" + ] + }, + "update": { + "permissions": [ + "acm-pca:ListTags", + "acm-pca:TagCertificateAuthority", + "acm-pca:UntagCertificateAuthority", + "acm-pca:UpdateCertificateAuthority" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "$ref": "#/definitions/Arn" + }, + "CertificateSigningRequest": { + "type": "string" + }, + "CsrExtensions": { + "$ref": "#/definitions/CsrExtensions" + }, + "KeyAlgorithm": { + "type": "string" + }, + "KeyStorageSecurityStandard": { + "type": "string" + }, + "RevocationConfiguration": { + "$ref": "#/definitions/RevocationConfiguration" + }, + "SigningAlgorithm": { + "type": "string" + }, + "Subject": { + "$ref": "#/definitions/Subject" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "Type": { + "type": "string" + }, + "UsageMode": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CertificateSigningRequest" + ], + "required": [ + "Type", + "KeyAlgorithm", + "SigningAlgorithm", + "Subject" + ], + "sourceUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_ACMPCA.html", + "typeName": "AWS::ACMPCA::CertificateAuthority", + "writeOnlyProperties": [ + "/properties/Subject", + "/properties/Subject", + "/properties/CsrExtensions", + "/properties/Tags", + "/properties/RevocationConfiguration", + "/properties/KeyStorageSecurityStandard" + ] +} diff --git a/src/cfnlint/data/schemas/providers/ca_central_1/aws-dynamodb-globaltable.json b/src/cfnlint/data/schemas/providers/ca_central_1/aws-dynamodb-globaltable.json index 4e5ba995cb..ae37e9142b 100644 --- a/src/cfnlint/data/schemas/providers/ca_central_1/aws-dynamodb-globaltable.json +++ b/src/cfnlint/data/schemas/providers/ca_central_1/aws-dynamodb-globaltable.json @@ -8,6 +8,27 @@ ] ], "additionalProperties": false, + "allOf": [ + { + "if": { + "required": [ + "LocalSecondaryIndexes" + ], + "type": "object" + }, + "then": { + "properties": { + "AttributeDefinitions": { + "minItems": 2 + }, + "KeySchema": { + "minItems": 2 + } + }, + "type": "object" + } + } + ], "createOnlyProperties": [ "/properties/LocalSecondaryIndexes", "/properties/TableName", @@ -79,13 +100,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "minItems": 1, - "type": "array", - "uniqueItems": true + "minItems": 1 }, "Projection": { "$ref": "#/definitions/Projection" @@ -102,22 +119,60 @@ "type": "object" }, "KeySchema": { - "additionalProperties": false, - "properties": { - "AttributeName": { - "maxLength": 255, - "minLength": 1, - "type": "string" + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "KeyType": { + "enum": [ + "HASH", + "RANGE" + ], + "type": "string" + } }, - "KeyType": { - "type": "string" - } + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" }, - "required": [ - "KeyType", - "AttributeName" + "prefixItems": [ + { + "additionalProperties": false, + "properties": { + "KeyType": { + "const": "HASH", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + }, + { + "properties": { + "KeyType": { + "const": "RANGE", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + } ], - "type": "object" + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "KinesisStreamSpecification": { "additionalProperties": false, @@ -147,12 +202,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "type": "array", - "uniqueItems": true + "minItems": 2 }, "Projection": { "$ref": "#/definitions/Projection" @@ -511,7 +563,10 @@ }, "minItems": 1, "type": "array", - "uniqueItems": true + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "BillingMode": { "type": "string" @@ -525,13 +580,9 @@ "uniqueItems": true }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "minItems": 1, - "type": "array", - "uniqueItems": true + "minItems": 1 }, "LocalSecondaryIndexes": { "insertionOrder": false, diff --git a/src/cfnlint/data/schemas/providers/ca_central_1/aws-dynamodb-table.json b/src/cfnlint/data/schemas/providers/ca_central_1/aws-dynamodb-table.json index efc82f1d70..f21d084b10 100644 --- a/src/cfnlint/data/schemas/providers/ca_central_1/aws-dynamodb-table.json +++ b/src/cfnlint/data/schemas/providers/ca_central_1/aws-dynamodb-table.json @@ -1,5 +1,26 @@ { "additionalProperties": false, + "allOf": [ + { + "if": { + "required": [ + "LocalSecondaryIndexes" + ], + "type": "object" + }, + "then": { + "properties": { + "AttributeDefinitions": { + "minItems": 2 + }, + "KeySchema": { + "minItems": 2 + } + }, + "type": "object" + } + } + ], "cfnLint": [ "AWS::DynamoDB::Table/Properties" ], @@ -95,11 +116,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 }, "Projection": { "$ref": "#/definitions/Projection" @@ -147,24 +166,57 @@ "type": "object" }, "KeySchema": { - "additionalProperties": false, - "properties": { - "AttributeName": { - "type": "string" + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "type": "string" + }, + "KeyType": { + "enum": [ + "HASH", + "RANGE" + ], + "type": "string" + } }, - "KeyType": { - "enum": [ - "HASH", - "RANGE" + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" + }, + "prefixItems": [ + { + "properties": { + "KeyType": { + "const": "HASH", + "type": "string" + } + }, + "required": [ + "KeyType" ], - "type": "string" + "type": "object" + }, + { + "properties": { + "KeyType": { + "const": "RANGE", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" } - }, - "required": [ - "KeyType", - "AttributeName" ], - "type": "object" + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "KinesisStreamSpecification": { "additionalProperties": false, @@ -192,11 +244,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 2 }, "Projection": { "$ref": "#/definitions/Projection" @@ -451,7 +501,10 @@ "$ref": "#/definitions/AttributeDefinition" }, "type": "array", - "uniqueItems": true + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "BillingMode": { "enum": [ @@ -479,11 +532,9 @@ "KeySchema": { "oneOf": [ { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 }, { "type": "object" diff --git a/src/cfnlint/data/schemas/providers/ca_central_1/aws-ec2-instance.json b/src/cfnlint/data/schemas/providers/ca_central_1/aws-ec2-instance.json deleted file mode 100644 index 7b3bfed595..0000000000 --- a/src/cfnlint/data/schemas/providers/ca_central_1/aws-ec2-instance.json +++ /dev/null @@ -1,571 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ElasticGpuSpecifications", - "/properties/Ipv6Addresses", - "/properties/PlacementGroupName", - "/properties/HostResourceGroupArn", - "/properties/ImageId", - "/properties/CpuOptions", - "/properties/PrivateIpAddress", - "/properties/ElasticInferenceAccelerators", - "/properties/EnclaveOptions", - "/properties/HibernationOptions", - "/properties/KeyName", - "/properties/LicenseSpecifications", - "/properties/NetworkInterfaces", - "/properties/AvailabilityZone", - "/properties/SubnetId", - "/properties/LaunchTemplate", - "/properties/SecurityGroups", - "/properties/Ipv6AddressCount" - ], - "definitions": { - "AssociationParameter": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "BlockDeviceMapping": { - "additionalProperties": false, - "properties": { - "DeviceName": { - "type": "string" - }, - "Ebs": { - "$ref": "#/definitions/Ebs" - }, - "NoDevice": { - "$ref": "#/definitions/NoDevice" - }, - "VirtualName": { - "type": "string" - } - }, - "required": [ - "DeviceName" - ], - "requiredXor": [ - "VirtualName", - "Ebs", - "NoDevice" - ], - "type": "object" - }, - "CpuOptions": { - "additionalProperties": false, - "properties": { - "CoreCount": { - "type": "integer" - }, - "ThreadsPerCore": { - "type": "integer" - } - }, - "type": "object" - }, - "CreditSpecification": { - "additionalProperties": false, - "properties": { - "CPUCredits": { - "type": "string" - } - }, - "type": "object" - }, - "Ebs": { - "additionalProperties": false, - "properties": { - "DeleteOnTermination": { - "type": "boolean" - }, - "Encrypted": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "KmsKeyId": { - "type": "string" - }, - "SnapshotId": { - "type": "string" - }, - "VolumeSize": { - "type": "integer" - }, - "VolumeType": { - "type": "string" - } - }, - "type": "object" - }, - "ElasticGpuSpecification": { - "additionalProperties": false, - "properties": { - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "ElasticInferenceAccelerator": { - "additionalProperties": false, - "properties": { - "Count": { - "type": "integer" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "EnclaveOptions": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - } - }, - "type": "object" - }, - "HibernationOptions": { - "additionalProperties": false, - "properties": { - "Configured": { - "type": "boolean" - } - }, - "type": "object" - }, - "InstanceIpv6Address": { - "additionalProperties": false, - "properties": { - "Ipv6Address": { - "type": "string" - } - }, - "required": [ - "Ipv6Address" - ], - "type": "object" - }, - "LaunchTemplateSpecification": { - "additionalProperties": false, - "properties": { - "LaunchTemplateId": { - "type": "string" - }, - "LaunchTemplateName": { - "type": "string" - }, - "Version": { - "type": "string" - } - }, - "required": [ - "Version" - ], - "type": "object" - }, - "LicenseSpecification": { - "additionalProperties": false, - "properties": { - "LicenseConfigurationArn": { - "type": "string" - } - }, - "required": [ - "LicenseConfigurationArn" - ], - "type": "object" - }, - "NetworkInterface": { - "additionalProperties": false, - "properties": { - "AssociateCarrierIpAddress": { - "type": "boolean" - }, - "AssociatePublicIpAddress": { - "type": "boolean" - }, - "DeleteOnTermination": { - "type": "boolean" - }, - "Description": { - "type": "string" - }, - "DeviceIndex": { - "type": "string" - }, - "GroupSet": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": false - }, - "NetworkInterfaceId": { - "type": "string" - }, - "PrivateIpAddress": { - "type": "string" - }, - "PrivateIpAddresses": { - "items": { - "$ref": "#/definitions/PrivateIpAddressSpecification" - }, - "type": "array", - "uniqueItems": false - }, - "SecondaryPrivateIpAddressCount": { - "type": "integer" - }, - "SubnetId": { - "type": "string" - } - }, - "required": [ - "DeviceIndex" - ], - "type": "object" - }, - "NoDevice": { - "additionalProperties": false, - "type": "object" - }, - "PrivateDnsNameOptions": { - "additionalProperties": false, - "properties": { - "EnableResourceNameDnsAAAARecord": { - "type": "boolean" - }, - "EnableResourceNameDnsARecord": { - "type": "boolean" - }, - "HostnameType": { - "type": "string" - } - }, - "type": "object" - }, - "PrivateIpAddressSpecification": { - "additionalProperties": false, - "properties": { - "Primary": { - "type": "boolean" - }, - "PrivateIpAddress": { - "type": "string" - } - }, - "required": [ - "PrivateIpAddress", - "Primary" - ], - "type": "object" - }, - "SsmAssociation": { - "additionalProperties": false, - "properties": { - "AssociationParameters": { - "items": { - "$ref": "#/definitions/AssociationParameter" - }, - "type": "array", - "uniqueItems": false - }, - "DocumentName": { - "type": "string" - } - }, - "required": [ - "DocumentName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "Volume": { - "additionalProperties": false, - "properties": { - "Device": { - "type": "string" - }, - "VolumeId": { - "type": "string" - } - }, - "required": [ - "VolumeId", - "Device" - ], - "type": "object" - } - }, - "dependentExcluded": { - "NetworkInterfaces": [ - "SubnetId" - ], - "SubnetId": [ - "NetworkInterfaces" - ] - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AdditionalInfo": { - "type": "string" - }, - "Affinity": { - "enum": [ - "default", - "host" - ], - "type": "string" - }, - "AvailabilityZone": { - "cfnLint": [ - "AWS::EC2::Instance/Properties/AvailabilityZone" - ], - "type": "string" - }, - "BlockDeviceMappings": { - "items": { - "$ref": "#/definitions/BlockDeviceMapping" - }, - "type": "array", - "uniqueItems": false - }, - "CpuOptions": { - "$ref": "#/definitions/CpuOptions" - }, - "CreditSpecification": { - "$ref": "#/definitions/CreditSpecification" - }, - "DisableApiTermination": { - "type": "boolean" - }, - "EbsOptimized": { - "type": "boolean" - }, - "ElasticGpuSpecifications": { - "items": { - "$ref": "#/definitions/ElasticGpuSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "ElasticInferenceAccelerators": { - "items": { - "$ref": "#/definitions/ElasticInferenceAccelerator" - }, - "type": "array", - "uniqueItems": true - }, - "EnclaveOptions": { - "$ref": "#/definitions/EnclaveOptions" - }, - "HibernationOptions": { - "$ref": "#/definitions/HibernationOptions" - }, - "HostId": { - "type": "string" - }, - "HostResourceGroupArn": { - "type": "string" - }, - "IamInstanceProfile": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "ImageId": { - "type": "string" - }, - "InstanceInitiatedShutdownBehavior": { - "type": "string" - }, - "InstanceType": { - "cfnLint": [ - "AWS::EC2::Instance/Properties/InstanceType" - ], - "type": "string" - }, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": false - }, - "KernelId": { - "type": "string" - }, - "KeyName": { - "type": "string" - }, - "LaunchTemplate": { - "$ref": "#/definitions/LaunchTemplateSpecification" - }, - "LicenseSpecifications": { - "items": { - "$ref": "#/definitions/LicenseSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "Monitoring": { - "type": "boolean" - }, - "NetworkInterfaces": { - "items": { - "$ref": "#/definitions/NetworkInterface" - }, - "type": "array", - "uniqueItems": false - }, - "PlacementGroupName": { - "type": "string" - }, - "PrivateDnsName": { - "type": "string" - }, - "PrivateDnsNameOptions": { - "$ref": "#/definitions/PrivateDnsNameOptions" - }, - "PrivateIp": { - "type": "string" - }, - "PrivateIpAddress": { - "type": "string" - }, - "PropagateTagsToVolumeOnCreation": { - "type": "boolean" - }, - "PublicDnsName": { - "type": "string" - }, - "PublicIp": { - "type": "string" - }, - "RamdiskId": { - "type": "string" - }, - "SecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SecurityGroups": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SourceDestCheck": { - "type": "boolean" - }, - "SsmAssociations": { - "items": { - "$ref": "#/definitions/SsmAssociation" - }, - "type": "array", - "uniqueItems": false - }, - "SubnetId": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "Tenancy": { - "enum": [ - "default", - "dedicated", - "host" - ], - "type": "string" - }, - "UserData": { - "type": "string" - }, - "Volumes": { - "items": { - "$ref": "#/definitions/Volume" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/PublicIp", - "/properties/Id", - "/properties/PublicDnsName", - "/properties/PrivateDnsName", - "/properties/PrivateIp" - ], - "requiredXor": [ - "ImageId", - "LaunchTemplate" - ], - "typeName": "AWS::EC2::Instance" -} diff --git a/src/cfnlint/data/schemas/providers/ca_central_1/aws-ec2-securitygroupegress.json b/src/cfnlint/data/schemas/providers/ca_central_1/aws-ec2-securitygroupegress.json new file mode 100644 index 0000000000..f94631dad2 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ca_central_1/aws-ec2-securitygroupegress.json @@ -0,0 +1,98 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::EC2::SecurityGroupEgress/Properties" + ], + "createOnlyProperties": [ + "/properties/IpProtocol", + "/properties/DestinationSecurityGroupId", + "/properties/ToPort", + "/properties/CidrIp", + "/properties/FromPort", + "/properties/GroupId", + "/properties/CidrIpv6", + "/properties/DestinationPrefixListId" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:AuthorizeSecurityGroupEgress", + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "delete": { + "permissions": [ + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "update": { + "permissions": [ + "ec2:UpdateSecurityGroupRuleDescriptionsEgress" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CidrIp": { + "type": "string" + }, + "CidrIpv6": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "DestinationPrefixListId": { + "type": "string" + }, + "DestinationSecurityGroupId": { + "type": "string" + }, + "FromPort": { + "minimum": -1, + "type": "integer" + }, + "GroupId": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "IpProtocol": { + "type": "string" + }, + "ToPort": { + "minimum": -1, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IpProtocol", + "GroupId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SecurityGroupEgress" +} diff --git a/src/cfnlint/data/schemas/providers/ca_central_1/aws-iotsitewise-gateway.json b/src/cfnlint/data/schemas/providers/ca_central_1/aws-iotsitewise-gateway.json deleted file mode 100644 index 20b0ba8baa..0000000000 --- a/src/cfnlint/data/schemas/providers/ca_central_1/aws-iotsitewise-gateway.json +++ /dev/null @@ -1,179 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/GatewayPlatform" - ], - "definitions": { - "CapabilityConfiguration": { - "type": "string" - }, - "CapabilityNamespace": { - "type": "string" - }, - "GatewayCapabilitySummary": { - "additionalProperties": false, - "properties": { - "CapabilityConfiguration": { - "$ref": "#/definitions/CapabilityConfiguration" - }, - "CapabilityNamespace": { - "$ref": "#/definitions/CapabilityNamespace" - } - }, - "required": [ - "CapabilityNamespace" - ], - "type": "object" - }, - "GatewayPlatform": { - "additionalProperties": false, - "oneOf": [ - { - "required": [ - "Greengrass" - ] - }, - { - "required": [ - "GreengrassV2" - ] - } - ], - "properties": { - "Greengrass": { - "$ref": "#/definitions/Greengrass" - }, - "GreengrassV2": { - "$ref": "#/definitions/GreengrassV2" - } - }, - "type": "object" - }, - "Greengrass": { - "additionalProperties": false, - "properties": { - "GroupArn": { - "type": "string" - } - }, - "required": [ - "GroupArn" - ], - "type": "object" - }, - "GreengrassV2": { - "additionalProperties": false, - "properties": { - "CoreDeviceThingName": { - "type": "string" - } - }, - "required": [ - "CoreDeviceThingName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "iotsitewise:CreateGateway", - "iotsitewise:DescribeGateway", - "iotsitewise:DescribeGatewayCapabilityConfiguration", - "iotsitewise:UpdateGatewayCapabilityConfiguration", - "iam:PassRole", - "iam:GetRole", - "greengrass:GetCoreDevice", - "iotsitewise:ListTagsForResource", - "iotsitewise:TagResource", - "iot:DescribeThing" - ] - }, - "delete": { - "permissions": [ - "iotsitewise:DescribeGateway", - "iotsitewise:DescribeGatewayCapabilityConfiguration", - "iotsitewise:DeleteGateway" - ] - }, - "list": { - "permissions": [ - "iotsitewise:ListGateways" - ] - }, - "read": { - "permissions": [ - "iotsitewise:DescribeGateway", - "iotsitewise:DescribeGatewayCapabilityConfiguration", - "iotsitewise:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "iotsitewise:UpdateGateway", - "iotsitewise:UpdateGatewayCapabilityConfiguration", - "iotsitewise:TagResource", - "iotsitewise:UntagResource", - "iotsitewise:DescribeGateway", - "iotsitewise:DescribeGatewayCapabilityConfiguration", - "iotsitewise:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/GatewayId" - ], - "properties": { - "GatewayCapabilitySummaries": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/GatewayCapabilitySummary" - }, - "type": "array", - "uniqueItems": true - }, - "GatewayId": { - "type": "string" - }, - "GatewayName": { - "type": "string" - }, - "GatewayPlatform": { - "$ref": "#/definitions/GatewayPlatform" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/GatewayId" - ], - "required": [ - "GatewayName", - "GatewayPlatform" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-IoTSiteWise.git", - "taggable": true, - "typeName": "AWS::IoTSiteWise::Gateway" -} diff --git a/src/cfnlint/data/schemas/providers/ca_central_1/aws-lambda-eventsourcemapping.json b/src/cfnlint/data/schemas/providers/ca_central_1/aws-lambda-eventsourcemapping.json new file mode 100644 index 0000000000..cb7599c139 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ca_central_1/aws-lambda-eventsourcemapping.json @@ -0,0 +1,353 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::Lambda::EventSourceMapping/Properties" + ], + "createOnlyProperties": [ + "/properties/EventSourceArn", + "/properties/StartingPosition", + "/properties/StartingPositionTimestamp", + "/properties/SelfManagedEventSource", + "/properties/AmazonManagedKafkaEventSourceConfig", + "/properties/SelfManagedKafkaEventSourceConfig" + ], + "definitions": { + "AmazonManagedKafkaEventSourceConfig": { + "additionalProperties": false, + "properties": { + "ConsumerGroupId": { + "$ref": "#/definitions/ConsumerGroupId" + } + }, + "type": "object" + }, + "ConsumerGroupId": { + "maxLength": 200, + "minLength": 1, + "pattern": "[a-zA-Z0-9-\\/*:_+=.@-]*", + "type": "string" + }, + "DestinationConfig": { + "additionalProperties": false, + "properties": { + "OnFailure": { + "$ref": "#/definitions/OnFailure" + } + }, + "type": "object" + }, + "DocumentDBEventSourceConfig": { + "additionalProperties": false, + "properties": { + "CollectionName": { + "maxLength": 57, + "minLength": 1, + "type": "string" + }, + "DatabaseName": { + "maxLength": 63, + "minLength": 1, + "type": "string" + }, + "FullDocument": { + "enum": [ + "UpdateLookup", + "Default" + ], + "type": "string" + } + }, + "type": "object" + }, + "Endpoints": { + "additionalProperties": false, + "properties": { + "KafkaBootstrapServers": { + "items": { + "maxLength": 300, + "minLength": 1, + "pattern": "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9]):[0-9]{1,5}", + "type": "string" + }, + "maxItems": 10, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "Filter": { + "additionalProperties": false, + "properties": { + "Pattern": { + "maxLength": 4096, + "minLength": 0, + "pattern": ".*", + "type": "string" + } + }, + "type": "object" + }, + "FilterCriteria": { + "additionalProperties": false, + "properties": { + "Filters": { + "items": { + "$ref": "#/definitions/Filter" + }, + "maxItems": 20, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "MaximumConcurrency": { + "maximum": 1000, + "minimum": 2, + "type": "integer" + }, + "OnFailure": { + "additionalProperties": false, + "properties": { + "Destination": { + "maxLength": 1024, + "minLength": 12, + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "type": "string" + } + }, + "type": "object" + }, + "ScalingConfig": { + "additionalProperties": false, + "properties": { + "MaximumConcurrency": { + "$ref": "#/definitions/MaximumConcurrency" + } + }, + "type": "object" + }, + "SelfManagedEventSource": { + "additionalProperties": false, + "properties": { + "Endpoints": { + "$ref": "#/definitions/Endpoints" + } + }, + "type": "object" + }, + "SelfManagedKafkaEventSourceConfig": { + "additionalProperties": false, + "properties": { + "ConsumerGroupId": { + "$ref": "#/definitions/ConsumerGroupId" + } + }, + "type": "object" + }, + "SourceAccessConfiguration": { + "additionalProperties": false, + "properties": { + "Type": { + "enum": [ + "BASIC_AUTH", + "VPC_SUBNET", + "VPC_SECURITY_GROUP", + "SASL_SCRAM_512_AUTH", + "SASL_SCRAM_256_AUTH", + "VIRTUAL_HOST", + "CLIENT_CERTIFICATE_TLS_AUTH", + "SERVER_ROOT_CA_CERTIFICATE" + ], + "type": "string" + }, + "URI": { + "maxLength": 200, + "minLength": 1, + "pattern": "[a-zA-Z0-9-\\/*:_+=.@-]*", + "type": "string" + } + }, + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "lambda:CreateEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + }, + "delete": { + "permissions": [ + "lambda:DeleteEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + }, + "list": { + "permissions": [ + "lambda:ListEventSourceMappings" + ] + }, + "read": { + "permissions": [ + "lambda:GetEventSourceMapping" + ] + }, + "update": { + "permissions": [ + "lambda:UpdateEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AmazonManagedKafkaEventSourceConfig": { + "$ref": "#/definitions/AmazonManagedKafkaEventSourceConfig" + }, + "BatchSize": { + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "BisectBatchOnFunctionError": { + "type": "boolean" + }, + "DestinationConfig": { + "$ref": "#/definitions/DestinationConfig" + }, + "DocumentDBEventSourceConfig": { + "$ref": "#/definitions/DocumentDBEventSourceConfig" + }, + "Enabled": { + "type": "boolean" + }, + "EventSourceArn": { + "maxLength": 1024, + "minLength": 12, + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "type": "string" + }, + "FilterCriteria": { + "$ref": "#/definitions/FilterCriteria" + }, + "FunctionName": { + "maxLength": 140, + "minLength": 1, + "pattern": "(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?", + "type": "string" + }, + "FunctionResponseTypes": { + "items": { + "enum": [ + "ReportBatchItemFailures" + ], + "type": "string" + }, + "maxLength": 1, + "minLength": 0, + "type": "array", + "uniqueItems": true + }, + "Id": { + "maxLength": 36, + "minLength": 36, + "pattern": "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + "type": "string" + }, + "MaximumBatchingWindowInSeconds": { + "maximum": 300, + "minimum": 0, + "type": "integer" + }, + "MaximumRecordAgeInSeconds": { + "maximum": 604800, + "minimum": -1, + "type": "integer" + }, + "MaximumRetryAttempts": { + "maximum": 10000, + "minimum": -1, + "type": "integer" + }, + "ParallelizationFactor": { + "maximum": 10, + "minimum": 1, + "type": "integer" + }, + "Queues": { + "items": { + "maxLength": 1000, + "minLength": 1, + "pattern": "[\\s\\S]*", + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "ScalingConfig": { + "$ref": "#/definitions/ScalingConfig" + }, + "SelfManagedEventSource": { + "$ref": "#/definitions/SelfManagedEventSource" + }, + "SelfManagedKafkaEventSourceConfig": { + "$ref": "#/definitions/SelfManagedKafkaEventSourceConfig" + }, + "SourceAccessConfigurations": { + "items": { + "$ref": "#/definitions/SourceAccessConfiguration" + }, + "maxItems": 22, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "StartingPosition": { + "enum": [ + "TRIM_HORIZON", + "LATEST", + "AT_TIMESTAMP" + ], + "maxLength": 12, + "minLength": 6, + "pattern": "(LATEST|TRIM_HORIZON|AT_TIMESTAMP)+", + "type": "string" + }, + "StartingPositionTimestamp": { + "type": "number" + }, + "Topics": { + "items": { + "maxLength": 249, + "minLength": 1, + "pattern": "^[^.]([a-zA-Z0-9\\-_.]+)", + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "TumblingWindowInSeconds": { + "maximum": 900, + "minimum": 0, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "FunctionName" + ], + "typeName": "AWS::Lambda::EventSourceMapping" +} diff --git a/src/cfnlint/data/schemas/providers/ca_central_1/aws-verifiedpermissions-identitysource.json b/src/cfnlint/data/schemas/providers/ca_central_1/aws-verifiedpermissions-identitysource.json new file mode 100644 index 0000000000..46a0ad88f1 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ca_central_1/aws-verifiedpermissions-identitysource.json @@ -0,0 +1,221 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PolicyStoreId" + ], + "definitions": { + "CognitoGroupConfiguration": { + "additionalProperties": false, + "properties": { + "GroupEntityType": { + "maxLength": 200, + "minLength": 1, + "pattern": "^([_a-zA-Z][_a-zA-Z0-9]*::)*[_a-zA-Z][_a-zA-Z0-9]*$", + "type": "string" + } + }, + "required": [ + "GroupEntityType" + ], + "type": "object" + }, + "CognitoUserPoolConfiguration": { + "additionalProperties": false, + "properties": { + "ClientIds": { + "insertionOrder": false, + "items": { + "maxLength": 255, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "maxItems": 1000, + "minItems": 0, + "type": "array" + }, + "GroupConfiguration": { + "$ref": "#/definitions/CognitoGroupConfiguration" + }, + "UserPoolArn": { + "maxLength": 255, + "minLength": 1, + "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", + "type": "string" + } + }, + "required": [ + "UserPoolArn" + ], + "type": "object" + }, + "IdentitySourceConfiguration": { + "additionalProperties": false, + "properties": { + "CognitoUserPoolConfiguration": { + "$ref": "#/definitions/CognitoUserPoolConfiguration" + } + }, + "required": [ + "CognitoUserPoolConfiguration" + ], + "title": "CognitoUserPoolConfiguration", + "type": "object" + }, + "IdentitySourceDetails": { + "additionalProperties": false, + "properties": { + "ClientIds": { + "insertionOrder": false, + "items": { + "maxLength": 255, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "maxItems": 1000, + "minItems": 0, + "type": "array" + }, + "DiscoveryUrl": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^https://.*$", + "type": "string" + }, + "OpenIdIssuer": { + "$ref": "#/definitions/OpenIdIssuer" + }, + "UserPoolArn": { + "maxLength": 255, + "minLength": 1, + "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", + "type": "string" + } + }, + "type": "object" + }, + "OpenIdIssuer": { + "enum": [ + "COGNITO" + ], + "type": "string" + } + }, + "deprecatedProperties": [ + "/properties/Details" + ], + "handlers": { + "create": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "delete": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "PolicyStoreId": { + "$ref": "resource-schema.json#/properties/PolicyStoreId" + } + }, + "required": [ + "PolicyStoreId" + ] + }, + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "read": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "update": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + } + }, + "primaryIdentifier": [ + "/properties/IdentitySourceId", + "/properties/PolicyStoreId" + ], + "properties": { + "Configuration": { + "$ref": "#/definitions/IdentitySourceConfiguration" + }, + "Details": { + "$ref": "#/definitions/IdentitySourceDetails" + }, + "IdentitySourceId": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]*$", + "type": "string" + }, + "PolicyStoreId": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]*$", + "type": "string" + }, + "PrincipalEntityType": { + "maxLength": 200, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Details", + "/properties/IdentitySourceId" + ], + "required": [ + "Configuration", + "PolicyStoreId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-avp", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::VerifiedPermissions::IdentitySource" +} 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 ab7a44d077..d5a2b263a0 100644 --- a/src/cfnlint/data/schemas/providers/ca_west_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/ca_west_1/__init__.py @@ -61,6 +61,7 @@ "AWS::CloudFront::RealtimeLogConfig", "AWS::LakeFormation::DataCellsFilter", "AWS::DataSync::LocationHDFS", + "AWS::SecurityHub::DelegatedAdmin", "AWS::EC2::VPCEndpointConnectionNotification", "AWS::CodePipeline::Pipeline", "AWS::OpsWorks::Instance", @@ -96,6 +97,7 @@ "AWS::EC2::GatewayRouteTableAssociation", "AWS::SSM::Document", "AWS::IAM::Role", + "AWS::ElastiCache::ServerlessCache", "AWS::CloudFront::CloudFrontOriginAccessIdentity", "AWS::ApiGateway::ApiKey", "AWS::AutoScaling::LaunchConfiguration", @@ -152,6 +154,7 @@ "AWS::ECS::ClusterCapacityProviderAssociations", "AWS::AppConfig::ConfigurationProfile", "AWS::Route53Resolver::FirewallRuleGroup", + "AWS::MSK::Configuration", "AWS::EC2::TransitGateway", "AWS::EC2::VPCEndpointServicePermissions", "AWS::SSM::MaintenanceWindowTask", @@ -159,6 +162,7 @@ "AWS::EKS::Cluster", "AWS::EFS::FileSystem", "AWS::Logs::QueryDefinition", + "AWS::SecurityHub::ProductSubscription", "AWS::IAM::InstanceProfile", "AWS::DataSync::LocationNFS", "AWS::CertificateManager::Certificate", @@ -298,6 +302,7 @@ "AWS::EC2::IPAMResourceDiscoveryAssociation", "AWS::ServiceCatalogAppRegistry::AttributeGroup", "AWS::EC2::EgressOnlyInternetGateway", + "AWS::SecurityHub::Insight", "AWS::EC2::VPCCidrBlock", "AWS::ACMPCA::CertificateAuthority", "AWS::Athena::PreparedStatement", @@ -318,7 +323,6 @@ "AWS::AppConfig::Extension", "AWS::ElasticLoadBalancingV2::ListenerRule", "AWS::EC2::KeyPair", - "AWS::FSx::FileSystem", "AWS::EC2::EIPAssociation", "AWS::ElasticBeanstalk::Application", "AWS::IoT::ThingPrincipalAttachment", @@ -436,7 +440,6 @@ "aws-ecs-service.json", "aws-ram-resourceshare.json", "aws-dms-replicationconfig.json", - "aws-ec2-securitygroupegress.json", "aws-config-organizationconfigrule.json", "aws-glue-dataqualityruleset.json", "aws-config-configurationrecorder.json", @@ -447,8 +450,8 @@ "aws-rds-dbinstance.json", "aws-ec2-vpcdhcpoptionsassociation.json", "aws-ec2-networkacl.json", + "aws-lambda-eventsourcemapping.json", "aws-logs-resourcepolicy.json", - "aws-cloudwatch-compositealarm.json", "aws-route53resolver-firewalldomainlist.json", "aws-appconfig-application.json", "aws-autoscaling-warmpool.json", @@ -470,6 +473,7 @@ "aws-cloudfront-realtimelogconfig.json", "aws-lakeformation-datacellsfilter.json", "aws-datasync-locationhdfs.json", + "aws-securityhub-delegatedadmin.json", "aws-ec2-vpcendpointconnectionnotification.json", "aws-codepipeline-pipeline.json", "aws-config-configurationaggregator.json", @@ -482,6 +486,7 @@ "aws-ec2-natgateway.json", "aws-appconfig-deploymentstrategy.json", "aws-glue-devendpoint.json", + "aws-elasticache-usergroup.json", "aws-imagebuilder-imagerecipe.json", "aws-opsworks-elasticloadbalancerattachment.json", "aws-s3objectlambda-accesspointpolicy.json", @@ -497,10 +502,12 @@ "aws-cloudtrail-trail.json", "aws-ec2-internetgateway.json", "aws-ec2-gatewayroutetableassociation.json", + "aws-elasticache-serverlesscache.json", "aws-cloudfront-cloudfrontoriginaccessidentity.json", "aws-kinesisanalyticsv2-application.json", "aws-lambda-alias.json", "aws-ec2-transitgatewaymulticastdomainassociation.json", + "aws-ec2-transitgatewayroutetableassociation.json", "aws-appconfig-environment.json", "aws-imagebuilder-image.json", "aws-elasticache-securitygroupingress.json", @@ -521,7 +528,6 @@ "aws-cloudfront-publickey.json", "aws-ram-permission.json", "aws-datasync-task.json", - "aws-ecs-taskdefinition.json", "aws-ec2-spotfleet.json", "aws-s3-bucket.json", "aws-guardduty-ipset.json", @@ -537,6 +543,7 @@ "aws-ecs-clustercapacityproviderassociations.json", "aws-appconfig-configurationprofile.json", "aws-route53resolver-firewallrulegroup.json", + "aws-msk-configuration.json", "aws-ec2-transitgateway.json", "aws-ec2-vpcendpointservicepermissions.json", "aws-ssm-maintenancewindowtask.json", @@ -544,6 +551,7 @@ "aws-eks-cluster.json", "aws-efs-filesystem.json", "aws-logs-querydefinition.json", + "aws-securityhub-productsubscription.json", "aws-datasync-locationnfs.json", "aws-certificatemanager-certificate.json", "aws-sdb-domain.json", @@ -598,7 +606,6 @@ "aws-ec2-subnet.json", "aws-s3objectlambda-accesspoint.json", "aws-sqs-queuepolicy.json", - "aws-ec2-securitygroup.json", "aws-ec2-capacityreservationfleet.json", "aws-opsworks-volume.json", "aws-iam-usertogroupaddition.json", @@ -630,6 +637,7 @@ "aws-lambda-layerversionpermission.json", "aws-secretsmanager-secret.json", "aws-route53resolver-resolverconfig.json", + "aws-elasticache-user.json", "aws-logs-subscriptionfilter.json", "aws-codedeploy-application.json", "aws-lakeformation-principalpermissions.json", @@ -654,7 +662,7 @@ "aws-ec2-ipamresourcediscoveryassociation.json", "aws-servicecatalogappregistry-attributegroup.json", "aws-ec2-egressonlyinternetgateway.json", - "aws-acmpca-certificateauthority.json", + "aws-securityhub-insight.json", "aws-athena-preparedstatement.json", "aws-lakeformation-resource.json", "aws-ec2-ipamscope.json", @@ -669,13 +677,13 @@ "aws-appconfig-extension.json", "aws-elasticloadbalancingv2-listenerrule.json", "aws-ec2-keypair.json", - "aws-fsx-filesystem.json", "aws-ec2-eipassociation.json", "aws-dlm-lifecyclepolicy.json", "aws-ec2-capacityreservation.json", "aws-elasticloadbalancing-loadbalancer.json", "aws-iam-rolepolicy.json", "aws-ec2-trafficmirrortarget.json", + "aws-stepfunctions-statemachine.json", "aws-rds-dbclusterparametergroup.json", "aws-fsx-snapshot.json", "aws-route53-keysigningkey.json", diff --git a/src/cfnlint/data/schemas/providers/ca_west_1/aws-acmpca-certificateauthority.json b/src/cfnlint/data/schemas/providers/ca_west_1/aws-acmpca-certificateauthority.json new file mode 100644 index 0000000000..08ec85e5fa --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ca_west_1/aws-acmpca-certificateauthority.json @@ -0,0 +1,429 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Type", + "/properties/KeyAlgorithm", + "/properties/SigningAlgorithm", + "/properties/Subject", + "/properties/CsrExtensions", + "/properties/KeyStorageSecurityStandard", + "/properties/UsageMode" + ], + "definitions": { + "AccessDescription": { + "additionalProperties": false, + "properties": { + "AccessLocation": { + "$ref": "#/definitions/GeneralName" + }, + "AccessMethod": { + "$ref": "#/definitions/AccessMethod" + } + }, + "required": [ + "AccessMethod", + "AccessLocation" + ], + "type": "object" + }, + "AccessMethod": { + "additionalProperties": false, + "properties": { + "AccessMethodType": { + "$ref": "#/definitions/AccessMethodType" + }, + "CustomObjectIdentifier": { + "$ref": "#/definitions/CustomObjectIdentifier" + } + }, + "type": "object" + }, + "AccessMethodType": { + "type": "string" + }, + "Arn": { + "type": "string" + }, + "CrlConfiguration": { + "additionalProperties": false, + "properties": { + "CrlDistributionPointExtensionConfiguration": { + "$ref": "#/definitions/CrlDistributionPointExtensionConfiguration" + }, + "CustomCname": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + }, + "ExpirationInDays": { + "type": "integer" + }, + "S3BucketName": { + "type": "string" + }, + "S3ObjectAcl": { + "type": "string" + } + }, + "type": "object" + }, + "CrlDistributionPointExtensionConfiguration": { + "additionalProperties": false, + "properties": { + "OmitExtension": { + "type": "boolean" + } + }, + "required": [ + "OmitExtension" + ], + "type": "object" + }, + "CsrExtensions": { + "additionalProperties": false, + "properties": { + "KeyUsage": { + "$ref": "#/definitions/KeyUsage" + }, + "SubjectInformationAccess": { + "$ref": "#/definitions/SubjectInformationAccess" + } + }, + "type": "object" + }, + "CustomAttribute": { + "additionalProperties": false, + "properties": { + "ObjectIdentifier": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "ObjectIdentifier", + "Value" + ], + "type": "object" + }, + "CustomAttributeList": { + "items": { + "$ref": "#/definitions/CustomAttribute" + }, + "type": "array" + }, + "CustomObjectIdentifier": { + "type": "string" + }, + "DnsName": { + "type": "string" + }, + "EdiPartyName": { + "additionalProperties": false, + "properties": { + "NameAssigner": { + "type": "string" + }, + "PartyName": { + "type": "string" + } + }, + "required": [ + "PartyName", + "NameAssigner" + ], + "type": "object" + }, + "GeneralName": { + "additionalProperties": false, + "properties": { + "DirectoryName": { + "$ref": "#/definitions/Subject" + }, + "DnsName": { + "$ref": "#/definitions/DnsName" + }, + "EdiPartyName": { + "$ref": "#/definitions/EdiPartyName" + }, + "IpAddress": { + "$ref": "#/definitions/IpAddress" + }, + "OtherName": { + "$ref": "#/definitions/OtherName" + }, + "RegisteredId": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Rfc822Name": { + "$ref": "#/definitions/Rfc822Name" + }, + "UniformResourceIdentifier": { + "$ref": "#/definitions/UniformResourceIdentifier" + } + }, + "type": "object" + }, + "IpAddress": { + "type": "string" + }, + "KeyUsage": { + "additionalProperties": false, + "properties": { + "CRLSign": { + "default": false, + "type": "boolean" + }, + "DataEncipherment": { + "default": false, + "type": "boolean" + }, + "DecipherOnly": { + "default": false, + "type": "boolean" + }, + "DigitalSignature": { + "default": false, + "type": "boolean" + }, + "EncipherOnly": { + "default": false, + "type": "boolean" + }, + "KeyAgreement": { + "default": false, + "type": "boolean" + }, + "KeyCertSign": { + "default": false, + "type": "boolean" + }, + "KeyEncipherment": { + "default": false, + "type": "boolean" + }, + "NonRepudiation": { + "default": false, + "type": "boolean" + } + }, + "type": "object" + }, + "OcspConfiguration": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + }, + "OcspCustomCname": { + "type": "string" + } + }, + "type": "object" + }, + "OtherName": { + "additionalProperties": false, + "properties": { + "TypeId": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "TypeId", + "Value" + ], + "type": "object" + }, + "RevocationConfiguration": { + "additionalProperties": false, + "properties": { + "CrlConfiguration": { + "$ref": "#/definitions/CrlConfiguration" + }, + "OcspConfiguration": { + "$ref": "#/definitions/OcspConfiguration" + } + }, + "type": "object" + }, + "Rfc822Name": { + "type": "string" + }, + "Subject": { + "additionalProperties": false, + "properties": { + "CommonName": { + "type": "string" + }, + "Country": { + "type": "string" + }, + "CustomAttributes": { + "$ref": "#/definitions/CustomAttributeList" + }, + "DistinguishedNameQualifier": { + "type": "string" + }, + "GenerationQualifier": { + "type": "string" + }, + "GivenName": { + "type": "string" + }, + "Initials": { + "type": "string" + }, + "Locality": { + "type": "string" + }, + "Organization": { + "type": "string" + }, + "OrganizationalUnit": { + "type": "string" + }, + "Pseudonym": { + "type": "string" + }, + "SerialNumber": { + "type": "string" + }, + "State": { + "type": "string" + }, + "Surname": { + "type": "string" + }, + "Title": { + "type": "string" + } + }, + "type": "object" + }, + "SubjectInformationAccess": { + "items": { + "$ref": "#/definitions/AccessDescription" + }, + "type": "array" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "UniformResourceIdentifier": { + "type": "string" + } + }, + "handlers": { + "create": { + "permissions": [ + "acm-pca:CreateCertificateAuthority", + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr" + ] + }, + "delete": { + "permissions": [ + "acm-pca:DeleteCertificateAuthority", + "acm-pca:DescribeCertificateAuthority" + ] + }, + "list": { + "permissions": [ + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr", + "acm-pca:ListCertificateAuthorities", + "acm-pca:ListTags" + ] + }, + "read": { + "permissions": [ + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr", + "acm-pca:ListTags" + ] + }, + "update": { + "permissions": [ + "acm-pca:ListTags", + "acm-pca:TagCertificateAuthority", + "acm-pca:UntagCertificateAuthority", + "acm-pca:UpdateCertificateAuthority" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "$ref": "#/definitions/Arn" + }, + "CertificateSigningRequest": { + "type": "string" + }, + "CsrExtensions": { + "$ref": "#/definitions/CsrExtensions" + }, + "KeyAlgorithm": { + "type": "string" + }, + "KeyStorageSecurityStandard": { + "type": "string" + }, + "RevocationConfiguration": { + "$ref": "#/definitions/RevocationConfiguration" + }, + "SigningAlgorithm": { + "type": "string" + }, + "Subject": { + "$ref": "#/definitions/Subject" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "Type": { + "type": "string" + }, + "UsageMode": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CertificateSigningRequest" + ], + "required": [ + "Type", + "KeyAlgorithm", + "SigningAlgorithm", + "Subject" + ], + "sourceUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_ACMPCA.html", + "typeName": "AWS::ACMPCA::CertificateAuthority", + "writeOnlyProperties": [ + "/properties/Subject", + "/properties/Subject", + "/properties/CsrExtensions", + "/properties/Tags", + "/properties/RevocationConfiguration", + "/properties/KeyStorageSecurityStandard" + ] +} diff --git a/src/cfnlint/data/schemas/providers/ca_west_1/aws-cloudwatch-compositealarm.json b/src/cfnlint/data/schemas/providers/ca_west_1/aws-cloudwatch-compositealarm.json new file mode 100644 index 0000000000..6503a56146 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ca_west_1/aws-cloudwatch-compositealarm.json @@ -0,0 +1,115 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AlarmName" + ], + "handlers": { + "create": { + "permissions": [ + "cloudwatch:DescribeAlarms", + "cloudwatch:PutCompositeAlarm" + ] + }, + "delete": { + "permissions": [ + "cloudwatch:DescribeAlarms", + "cloudwatch:DeleteAlarms" + ] + }, + "list": { + "permissions": [ + "cloudwatch:DescribeAlarms" + ] + }, + "read": { + "permissions": [ + "cloudwatch:DescribeAlarms" + ] + }, + "update": { + "permissions": [ + "cloudwatch:DescribeAlarms", + "cloudwatch:PutCompositeAlarm" + ] + } + }, + "primaryIdentifier": [ + "/properties/AlarmName" + ], + "properties": { + "ActionsEnabled": { + "type": "boolean" + }, + "ActionsSuppressor": { + "maxLength": 1600, + "minLength": 1, + "type": "string" + }, + "ActionsSuppressorExtensionPeriod": { + "minimum": 0, + "type": "integer" + }, + "ActionsSuppressorWaitPeriod": { + "minimum": 0, + "type": "integer" + }, + "AlarmActions": { + "items": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "maxItems": 5, + "type": "array" + }, + "AlarmDescription": { + "maxLength": 1024, + "minLength": 0, + "type": "string" + }, + "AlarmName": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "AlarmRule": { + "maxLength": 10240, + "minLength": 1, + "type": "string" + }, + "Arn": { + "maxLength": 1600, + "minLength": 1, + "type": "string" + }, + "InsufficientDataActions": { + "items": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "maxItems": 5, + "type": "array" + }, + "OKActions": { + "items": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "maxItems": 5, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "AlarmRule" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cloudwatch.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::CloudWatch::CompositeAlarm" +} diff --git a/src/cfnlint/data/schemas/providers/ca_west_1/aws-dynamodb-globaltable.json b/src/cfnlint/data/schemas/providers/ca_west_1/aws-dynamodb-globaltable.json index 4e5ba995cb..ae37e9142b 100644 --- a/src/cfnlint/data/schemas/providers/ca_west_1/aws-dynamodb-globaltable.json +++ b/src/cfnlint/data/schemas/providers/ca_west_1/aws-dynamodb-globaltable.json @@ -8,6 +8,27 @@ ] ], "additionalProperties": false, + "allOf": [ + { + "if": { + "required": [ + "LocalSecondaryIndexes" + ], + "type": "object" + }, + "then": { + "properties": { + "AttributeDefinitions": { + "minItems": 2 + }, + "KeySchema": { + "minItems": 2 + } + }, + "type": "object" + } + } + ], "createOnlyProperties": [ "/properties/LocalSecondaryIndexes", "/properties/TableName", @@ -79,13 +100,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "minItems": 1, - "type": "array", - "uniqueItems": true + "minItems": 1 }, "Projection": { "$ref": "#/definitions/Projection" @@ -102,22 +119,60 @@ "type": "object" }, "KeySchema": { - "additionalProperties": false, - "properties": { - "AttributeName": { - "maxLength": 255, - "minLength": 1, - "type": "string" + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "KeyType": { + "enum": [ + "HASH", + "RANGE" + ], + "type": "string" + } }, - "KeyType": { - "type": "string" - } + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" }, - "required": [ - "KeyType", - "AttributeName" + "prefixItems": [ + { + "additionalProperties": false, + "properties": { + "KeyType": { + "const": "HASH", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + }, + { + "properties": { + "KeyType": { + "const": "RANGE", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + } ], - "type": "object" + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "KinesisStreamSpecification": { "additionalProperties": false, @@ -147,12 +202,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "type": "array", - "uniqueItems": true + "minItems": 2 }, "Projection": { "$ref": "#/definitions/Projection" @@ -511,7 +563,10 @@ }, "minItems": 1, "type": "array", - "uniqueItems": true + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "BillingMode": { "type": "string" @@ -525,13 +580,9 @@ "uniqueItems": true }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "minItems": 1, - "type": "array", - "uniqueItems": true + "minItems": 1 }, "LocalSecondaryIndexes": { "insertionOrder": false, diff --git a/src/cfnlint/data/schemas/providers/ca_west_1/aws-dynamodb-table.json b/src/cfnlint/data/schemas/providers/ca_west_1/aws-dynamodb-table.json index efc82f1d70..f21d084b10 100644 --- a/src/cfnlint/data/schemas/providers/ca_west_1/aws-dynamodb-table.json +++ b/src/cfnlint/data/schemas/providers/ca_west_1/aws-dynamodb-table.json @@ -1,5 +1,26 @@ { "additionalProperties": false, + "allOf": [ + { + "if": { + "required": [ + "LocalSecondaryIndexes" + ], + "type": "object" + }, + "then": { + "properties": { + "AttributeDefinitions": { + "minItems": 2 + }, + "KeySchema": { + "minItems": 2 + } + }, + "type": "object" + } + } + ], "cfnLint": [ "AWS::DynamoDB::Table/Properties" ], @@ -95,11 +116,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 }, "Projection": { "$ref": "#/definitions/Projection" @@ -147,24 +166,57 @@ "type": "object" }, "KeySchema": { - "additionalProperties": false, - "properties": { - "AttributeName": { - "type": "string" + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "type": "string" + }, + "KeyType": { + "enum": [ + "HASH", + "RANGE" + ], + "type": "string" + } }, - "KeyType": { - "enum": [ - "HASH", - "RANGE" + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" + }, + "prefixItems": [ + { + "properties": { + "KeyType": { + "const": "HASH", + "type": "string" + } + }, + "required": [ + "KeyType" ], - "type": "string" + "type": "object" + }, + { + "properties": { + "KeyType": { + "const": "RANGE", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" } - }, - "required": [ - "KeyType", - "AttributeName" ], - "type": "object" + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "KinesisStreamSpecification": { "additionalProperties": false, @@ -192,11 +244,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 2 }, "Projection": { "$ref": "#/definitions/Projection" @@ -451,7 +501,10 @@ "$ref": "#/definitions/AttributeDefinition" }, "type": "array", - "uniqueItems": true + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "BillingMode": { "enum": [ @@ -479,11 +532,9 @@ "KeySchema": { "oneOf": [ { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 }, { "type": "object" diff --git a/src/cfnlint/data/schemas/providers/ca_west_1/aws-ec2-securitygroup.json b/src/cfnlint/data/schemas/providers/ca_west_1/aws-ec2-securitygroup.json new file mode 100644 index 0000000000..5b54eb94b2 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ca_west_1/aws-ec2-securitygroup.json @@ -0,0 +1,234 @@ +{ + "$schema": "https://raw.githubusercontent.com/aws-cloudformation/cloudformation-resource-schema/master/src/main/resources/schema/provider.definition.schema.v1.json", + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/GroupDescription", + "/properties/GroupName", + "/properties/VpcId" + ], + "definitions": { + "Egress": { + "additionalProperties": false, + "cfnLint": [ + "AWS::EC2::SecurityGroup/Properties/Egress" + ], + "properties": { + "CidrIp": { + "type": "string" + }, + "CidrIpv6": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "DestinationPrefixListId": { + "type": "string" + }, + "DestinationSecurityGroupId": { + "type": "string" + }, + "FromPort": { + "minimum": -1, + "type": "integer" + }, + "IpProtocol": { + "type": "string" + }, + "SourceSecurityGroupId": { + "type": "string" + }, + "ToPort": { + "minimum": -1, + "type": "integer" + } + }, + "required": [ + "IpProtocol" + ], + "requiredXor": [ + "CidrIp", + "CidrIpv6", + "DestinationSecurityGroupId", + "DestinationPrefixListId" + ], + "type": "object" + }, + "Ingress": { + "additionalProperties": false, + "cfnLint": [ + "AWS::EC2::SecurityGroup/Properties/Ingress" + ], + "properties": { + "CidrIp": { + "type": "string" + }, + "CidrIpv6": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "FromPort": { + "minimum": -1, + "type": "integer" + }, + "IpProtocol": { + "type": "string" + }, + "SourcePrefixListId": { + "type": "string" + }, + "SourceSecurityGroupId": { + "type": "string" + }, + "SourceSecurityGroupName": { + "type": "string" + }, + "SourceSecurityGroupOwnerId": { + "type": "string" + }, + "ToPort": { + "minimum": -1, + "type": "integer" + } + }, + "required": [ + "IpProtocol" + ], + "requiredXor": [ + "CidrIp", + "CidrIpv6", + "SourcePrefixListId", + "SourceSecurityGroupId", + "SourceSecurityGroupName" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "dependentRequired": { + "SecurityGroupEgress": [ + "VpcId" + ] + }, + "handlers": { + "create": { + "permissions": [ + "ec2:CreateSecurityGroup", + "ec2:DescribeSecurityGroups", + "ec2:RevokeSecurityGroupEgress", + "ec2:AuthorizeSecurityGroupEgress", + "ec2:AuthorizeSecurityGroupIngress", + "ec2:CreateTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteSecurityGroup", + "ec2:DescribeInstances" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroups" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroups" + ] + }, + "update": { + "permissions": [ + "ec2:RevokeSecurityGroupEgress", + "ec2:RevokeSecurityGroupIngress", + "ec2:DescribeSecurityGroups", + "ec2:AuthorizeSecurityGroupEgress", + "ec2:AuthorizeSecurityGroupIngress", + "ec2:CreateTags", + "ec2:DeleteTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "GroupDescription": { + "maxLength": 255, + "minLength": 0, + "pattern": "^([a-z,A-Z,0-9,. _\\-:/()#,@[\\]+=&;\\{\\}!$*])*$", + "type": "string" + }, + "GroupId": { + "type": "string" + }, + "GroupName": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "SecurityGroupEgress": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Egress" + }, + "type": "array", + "uniqueItems": false + }, + "SecurityGroupIngress": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Ingress" + }, + "type": "array", + "uniqueItems": false + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "VpcId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/GroupId" + ], + "required": [ + "GroupDescription" + ], + "tagging": { + "cloudFormationSystemTags": true, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::SecurityGroup", + "writeOnlyProperties": [ + "/properties/SecurityGroupIngress/*/SourceSecurityGroupName" + ] +} diff --git a/src/cfnlint/data/schemas/providers/ca_west_1/aws-ec2-securitygroupegress.json b/src/cfnlint/data/schemas/providers/ca_west_1/aws-ec2-securitygroupegress.json new file mode 100644 index 0000000000..f94631dad2 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ca_west_1/aws-ec2-securitygroupegress.json @@ -0,0 +1,98 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::EC2::SecurityGroupEgress/Properties" + ], + "createOnlyProperties": [ + "/properties/IpProtocol", + "/properties/DestinationSecurityGroupId", + "/properties/ToPort", + "/properties/CidrIp", + "/properties/FromPort", + "/properties/GroupId", + "/properties/CidrIpv6", + "/properties/DestinationPrefixListId" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:AuthorizeSecurityGroupEgress", + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "delete": { + "permissions": [ + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "update": { + "permissions": [ + "ec2:UpdateSecurityGroupRuleDescriptionsEgress" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CidrIp": { + "type": "string" + }, + "CidrIpv6": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "DestinationPrefixListId": { + "type": "string" + }, + "DestinationSecurityGroupId": { + "type": "string" + }, + "FromPort": { + "minimum": -1, + "type": "integer" + }, + "GroupId": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "IpProtocol": { + "type": "string" + }, + "ToPort": { + "minimum": -1, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IpProtocol", + "GroupId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SecurityGroupEgress" +} diff --git a/src/cfnlint/data/schemas/providers/ca_west_1/aws-ec2-transitgatewaymulticastgroupmember.json b/src/cfnlint/data/schemas/providers/ca_west_1/aws-ec2-transitgatewaymulticastgroupmember.json index 9aaab25084..a55b891d63 100644 --- a/src/cfnlint/data/schemas/providers/ca_west_1/aws-ec2-transitgatewaymulticastgroupmember.json +++ b/src/cfnlint/data/schemas/providers/ca_west_1/aws-ec2-transitgatewaymulticastgroupmember.json @@ -19,6 +19,16 @@ ] }, "list": { + "handlerSchema": { + "properties": { + "TransitGatewayMulticastDomainId": { + "$ref": "resource-schema.json#/properties/TransitGatewayMulticastDomainId" + } + }, + "required": [ + "TransitGatewayMulticastDomainId" + ] + }, "permissions": [ "ec2:SearchTransitGatewayMulticastGroups" ] @@ -56,9 +66,6 @@ "ResourceType": { "type": "string" }, - "SourceType": { - "type": "string" - }, "SubnetId": { "type": "string" }, @@ -76,7 +83,6 @@ "/properties/GroupSource", "/properties/GroupMember", "/properties/MemberType", - "/properties/SourceType", "/properties/TransitGatewayAttachmentId" ], "required": [ diff --git a/src/cfnlint/data/schemas/providers/ca_west_1/aws-ec2-transitgatewayroutetableassociation.json b/src/cfnlint/data/schemas/providers/ca_west_1/aws-ec2-transitgatewayroutetableassociation.json deleted file mode 100644 index d1da7ffa8c..0000000000 --- a/src/cfnlint/data/schemas/providers/ca_west_1/aws-ec2-transitgatewayroutetableassociation.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/TransitGatewayRouteTableId", - "/properties/TransitGatewayAttachmentId" - ], - "definitions": {}, - "handlers": { - "create": { - "permissions": [ - "ec2:AssociateTransitGatewayRouteTable", - "ec2:GetTransitGatewayRouteTableAssociations" - ] - }, - "delete": { - "permissions": [ - "ec2:GetTransitGatewayRouteTableAssociations", - "ec2:DisassociateTransitGatewayRouteTable" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "TransitGatewayRouteTableId": { - "$ref": "resource-schema.json#/properties/TransitGatewayRouteTableId" - } - }, - "required": [ - "TransitGatewayRouteTableId" - ] - }, - "permissions": [ - "ec2:GetTransitGatewayRouteTableAssociations" - ] - }, - "read": { - "permissions": [ - "ec2:GetTransitGatewayRouteTableAssociations" - ] - } - }, - "primaryIdentifier": [ - "/properties/TransitGatewayRouteTableId", - "/properties/TransitGatewayAttachmentId" - ], - "properties": { - "TransitGatewayAttachmentId": { - "type": "string" - }, - "TransitGatewayRouteTableId": { - "type": "string" - } - }, - "replacementStrategy": "delete_then_create", - "required": [ - "TransitGatewayRouteTableId", - "TransitGatewayAttachmentId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-transitgateway.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::EC2::TransitGatewayRouteTableAssociation" -} diff --git a/src/cfnlint/data/schemas/providers/ca_west_1/aws-ecs-taskdefinition.json b/src/cfnlint/data/schemas/providers/ca_west_1/aws-ecs-taskdefinition.json new file mode 100644 index 0000000000..f2828c8fcd --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ca_west_1/aws-ecs-taskdefinition.json @@ -0,0 +1,935 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Family", + "/properties/ContainerDefinitions", + "/properties/Cpu", + "/properties/ExecutionRoleArn", + "/properties/InferenceAccelerators", + "/properties/Memory", + "/properties/NetworkMode", + "/properties/PlacementConstraints", + "/properties/ProxyConfiguration", + "/properties/RequiresCompatibilities", + "/properties/RuntimePlatform", + "/properties/TaskRoleArn", + "/properties/Volumes", + "/properties/PidMode", + "/properties/IpcMode", + "/properties/EphemeralStorage" + ], + "definitions": { + "AuthorizationConfig": { + "additionalProperties": false, + "properties": { + "AccessPointId": { + "type": "string" + }, + "IAM": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + } + }, + "type": "object" + }, + "ContainerDefinition": { + "additionalProperties": false, + "properties": { + "Command": { + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array" + }, + "Cpu": { + "type": "integer" + }, + "CredentialSpecs": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "DependsOn": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ContainerDependency" + }, + "type": "array" + }, + "DisableNetworking": { + "type": "boolean" + }, + "DnsSearchDomains": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "DnsServers": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "DockerLabels": { + "additionalProperties": false, + "patternProperties": { + ".{1,}": { + "type": "string" + } + }, + "type": "object" + }, + "DockerSecurityOptions": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "EntryPoint": { + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array" + }, + "Environment": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/KeyValuePair" + }, + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "Name" + ] + }, + "EnvironmentFiles": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/EnvironmentFile" + }, + "type": "array" + }, + "Essential": { + "type": "boolean" + }, + "ExtraHosts": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/HostEntry" + }, + "type": "array" + }, + "FirelensConfiguration": { + "$ref": "#/definitions/FirelensConfiguration" + }, + "HealthCheck": { + "$ref": "#/definitions/HealthCheck" + }, + "Hostname": { + "type": "string" + }, + "Image": { + "type": "string" + }, + "Interactive": { + "type": "boolean" + }, + "Links": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "LinuxParameters": { + "$ref": "#/definitions/LinuxParameters" + }, + "LogConfiguration": { + "$ref": "#/definitions/LogConfiguration" + }, + "Memory": { + "type": "integer" + }, + "MemoryReservation": { + "type": "integer" + }, + "MountPoints": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/MountPoint" + }, + "type": "array", + "uniqueItems": true + }, + "Name": { + "type": "string" + }, + "PortMappings": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/PortMapping" + }, + "type": "array", + "uniqueItems": true + }, + "Privileged": { + "type": "boolean" + }, + "PseudoTerminal": { + "type": "boolean" + }, + "ReadonlyRootFilesystem": { + "type": "boolean" + }, + "RepositoryCredentials": { + "$ref": "#/definitions/RepositoryCredentials" + }, + "ResourceRequirements": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ResourceRequirement" + }, + "type": "array" + }, + "Secrets": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Secret" + }, + "type": "array" + }, + "StartTimeout": { + "type": "integer" + }, + "StopTimeout": { + "type": "integer" + }, + "SystemControls": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SystemControl" + }, + "type": "array" + }, + "Ulimits": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Ulimit" + }, + "type": "array" + }, + "User": { + "type": "string" + }, + "VolumesFrom": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/VolumeFrom" + }, + "type": "array", + "uniqueItems": true + }, + "WorkingDirectory": { + "type": "string" + } + }, + "required": [ + "Name", + "Image" + ], + "type": "object" + }, + "ContainerDependency": { + "additionalProperties": false, + "properties": { + "Condition": { + "type": "string" + }, + "ContainerName": { + "type": "string" + } + }, + "type": "object" + }, + "Device": { + "additionalProperties": false, + "properties": { + "ContainerPath": { + "type": "string" + }, + "HostPath": { + "type": "string" + }, + "Permissions": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "DockerVolumeConfiguration": { + "additionalProperties": false, + "properties": { + "Autoprovision": { + "type": "boolean" + }, + "Driver": { + "type": "string" + }, + "DriverOpts": { + "additionalProperties": false, + "patternProperties": { + ".{1,}": { + "type": "string" + } + }, + "type": "object" + }, + "Labels": { + "additionalProperties": false, + "patternProperties": { + ".{1,}": { + "type": "string" + } + }, + "type": "object" + }, + "Scope": { + "type": "string" + } + }, + "type": "object" + }, + "EFSVolumeConfiguration": { + "additionalProperties": false, + "properties": { + "AuthorizationConfig": { + "$ref": "#/definitions/AuthorizationConfig" + }, + "FilesystemId": { + "type": "string" + }, + "RootDirectory": { + "type": "string" + }, + "TransitEncryption": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "TransitEncryptionPort": { + "type": "integer" + } + }, + "required": [ + "FilesystemId" + ], + "type": "object" + }, + "EnvironmentFile": { + "additionalProperties": false, + "properties": { + "Type": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "EphemeralStorage": { + "additionalProperties": false, + "properties": { + "SizeInGiB": { + "type": "integer" + } + }, + "type": "object" + }, + "FirelensConfiguration": { + "additionalProperties": false, + "properties": { + "Options": { + "additionalProperties": false, + "patternProperties": { + ".{1,}": { + "type": "string" + } + }, + "type": "object" + }, + "Type": { + "type": "string" + } + }, + "type": "object" + }, + "HealthCheck": { + "additionalProperties": false, + "properties": { + "Command": { + "insertionOrder": true, + "items": { + "type": "string" + }, + "type": "array" + }, + "Interval": { + "type": "integer" + }, + "Retries": { + "type": "integer" + }, + "StartPeriod": { + "type": "integer" + }, + "Timeout": { + "type": "integer" + } + }, + "type": "object" + }, + "HostEntry": { + "additionalProperties": false, + "properties": { + "Hostname": { + "type": "string" + }, + "IpAddress": { + "type": "string" + } + }, + "type": "object" + }, + "HostVolumeProperties": { + "additionalProperties": false, + "properties": { + "SourcePath": { + "type": "string" + } + }, + "type": "object" + }, + "InferenceAccelerator": { + "additionalProperties": false, + "properties": { + "DeviceName": { + "type": "string" + }, + "DeviceType": { + "type": "string" + } + }, + "type": "object" + }, + "KernelCapabilities": { + "additionalProperties": false, + "properties": { + "Add": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "Drop": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "KeyValuePair": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "LinuxParameters": { + "additionalProperties": false, + "properties": { + "Capabilities": { + "$ref": "#/definitions/KernelCapabilities" + }, + "Devices": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Device" + }, + "type": "array" + }, + "InitProcessEnabled": { + "type": "boolean" + }, + "MaxSwap": { + "type": "integer" + }, + "SharedMemorySize": { + "type": "integer" + }, + "Swappiness": { + "type": "integer" + }, + "Tmpfs": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tmpfs" + }, + "type": "array" + } + }, + "type": "object" + }, + "LogConfiguration": { + "additionalProperties": false, + "cfnLint": [ + "AWS::ECS::TaskDefinition/Properties/ContainerDefinitions/LogConfiguration" + ], + "properties": { + "LogDriver": { + "type": "string" + }, + "Options": { + "additionalProperties": false, + "patternProperties": { + ".{1,}": { + "type": "string" + } + }, + "type": "object" + }, + "SecretOptions": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Secret" + }, + "type": "array" + } + }, + "required": [ + "LogDriver" + ], + "type": "object" + }, + "MountPoint": { + "additionalProperties": false, + "properties": { + "ContainerPath": { + "type": "string" + }, + "ReadOnly": { + "type": "boolean" + }, + "SourceVolume": { + "type": "string" + } + }, + "type": "object" + }, + "PortMapping": { + "additionalProperties": false, + "properties": { + "AppProtocol": { + "enum": [ + "http", + "http2", + "grpc" + ], + "type": "string" + }, + "ContainerPort": { + "type": "integer" + }, + "ContainerPortRange": { + "type": "string" + }, + "HostPort": { + "type": "integer" + }, + "Name": { + "type": "string" + }, + "Protocol": { + "type": "string" + } + }, + "type": "object" + }, + "ProxyConfiguration": { + "additionalProperties": false, + "properties": { + "ContainerName": { + "type": "string" + }, + "ProxyConfigurationProperties": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/KeyValuePair" + }, + "type": "array", + "uniqueItems": true + }, + "Type": { + "enum": [ + "APPMESH" + ], + "type": "string" + } + }, + "required": [ + "ContainerName" + ], + "type": "object" + }, + "RepositoryCredentials": { + "additionalProperties": false, + "properties": { + "CredentialsParameter": { + "type": "string" + } + }, + "type": "object" + }, + "ResourceRequirement": { + "additionalProperties": false, + "properties": { + "Type": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Type", + "Value" + ], + "type": "object" + }, + "RuntimePlatform": { + "additionalProperties": false, + "properties": { + "CpuArchitecture": { + "type": "string" + }, + "OperatingSystemFamily": { + "type": "string" + } + }, + "type": "object" + }, + "Secret": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + }, + "ValueFrom": { + "type": "string" + } + }, + "required": [ + "Name", + "ValueFrom" + ], + "type": "object" + }, + "SystemControl": { + "additionalProperties": false, + "properties": { + "Namespace": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "TaskDefinitionPlacementConstraint": { + "additionalProperties": false, + "properties": { + "Expression": { + "type": "string" + }, + "Type": { + "type": "string" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "Tmpfs": { + "additionalProperties": false, + "properties": { + "ContainerPath": { + "type": "string" + }, + "MountOptions": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "Size": { + "type": "integer" + } + }, + "required": [ + "Size" + ], + "type": "object" + }, + "Ulimit": { + "additionalProperties": false, + "properties": { + "HardLimit": { + "type": "integer" + }, + "Name": { + "type": "string" + }, + "SoftLimit": { + "type": "integer" + } + }, + "required": [ + "HardLimit", + "Name", + "SoftLimit" + ], + "type": "object" + }, + "Volume": { + "additionalProperties": false, + "properties": { + "ConfiguredAtLaunch": { + "type": "boolean" + }, + "DockerVolumeConfiguration": { + "$ref": "#/definitions/DockerVolumeConfiguration" + }, + "EFSVolumeConfiguration": { + "$ref": "#/definitions/EFSVolumeConfiguration" + }, + "Host": { + "$ref": "#/definitions/HostVolumeProperties" + }, + "Name": { + "type": "string" + } + }, + "type": "object" + }, + "VolumeFrom": { + "additionalProperties": false, + "properties": { + "ReadOnly": { + "type": "boolean" + }, + "SourceContainer": { + "type": "string" + } + }, + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "ecs:RegisterTaskDefinition", + "ecs:DescribeTaskDefinition", + "ecs:TagResource", + "iam:GetRole", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "ecs:DeregisterTaskDefinition", + "ecs:DescribeTaskDefinition", + "iam:GetRole", + "iam:PassRole" + ] + }, + "list": { + "permissions": [ + "ecs:ListTaskDefinitions", + "ecs:DescribeTaskDefinition" + ] + }, + "read": { + "permissions": [ + "ecs:DescribeTaskDefinition" + ] + }, + "update": { + "permissions": [ + "ecs:TagResource", + "ecs:UntagResource", + "ecs:ListTagsForResource", + "ecs:DescribeTaskDefinition", + "iam:GetRole", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/TaskDefinitionArn" + ], + "properties": { + "ContainerDefinitions": { + "cfnLint": [ + "AWS::ECS::TaskDefinition/Properties/ContainerDefinitions" + ], + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ContainerDefinition" + }, + "type": "array", + "uniqueItems": true + }, + "Cpu": { + "type": "string" + }, + "EphemeralStorage": { + "$ref": "#/definitions/EphemeralStorage" + }, + "ExecutionRoleArn": { + "cfnLint": [ + "AWS::ECS::TaskDefinition/Properties/ExecutionRoleArn" + ], + "type": "string" + }, + "Family": { + "type": "string" + }, + "InferenceAccelerators": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/InferenceAccelerator" + }, + "type": "array", + "uniqueItems": true + }, + "IpcMode": { + "type": "string" + }, + "Memory": { + "type": "string" + }, + "NetworkMode": { + "enum": [ + "bridge", + "host", + "awsvpc", + "none" + ], + "type": "string" + }, + "PidMode": { + "type": "string" + }, + "PlacementConstraints": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TaskDefinitionPlacementConstraint" + }, + "type": "array", + "uniqueItems": true + }, + "ProxyConfiguration": { + "$ref": "#/definitions/ProxyConfiguration" + }, + "RequiresCompatibilities": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "RuntimePlatform": { + "$ref": "#/definitions/RuntimePlatform" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "TaskDefinitionArn": { + "type": "string" + }, + "TaskRoleArn": { + "type": "string" + }, + "Volumes": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Volume" + }, + "type": "array", + "uniqueItems": true + } + }, + "propertyTransform": { + "/properties/TaskRoleArn": "TaskRoleArn $OR $split(TaskRoleArn, \"role/\")[-1]" + }, + "readOnlyProperties": [ + "/properties/TaskDefinitionArn" + ], + "sourceUrl": "https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html", + "tagging": { + "cloudFormationSystemTags": true, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ECS::TaskDefinition" +} diff --git a/src/cfnlint/data/schemas/providers/ca_west_1/aws-elasticache-user.json b/src/cfnlint/data/schemas/providers/ca_west_1/aws-elasticache-user.json deleted file mode 100644 index 0775783108..0000000000 --- a/src/cfnlint/data/schemas/providers/ca_west_1/aws-elasticache-user.json +++ /dev/null @@ -1,166 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/UserId", - "/properties/UserName", - "/properties/Engine" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z0-9 _\\.\\/=+:\\-@]*$", - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "pattern": "^[a-zA-Z0-9 _\\.\\/=+:\\-@]*$", - "type": "string" - } - }, - "required": [ - "Key" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "elasticache:CreateUser", - "elasticache:DescribeUsers", - "elasticache:ListTagsForResource", - "elasticache:AddTagsToResource" - ] - }, - "delete": { - "permissions": [ - "elasticache:DeleteUser", - "elasticache:DescribeUsers" - ] - }, - "list": { - "permissions": [ - "elasticache:DescribeUsers", - "elasticache:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "elasticache:DescribeUsers", - "elasticache:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "elasticache:ModifyUser", - "elasticache:DescribeUsers", - "elasticache:ListTagsForResource", - "elasticache:AddTagsToResource", - "elasticache:RemoveTagsFromResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/UserId" - ], - "properties": { - "AccessString": { - "type": "string" - }, - "Arn": { - "type": "string" - }, - "AuthenticationMode": { - "additionalProperties": false, - "properties": { - "Passwords": { - "$comment": "List of passwords.", - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Type": { - "enum": [ - "password", - "no-password-required", - "iam" - ], - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "Engine": { - "enum": [ - "redis" - ], - "type": "string" - }, - "NoPasswordRequired": { - "type": "boolean" - }, - "Passwords": { - "$comment": "List of passwords.", - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Status": { - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "UserId": { - "pattern": "[a-z][a-z0-9\\\\-]*", - "type": "string" - }, - "UserName": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Status", - "/properties/Arn" - ], - "required": [ - "UserId", - "UserName", - "Engine" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticache", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::ElastiCache::User", - "writeOnlyProperties": [ - "/properties/Passwords", - "/properties/NoPasswordRequired", - "/properties/AccessString", - "/properties/AuthenticationMode" - ] -} diff --git a/src/cfnlint/data/schemas/providers/ca_west_1/aws-elasticache-usergroup.json b/src/cfnlint/data/schemas/providers/ca_west_1/aws-elasticache-usergroup.json deleted file mode 100644 index 285e73b7c4..0000000000 --- a/src/cfnlint/data/schemas/providers/ca_west_1/aws-elasticache-usergroup.json +++ /dev/null @@ -1,126 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/UserGroupId", - "/properties/Engine" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z0-9 _\\.\\/=+:\\-@]*$", - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "pattern": "^[a-zA-Z0-9 _\\.\\/=+:\\-@]*$", - "type": "string" - } - }, - "required": [ - "Key" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "elasticache:CreateUserGroup", - "elasticache:DescribeUserGroups", - "elasticache:ListTagsForResource", - "elasticache:AddTagsToResource" - ] - }, - "delete": { - "permissions": [ - "elasticache:ModifyReplicationGroup", - "elasticache:DeleteUserGroup", - "elasticache:DescribeUserGroups", - "elasticache:ListTagsForResource" - ] - }, - "list": { - "permissions": [ - "elasticache:DescribeUserGroups", - "elasticache:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "elasticache:DescribeUserGroups", - "elasticache:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "elasticache:ModifyUserGroup", - "elasticache:DescribeUserGroups", - "elasticache:ListTagsForResource", - "elasticache:AddTagsToResource", - "elasticache:RemoveTagsFromResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/UserGroupId" - ], - "properties": { - "Arn": { - "type": "string" - }, - "Engine": { - "enum": [ - "redis" - ], - "type": "string" - }, - "Status": { - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "UserGroupId": { - "pattern": "[a-z][a-z0-9\\\\-]*", - "type": "string" - }, - "UserIds": { - "$comment": "List of users.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Status", - "/properties/Arn" - ], - "required": [ - "UserGroupId", - "Engine", - "UserIds" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticache", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::ElastiCache::UserGroup" -} diff --git a/src/cfnlint/data/schemas/providers/ca_west_1/aws-stepfunctions-statemachine.json b/src/cfnlint/data/schemas/providers/ca_west_1/aws-stepfunctions-statemachine.json deleted file mode 100644 index c8a1b0f42e..0000000000 --- a/src/cfnlint/data/schemas/providers/ca_west_1/aws-stepfunctions-statemachine.json +++ /dev/null @@ -1,256 +0,0 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/StateMachineName" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/StateMachineName", - "/properties/StateMachineType" - ], - "definitions": { - "CloudWatchLogsLogGroup": { - "additionalProperties": false, - "properties": { - "LogGroupArn": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - }, - "Definition": { - "minProperties": 1, - "type": "object" - }, - "DefinitionSubstitutions": { - "additionalProperties": false, - "minProperties": 1, - "patternProperties": { - ".*": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "integer" - }, - { - "type": "boolean" - } - ] - } - }, - "type": "object" - }, - "LogDestination": { - "additionalProperties": false, - "properties": { - "CloudWatchLogsLogGroup": { - "$ref": "#/definitions/CloudWatchLogsLogGroup" - } - }, - "type": "object" - }, - "LoggingConfiguration": { - "additionalProperties": false, - "properties": { - "Destinations": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/LogDestination" - }, - "minItems": 1, - "type": "array" - }, - "IncludeExecutionData": { - "type": "boolean" - }, - "Level": { - "enum": [ - "ALL", - "ERROR", - "FATAL", - "OFF" - ], - "type": "string" - } - }, - "type": "object" - }, - "S3Location": { - "additionalProperties": false, - "properties": { - "Bucket": { - "type": "string" - }, - "Key": { - "type": "string" - }, - "Version": { - "type": "string" - } - }, - "required": [ - "Bucket", - "Key" - ], - "type": "object" - }, - "TagsEntry": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "TracingConfiguration": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - } - }, - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "states:CreateStateMachine", - "states:DescribeStateMachine", - "states:TagResource", - "iam:PassRole", - "s3:GetObject" - ] - }, - "delete": { - "permissions": [ - "states:DeleteStateMachine", - "states:DescribeStateMachine" - ] - }, - "list": { - "permissions": [ - "states:ListStateMachines" - ] - }, - "read": { - "permissions": [ - "states:DescribeStateMachine", - "states:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "states:UpdateStateMachine", - "states:TagResource", - "states:UntagResource", - "states:ListTagsForResource", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "Definition": { - "$ref": "#/definitions/Definition" - }, - "DefinitionS3Location": { - "$ref": "#/definitions/S3Location" - }, - "DefinitionString": { - "maxLength": 1048576, - "minLength": 1, - "type": "string" - }, - "DefinitionSubstitutions": { - "$ref": "#/definitions/DefinitionSubstitutions" - }, - "LoggingConfiguration": { - "$ref": "#/definitions/LoggingConfiguration" - }, - "Name": { - "maxLength": 80, - "minLength": 1, - "type": "string" - }, - "RoleArn": { - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "StateMachineName": { - "maxLength": 80, - "minLength": 1, - "type": "string" - }, - "StateMachineRevisionId": { - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "StateMachineType": { - "enum": [ - "STANDARD", - "EXPRESS" - ], - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/TagsEntry" - }, - "type": "array", - "uniqueItems": false - }, - "TracingConfiguration": { - "$ref": "#/definitions/TracingConfiguration" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/Name", - "/properties/StateMachineRevisionId" - ], - "required": [ - "RoleArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-stepfunctions.git", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::StepFunctions::StateMachine", - "writeOnlyProperties": [ - "/properties/Definition", - "/properties/DefinitionS3Location", - "/properties/DefinitionSubstitutions" - ] -} diff --git a/src/cfnlint/data/schemas/providers/cn_north_1/__init__.py b/src/cfnlint/data/schemas/providers/cn_north_1/__init__.py index 15fc545e74..9a97586f8a 100644 --- a/src/cfnlint/data/schemas/providers/cn_north_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/cn_north_1/__init__.py @@ -55,6 +55,7 @@ "AWS::AutoScaling::WarmPool", "AWS::ApplicationAutoScaling::ScalableTarget", "AWS::ApiGatewayV2::Model", + "AWS::Config::StoredQuery", "AWS::Cassandra::Keyspace", "AWS::Transfer::Server", "AWS::ApiGateway::DomainName", @@ -93,9 +94,11 @@ "AWS::IoTSiteWise::Portal", "AWS::Events::Archive", "AWS::MSK::Cluster", + "AWS::SecurityHub::DelegatedAdmin", "AWS::EC2::VPCEndpointConnectionNotification", "AWS::CodePipeline::Pipeline", "AWS::OpsWorks::Instance", + "AWS::Config::ConfigurationAggregator", "AWS::ImageBuilder::ImagePipeline", "AWS::ElasticLoadBalancingV2::ListenerCertificate", "AWS::CloudFormation::ModuleVersion", @@ -262,6 +265,7 @@ "AWS::CodeBuild::Project", "AWS::EFS::FileSystem", "AWS::Logs::QueryDefinition", + "AWS::SecurityHub::ProductSubscription", "AWS::IAM::InstanceProfile", "AWS::IoT::BillingGroup", "AWS::DataSync::LocationNFS", @@ -297,6 +301,7 @@ "AWS::AppSync::ApiKey", "AWS::GuardDuty::ThreatIntelSet", "AWS::WAFRegional::RateBasedRule", + "AWS::RedshiftServerless::Workgroup", "AWS::EC2::VPC", "AWS::MSK::VpcConnection", "AWS::DataSync::LocationAzureBlob", @@ -468,6 +473,7 @@ "AWS::AppSync::GraphQLApi", "AWS::GameLift::MatchmakingRuleSet", "AWS::EC2::EgressOnlyInternetGateway", + "AWS::SecurityHub::Insight", "AWS::EC2::VPCCidrBlock", "AWS::GameLift::Script", "AWS::IAM::VirtualMFADevice", @@ -587,6 +593,7 @@ "AWS::LakeFormation::DataLakeSettings", "AWS::GreengrassV2::Deployment", "AWS::AutoScaling::ScalingPolicy", + "AWS::Redshift::ScheduledAction", "AWS::RDS::DBSecurityGroup", "AWS::ApiGatewayV2::RouteResponse", "AWS::CloudWatch::MetricStream", @@ -647,6 +654,7 @@ "AWS::EC2::TrafficMirrorSession", "AWS::Batch::JobQueue", "AWS::ElasticLoadBalancingV2::Listener", + "AWS::Redshift::EventSubscription", "AWS::CloudFormation::WaitConditionHandle", "AWS::EKS::Addon", ] @@ -672,13 +680,13 @@ "aws-quicksight-analysis.json", "aws-appconfig-extensionassociation.json", "aws-iot-topicruledestination.json", + "aws-redshift-clustersubnetgroup.json", "aws-rds-dbinstance.json", "aws-ec2-vpcdhcpoptionsassociation.json", "aws-apigateway-model.json", "aws-apigatewayv2-integrationresponse.json", "aws-iotevents-input.json", "aws-ec2-networkacl.json", - "aws-lambda-eventsourcemapping.json", "aws-budgets-budgetsaction.json", "aws-logs-resourcepolicy.json", "aws-servicecatalog-launchnotificationconstraint.json", @@ -696,6 +704,7 @@ "aws-autoscaling-warmpool.json", "aws-applicationautoscaling-scalabletarget.json", "aws-apigatewayv2-model.json", + "aws-config-storedquery.json", "aws-cassandra-keyspace.json", "aws-transfer-server.json", "aws-apigateway-domainname.json", @@ -731,9 +740,11 @@ "aws-iotsitewise-portal.json", "aws-events-archive.json", "aws-msk-cluster.json", + "aws-securityhub-delegatedadmin.json", "aws-ec2-vpcendpointconnectionnotification.json", "aws-codepipeline-pipeline.json", "aws-opsworks-instance.json", + "aws-config-configurationaggregator.json", "aws-imagebuilder-imagepipeline.json", "aws-elasticloadbalancingv2-listenercertificate.json", "aws-cloudformation-moduleversion.json", @@ -802,7 +813,6 @@ "aws-ec2-transitgatewaymulticastdomainassociation.json", "aws-waf-sizeconstraintset.json", "aws-ec2-transitgatewayroutetableassociation.json", - "aws-appconfig-environment.json", "aws-imagebuilder-image.json", "aws-elasticache-securitygroupingress.json", "aws-wafregional-xssmatchset.json", @@ -873,6 +883,7 @@ "aws-ec2-transitgatewaymulticastgroupmember.json", "aws-ec2-volumeattachment.json", "aws-glue-securityconfiguration.json", + "aws-networkfirewall-tlsinspectionconfiguration.json", "aws-databrew-ruleset.json", "aws-gamelift-matchmakingconfiguration.json", "aws-applicationinsights-application.json", @@ -887,11 +898,11 @@ "aws-codebuild-project.json", "aws-efs-filesystem.json", "aws-logs-querydefinition.json", + "aws-securityhub-productsubscription.json", "aws-iam-instanceprofile.json", "aws-iot-billinggroup.json", "aws-datasync-locationnfs.json", "aws-kinesisanalyticsv2-applicationoutput.json", - "aws-sagemaker-domain.json", "aws-greengrass-coredefinitionversion.json", "aws-certificatemanager-certificate.json", "aws-glue-schemaversionmetadata.json", @@ -919,6 +930,7 @@ "aws-ecs-taskset.json", "aws-appsync-apikey.json", "aws-guardduty-threatintelset.json", + "aws-redshiftserverless-workgroup.json", "aws-ec2-vpc.json", "aws-msk-vpcconnection.json", "aws-datasync-locationazureblob.json", @@ -951,6 +963,7 @@ "aws-securityhub-standard.json", "aws-rolesanywhere-crl.json", "aws-sns-topicinlinepolicy.json", + "aws-redshift-clusterparametergroup.json", "aws-glue-trigger.json", "aws-ec2-vpcpeeringconnection.json", "aws-sns-topicpolicy.json", @@ -998,6 +1011,7 @@ "aws-s3-bucketpolicy.json", "aws-appsync-graphqlschema.json", "aws-iot-custommetric.json", + "aws-redshift-cluster.json", "aws-codebuild-sourcecredential.json", "aws-emr-instancefleetconfig.json", "aws-emr-cluster.json", @@ -1020,10 +1034,10 @@ "aws-appconfig-hostedconfigurationversion.json", "aws-datasync-locationefs.json", "aws-apigateway-resource.json", - "aws-sagemaker-appimageconfig.json", "aws-elasticloadbalancingv2-targetgroup.json", "aws-applicationautoscaling-scalingpolicy.json", "aws-pipes-pipe.json", + "aws-iotsitewise-gateway.json", "aws-cloudformation-macro.json", "aws-sagemaker-workteam.json", "aws-lambda-layerversionpermission.json", @@ -1075,6 +1089,7 @@ "aws-appsync-graphqlapi.json", "aws-gamelift-matchmakingruleset.json", "aws-ec2-egressonlyinternetgateway.json", + "aws-securityhub-insight.json", "aws-ec2-vpccidrblock.json", "aws-gamelift-script.json", "aws-iam-virtualmfadevice.json", @@ -1085,6 +1100,7 @@ "aws-ec2-vpcendpoint.json", "aws-personalize-datasetgroup.json", "aws-rds-eventsubscription.json", + "aws-config-aggregationauthorization.json", "aws-datasync-agent.json", "aws-iot-dimension.json", "aws-logs-loggroup.json", @@ -1127,9 +1143,9 @@ "aws-glue-workflow.json", "aws-apigatewayv2-authorizer.json", "aws-iot-accountauditconfiguration.json", - "aws-sagemaker-userprofile.json", "aws-personalize-dataset.json", "aws-ec2-prefixlist.json", + "aws-ec2-instance.json", "aws-ec2-subnetcidrblock.json", "aws-elasticbeanstalk-applicationversion.json", "aws-appmesh-virtualgateway.json", @@ -1137,6 +1153,7 @@ "aws-ec2-flowlog.json", "aws-amazonmq-broker.json", "aws-emr-step.json", + "aws-ssm-association.json", "aws-cloudfront-responseheaderspolicy.json", "aws-securityhub-automationrule.json", "aws-msk-clusterpolicy.json", @@ -1165,7 +1182,6 @@ "aws-organizations-organizationalunit.json", "aws-appsync-datasource.json", "aws-sqs-queue.json", - "aws-ec2-securitygroupingress.json", "aws-guardduty-detector.json", "aws-iot-provisioningtemplate.json", "aws-personalize-schema.json", @@ -1180,6 +1196,7 @@ "aws-apigateway-deployment.json", "aws-greengrassv2-deployment.json", "aws-autoscaling-scalingpolicy.json", + "aws-redshift-scheduledaction.json", "aws-rds-dbsecuritygroup.json", "aws-apigatewayv2-routeresponse.json", "aws-cloudwatch-metricstream.json", @@ -1232,6 +1249,7 @@ "aws-s3-accesspoint.json", "aws-greengrass-groupversion.json", "aws-batch-jobqueue.json", + "aws-redshift-eventsubscription.json", "aws-cloudformation-waitconditionhandle.json", "aws-eks-addon.json", ] diff --git a/src/cfnlint/data/schemas/providers/cn_north_1/aws-appconfig-environment.json b/src/cfnlint/data/schemas/providers/cn_north_1/aws-appconfig-environment.json new file mode 100644 index 0000000000..1b1444bd23 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/cn_north_1/aws-appconfig-environment.json @@ -0,0 +1,152 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationId" + ], + "definitions": { + "Monitor": { + "additionalProperties": false, + "properties": { + "AlarmArn": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "AlarmRoleArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^((arn):(aws|aws-cn|aws-iso|aws-iso-[a-z]{1}|aws-us-gov):(iam)::\\d{12}:role[/].*)$", + "type": "string" + } + }, + "required": [ + "AlarmArn" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:.)[a-zA-Z1-9+=._:/-]*$", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "appconfig:CreateEnvironment", + "appconfig:GetEnvironment", + "appconfig:ListTagsForResource", + "appconfig:TagResource", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "appconfig:GetEnvironment", + "appconfig:DeleteEnvironment" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ApplicationId": { + "$ref": "resource-schema.json#/properties/ApplicationId" + } + }, + "required": [ + "ApplicationId" + ] + }, + "permissions": [ + "appconfig:ListEnvironments" + ] + }, + "read": { + "permissions": [ + "appconfig:GetEnvironment", + "appconfig:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "appconfig:UpdateEnvironment", + "appconfig:TagResource", + "appconfig:UntagResource", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/ApplicationId", + "/properties/EnvironmentId" + ], + "properties": { + "ApplicationId": { + "pattern": "[a-z0-9]{4,7}", + "type": "string" + }, + "Description": { + "maxLength": 1024, + "minLength": 0, + "type": "string" + }, + "EnvironmentId": { + "pattern": "[a-z0-9]{4,7}", + "type": "string" + }, + "Monitors": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Monitor" + }, + "maxItems": 5, + "minItems": 0, + "type": "array" + }, + "Name": { + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/EnvironmentId" + ], + "required": [ + "Name", + "ApplicationId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-appconfig.git", + "tagging": { + "cloudFormationSystemTags": true, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::AppConfig::Environment" +} diff --git a/src/cfnlint/data/schemas/providers/cn_north_1/aws-config-aggregationauthorization.json b/src/cfnlint/data/schemas/providers/cn_north_1/aws-config-aggregationauthorization.json deleted file mode 100644 index e380c485b5..0000000000 --- a/src/cfnlint/data/schemas/providers/cn_north_1/aws-config-aggregationauthorization.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AuthorizedAwsRegion", - "/properties/AuthorizedAccountId" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AuthorizedAccountId": { - "type": "string" - }, - "AuthorizedAwsRegion": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "AuthorizedAccountId", - "AuthorizedAwsRegion" - ], - "typeName": "AWS::Config::AggregationAuthorization" -} diff --git a/src/cfnlint/data/schemas/providers/cn_north_1/aws-ec2-instance.json b/src/cfnlint/data/schemas/providers/cn_north_1/aws-ec2-instance.json deleted file mode 100644 index 7b3bfed595..0000000000 --- a/src/cfnlint/data/schemas/providers/cn_north_1/aws-ec2-instance.json +++ /dev/null @@ -1,571 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ElasticGpuSpecifications", - "/properties/Ipv6Addresses", - "/properties/PlacementGroupName", - "/properties/HostResourceGroupArn", - "/properties/ImageId", - "/properties/CpuOptions", - "/properties/PrivateIpAddress", - "/properties/ElasticInferenceAccelerators", - "/properties/EnclaveOptions", - "/properties/HibernationOptions", - "/properties/KeyName", - "/properties/LicenseSpecifications", - "/properties/NetworkInterfaces", - "/properties/AvailabilityZone", - "/properties/SubnetId", - "/properties/LaunchTemplate", - "/properties/SecurityGroups", - "/properties/Ipv6AddressCount" - ], - "definitions": { - "AssociationParameter": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "BlockDeviceMapping": { - "additionalProperties": false, - "properties": { - "DeviceName": { - "type": "string" - }, - "Ebs": { - "$ref": "#/definitions/Ebs" - }, - "NoDevice": { - "$ref": "#/definitions/NoDevice" - }, - "VirtualName": { - "type": "string" - } - }, - "required": [ - "DeviceName" - ], - "requiredXor": [ - "VirtualName", - "Ebs", - "NoDevice" - ], - "type": "object" - }, - "CpuOptions": { - "additionalProperties": false, - "properties": { - "CoreCount": { - "type": "integer" - }, - "ThreadsPerCore": { - "type": "integer" - } - }, - "type": "object" - }, - "CreditSpecification": { - "additionalProperties": false, - "properties": { - "CPUCredits": { - "type": "string" - } - }, - "type": "object" - }, - "Ebs": { - "additionalProperties": false, - "properties": { - "DeleteOnTermination": { - "type": "boolean" - }, - "Encrypted": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "KmsKeyId": { - "type": "string" - }, - "SnapshotId": { - "type": "string" - }, - "VolumeSize": { - "type": "integer" - }, - "VolumeType": { - "type": "string" - } - }, - "type": "object" - }, - "ElasticGpuSpecification": { - "additionalProperties": false, - "properties": { - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "ElasticInferenceAccelerator": { - "additionalProperties": false, - "properties": { - "Count": { - "type": "integer" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "EnclaveOptions": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - } - }, - "type": "object" - }, - "HibernationOptions": { - "additionalProperties": false, - "properties": { - "Configured": { - "type": "boolean" - } - }, - "type": "object" - }, - "InstanceIpv6Address": { - "additionalProperties": false, - "properties": { - "Ipv6Address": { - "type": "string" - } - }, - "required": [ - "Ipv6Address" - ], - "type": "object" - }, - "LaunchTemplateSpecification": { - "additionalProperties": false, - "properties": { - "LaunchTemplateId": { - "type": "string" - }, - "LaunchTemplateName": { - "type": "string" - }, - "Version": { - "type": "string" - } - }, - "required": [ - "Version" - ], - "type": "object" - }, - "LicenseSpecification": { - "additionalProperties": false, - "properties": { - "LicenseConfigurationArn": { - "type": "string" - } - }, - "required": [ - "LicenseConfigurationArn" - ], - "type": "object" - }, - "NetworkInterface": { - "additionalProperties": false, - "properties": { - "AssociateCarrierIpAddress": { - "type": "boolean" - }, - "AssociatePublicIpAddress": { - "type": "boolean" - }, - "DeleteOnTermination": { - "type": "boolean" - }, - "Description": { - "type": "string" - }, - "DeviceIndex": { - "type": "string" - }, - "GroupSet": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": false - }, - "NetworkInterfaceId": { - "type": "string" - }, - "PrivateIpAddress": { - "type": "string" - }, - "PrivateIpAddresses": { - "items": { - "$ref": "#/definitions/PrivateIpAddressSpecification" - }, - "type": "array", - "uniqueItems": false - }, - "SecondaryPrivateIpAddressCount": { - "type": "integer" - }, - "SubnetId": { - "type": "string" - } - }, - "required": [ - "DeviceIndex" - ], - "type": "object" - }, - "NoDevice": { - "additionalProperties": false, - "type": "object" - }, - "PrivateDnsNameOptions": { - "additionalProperties": false, - "properties": { - "EnableResourceNameDnsAAAARecord": { - "type": "boolean" - }, - "EnableResourceNameDnsARecord": { - "type": "boolean" - }, - "HostnameType": { - "type": "string" - } - }, - "type": "object" - }, - "PrivateIpAddressSpecification": { - "additionalProperties": false, - "properties": { - "Primary": { - "type": "boolean" - }, - "PrivateIpAddress": { - "type": "string" - } - }, - "required": [ - "PrivateIpAddress", - "Primary" - ], - "type": "object" - }, - "SsmAssociation": { - "additionalProperties": false, - "properties": { - "AssociationParameters": { - "items": { - "$ref": "#/definitions/AssociationParameter" - }, - "type": "array", - "uniqueItems": false - }, - "DocumentName": { - "type": "string" - } - }, - "required": [ - "DocumentName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "Volume": { - "additionalProperties": false, - "properties": { - "Device": { - "type": "string" - }, - "VolumeId": { - "type": "string" - } - }, - "required": [ - "VolumeId", - "Device" - ], - "type": "object" - } - }, - "dependentExcluded": { - "NetworkInterfaces": [ - "SubnetId" - ], - "SubnetId": [ - "NetworkInterfaces" - ] - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AdditionalInfo": { - "type": "string" - }, - "Affinity": { - "enum": [ - "default", - "host" - ], - "type": "string" - }, - "AvailabilityZone": { - "cfnLint": [ - "AWS::EC2::Instance/Properties/AvailabilityZone" - ], - "type": "string" - }, - "BlockDeviceMappings": { - "items": { - "$ref": "#/definitions/BlockDeviceMapping" - }, - "type": "array", - "uniqueItems": false - }, - "CpuOptions": { - "$ref": "#/definitions/CpuOptions" - }, - "CreditSpecification": { - "$ref": "#/definitions/CreditSpecification" - }, - "DisableApiTermination": { - "type": "boolean" - }, - "EbsOptimized": { - "type": "boolean" - }, - "ElasticGpuSpecifications": { - "items": { - "$ref": "#/definitions/ElasticGpuSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "ElasticInferenceAccelerators": { - "items": { - "$ref": "#/definitions/ElasticInferenceAccelerator" - }, - "type": "array", - "uniqueItems": true - }, - "EnclaveOptions": { - "$ref": "#/definitions/EnclaveOptions" - }, - "HibernationOptions": { - "$ref": "#/definitions/HibernationOptions" - }, - "HostId": { - "type": "string" - }, - "HostResourceGroupArn": { - "type": "string" - }, - "IamInstanceProfile": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "ImageId": { - "type": "string" - }, - "InstanceInitiatedShutdownBehavior": { - "type": "string" - }, - "InstanceType": { - "cfnLint": [ - "AWS::EC2::Instance/Properties/InstanceType" - ], - "type": "string" - }, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": false - }, - "KernelId": { - "type": "string" - }, - "KeyName": { - "type": "string" - }, - "LaunchTemplate": { - "$ref": "#/definitions/LaunchTemplateSpecification" - }, - "LicenseSpecifications": { - "items": { - "$ref": "#/definitions/LicenseSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "Monitoring": { - "type": "boolean" - }, - "NetworkInterfaces": { - "items": { - "$ref": "#/definitions/NetworkInterface" - }, - "type": "array", - "uniqueItems": false - }, - "PlacementGroupName": { - "type": "string" - }, - "PrivateDnsName": { - "type": "string" - }, - "PrivateDnsNameOptions": { - "$ref": "#/definitions/PrivateDnsNameOptions" - }, - "PrivateIp": { - "type": "string" - }, - "PrivateIpAddress": { - "type": "string" - }, - "PropagateTagsToVolumeOnCreation": { - "type": "boolean" - }, - "PublicDnsName": { - "type": "string" - }, - "PublicIp": { - "type": "string" - }, - "RamdiskId": { - "type": "string" - }, - "SecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SecurityGroups": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SourceDestCheck": { - "type": "boolean" - }, - "SsmAssociations": { - "items": { - "$ref": "#/definitions/SsmAssociation" - }, - "type": "array", - "uniqueItems": false - }, - "SubnetId": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "Tenancy": { - "enum": [ - "default", - "dedicated", - "host" - ], - "type": "string" - }, - "UserData": { - "type": "string" - }, - "Volumes": { - "items": { - "$ref": "#/definitions/Volume" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/PublicIp", - "/properties/Id", - "/properties/PublicDnsName", - "/properties/PrivateDnsName", - "/properties/PrivateIp" - ], - "requiredXor": [ - "ImageId", - "LaunchTemplate" - ], - "typeName": "AWS::EC2::Instance" -} diff --git a/src/cfnlint/data/schemas/providers/cn_north_1/aws-ec2-securitygroupingress.json b/src/cfnlint/data/schemas/providers/cn_north_1/aws-ec2-securitygroupingress.json new file mode 100644 index 0000000000..83ebc2ae5c --- /dev/null +++ b/src/cfnlint/data/schemas/providers/cn_north_1/aws-ec2-securitygroupingress.json @@ -0,0 +1,121 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::EC2::SecurityGroupIngress/Properties" + ], + "createOnlyProperties": [ + "/properties/GroupName", + "/properties/IpProtocol", + "/properties/SourceSecurityGroupId", + "/properties/SourcePrefixListId", + "/properties/ToPort", + "/properties/CidrIp", + "/properties/SourceSecurityGroupName", + "/properties/SourceSecurityGroupOwnerId", + "/properties/FromPort", + "/properties/GroupId", + "/properties/CidrIpv6" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeSecurityGroupRules", + "ec2:AuthorizeSecurityGroupIngress" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeSecurityGroupRules", + "ec2:RevokeSecurityGroupIngress" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroups", + "ec2:DescribeSecurityGroupRules" + ] + }, + "update": { + "permissions": [ + "ec2:UpdateSecurityGroupRuleDescriptionsIngress" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CidrIp": { + "type": "string" + }, + "CidrIpv6": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "FromPort": { + "minimum": -1, + "type": "integer" + }, + "GroupId": { + "type": "string" + }, + "GroupName": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "IpProtocol": { + "type": "string" + }, + "SourcePrefixListId": { + "type": "string" + }, + "SourceSecurityGroupId": { + "type": "string" + }, + "SourceSecurityGroupName": { + "type": "string" + }, + "SourceSecurityGroupOwnerId": { + "type": "string" + }, + "ToPort": { + "minimum": -1, + "type": "integer" + } + }, + "propertyTransform": { + "/properties/FromPort": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$ipProtocol := $mapVal ? $mapVal : $lowercase(IpProtocol);$ipProtocol in ['imcp', 'tcp', 'udp', 'imcp'] ? FromPort : -1)", + "/properties/IpProtocol": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$mapVal ? $mapVal : $lowercase(IpProtocol))", + "/properties/ToPort": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$ipProtocol := $mapVal ? $mapVal : $lowercase(IpProtocol);$ipProtocol in ['imcp', 'tcp', 'udp', 'imcp'] ? ToPort : -1)" + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IpProtocol" + ], + "requiredXor": [ + "CidrIp", + "CidrIpv6", + "SourcePrefixListId", + "SourceSecurityGroupId", + "SourceSecurityGroupName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SecurityGroupIngress" +} diff --git a/src/cfnlint/data/schemas/providers/cn_north_1/aws-iotsitewise-gateway.json b/src/cfnlint/data/schemas/providers/cn_north_1/aws-iotsitewise-gateway.json deleted file mode 100644 index 20b0ba8baa..0000000000 --- a/src/cfnlint/data/schemas/providers/cn_north_1/aws-iotsitewise-gateway.json +++ /dev/null @@ -1,179 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/GatewayPlatform" - ], - "definitions": { - "CapabilityConfiguration": { - "type": "string" - }, - "CapabilityNamespace": { - "type": "string" - }, - "GatewayCapabilitySummary": { - "additionalProperties": false, - "properties": { - "CapabilityConfiguration": { - "$ref": "#/definitions/CapabilityConfiguration" - }, - "CapabilityNamespace": { - "$ref": "#/definitions/CapabilityNamespace" - } - }, - "required": [ - "CapabilityNamespace" - ], - "type": "object" - }, - "GatewayPlatform": { - "additionalProperties": false, - "oneOf": [ - { - "required": [ - "Greengrass" - ] - }, - { - "required": [ - "GreengrassV2" - ] - } - ], - "properties": { - "Greengrass": { - "$ref": "#/definitions/Greengrass" - }, - "GreengrassV2": { - "$ref": "#/definitions/GreengrassV2" - } - }, - "type": "object" - }, - "Greengrass": { - "additionalProperties": false, - "properties": { - "GroupArn": { - "type": "string" - } - }, - "required": [ - "GroupArn" - ], - "type": "object" - }, - "GreengrassV2": { - "additionalProperties": false, - "properties": { - "CoreDeviceThingName": { - "type": "string" - } - }, - "required": [ - "CoreDeviceThingName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "iotsitewise:CreateGateway", - "iotsitewise:DescribeGateway", - "iotsitewise:DescribeGatewayCapabilityConfiguration", - "iotsitewise:UpdateGatewayCapabilityConfiguration", - "iam:PassRole", - "iam:GetRole", - "greengrass:GetCoreDevice", - "iotsitewise:ListTagsForResource", - "iotsitewise:TagResource", - "iot:DescribeThing" - ] - }, - "delete": { - "permissions": [ - "iotsitewise:DescribeGateway", - "iotsitewise:DescribeGatewayCapabilityConfiguration", - "iotsitewise:DeleteGateway" - ] - }, - "list": { - "permissions": [ - "iotsitewise:ListGateways" - ] - }, - "read": { - "permissions": [ - "iotsitewise:DescribeGateway", - "iotsitewise:DescribeGatewayCapabilityConfiguration", - "iotsitewise:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "iotsitewise:UpdateGateway", - "iotsitewise:UpdateGatewayCapabilityConfiguration", - "iotsitewise:TagResource", - "iotsitewise:UntagResource", - "iotsitewise:DescribeGateway", - "iotsitewise:DescribeGatewayCapabilityConfiguration", - "iotsitewise:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/GatewayId" - ], - "properties": { - "GatewayCapabilitySummaries": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/GatewayCapabilitySummary" - }, - "type": "array", - "uniqueItems": true - }, - "GatewayId": { - "type": "string" - }, - "GatewayName": { - "type": "string" - }, - "GatewayPlatform": { - "$ref": "#/definitions/GatewayPlatform" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/GatewayId" - ], - "required": [ - "GatewayName", - "GatewayPlatform" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-IoTSiteWise.git", - "taggable": true, - "typeName": "AWS::IoTSiteWise::Gateway" -} diff --git a/src/cfnlint/data/schemas/providers/cn_north_1/aws-lambda-eventsourcemapping.json b/src/cfnlint/data/schemas/providers/cn_north_1/aws-lambda-eventsourcemapping.json new file mode 100644 index 0000000000..cb7599c139 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/cn_north_1/aws-lambda-eventsourcemapping.json @@ -0,0 +1,353 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::Lambda::EventSourceMapping/Properties" + ], + "createOnlyProperties": [ + "/properties/EventSourceArn", + "/properties/StartingPosition", + "/properties/StartingPositionTimestamp", + "/properties/SelfManagedEventSource", + "/properties/AmazonManagedKafkaEventSourceConfig", + "/properties/SelfManagedKafkaEventSourceConfig" + ], + "definitions": { + "AmazonManagedKafkaEventSourceConfig": { + "additionalProperties": false, + "properties": { + "ConsumerGroupId": { + "$ref": "#/definitions/ConsumerGroupId" + } + }, + "type": "object" + }, + "ConsumerGroupId": { + "maxLength": 200, + "minLength": 1, + "pattern": "[a-zA-Z0-9-\\/*:_+=.@-]*", + "type": "string" + }, + "DestinationConfig": { + "additionalProperties": false, + "properties": { + "OnFailure": { + "$ref": "#/definitions/OnFailure" + } + }, + "type": "object" + }, + "DocumentDBEventSourceConfig": { + "additionalProperties": false, + "properties": { + "CollectionName": { + "maxLength": 57, + "minLength": 1, + "type": "string" + }, + "DatabaseName": { + "maxLength": 63, + "minLength": 1, + "type": "string" + }, + "FullDocument": { + "enum": [ + "UpdateLookup", + "Default" + ], + "type": "string" + } + }, + "type": "object" + }, + "Endpoints": { + "additionalProperties": false, + "properties": { + "KafkaBootstrapServers": { + "items": { + "maxLength": 300, + "minLength": 1, + "pattern": "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9]):[0-9]{1,5}", + "type": "string" + }, + "maxItems": 10, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "Filter": { + "additionalProperties": false, + "properties": { + "Pattern": { + "maxLength": 4096, + "minLength": 0, + "pattern": ".*", + "type": "string" + } + }, + "type": "object" + }, + "FilterCriteria": { + "additionalProperties": false, + "properties": { + "Filters": { + "items": { + "$ref": "#/definitions/Filter" + }, + "maxItems": 20, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "MaximumConcurrency": { + "maximum": 1000, + "minimum": 2, + "type": "integer" + }, + "OnFailure": { + "additionalProperties": false, + "properties": { + "Destination": { + "maxLength": 1024, + "minLength": 12, + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "type": "string" + } + }, + "type": "object" + }, + "ScalingConfig": { + "additionalProperties": false, + "properties": { + "MaximumConcurrency": { + "$ref": "#/definitions/MaximumConcurrency" + } + }, + "type": "object" + }, + "SelfManagedEventSource": { + "additionalProperties": false, + "properties": { + "Endpoints": { + "$ref": "#/definitions/Endpoints" + } + }, + "type": "object" + }, + "SelfManagedKafkaEventSourceConfig": { + "additionalProperties": false, + "properties": { + "ConsumerGroupId": { + "$ref": "#/definitions/ConsumerGroupId" + } + }, + "type": "object" + }, + "SourceAccessConfiguration": { + "additionalProperties": false, + "properties": { + "Type": { + "enum": [ + "BASIC_AUTH", + "VPC_SUBNET", + "VPC_SECURITY_GROUP", + "SASL_SCRAM_512_AUTH", + "SASL_SCRAM_256_AUTH", + "VIRTUAL_HOST", + "CLIENT_CERTIFICATE_TLS_AUTH", + "SERVER_ROOT_CA_CERTIFICATE" + ], + "type": "string" + }, + "URI": { + "maxLength": 200, + "minLength": 1, + "pattern": "[a-zA-Z0-9-\\/*:_+=.@-]*", + "type": "string" + } + }, + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "lambda:CreateEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + }, + "delete": { + "permissions": [ + "lambda:DeleteEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + }, + "list": { + "permissions": [ + "lambda:ListEventSourceMappings" + ] + }, + "read": { + "permissions": [ + "lambda:GetEventSourceMapping" + ] + }, + "update": { + "permissions": [ + "lambda:UpdateEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AmazonManagedKafkaEventSourceConfig": { + "$ref": "#/definitions/AmazonManagedKafkaEventSourceConfig" + }, + "BatchSize": { + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "BisectBatchOnFunctionError": { + "type": "boolean" + }, + "DestinationConfig": { + "$ref": "#/definitions/DestinationConfig" + }, + "DocumentDBEventSourceConfig": { + "$ref": "#/definitions/DocumentDBEventSourceConfig" + }, + "Enabled": { + "type": "boolean" + }, + "EventSourceArn": { + "maxLength": 1024, + "minLength": 12, + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "type": "string" + }, + "FilterCriteria": { + "$ref": "#/definitions/FilterCriteria" + }, + "FunctionName": { + "maxLength": 140, + "minLength": 1, + "pattern": "(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?", + "type": "string" + }, + "FunctionResponseTypes": { + "items": { + "enum": [ + "ReportBatchItemFailures" + ], + "type": "string" + }, + "maxLength": 1, + "minLength": 0, + "type": "array", + "uniqueItems": true + }, + "Id": { + "maxLength": 36, + "minLength": 36, + "pattern": "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + "type": "string" + }, + "MaximumBatchingWindowInSeconds": { + "maximum": 300, + "minimum": 0, + "type": "integer" + }, + "MaximumRecordAgeInSeconds": { + "maximum": 604800, + "minimum": -1, + "type": "integer" + }, + "MaximumRetryAttempts": { + "maximum": 10000, + "minimum": -1, + "type": "integer" + }, + "ParallelizationFactor": { + "maximum": 10, + "minimum": 1, + "type": "integer" + }, + "Queues": { + "items": { + "maxLength": 1000, + "minLength": 1, + "pattern": "[\\s\\S]*", + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "ScalingConfig": { + "$ref": "#/definitions/ScalingConfig" + }, + "SelfManagedEventSource": { + "$ref": "#/definitions/SelfManagedEventSource" + }, + "SelfManagedKafkaEventSourceConfig": { + "$ref": "#/definitions/SelfManagedKafkaEventSourceConfig" + }, + "SourceAccessConfigurations": { + "items": { + "$ref": "#/definitions/SourceAccessConfiguration" + }, + "maxItems": 22, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "StartingPosition": { + "enum": [ + "TRIM_HORIZON", + "LATEST", + "AT_TIMESTAMP" + ], + "maxLength": 12, + "minLength": 6, + "pattern": "(LATEST|TRIM_HORIZON|AT_TIMESTAMP)+", + "type": "string" + }, + "StartingPositionTimestamp": { + "type": "number" + }, + "Topics": { + "items": { + "maxLength": 249, + "minLength": 1, + "pattern": "^[^.]([a-zA-Z0-9\\-_.]+)", + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "TumblingWindowInSeconds": { + "maximum": 900, + "minimum": 0, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "FunctionName" + ], + "typeName": "AWS::Lambda::EventSourceMapping" +} diff --git a/src/cfnlint/data/schemas/providers/cn_north_1/aws-networkfirewall-tlsinspectionconfiguration.json b/src/cfnlint/data/schemas/providers/cn_north_1/aws-networkfirewall-tlsinspectionconfiguration.json deleted file mode 100644 index ea743fee48..0000000000 --- a/src/cfnlint/data/schemas/providers/cn_north_1/aws-networkfirewall-tlsinspectionconfiguration.json +++ /dev/null @@ -1,285 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/TLSInspectionConfigurationName" - ], - "definitions": { - "Address": { - "additionalProperties": false, - "properties": { - "AddressDefinition": { - "maxLength": 255, - "minLength": 1, - "pattern": "^([a-fA-F\\d:\\.]+/\\d{1,3})$", - "type": "string" - } - }, - "required": [ - "AddressDefinition" - ], - "type": "object" - }, - "PortRange": { - "additionalProperties": false, - "properties": { - "FromPort": { - "$ref": "#/definitions/PortRangeBound" - }, - "ToPort": { - "$ref": "#/definitions/PortRangeBound" - } - }, - "required": [ - "FromPort", - "ToPort" - ], - "type": "object" - }, - "PortRangeBound": { - "maximum": 65535, - "minimum": 0, - "type": "integer" - }, - "ProtocolNumber": { - "maximum": 255, - "minimum": 0, - "type": "integer" - }, - "ResourceArn": { - "maxLength": 256, - "minLength": 1, - "pattern": "^(arn:aws.*)$", - "type": "string" - }, - "RevokedStatusAction": { - "enum": [ - "PASS", - "DROP", - "REJECT" - ], - "type": "string" - }, - "ServerCertificate": { - "additionalProperties": false, - "properties": { - "ResourceArn": { - "$ref": "#/definitions/ResourceArn" - } - }, - "type": "object" - }, - "ServerCertificateConfiguration": { - "additionalProperties": false, - "properties": { - "CertificateAuthorityArn": { - "$ref": "#/definitions/ResourceArn" - }, - "CheckCertificateRevocationStatus": { - "additionalProperties": false, - "properties": { - "RevokedStatusAction": { - "$ref": "#/definitions/RevokedStatusAction" - }, - "UnknownStatusAction": { - "$ref": "#/definitions/UnknownStatusAction" - } - }, - "type": "object" - }, - "Scopes": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/ServerCertificateScope" - }, - "type": "array", - "uniqueItems": false - }, - "ServerCertificates": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ServerCertificate" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "ServerCertificateScope": { - "additionalProperties": false, - "properties": { - "DestinationPorts": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/PortRange" - }, - "type": "array", - "uniqueItems": false - }, - "Destinations": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Address" - }, - "type": "array", - "uniqueItems": false - }, - "Protocols": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/ProtocolNumber" - }, - "type": "array", - "uniqueItems": false - }, - "SourcePorts": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/PortRange" - }, - "type": "array", - "uniqueItems": false - }, - "Sources": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Address" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "TLSInspectionConfiguration": { - "additionalProperties": false, - "properties": { - "ServerCertificateConfigurations": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/ServerCertificateConfiguration" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "Value": { - "maxLength": 255, - "minLength": 0, - "pattern": "^.*$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "UnknownStatusAction": { - "enum": [ - "PASS", - "DROP", - "REJECT" - ], - "type": "string" - } - }, - "handlers": { - "create": { - "permissions": [ - "iam:CreateServiceLinkedRole", - "network-firewall:CreateTLSInspectionConfiguration", - "network-firewall:DescribeTLSInspectionConfiguration", - "network-firewall:TagResource" - ] - }, - "delete": { - "permissions": [ - "network-firewall:DeleteTLSInspectionConfiguration", - "network-firewall:DescribeTLSInspectionConfiguration", - "network-firewall:UntagResource" - ] - }, - "list": { - "permissions": [ - "network-firewall:ListTLSInspectionConfigurations" - ] - }, - "read": { - "permissions": [ - "network-firewall:DescribeTLSInspectionConfiguration", - "network-firewall:ListTagsForResources" - ] - }, - "update": { - "permissions": [ - "network-firewall:UpdateTLSInspectionConfiguration", - "network-firewall:DescribeTLSInspectionConfiguration", - "network-firewall:TagResource", - "network-firewall:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/TLSInspectionConfigurationArn" - ], - "properties": { - "Description": { - "maxLength": 512, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "TLSInspectionConfiguration": { - "$ref": "#/definitions/TLSInspectionConfiguration" - }, - "TLSInspectionConfigurationArn": { - "$ref": "#/definitions/ResourceArn" - }, - "TLSInspectionConfigurationId": { - "maxLength": 36, - "minLength": 36, - "pattern": "^([0-9a-f]{8})-([0-9a-f]{4}-){3}([0-9a-f]{12})$", - "type": "string" - }, - "TLSInspectionConfigurationName": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]+$", - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/TLSInspectionConfigurationArn", - "/properties/TLSInspectionConfigurationId" - ], - "required": [ - "TLSInspectionConfigurationName", - "TLSInspectionConfiguration" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkfirewall.git", - "tagging": { - "taggable": true - }, - "typeName": "AWS::NetworkFirewall::TLSInspectionConfiguration" -} diff --git a/src/cfnlint/data/schemas/providers/cn_north_1/aws-redshift-cluster.json b/src/cfnlint/data/schemas/providers/cn_north_1/aws-redshift-cluster.json deleted file mode 100644 index a354cb134c..0000000000 --- a/src/cfnlint/data/schemas/providers/cn_north_1/aws-redshift-cluster.json +++ /dev/null @@ -1,184 +0,0 @@ -{ - "additionalProperties": false, - "cfnLint": "AWS::Redshift::Cluster/Properties", - "createOnlyProperties": [ - "/properties/KmsKeyId", - "/properties/MasterUsername", - "/properties/OwnerAccount", - "/properties/SnapshotIdentifier", - "/properties/Encrypted", - "/properties/Port", - "/properties/DBName", - "/properties/SnapshotClusterIdentifier", - "/properties/AvailabilityZone", - "/properties/ClusterSubnetGroupName", - "/properties/ClusterIdentifier", - "/properties/ElasticIp" - ], - "definitions": { - "LoggingProperties": { - "additionalProperties": false, - "properties": { - "BucketName": { - "type": "string" - }, - "S3KeyPrefix": { - "type": "string" - } - }, - "required": [ - "BucketName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AllowVersionUpgrade": { - "type": "boolean" - }, - "AutomatedSnapshotRetentionPeriod": { - "type": "integer" - }, - "AvailabilityZone": { - "type": "string" - }, - "ClusterIdentifier": { - "type": "string" - }, - "ClusterParameterGroupName": { - "type": "string" - }, - "ClusterSecurityGroups": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "ClusterSubnetGroupName": { - "type": "string" - }, - "ClusterType": { - "type": "string" - }, - "ClusterVersion": { - "type": "string" - }, - "DBName": { - "type": "string" - }, - "ElasticIp": { - "type": "string" - }, - "Encrypted": { - "type": "boolean" - }, - "EndpointAddress": { - "type": "string" - }, - "EndpointPort": { - "type": "string" - }, - "HsmClientCertificateIdentifier": { - "type": "string" - }, - "HsmConfigurationIdentifier": { - "type": "string" - }, - "IamRoles": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Id": { - "type": "string" - }, - "KmsKeyId": { - "type": "string" - }, - "LoggingProperties": { - "$ref": "#/definitions/LoggingProperties" - }, - "MasterUserPassword": { - "type": "string" - }, - "MasterUsername": { - "type": "string" - }, - "NodeType": { - "cfnLint": "AWS::Redshift::Cluster/Properties/NodeType", - "type": "string" - }, - "NumberOfNodes": { - "maximum": 100, - "minimum": 1, - "type": "integer" - }, - "OwnerAccount": { - "type": "string" - }, - "Port": { - "type": "integer" - }, - "PreferredMaintenanceWindow": { - "type": "string" - }, - "PubliclyAccessible": { - "type": "boolean" - }, - "SnapshotClusterIdentifier": { - "type": "string" - }, - "SnapshotIdentifier": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "VpcSecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/EndpointPort", - "/properties/EndpointAddress" - ], - "required": [ - "MasterUserPassword", - "NodeType", - "MasterUsername", - "DBName", - "ClusterType" - ], - "typeName": "AWS::Redshift::Cluster" -} diff --git a/src/cfnlint/data/schemas/providers/cn_north_1/aws-redshift-clusterparametergroup.json b/src/cfnlint/data/schemas/providers/cn_north_1/aws-redshift-clusterparametergroup.json deleted file mode 100644 index da0d11f5b9..0000000000 --- a/src/cfnlint/data/schemas/providers/cn_north_1/aws-redshift-clusterparametergroup.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ParameterGroupFamily", - "/properties/Description" - ], - "definitions": { - "Parameter": { - "additionalProperties": false, - "properties": { - "ParameterName": { - "type": "string" - }, - "ParameterValue": { - "type": "string" - } - }, - "required": [ - "ParameterValue", - "ParameterName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Description": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "ParameterGroupFamily": { - "type": "string" - }, - "Parameters": { - "items": { - "$ref": "#/definitions/Parameter" - }, - "type": "array", - "uniqueItems": false - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Description", - "ParameterGroupFamily" - ], - "typeName": "AWS::Redshift::ClusterParameterGroup" -} diff --git a/src/cfnlint/data/schemas/providers/cn_north_1/aws-redshift-clustersubnetgroup.json b/src/cfnlint/data/schemas/providers/cn_north_1/aws-redshift-clustersubnetgroup.json deleted file mode 100644 index a8c9115c0c..0000000000 --- a/src/cfnlint/data/schemas/providers/cn_north_1/aws-redshift-clustersubnetgroup.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "additionalProperties": false, - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Description": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "SubnetIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "SubnetIds", - "Description" - ], - "typeName": "AWS::Redshift::ClusterSubnetGroup" -} diff --git a/src/cfnlint/data/schemas/providers/cn_north_1/aws-sagemaker-appimageconfig.json b/src/cfnlint/data/schemas/providers/cn_north_1/aws-sagemaker-appimageconfig.json new file mode 100644 index 0000000000..01116f524b --- /dev/null +++ b/src/cfnlint/data/schemas/providers/cn_north_1/aws-sagemaker-appimageconfig.json @@ -0,0 +1,238 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AppImageConfigName", + "/properties/Tags" + ], + "definitions": { + "ContainerConfig": { + "additionalProperties": false, + "properties": { + "ContainerArguments": { + "items": { + "$ref": "#/definitions/CustomImageContainerArguments" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "ContainerEntrypoint": { + "items": { + "$ref": "#/definitions/CustomImageContainerEntrypoint" + }, + "maxItems": 1, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "ContainerEnvironmentVariables": { + "items": { + "$ref": "#/definitions/CustomImageContainerEnvironmentVariable" + }, + "maxItems": 25, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "CustomImageContainerArguments": { + "maxLength": 64, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "CustomImageContainerEntrypoint": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "CustomImageContainerEnvironmentVariable": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "FileSystemConfig": { + "additionalProperties": false, + "properties": { + "DefaultGid": { + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "DefaultUid": { + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "MountPath": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^/.*", + "type": "string" + } + }, + "type": "object" + }, + "JupyterLabAppImageConfig": { + "additionalProperties": false, + "properties": { + "ContainerConfig": { + "$ref": "#/definitions/ContainerConfig" + } + }, + "type": "object" + }, + "KernelGatewayImageConfig": { + "additionalProperties": false, + "properties": { + "FileSystemConfig": { + "$ref": "#/definitions/FileSystemConfig" + }, + "KernelSpecs": { + "items": { + "$ref": "#/definitions/KernelSpec" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "KernelSpecs" + ], + "type": "object" + }, + "KernelSpec": { + "additionalProperties": false, + "properties": { + "DisplayName": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Name": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "sagemaker:CreateAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + }, + "delete": { + "permissions": [ + "sagemaker:DeleteAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + }, + "list": { + "permissions": [ + "sagemaker:ListAppImageConfigs" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeAppImageConfig" + ] + }, + "update": { + "permissions": [ + "sagemaker:UpdateAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + } + }, + "primaryIdentifier": [ + "/properties/AppImageConfigName" + ], + "properties": { + "AppImageConfigArn": { + "maxLength": 256, + "minLength": 1, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:app-image-config/.*", + "type": "string" + }, + "AppImageConfigName": { + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", + "type": "string" + }, + "JupyterLabAppImageConfig": { + "$ref": "#/definitions/JupyterLabAppImageConfig" + }, + "KernelGatewayImageConfig": { + "$ref": "#/definitions/KernelGatewayImageConfig" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/AppImageConfigArn" + ], + "required": [ + "AppImageConfigName" + ], + "typeName": "AWS::SageMaker::AppImageConfig", + "writeOnlyProperties": [ + "/properties/Tags" + ] +} diff --git a/src/cfnlint/data/schemas/providers/cn_north_1/aws-sagemaker-domain.json b/src/cfnlint/data/schemas/providers/cn_north_1/aws-sagemaker-domain.json new file mode 100644 index 0000000000..e57c036025 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/cn_north_1/aws-sagemaker-domain.json @@ -0,0 +1,739 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AuthMode", + "/properties/DomainName", + "/properties/DomainSettings/RStudioServerProDomainSettings/DefaultResourceSpec", + "/properties/KmsKeyId", + "/properties/VpcId", + "/properties/Tags" + ], + "definitions": { + "CodeEditorAppSettings": { + "additionalProperties": false, + "properties": { + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + }, + "LifecycleConfigArns": { + "items": { + "$ref": "#/definitions/StudioLifecycleConfigArn" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "CodeRepository": { + "additionalProperties": false, + "properties": { + "RepositoryUrl": { + "maxLength": 256, + "pattern": "^https://([.\\-_a-zA-Z0-9]+/?){3,1016}$", + "type": "string" + } + }, + "required": [ + "RepositoryUrl" + ], + "type": "object" + }, + "CustomFileSystemConfig": { + "additionalProperties": false, + "properties": { + "EFSFileSystemConfig": { + "$ref": "#/definitions/EFSFileSystemConfig" + } + }, + "type": "object" + }, + "CustomImage": { + "additionalProperties": false, + "properties": { + "AppImageConfigName": { + "maxLength": 63, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", + "type": "string" + }, + "ImageName": { + "maxLength": 63, + "pattern": "^[a-zA-Z0-9]([-.]?[a-zA-Z0-9]){0,62}$", + "type": "string" + }, + "ImageVersionNumber": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "AppImageConfigName", + "ImageName" + ], + "type": "object" + }, + "CustomPosixUserConfig": { + "additionalProperties": false, + "properties": { + "Gid": { + "maximum": 4000000, + "minimum": 1001, + "type": "integer" + }, + "Uid": { + "maximum": 4000000, + "minimum": 10000, + "type": "integer" + } + }, + "required": [ + "Uid", + "Gid" + ], + "type": "object" + }, + "DefaultEbsStorageSettings": { + "additionalProperties": false, + "properties": { + "DefaultEbsVolumeSizeInGb": { + "$ref": "#/definitions/SpaceEbsVolumeSizeInGb" + }, + "MaximumEbsVolumeSizeInGb": { + "$ref": "#/definitions/SpaceEbsVolumeSizeInGb" + } + }, + "required": [ + "DefaultEbsVolumeSizeInGb", + "MaximumEbsVolumeSizeInGb" + ], + "type": "object" + }, + "DefaultSpaceSettings": { + "additionalProperties": false, + "properties": { + "ExecutionRole": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "JupyterServerAppSettings": { + "$ref": "#/definitions/JupyterServerAppSettings" + }, + "KernelGatewayAppSettings": { + "$ref": "#/definitions/KernelGatewayAppSettings" + }, + "SecurityGroups": { + "insertionOrder": false, + "items": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 5, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "ExecutionRole" + ], + "type": "object" + }, + "DefaultSpaceStorageSettings": { + "additionalProperties": false, + "properties": { + "DefaultEbsStorageSettings": { + "$ref": "#/definitions/DefaultEbsStorageSettings" + } + }, + "type": "object" + }, + "DockerSettings": { + "additionalProperties": false, + "properties": { + "EnableDockerAccess": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "VpcOnlyTrustedAccounts": { + "insertionOrder": false, + "items": { + "maxLength": 12, + "pattern": "^[0-9]$", + "type": "string" + }, + "maxItems": 10, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "DomainSettings": { + "additionalProperties": false, + "properties": { + "DockerSettings": { + "$ref": "#/definitions/DockerSettings" + }, + "RStudioServerProDomainSettings": { + "$ref": "#/definitions/RStudioServerProDomainSettings" + }, + "SecurityGroupIds": { + "insertionOrder": false, + "items": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 3, + "minItems": 1, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "EFSFileSystemConfig": { + "additionalProperties": false, + "properties": { + "FileSystemId": { + "maxLength": 21, + "minLength": 11, + "pattern": "^(fs-[0-9a-f]{8,})$", + "type": "string" + }, + "FileSystemPath": { + "maxLength": 256, + "minLength": 1, + "pattern": "^\\/\\S*$", + "type": "string" + } + }, + "required": [ + "FileSystemId" + ], + "type": "object" + }, + "JupyterLabAppSettings": { + "additionalProperties": false, + "properties": { + "CodeRepositories": { + "items": { + "$ref": "#/definitions/CodeRepository" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "CustomImages": { + "items": { + "$ref": "#/definitions/CustomImage" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + }, + "LifecycleConfigArns": { + "items": { + "$ref": "#/definitions/StudioLifecycleConfigArn" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "JupyterServerAppSettings": { + "additionalProperties": false, + "properties": { + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + } + }, + "type": "object" + }, + "KernelGatewayAppSettings": { + "additionalProperties": false, + "properties": { + "CustomImages": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/CustomImage" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + } + }, + "type": "object" + }, + "RSessionAppSettings": { + "additionalProperties": false, + "properties": { + "CustomImages": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/CustomImage" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + } + }, + "type": "object" + }, + "RStudioServerProAppSettings": { + "additionalProperties": false, + "properties": { + "AccessStatus": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "UserGroup": { + "enum": [ + "R_STUDIO_ADMIN", + "R_STUDIO_USER" + ], + "type": "string" + } + }, + "type": "object" + }, + "RStudioServerProDomainSettings": { + "additionalProperties": false, + "properties": { + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + }, + "DomainExecutionRoleArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "RStudioConnectUrl": { + "pattern": "^(https:|http:|www\\.)\\S*", + "type": "string" + }, + "RStudioPackageManagerUrl": { + "pattern": "^(https:|http:|www\\.)\\S*", + "type": "string" + } + }, + "required": [ + "DomainExecutionRoleArn" + ], + "type": "object" + }, + "ResourceSpec": { + "additionalProperties": false, + "properties": { + "InstanceType": { + "enum": [ + "system", + "ml.t3.micro", + "ml.t3.small", + "ml.t3.medium", + "ml.t3.large", + "ml.t3.xlarge", + "ml.t3.2xlarge", + "ml.m5.large", + "ml.m5.xlarge", + "ml.m5.2xlarge", + "ml.m5.4xlarge", + "ml.m5.8xlarge", + "ml.m5.12xlarge", + "ml.m5.16xlarge", + "ml.m5.24xlarge", + "ml.c5.large", + "ml.c5.xlarge", + "ml.c5.2xlarge", + "ml.c5.4xlarge", + "ml.c5.9xlarge", + "ml.c5.12xlarge", + "ml.c5.18xlarge", + "ml.c5.24xlarge", + "ml.p3.2xlarge", + "ml.p3.8xlarge", + "ml.p3.16xlarge", + "ml.g4dn.xlarge", + "ml.g4dn.2xlarge", + "ml.g4dn.4xlarge", + "ml.g4dn.8xlarge", + "ml.g4dn.12xlarge", + "ml.g4dn.16xlarge", + "ml.r5.large", + "ml.r5.xlarge", + "ml.r5.2xlarge", + "ml.r5.4xlarge", + "ml.r5.8xlarge", + "ml.r5.12xlarge", + "ml.r5.16xlarge", + "ml.r5.24xlarge", + "ml.p3dn.24xlarge", + "ml.m5d.large", + "ml.m5d.xlarge", + "ml.m5d.2xlarge", + "ml.m5d.4xlarge", + "ml.m5d.8xlarge", + "ml.m5d.12xlarge", + "ml.m5d.16xlarge", + "ml.m5d.24xlarge", + "ml.g5.xlarge", + "ml.g5.2xlarge", + "ml.g5.4xlarge", + "ml.g5.8xlarge", + "ml.g5.12xlarge", + "ml.g5.16xlarge", + "ml.g5.24xlarge", + "ml.g5.48xlarge", + "ml.p4d.24xlarge", + "ml.p4de.24xlarge", + "ml.geospatial.interactive", + "ml.trn1.2xlarge", + "ml.trn1.32xlarge", + "ml.trn1n.32xlarge" + ], + "type": "string" + }, + "LifecycleConfigArn": { + "maxLength": 256, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:studio-lifecycle-config/.*", + "type": "string" + }, + "SageMakerImageArn": { + "maxLength": 256, + "pattern": "^arn:aws(-[\\w]+)*:sagemaker:.+:[0-9]{12}:image/[a-z0-9]([-.]?[a-z0-9])*$", + "type": "string" + }, + "SageMakerImageVersionArn": { + "maxLength": 256, + "pattern": "^arn:aws(-[\\w]+)*:sagemaker:.+:[0-9]{12}:image-version/[a-z0-9]([-.]?[a-z0-9])*/[0-9]+$", + "type": "string" + } + }, + "type": "object" + }, + "SharingSettings": { + "additionalProperties": false, + "properties": { + "NotebookOutputOption": { + "enum": [ + "Allowed", + "Disabled" + ], + "type": "string" + }, + "S3KmsKeyId": { + "maxLength": 2048, + "pattern": ".*", + "type": "string" + }, + "S3OutputPath": { + "maxLength": 1024, + "pattern": "^(https|s3)://([^/]+)/?(.*)$", + "type": "string" + } + }, + "type": "object" + }, + "SpaceEbsVolumeSizeInGb": { + "maximum": 16384, + "minimum": 5, + "type": "integer" + }, + "StudioLifecycleConfigArn": { + "maxLength": 256, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:studio-lifecycle-config/.*", + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "UserSettings": { + "additionalProperties": false, + "properties": { + "CodeEditorAppSettings": { + "$ref": "#/definitions/CodeEditorAppSettings" + }, + "CustomFileSystemConfigs": { + "items": { + "$ref": "#/definitions/CustomFileSystemConfig" + }, + "maxItems": 2, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "CustomPosixUserConfig": { + "$ref": "#/definitions/CustomPosixUserConfig" + }, + "DefaultLandingUri": { + "maxLength": 1023, + "type": "string" + }, + "ExecutionRole": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "JupyterLabAppSettings": { + "$ref": "#/definitions/JupyterLabAppSettings" + }, + "JupyterServerAppSettings": { + "$ref": "#/definitions/JupyterServerAppSettings" + }, + "KernelGatewayAppSettings": { + "$ref": "#/definitions/KernelGatewayAppSettings" + }, + "RSessionAppSettings": { + "$ref": "#/definitions/RSessionAppSettings" + }, + "RStudioServerProAppSettings": { + "$ref": "#/definitions/RStudioServerProAppSettings" + }, + "SecurityGroups": { + "insertionOrder": false, + "items": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 5, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "SharingSettings": { + "$ref": "#/definitions/SharingSettings" + }, + "SpaceStorageSettings": { + "$ref": "#/definitions/DefaultSpaceStorageSettings" + }, + "StudioWebPortal": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + } + }, + "required": [ + "ExecutionRole" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "sagemaker:CreateApp", + "sagemaker:CreateDomain", + "sagemaker:DescribeDomain", + "sagemaker:DescribeImage", + "sagemaker:DescribeImageVersion", + "iam:CreateServiceLinkedRole", + "iam:PassRole", + "efs:CreateFileSystem", + "kms:CreateGrant", + "kms:Decrypt", + "kms:DescribeKey", + "kms:GenerateDataKeyWithoutPlainText" + ] + }, + "delete": { + "permissions": [ + "sagemaker:DeleteApp", + "sagemaker:DeleteDomain", + "sagemaker:DescribeDomain" + ] + }, + "list": { + "permissions": [ + "sagemaker:ListDomains" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeDomain" + ] + }, + "update": { + "permissions": [ + "sagemaker:CreateApp", + "sagemaker:UpdateDomain", + "sagemaker:DescribeDomain", + "sagemaker:DescribeImage", + "sagemaker:DescribeImageVersion", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/DomainId" + ], + "properties": { + "AppNetworkAccessType": { + "enum": [ + "PublicInternetOnly", + "VpcOnly" + ], + "type": "string" + }, + "AppSecurityGroupManagement": { + "enum": [ + "Service", + "Customer" + ], + "type": "string" + }, + "AuthMode": { + "enum": [ + "SSO", + "IAM" + ], + "type": "string" + }, + "DefaultSpaceSettings": { + "$ref": "#/definitions/DefaultSpaceSettings" + }, + "DefaultUserSettings": { + "$ref": "#/definitions/UserSettings" + }, + "DomainArn": { + "maxLength": 256, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:domain/.*", + "type": "string" + }, + "DomainId": { + "maxLength": 63, + "pattern": "^d-(-*[a-z0-9])+", + "type": "string" + }, + "DomainName": { + "maxLength": 63, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", + "type": "string" + }, + "DomainSettings": { + "$ref": "#/definitions/DomainSettings" + }, + "HomeEfsFileSystemId": { + "maxLength": 32, + "type": "string" + }, + "KmsKeyId": { + "maxLength": 2048, + "pattern": ".*", + "type": "string" + }, + "SecurityGroupIdForDomainBoundary": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "SingleSignOnApplicationArn": { + "pattern": "^arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):sso::[0-9]+:application/[a-zA-Z0-9-_.]+/apl-[a-zA-Z0-9]+$", + "type": "string" + }, + "SingleSignOnManagedApplicationInstanceId": { + "maxLength": 256, + "type": "string" + }, + "SubnetIds": { + "insertionOrder": false, + "items": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 16, + "minItems": 1, + "type": "array", + "uniqueItems": false + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "Url": { + "maxLength": 1024, + "type": "string" + }, + "VpcId": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/DomainArn", + "/properties/Url", + "/properties/DomainId", + "/properties/HomeEfsFileSystemId", + "/properties/SecurityGroupIdForDomainBoundary", + "/properties/SingleSignOnManagedApplicationInstanceId", + "/properties/SingleSignOnApplicationArn" + ], + "required": [ + "AuthMode", + "DefaultUserSettings", + "DomainName", + "SubnetIds", + "VpcId" + ], + "typeName": "AWS::SageMaker::Domain", + "writeOnlyProperties": [ + "/properties/Tags" + ] +} diff --git a/src/cfnlint/data/schemas/providers/cn_north_1/aws-sagemaker-userprofile.json b/src/cfnlint/data/schemas/providers/cn_north_1/aws-sagemaker-userprofile.json new file mode 100644 index 0000000000..d0f8848903 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/cn_north_1/aws-sagemaker-userprofile.json @@ -0,0 +1,524 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DomainId", + "/properties/UserProfileName", + "/properties/SingleSignOnUserIdentifier", + "/properties/SingleSignOnUserValue", + "/properties/UserSettings/RStudioServerProAppSettings/AccessStatus", + "/properties/UserSettings/RStudioServerProAppSettings/UserGroup", + "/properties/Tags" + ], + "definitions": { + "CodeEditorAppSettings": { + "additionalProperties": false, + "properties": { + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + }, + "LifecycleConfigArns": { + "items": { + "$ref": "#/definitions/StudioLifecycleConfigArn" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "CodeRepository": { + "additionalProperties": false, + "properties": { + "RepositoryUrl": { + "maxLength": 256, + "pattern": "^https://([.\\-_a-zA-Z0-9]+/?){3,1016}$", + "type": "string" + } + }, + "required": [ + "RepositoryUrl" + ], + "type": "object" + }, + "CustomFileSystemConfig": { + "additionalProperties": false, + "properties": { + "EFSFileSystemConfig": { + "$ref": "#/definitions/EFSFileSystemConfig" + } + }, + "type": "object" + }, + "CustomImage": { + "additionalProperties": false, + "properties": { + "AppImageConfigName": { + "maxLength": 63, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", + "type": "string" + }, + "ImageName": { + "maxLength": 63, + "pattern": "^[a-zA-Z0-9]([-.]?[a-zA-Z0-9]){0,62}$", + "type": "string" + }, + "ImageVersionNumber": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "AppImageConfigName", + "ImageName" + ], + "type": "object" + }, + "CustomPosixUserConfig": { + "additionalProperties": false, + "properties": { + "Gid": { + "maximum": 4000000, + "minimum": 1001, + "type": "integer" + }, + "Uid": { + "maximum": 4000000, + "minimum": 10000, + "type": "integer" + } + }, + "required": [ + "Uid", + "Gid" + ], + "type": "object" + }, + "DefaultEbsStorageSettings": { + "additionalProperties": false, + "properties": { + "DefaultEbsVolumeSizeInGb": { + "$ref": "#/definitions/SpaceEbsVolumeSizeInGb" + }, + "MaximumEbsVolumeSizeInGb": { + "$ref": "#/definitions/SpaceEbsVolumeSizeInGb" + } + }, + "required": [ + "DefaultEbsVolumeSizeInGb", + "MaximumEbsVolumeSizeInGb" + ], + "type": "object" + }, + "DefaultSpaceStorageSettings": { + "additionalProperties": false, + "properties": { + "DefaultEbsStorageSettings": { + "$ref": "#/definitions/DefaultEbsStorageSettings" + } + }, + "type": "object" + }, + "EFSFileSystemConfig": { + "additionalProperties": false, + "properties": { + "FileSystemId": { + "maxLength": 21, + "minLength": 11, + "pattern": "^(fs-[0-9a-f]{8,})$", + "type": "string" + }, + "FileSystemPath": { + "maxLength": 256, + "minLength": 1, + "pattern": "^\\/\\S*$", + "type": "string" + } + }, + "required": [ + "FileSystemId" + ], + "type": "object" + }, + "JupyterLabAppSettings": { + "additionalProperties": false, + "properties": { + "CodeRepositories": { + "items": { + "$ref": "#/definitions/CodeRepository" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "CustomImages": { + "items": { + "$ref": "#/definitions/CustomImage" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + }, + "LifecycleConfigArns": { + "items": { + "$ref": "#/definitions/StudioLifecycleConfigArn" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "JupyterServerAppSettings": { + "additionalProperties": false, + "properties": { + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + } + }, + "type": "object" + }, + "KernelGatewayAppSettings": { + "additionalProperties": false, + "properties": { + "CustomImages": { + "items": { + "$ref": "#/definitions/CustomImage" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + } + }, + "type": "object" + }, + "RStudioServerProAppSettings": { + "additionalProperties": false, + "properties": { + "AccessStatus": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "UserGroup": { + "enum": [ + "R_STUDIO_ADMIN", + "R_STUDIO_USER" + ], + "type": "string" + } + }, + "type": "object" + }, + "ResourceSpec": { + "additionalProperties": false, + "properties": { + "InstanceType": { + "enum": [ + "system", + "ml.t3.micro", + "ml.t3.small", + "ml.t3.medium", + "ml.t3.large", + "ml.t3.xlarge", + "ml.t3.2xlarge", + "ml.m5.large", + "ml.m5.xlarge", + "ml.m5.2xlarge", + "ml.m5.4xlarge", + "ml.m5.8xlarge", + "ml.m5.12xlarge", + "ml.m5.16xlarge", + "ml.m5.24xlarge", + "ml.c5.large", + "ml.c5.xlarge", + "ml.c5.2xlarge", + "ml.c5.4xlarge", + "ml.c5.9xlarge", + "ml.c5.12xlarge", + "ml.c5.18xlarge", + "ml.c5.24xlarge", + "ml.p3.2xlarge", + "ml.p3.8xlarge", + "ml.p3.16xlarge", + "ml.g4dn.xlarge", + "ml.g4dn.2xlarge", + "ml.g4dn.4xlarge", + "ml.g4dn.8xlarge", + "ml.g4dn.12xlarge", + "ml.g4dn.16xlarge", + "ml.r5.large", + "ml.r5.xlarge", + "ml.r5.2xlarge", + "ml.r5.4xlarge", + "ml.r5.8xlarge", + "ml.r5.12xlarge", + "ml.r5.16xlarge", + "ml.r5.24xlarge", + "ml.p3dn.24xlarge", + "ml.m5d.large", + "ml.m5d.xlarge", + "ml.m5d.2xlarge", + "ml.m5d.4xlarge", + "ml.m5d.8xlarge", + "ml.m5d.12xlarge", + "ml.m5d.16xlarge", + "ml.m5d.24xlarge", + "ml.g5.xlarge", + "ml.g5.2xlarge", + "ml.g5.4xlarge", + "ml.g5.8xlarge", + "ml.g5.12xlarge", + "ml.g5.16xlarge", + "ml.g5.24xlarge", + "ml.g5.48xlarge", + "ml.p4d.24xlarge", + "ml.p4de.24xlarge", + "ml.geospatial.interactive", + "ml.trn1.2xlarge", + "ml.trn1.32xlarge", + "ml.trn1n.32xlarge" + ], + "type": "string" + }, + "SageMakerImageArn": { + "maxLength": 256, + "pattern": "^arn:aws(-[\\w]+)*:sagemaker:.+:[0-9]{12}:image/[a-z0-9]([-.]?[a-z0-9])*$", + "type": "string" + }, + "SageMakerImageVersionArn": { + "maxLength": 256, + "pattern": "^arn:aws(-[\\w]+)*:sagemaker:.+:[0-9]{12}:image-version/[a-z0-9]([-.]?[a-z0-9])*/[0-9]+$", + "type": "string" + } + }, + "type": "object" + }, + "SharingSettings": { + "additionalProperties": false, + "properties": { + "NotebookOutputOption": { + "enum": [ + "Allowed", + "Disabled" + ], + "type": "string" + }, + "S3KmsKeyId": { + "maxLength": 2048, + "pattern": ".*", + "type": "string" + }, + "S3OutputPath": { + "maxLength": 1024, + "pattern": "^(https|s3)://([^/]+)/?(.*)$", + "type": "string" + } + }, + "type": "object" + }, + "SpaceEbsVolumeSizeInGb": { + "maximum": 16384, + "minimum": 5, + "type": "integer" + }, + "StudioLifecycleConfigArn": { + "maxLength": 256, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:studio-lifecycle-config/.*", + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "UserSettings": { + "additionalProperties": false, + "properties": { + "CodeEditorAppSettings": { + "$ref": "#/definitions/CodeEditorAppSettings" + }, + "CustomFileSystemConfigs": { + "items": { + "$ref": "#/definitions/CustomFileSystemConfig" + }, + "maxItems": 2, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "CustomPosixUserConfig": { + "$ref": "#/definitions/CustomPosixUserConfig" + }, + "DefaultLandingUri": { + "maxLength": 1023, + "type": "string" + }, + "ExecutionRole": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "JupyterLabAppSettings": { + "$ref": "#/definitions/JupyterLabAppSettings" + }, + "JupyterServerAppSettings": { + "$ref": "#/definitions/JupyterServerAppSettings" + }, + "KernelGatewayAppSettings": { + "$ref": "#/definitions/KernelGatewayAppSettings" + }, + "RStudioServerProAppSettings": { + "$ref": "#/definitions/RStudioServerProAppSettings" + }, + "SecurityGroups": { + "items": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 5, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "SharingSettings": { + "$ref": "#/definitions/SharingSettings" + }, + "SpaceStorageSettings": { + "$ref": "#/definitions/DefaultSpaceStorageSettings" + }, + "StudioWebPortal": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + } + }, + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "sagemaker:CreateUserProfile", + "sagemaker:DescribeUserProfile", + "sagemaker:DescribeImage", + "sagemaker:DescribeImageVersion", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "sagemaker:DeleteUserProfile", + "sagemaker:DescribeUserProfile" + ] + }, + "list": { + "permissions": [ + "sagemaker:ListUserProfiles" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeUserProfile" + ] + }, + "update": { + "permissions": [ + "sagemaker:UpdateUserProfile", + "sagemaker:DescribeUserProfile", + "sagemaker:DescribeImage", + "sagemaker:DescribeImageVersion", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/UserProfileName", + "/properties/DomainId" + ], + "properties": { + "DomainId": { + "maxLength": 63, + "minLength": 1, + "type": "string" + }, + "SingleSignOnUserIdentifier": { + "pattern": "UserName", + "type": "string" + }, + "SingleSignOnUserValue": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "UserProfileArn": { + "maxLength": 256, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:user-profile/.*", + "type": "string" + }, + "UserProfileName": { + "maxLength": 63, + "minLength": 1, + "type": "string" + }, + "UserSettings": { + "$ref": "#/definitions/UserSettings", + "maxItems": 50, + "minItems": 0, + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/UserProfileArn" + ], + "required": [ + "DomainId", + "UserProfileName" + ], + "typeName": "AWS::SageMaker::UserProfile", + "writeOnlyProperties": [ + "/properties/Tags" + ] +} diff --git a/src/cfnlint/data/schemas/providers/cn_north_1/aws-ssm-association.json b/src/cfnlint/data/schemas/providers/cn_north_1/aws-ssm-association.json deleted file mode 100644 index a5d36d67b7..0000000000 --- a/src/cfnlint/data/schemas/providers/cn_north_1/aws-ssm-association.json +++ /dev/null @@ -1,260 +0,0 @@ -{ - "additionalProperties": false, - "definitions": { - "InstanceAssociationOutputLocation": { - "additionalProperties": false, - "properties": { - "S3Location": { - "$ref": "#/definitions/S3OutputLocation" - } - }, - "type": "object" - }, - "ParameterValues": { - "items": { - "type": "string" - }, - "type": "array" - }, - "S3BucketName": { - "maxLength": 63, - "minLength": 3, - "type": "string" - }, - "S3KeyPrefix": { - "maxLength": 1024, - "type": "string" - }, - "S3OutputLocation": { - "additionalProperties": false, - "properties": { - "OutputS3BucketName": { - "$ref": "#/definitions/S3BucketName" - }, - "OutputS3KeyPrefix": { - "$ref": "#/definitions/S3KeyPrefix" - }, - "OutputS3Region": { - "$ref": "#/definitions/S3Region" - } - }, - "type": "object" - }, - "S3Region": { - "maxLength": 20, - "minLength": 3, - "type": "string" - }, - "Target": { - "additionalProperties": false, - "properties": { - "Key": { - "pattern": "^[\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]{1,128}$|resource-groups:Name", - "type": "string" - }, - "Values": { - "items": { - "type": "string" - }, - "maxItems": 50, - "minItems": 0, - "type": "array" - } - }, - "required": [ - "Key", - "Values" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "ec2:DescribeInstanceStatus", - "iam:PassRole", - "iam:CreateServiceLinkedRole", - "ssm:CreateAssociation", - "ssm:DescribeAssociation", - "ssm:GetCalendarState" - ] - }, - "delete": { - "permissions": [ - "ssm:DeleteAssociation" - ] - }, - "list": { - "permissions": [ - "ssm:ListAssociations" - ] - }, - "read": { - "permissions": [ - "ssm:DescribeAssociation", - "resource-groups:GetGroupQuery", - "resource-groups:ListGroups", - "resource-groups:ListGroupResources" - ] - }, - "update": { - "permissions": [ - "iam:PassRole", - "ssm:UpdateAssociation", - "ssm:GetCalendarState" - ] - } - }, - "primaryIdentifier": [ - "/properties/AssociationId" - ], - "properties": { - "ApplyOnlyAtCronInterval": { - "type": "boolean" - }, - "AssociationId": { - "examples": [ - "88df7b09-95e8-48c4-a3cb-08c2c20d5110", - "203dd0ec-0055-4bf0-a872-707f72ef06aa" - ], - "pattern": "[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}", - "type": "string" - }, - "AssociationName": { - "pattern": "^[a-zA-Z0-9_\\-.]{3,128}$", - "type": "string" - }, - "AutomationTargetParameterName": { - "maxLength": 50, - "minLength": 1, - "type": "string" - }, - "CalendarNames": { - "examples": [ - [ - "calendar1", - "calendar2" - ], - [ - "calendar3" - ] - ], - "items": { - "type": "string" - }, - "type": "array" - }, - "ComplianceSeverity": { - "enum": [ - "CRITICAL", - "HIGH", - "MEDIUM", - "LOW", - "UNSPECIFIED" - ], - "type": "string" - }, - "DocumentVersion": { - "pattern": "([$]LATEST|[$]DEFAULT|^[1-9][0-9]*$)", - "type": "string" - }, - "InstanceId": { - "examples": [ - "i-0e60836d21cf313c4", - "mi-0532c22e49636ee13" - ], - "pattern": "(^i-(\\w{8}|\\w{17})$)|(^mi-\\w{17}$)", - "type": "string" - }, - "MaxConcurrency": { - "examples": [ - "1%", - "10%", - "50%", - "1" - ], - "pattern": "^([1-9][0-9]{0,6}|[1-9][0-9]%|[1-9]%|100%)$", - "type": "string" - }, - "MaxErrors": { - "examples": [ - "1%", - "10%", - "50%", - "1" - ], - "pattern": "^([1-9][0-9]{0,6}|[0]|[1-9][0-9]%|[0-9]%|100%)$", - "type": "string" - }, - "Name": { - "examples": [ - "AWS-GatherSoftwareInventory", - "MyCustomSSMDocument" - ], - "pattern": "^[a-zA-Z0-9_\\-.:/]{3,200}$", - "type": "string" - }, - "OutputLocation": { - "$ref": "#/definitions/InstanceAssociationOutputLocation" - }, - "Parameters": { - "additionalProperties": false, - "patternProperties": { - ".{1,255}": { - "$ref": "#/definitions/ParameterValues" - } - }, - "type": "object" - }, - "ScheduleExpression": { - "examples": [ - "cron(0 0 */1 * * ? *)", - "cron(0 16 ? * TUE *)", - "rate(30 minutes)", - "rate(7 days)" - ], - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "ScheduleOffset": { - "maximum": 6, - "minimum": 1, - "type": "integer" - }, - "SyncCompliance": { - "enum": [ - "AUTO", - "MANUAL" - ], - "type": "string" - }, - "Targets": { - "items": { - "$ref": "#/definitions/Target" - }, - "maxItems": 5, - "minItems": 0, - "type": "array" - }, - "WaitForSuccessTimeoutSeconds": { - "maximum": 172800, - "minimum": 15, - "type": "integer" - } - }, - "readOnlyProperties": [ - "/properties/AssociationId" - ], - "required": [ - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ssm", - "tagging": { - "taggable": false - }, - "typeName": "AWS::SSM::Association", - "writeOnlyProperties": [ - "/properties/WaitForSuccessTimeoutSeconds" - ] -} diff --git a/src/cfnlint/data/schemas/providers/cn_northwest_1/__init__.py b/src/cfnlint/data/schemas/providers/cn_northwest_1/__init__.py index c11be18f78..50819196bd 100644 --- a/src/cfnlint/data/schemas/providers/cn_northwest_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/cn_northwest_1/__init__.py @@ -50,6 +50,7 @@ "AWS::AutoScaling::WarmPool", "AWS::ApplicationAutoScaling::ScalableTarget", "AWS::ApiGatewayV2::Model", + "AWS::Config::StoredQuery", "AWS::Neptune::DBSubnetGroup", "AWS::Cassandra::Keyspace", "AWS::Transfer::Server", @@ -85,9 +86,11 @@ "AWS::DataSync::LocationHDFS", "AWS::Events::Archive", "AWS::MSK::Cluster", + "AWS::SecurityHub::DelegatedAdmin", "AWS::EC2::VPCEndpointConnectionNotification", "AWS::CodePipeline::Pipeline", "AWS::OpsWorks::Instance", + "AWS::Config::ConfigurationAggregator", "AWS::ImageBuilder::ImagePipeline", "AWS::ElasticLoadBalancingV2::ListenerCertificate", "AWS::CloudFormation::ModuleVersion", @@ -252,6 +255,7 @@ "AWS::CodeBuild::Project", "AWS::EFS::FileSystem", "AWS::Logs::QueryDefinition", + "AWS::SecurityHub::ProductSubscription", "AWS::IAM::InstanceProfile", "AWS::IoT::BillingGroup", "AWS::DataSync::LocationNFS", @@ -445,6 +449,7 @@ "AWS::AppSync::GraphQLApi", "AWS::GameLift::MatchmakingRuleSet", "AWS::EC2::EgressOnlyInternetGateway", + "AWS::SecurityHub::Insight", "AWS::EC2::VPCCidrBlock", "AWS::GameLift::Script", "AWS::IAM::VirtualMFADevice", @@ -629,7 +634,6 @@ "aws-guardduty-filter.json", "aws-ecs-service.json", "aws-ram-resourceshare.json", - "aws-ec2-securitygroupegress.json", "aws-config-organizationconfigrule.json", "aws-glue-dataqualityruleset.json", "aws-config-configurationrecorder.json", @@ -640,7 +644,6 @@ "aws-apigateway-model.json", "aws-apigatewayv2-integrationresponse.json", "aws-ec2-networkacl.json", - "aws-lambda-eventsourcemapping.json", "aws-budgets-budgetsaction.json", "aws-logs-resourcepolicy.json", "aws-servicecatalog-launchnotificationconstraint.json", @@ -658,6 +661,7 @@ "aws-autoscaling-warmpool.json", "aws-applicationautoscaling-scalabletarget.json", "aws-apigatewayv2-model.json", + "aws-config-storedquery.json", "aws-neptune-dbsubnetgroup.json", "aws-cassandra-keyspace.json", "aws-transfer-server.json", @@ -691,9 +695,11 @@ "aws-datasync-locationhdfs.json", "aws-events-archive.json", "aws-msk-cluster.json", + "aws-securityhub-delegatedadmin.json", "aws-ec2-vpcendpointconnectionnotification.json", "aws-codepipeline-pipeline.json", "aws-opsworks-instance.json", + "aws-config-configurationaggregator.json", "aws-imagebuilder-imagepipeline.json", "aws-elasticloadbalancingv2-listenercertificate.json", "aws-cloudformation-moduleversion.json", @@ -709,6 +715,7 @@ "aws-glue-devendpoint.json", "aws-sagemaker-modelpackage.json", "aws-eventschemas-discoverer.json", + "aws-elasticache-usergroup.json", "aws-iot-thinggroup.json", "aws-imagebuilder-imagerecipe.json", "aws-iot-softwarepackage.json", @@ -754,8 +761,6 @@ "aws-waf-ipset.json", "aws-ec2-transitgatewaymulticastdomainassociation.json", "aws-waf-sizeconstraintset.json", - "aws-ec2-transitgatewayroutetableassociation.json", - "aws-appconfig-environment.json", "aws-imagebuilder-image.json", "aws-elasticache-securitygroupingress.json", "aws-wafregional-xssmatchset.json", @@ -826,6 +831,7 @@ "aws-ec2-transitgatewaymulticastgroupmember.json", "aws-ec2-volumeattachment.json", "aws-glue-securityconfiguration.json", + "aws-networkfirewall-tlsinspectionconfiguration.json", "aws-databrew-ruleset.json", "aws-gamelift-matchmakingconfiguration.json", "aws-applicationinsights-application.json", @@ -840,6 +846,7 @@ "aws-codebuild-project.json", "aws-efs-filesystem.json", "aws-logs-querydefinition.json", + "aws-securityhub-productsubscription.json", "aws-iam-instanceprofile.json", "aws-iot-billinggroup.json", "aws-datasync-locationnfs.json", @@ -960,7 +967,6 @@ "aws-appconfig-hostedconfigurationversion.json", "aws-datasync-locationefs.json", "aws-apigateway-resource.json", - "aws-sagemaker-appimageconfig.json", "aws-elasticloadbalancingv2-targetgroup.json", "aws-applicationautoscaling-scalingpolicy.json", "aws-pipes-pipe.json", @@ -969,6 +975,7 @@ "aws-lambda-layerversionpermission.json", "aws-secretsmanager-secret.json", "aws-route53resolver-resolverconfig.json", + "aws-elasticache-user.json", "aws-sagemaker-image.json", "aws-logs-subscriptionfilter.json", "aws-codedeploy-application.json", @@ -1013,7 +1020,7 @@ "aws-appsync-graphqlapi.json", "aws-gamelift-matchmakingruleset.json", "aws-ec2-egressonlyinternetgateway.json", - "aws-ec2-vpccidrblock.json", + "aws-securityhub-insight.json", "aws-gamelift-script.json", "aws-iam-virtualmfadevice.json", "aws-athena-preparedstatement.json", @@ -1021,6 +1028,7 @@ "aws-apigatewayv2-route.json", "aws-ec2-vpcendpoint.json", "aws-rds-eventsubscription.json", + "aws-config-aggregationauthorization.json", "aws-datasync-agent.json", "aws-iot-dimension.json", "aws-logs-loggroup.json", @@ -1060,6 +1068,7 @@ "aws-iot-accountauditconfiguration.json", "aws-sagemaker-userprofile.json", "aws-ec2-prefixlist.json", + "aws-ec2-instance.json", "aws-ec2-subnetcidrblock.json", "aws-elasticbeanstalk-applicationversion.json", "aws-appmesh-virtualgateway.json", @@ -1067,6 +1076,7 @@ "aws-ec2-flowlog.json", "aws-amazonmq-broker.json", "aws-emr-step.json", + "aws-ssm-association.json", "aws-cloudfront-responseheaderspolicy.json", "aws-securityhub-automationrule.json", "aws-msk-clusterpolicy.json", @@ -1083,6 +1093,7 @@ "aws-apigateway-gatewayresponse.json", "aws-fsx-volume.json", "aws-workspaces-workspace.json", + "aws-emr-studio.json", "aws-ec2-instanceconnectendpoint.json", "aws-dax-parametergroup.json", "aws-directoryservice-microsoftad.json", diff --git a/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-appconfig-environment.json b/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-appconfig-environment.json new file mode 100644 index 0000000000..1b1444bd23 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-appconfig-environment.json @@ -0,0 +1,152 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationId" + ], + "definitions": { + "Monitor": { + "additionalProperties": false, + "properties": { + "AlarmArn": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "AlarmRoleArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^((arn):(aws|aws-cn|aws-iso|aws-iso-[a-z]{1}|aws-us-gov):(iam)::\\d{12}:role[/].*)$", + "type": "string" + } + }, + "required": [ + "AlarmArn" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:.)[a-zA-Z1-9+=._:/-]*$", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "appconfig:CreateEnvironment", + "appconfig:GetEnvironment", + "appconfig:ListTagsForResource", + "appconfig:TagResource", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "appconfig:GetEnvironment", + "appconfig:DeleteEnvironment" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ApplicationId": { + "$ref": "resource-schema.json#/properties/ApplicationId" + } + }, + "required": [ + "ApplicationId" + ] + }, + "permissions": [ + "appconfig:ListEnvironments" + ] + }, + "read": { + "permissions": [ + "appconfig:GetEnvironment", + "appconfig:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "appconfig:UpdateEnvironment", + "appconfig:TagResource", + "appconfig:UntagResource", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/ApplicationId", + "/properties/EnvironmentId" + ], + "properties": { + "ApplicationId": { + "pattern": "[a-z0-9]{4,7}", + "type": "string" + }, + "Description": { + "maxLength": 1024, + "minLength": 0, + "type": "string" + }, + "EnvironmentId": { + "pattern": "[a-z0-9]{4,7}", + "type": "string" + }, + "Monitors": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Monitor" + }, + "maxItems": 5, + "minItems": 0, + "type": "array" + }, + "Name": { + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/EnvironmentId" + ], + "required": [ + "Name", + "ApplicationId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-appconfig.git", + "tagging": { + "cloudFormationSystemTags": true, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::AppConfig::Environment" +} diff --git a/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-config-aggregationauthorization.json b/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-config-aggregationauthorization.json deleted file mode 100644 index e380c485b5..0000000000 --- a/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-config-aggregationauthorization.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AuthorizedAwsRegion", - "/properties/AuthorizedAccountId" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AuthorizedAccountId": { - "type": "string" - }, - "AuthorizedAwsRegion": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "AuthorizedAccountId", - "AuthorizedAwsRegion" - ], - "typeName": "AWS::Config::AggregationAuthorization" -} diff --git a/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-dynamodb-globaltable.json b/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-dynamodb-globaltable.json index 4e5ba995cb..ae37e9142b 100644 --- a/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-dynamodb-globaltable.json +++ b/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-dynamodb-globaltable.json @@ -8,6 +8,27 @@ ] ], "additionalProperties": false, + "allOf": [ + { + "if": { + "required": [ + "LocalSecondaryIndexes" + ], + "type": "object" + }, + "then": { + "properties": { + "AttributeDefinitions": { + "minItems": 2 + }, + "KeySchema": { + "minItems": 2 + } + }, + "type": "object" + } + } + ], "createOnlyProperties": [ "/properties/LocalSecondaryIndexes", "/properties/TableName", @@ -79,13 +100,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "minItems": 1, - "type": "array", - "uniqueItems": true + "minItems": 1 }, "Projection": { "$ref": "#/definitions/Projection" @@ -102,22 +119,60 @@ "type": "object" }, "KeySchema": { - "additionalProperties": false, - "properties": { - "AttributeName": { - "maxLength": 255, - "minLength": 1, - "type": "string" + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "KeyType": { + "enum": [ + "HASH", + "RANGE" + ], + "type": "string" + } }, - "KeyType": { - "type": "string" - } + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" }, - "required": [ - "KeyType", - "AttributeName" + "prefixItems": [ + { + "additionalProperties": false, + "properties": { + "KeyType": { + "const": "HASH", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + }, + { + "properties": { + "KeyType": { + "const": "RANGE", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + } ], - "type": "object" + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "KinesisStreamSpecification": { "additionalProperties": false, @@ -147,12 +202,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "type": "array", - "uniqueItems": true + "minItems": 2 }, "Projection": { "$ref": "#/definitions/Projection" @@ -511,7 +563,10 @@ }, "minItems": 1, "type": "array", - "uniqueItems": true + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "BillingMode": { "type": "string" @@ -525,13 +580,9 @@ "uniqueItems": true }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "minItems": 1, - "type": "array", - "uniqueItems": true + "minItems": 1 }, "LocalSecondaryIndexes": { "insertionOrder": false, diff --git a/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-dynamodb-table.json b/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-dynamodb-table.json index efc82f1d70..f21d084b10 100644 --- a/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-dynamodb-table.json +++ b/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-dynamodb-table.json @@ -1,5 +1,26 @@ { "additionalProperties": false, + "allOf": [ + { + "if": { + "required": [ + "LocalSecondaryIndexes" + ], + "type": "object" + }, + "then": { + "properties": { + "AttributeDefinitions": { + "minItems": 2 + }, + "KeySchema": { + "minItems": 2 + } + }, + "type": "object" + } + } + ], "cfnLint": [ "AWS::DynamoDB::Table/Properties" ], @@ -95,11 +116,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 }, "Projection": { "$ref": "#/definitions/Projection" @@ -147,24 +166,57 @@ "type": "object" }, "KeySchema": { - "additionalProperties": false, - "properties": { - "AttributeName": { - "type": "string" + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "type": "string" + }, + "KeyType": { + "enum": [ + "HASH", + "RANGE" + ], + "type": "string" + } }, - "KeyType": { - "enum": [ - "HASH", - "RANGE" + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" + }, + "prefixItems": [ + { + "properties": { + "KeyType": { + "const": "HASH", + "type": "string" + } + }, + "required": [ + "KeyType" ], - "type": "string" + "type": "object" + }, + { + "properties": { + "KeyType": { + "const": "RANGE", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" } - }, - "required": [ - "KeyType", - "AttributeName" ], - "type": "object" + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "KinesisStreamSpecification": { "additionalProperties": false, @@ -192,11 +244,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 2 }, "Projection": { "$ref": "#/definitions/Projection" @@ -451,7 +501,10 @@ "$ref": "#/definitions/AttributeDefinition" }, "type": "array", - "uniqueItems": true + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "BillingMode": { "enum": [ @@ -479,11 +532,9 @@ "KeySchema": { "oneOf": [ { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 }, { "type": "object" diff --git a/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-ec2-instance.json b/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-ec2-instance.json deleted file mode 100644 index 7b3bfed595..0000000000 --- a/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-ec2-instance.json +++ /dev/null @@ -1,571 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ElasticGpuSpecifications", - "/properties/Ipv6Addresses", - "/properties/PlacementGroupName", - "/properties/HostResourceGroupArn", - "/properties/ImageId", - "/properties/CpuOptions", - "/properties/PrivateIpAddress", - "/properties/ElasticInferenceAccelerators", - "/properties/EnclaveOptions", - "/properties/HibernationOptions", - "/properties/KeyName", - "/properties/LicenseSpecifications", - "/properties/NetworkInterfaces", - "/properties/AvailabilityZone", - "/properties/SubnetId", - "/properties/LaunchTemplate", - "/properties/SecurityGroups", - "/properties/Ipv6AddressCount" - ], - "definitions": { - "AssociationParameter": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "BlockDeviceMapping": { - "additionalProperties": false, - "properties": { - "DeviceName": { - "type": "string" - }, - "Ebs": { - "$ref": "#/definitions/Ebs" - }, - "NoDevice": { - "$ref": "#/definitions/NoDevice" - }, - "VirtualName": { - "type": "string" - } - }, - "required": [ - "DeviceName" - ], - "requiredXor": [ - "VirtualName", - "Ebs", - "NoDevice" - ], - "type": "object" - }, - "CpuOptions": { - "additionalProperties": false, - "properties": { - "CoreCount": { - "type": "integer" - }, - "ThreadsPerCore": { - "type": "integer" - } - }, - "type": "object" - }, - "CreditSpecification": { - "additionalProperties": false, - "properties": { - "CPUCredits": { - "type": "string" - } - }, - "type": "object" - }, - "Ebs": { - "additionalProperties": false, - "properties": { - "DeleteOnTermination": { - "type": "boolean" - }, - "Encrypted": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "KmsKeyId": { - "type": "string" - }, - "SnapshotId": { - "type": "string" - }, - "VolumeSize": { - "type": "integer" - }, - "VolumeType": { - "type": "string" - } - }, - "type": "object" - }, - "ElasticGpuSpecification": { - "additionalProperties": false, - "properties": { - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "ElasticInferenceAccelerator": { - "additionalProperties": false, - "properties": { - "Count": { - "type": "integer" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "EnclaveOptions": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - } - }, - "type": "object" - }, - "HibernationOptions": { - "additionalProperties": false, - "properties": { - "Configured": { - "type": "boolean" - } - }, - "type": "object" - }, - "InstanceIpv6Address": { - "additionalProperties": false, - "properties": { - "Ipv6Address": { - "type": "string" - } - }, - "required": [ - "Ipv6Address" - ], - "type": "object" - }, - "LaunchTemplateSpecification": { - "additionalProperties": false, - "properties": { - "LaunchTemplateId": { - "type": "string" - }, - "LaunchTemplateName": { - "type": "string" - }, - "Version": { - "type": "string" - } - }, - "required": [ - "Version" - ], - "type": "object" - }, - "LicenseSpecification": { - "additionalProperties": false, - "properties": { - "LicenseConfigurationArn": { - "type": "string" - } - }, - "required": [ - "LicenseConfigurationArn" - ], - "type": "object" - }, - "NetworkInterface": { - "additionalProperties": false, - "properties": { - "AssociateCarrierIpAddress": { - "type": "boolean" - }, - "AssociatePublicIpAddress": { - "type": "boolean" - }, - "DeleteOnTermination": { - "type": "boolean" - }, - "Description": { - "type": "string" - }, - "DeviceIndex": { - "type": "string" - }, - "GroupSet": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": false - }, - "NetworkInterfaceId": { - "type": "string" - }, - "PrivateIpAddress": { - "type": "string" - }, - "PrivateIpAddresses": { - "items": { - "$ref": "#/definitions/PrivateIpAddressSpecification" - }, - "type": "array", - "uniqueItems": false - }, - "SecondaryPrivateIpAddressCount": { - "type": "integer" - }, - "SubnetId": { - "type": "string" - } - }, - "required": [ - "DeviceIndex" - ], - "type": "object" - }, - "NoDevice": { - "additionalProperties": false, - "type": "object" - }, - "PrivateDnsNameOptions": { - "additionalProperties": false, - "properties": { - "EnableResourceNameDnsAAAARecord": { - "type": "boolean" - }, - "EnableResourceNameDnsARecord": { - "type": "boolean" - }, - "HostnameType": { - "type": "string" - } - }, - "type": "object" - }, - "PrivateIpAddressSpecification": { - "additionalProperties": false, - "properties": { - "Primary": { - "type": "boolean" - }, - "PrivateIpAddress": { - "type": "string" - } - }, - "required": [ - "PrivateIpAddress", - "Primary" - ], - "type": "object" - }, - "SsmAssociation": { - "additionalProperties": false, - "properties": { - "AssociationParameters": { - "items": { - "$ref": "#/definitions/AssociationParameter" - }, - "type": "array", - "uniqueItems": false - }, - "DocumentName": { - "type": "string" - } - }, - "required": [ - "DocumentName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "Volume": { - "additionalProperties": false, - "properties": { - "Device": { - "type": "string" - }, - "VolumeId": { - "type": "string" - } - }, - "required": [ - "VolumeId", - "Device" - ], - "type": "object" - } - }, - "dependentExcluded": { - "NetworkInterfaces": [ - "SubnetId" - ], - "SubnetId": [ - "NetworkInterfaces" - ] - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AdditionalInfo": { - "type": "string" - }, - "Affinity": { - "enum": [ - "default", - "host" - ], - "type": "string" - }, - "AvailabilityZone": { - "cfnLint": [ - "AWS::EC2::Instance/Properties/AvailabilityZone" - ], - "type": "string" - }, - "BlockDeviceMappings": { - "items": { - "$ref": "#/definitions/BlockDeviceMapping" - }, - "type": "array", - "uniqueItems": false - }, - "CpuOptions": { - "$ref": "#/definitions/CpuOptions" - }, - "CreditSpecification": { - "$ref": "#/definitions/CreditSpecification" - }, - "DisableApiTermination": { - "type": "boolean" - }, - "EbsOptimized": { - "type": "boolean" - }, - "ElasticGpuSpecifications": { - "items": { - "$ref": "#/definitions/ElasticGpuSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "ElasticInferenceAccelerators": { - "items": { - "$ref": "#/definitions/ElasticInferenceAccelerator" - }, - "type": "array", - "uniqueItems": true - }, - "EnclaveOptions": { - "$ref": "#/definitions/EnclaveOptions" - }, - "HibernationOptions": { - "$ref": "#/definitions/HibernationOptions" - }, - "HostId": { - "type": "string" - }, - "HostResourceGroupArn": { - "type": "string" - }, - "IamInstanceProfile": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "ImageId": { - "type": "string" - }, - "InstanceInitiatedShutdownBehavior": { - "type": "string" - }, - "InstanceType": { - "cfnLint": [ - "AWS::EC2::Instance/Properties/InstanceType" - ], - "type": "string" - }, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": false - }, - "KernelId": { - "type": "string" - }, - "KeyName": { - "type": "string" - }, - "LaunchTemplate": { - "$ref": "#/definitions/LaunchTemplateSpecification" - }, - "LicenseSpecifications": { - "items": { - "$ref": "#/definitions/LicenseSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "Monitoring": { - "type": "boolean" - }, - "NetworkInterfaces": { - "items": { - "$ref": "#/definitions/NetworkInterface" - }, - "type": "array", - "uniqueItems": false - }, - "PlacementGroupName": { - "type": "string" - }, - "PrivateDnsName": { - "type": "string" - }, - "PrivateDnsNameOptions": { - "$ref": "#/definitions/PrivateDnsNameOptions" - }, - "PrivateIp": { - "type": "string" - }, - "PrivateIpAddress": { - "type": "string" - }, - "PropagateTagsToVolumeOnCreation": { - "type": "boolean" - }, - "PublicDnsName": { - "type": "string" - }, - "PublicIp": { - "type": "string" - }, - "RamdiskId": { - "type": "string" - }, - "SecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SecurityGroups": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SourceDestCheck": { - "type": "boolean" - }, - "SsmAssociations": { - "items": { - "$ref": "#/definitions/SsmAssociation" - }, - "type": "array", - "uniqueItems": false - }, - "SubnetId": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "Tenancy": { - "enum": [ - "default", - "dedicated", - "host" - ], - "type": "string" - }, - "UserData": { - "type": "string" - }, - "Volumes": { - "items": { - "$ref": "#/definitions/Volume" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/PublicIp", - "/properties/Id", - "/properties/PublicDnsName", - "/properties/PrivateDnsName", - "/properties/PrivateIp" - ], - "requiredXor": [ - "ImageId", - "LaunchTemplate" - ], - "typeName": "AWS::EC2::Instance" -} diff --git a/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-ec2-securitygroupegress.json b/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-ec2-securitygroupegress.json new file mode 100644 index 0000000000..f94631dad2 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-ec2-securitygroupegress.json @@ -0,0 +1,98 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::EC2::SecurityGroupEgress/Properties" + ], + "createOnlyProperties": [ + "/properties/IpProtocol", + "/properties/DestinationSecurityGroupId", + "/properties/ToPort", + "/properties/CidrIp", + "/properties/FromPort", + "/properties/GroupId", + "/properties/CidrIpv6", + "/properties/DestinationPrefixListId" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:AuthorizeSecurityGroupEgress", + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "delete": { + "permissions": [ + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "update": { + "permissions": [ + "ec2:UpdateSecurityGroupRuleDescriptionsEgress" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CidrIp": { + "type": "string" + }, + "CidrIpv6": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "DestinationPrefixListId": { + "type": "string" + }, + "DestinationSecurityGroupId": { + "type": "string" + }, + "FromPort": { + "minimum": -1, + "type": "integer" + }, + "GroupId": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "IpProtocol": { + "type": "string" + }, + "ToPort": { + "minimum": -1, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IpProtocol", + "GroupId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SecurityGroupEgress" +} diff --git a/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-ec2-transitgatewayroutetableassociation.json b/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-ec2-transitgatewayroutetableassociation.json new file mode 100644 index 0000000000..890b2c4be2 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-ec2-transitgatewayroutetableassociation.json @@ -0,0 +1,29 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TransitGatewayRouteTableId", + "/properties/TransitGatewayAttachmentId" + ], + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "type": "string" + }, + "TransitGatewayAttachmentId": { + "type": "string" + }, + "TransitGatewayRouteTableId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "TransitGatewayRouteTableId", + "TransitGatewayAttachmentId" + ], + "typeName": "AWS::EC2::TransitGatewayRouteTableAssociation" +} 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 new file mode 100644 index 0000000000..decf420b9b --- /dev/null +++ b/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-ec2-vpccidrblock.json @@ -0,0 +1,102 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Ipv6Pool", + "/properties/VpcId", + "/properties/AmazonProvidedIpv6CidrBlock", + "/properties/Ipv6CidrBlock", + "/properties/CidrBlock", + "/properties/Ipv4IpamPoolId", + "/properties/Ipv4NetmaskLength", + "/properties/Ipv6IpamPoolId", + "/properties/Ipv6NetmaskLength" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:AssociateVpcCidrBlock", + "ec2:DescribeVpcs", + "ec2:AllocateIpamPoolCidr" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeVpcs", + "ec2:DisassociateVpcCidrBlock" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "VpcId": { + "type": "string" + } + }, + "required": [ + "VpcId" + ] + }, + "permissions": [ + "ec2:DescribeVpcs" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeVpcs" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id", + "/properties/VpcId" + ], + "properties": { + "AmazonProvidedIpv6CidrBlock": { + "type": "boolean" + }, + "CidrBlock": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "Ipv4IpamPoolId": { + "type": "string" + }, + "Ipv4NetmaskLength": { + "type": "integer" + }, + "Ipv6CidrBlock": { + "type": "string" + }, + "Ipv6IpamPoolId": { + "type": "string" + }, + "Ipv6NetmaskLength": { + "type": "integer" + }, + "Ipv6Pool": { + "type": "string" + }, + "VpcId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "replacementStrategy": "delete_then_create", + "required": [ + "VpcId" + ], + "tagging": { + "taggable": false + }, + "typeName": "AWS::EC2::VPCCidrBlock", + "writeOnlyProperties": [ + "/properties/Ipv4IpamPoolId", + "/properties/Ipv4NetmaskLength", + "/properties/Ipv6IpamPoolId", + "/properties/Ipv6NetmaskLength" + ] +} diff --git a/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-elasticache-user.json b/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-elasticache-user.json deleted file mode 100644 index 0775783108..0000000000 --- a/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-elasticache-user.json +++ /dev/null @@ -1,166 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/UserId", - "/properties/UserName", - "/properties/Engine" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z0-9 _\\.\\/=+:\\-@]*$", - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "pattern": "^[a-zA-Z0-9 _\\.\\/=+:\\-@]*$", - "type": "string" - } - }, - "required": [ - "Key" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "elasticache:CreateUser", - "elasticache:DescribeUsers", - "elasticache:ListTagsForResource", - "elasticache:AddTagsToResource" - ] - }, - "delete": { - "permissions": [ - "elasticache:DeleteUser", - "elasticache:DescribeUsers" - ] - }, - "list": { - "permissions": [ - "elasticache:DescribeUsers", - "elasticache:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "elasticache:DescribeUsers", - "elasticache:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "elasticache:ModifyUser", - "elasticache:DescribeUsers", - "elasticache:ListTagsForResource", - "elasticache:AddTagsToResource", - "elasticache:RemoveTagsFromResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/UserId" - ], - "properties": { - "AccessString": { - "type": "string" - }, - "Arn": { - "type": "string" - }, - "AuthenticationMode": { - "additionalProperties": false, - "properties": { - "Passwords": { - "$comment": "List of passwords.", - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Type": { - "enum": [ - "password", - "no-password-required", - "iam" - ], - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "Engine": { - "enum": [ - "redis" - ], - "type": "string" - }, - "NoPasswordRequired": { - "type": "boolean" - }, - "Passwords": { - "$comment": "List of passwords.", - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Status": { - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "UserId": { - "pattern": "[a-z][a-z0-9\\\\-]*", - "type": "string" - }, - "UserName": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Status", - "/properties/Arn" - ], - "required": [ - "UserId", - "UserName", - "Engine" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticache", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::ElastiCache::User", - "writeOnlyProperties": [ - "/properties/Passwords", - "/properties/NoPasswordRequired", - "/properties/AccessString", - "/properties/AuthenticationMode" - ] -} diff --git a/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-elasticache-usergroup.json b/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-elasticache-usergroup.json deleted file mode 100644 index 285e73b7c4..0000000000 --- a/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-elasticache-usergroup.json +++ /dev/null @@ -1,126 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/UserGroupId", - "/properties/Engine" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z0-9 _\\.\\/=+:\\-@]*$", - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "pattern": "^[a-zA-Z0-9 _\\.\\/=+:\\-@]*$", - "type": "string" - } - }, - "required": [ - "Key" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "elasticache:CreateUserGroup", - "elasticache:DescribeUserGroups", - "elasticache:ListTagsForResource", - "elasticache:AddTagsToResource" - ] - }, - "delete": { - "permissions": [ - "elasticache:ModifyReplicationGroup", - "elasticache:DeleteUserGroup", - "elasticache:DescribeUserGroups", - "elasticache:ListTagsForResource" - ] - }, - "list": { - "permissions": [ - "elasticache:DescribeUserGroups", - "elasticache:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "elasticache:DescribeUserGroups", - "elasticache:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "elasticache:ModifyUserGroup", - "elasticache:DescribeUserGroups", - "elasticache:ListTagsForResource", - "elasticache:AddTagsToResource", - "elasticache:RemoveTagsFromResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/UserGroupId" - ], - "properties": { - "Arn": { - "type": "string" - }, - "Engine": { - "enum": [ - "redis" - ], - "type": "string" - }, - "Status": { - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "UserGroupId": { - "pattern": "[a-z][a-z0-9\\\\-]*", - "type": "string" - }, - "UserIds": { - "$comment": "List of users.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Status", - "/properties/Arn" - ], - "required": [ - "UserGroupId", - "Engine", - "UserIds" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticache", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::ElastiCache::UserGroup" -} diff --git a/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-emr-studio.json b/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-emr-studio.json deleted file mode 100644 index fc841c6b49..0000000000 --- a/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-emr-studio.json +++ /dev/null @@ -1,189 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AuthMode", - "/properties/EngineSecurityGroupId", - "/properties/ServiceRole", - "/properties/UserRole", - "/properties/VpcId", - "/properties/WorkspaceSecurityGroupId" - ], - "definitions": { - "Arn": { - "pattern": "^arn:aws(-(cn|us-gov))?:[a-z-]+:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$", - "type": "string" - }, - "SubnetId": { - "pattern": "^(subnet-[a-f0-9]{13})|(subnet-[a-f0-9]{8})\\Z", - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "pattern": "[a-zA-Z+-=._:/]+$", - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "documentationUrl": "https://docs.aws.amazon.com/emr/latest/APIReference/API_CreateStudio.html", - "handlers": { - "create": { - "permissions": [ - "elasticmapreduce:CreateStudio", - "elasticmapreduce:DescribeStudio", - "elasticmapreduce:AddTags", - "sso:CreateManagedApplicationInstance", - "sso:DeleteManagedApplicationInstance", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "elasticmapreduce:DeleteStudio", - "elasticmapreduce:DescribeStudio", - "sso:DeleteManagedApplicationInstance" - ] - }, - "list": { - "permissions": [ - "elasticmapreduce:ListStudios" - ] - }, - "read": { - "permissions": [ - "elasticmapreduce:DescribeStudio", - "sso:GetManagedApplicationInstance" - ] - }, - "update": { - "permissions": [ - "elasticmapreduce:UpdateStudio", - "elasticmapreduce:DescribeStudio", - "elasticmapreduce:AddTags", - "elasticmapreduce:RemoveTags" - ] - } - }, - "primaryIdentifier": [ - "/properties/StudioId" - ], - "properties": { - "Arn": { - "$ref": "#/definitions/Arn" - }, - "AuthMode": { - "enum": [ - "SSO", - "IAM" - ], - "type": "string" - }, - "DefaultS3Location": { - "maxLength": 10280, - "minLength": 6, - "pattern": "^s3://.*", - "type": "string" - }, - "Description": { - "maxLength": 256, - "minLength": 0, - "type": "string" - }, - "EngineSecurityGroupId": { - "maxLength": 256, - "minLength": 4, - "pattern": "^sg-[a-zA-Z0-9\\-._]+$", - "type": "string" - }, - "IdpAuthUrl": { - "maxLength": 4096, - "pattern": "^https://[0-9a-zA-Z]([-.\\w]*[0-9a-zA-Z])(:[0-9]*)*([?/#].*)?$", - "type": "string" - }, - "IdpRelayStateParameterName": { - "maxLength": 256, - "minLength": 0, - "type": "string" - }, - "Name": { - "maxLength": 256, - "minLength": 1, - "pattern": "[a-zA-Z0-9_-]+", - "type": "string" - }, - "ServiceRole": { - "$ref": "#/definitions/Arn" - }, - "StudioId": { - "maxLength": 256, - "minLength": 4, - "pattern": "^es-[0-9A-Z]+", - "type": "string" - }, - "SubnetIds": { - "items": { - "$ref": "#/definitions/SubnetId" - }, - "minItems": 1, - "type": "array" - }, - "Tags": { - "$ref": "#/definitions/Tags" - }, - "Url": { - "maxLength": 4096, - "pattern": "^https://[0-9a-zA-Z]([-.\\w]*[0-9a-zA-Z])(:[0-9]*)*([?/#].*)?$", - "type": "string" - }, - "UserRole": { - "$ref": "#/definitions/Arn" - }, - "VpcId": { - "pattern": "^(vpc-[0-9a-f]{8}|vpc-[0-9a-f]{17})$", - "type": "string" - }, - "WorkspaceSecurityGroupId": { - "pattern": "^sg-[a-zA-Z0-9\\-._]+$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/StudioId", - "/properties/Arn", - "/properties/Url" - ], - "required": [ - "AuthMode", - "EngineSecurityGroupId", - "Name", - "ServiceRole", - "SubnetIds", - "VpcId", - "WorkspaceSecurityGroupId", - "DefaultS3Location" - ], - "typeName": "AWS::EMR::Studio" -} diff --git a/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-lambda-eventsourcemapping.json b/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-lambda-eventsourcemapping.json new file mode 100644 index 0000000000..cb7599c139 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-lambda-eventsourcemapping.json @@ -0,0 +1,353 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::Lambda::EventSourceMapping/Properties" + ], + "createOnlyProperties": [ + "/properties/EventSourceArn", + "/properties/StartingPosition", + "/properties/StartingPositionTimestamp", + "/properties/SelfManagedEventSource", + "/properties/AmazonManagedKafkaEventSourceConfig", + "/properties/SelfManagedKafkaEventSourceConfig" + ], + "definitions": { + "AmazonManagedKafkaEventSourceConfig": { + "additionalProperties": false, + "properties": { + "ConsumerGroupId": { + "$ref": "#/definitions/ConsumerGroupId" + } + }, + "type": "object" + }, + "ConsumerGroupId": { + "maxLength": 200, + "minLength": 1, + "pattern": "[a-zA-Z0-9-\\/*:_+=.@-]*", + "type": "string" + }, + "DestinationConfig": { + "additionalProperties": false, + "properties": { + "OnFailure": { + "$ref": "#/definitions/OnFailure" + } + }, + "type": "object" + }, + "DocumentDBEventSourceConfig": { + "additionalProperties": false, + "properties": { + "CollectionName": { + "maxLength": 57, + "minLength": 1, + "type": "string" + }, + "DatabaseName": { + "maxLength": 63, + "minLength": 1, + "type": "string" + }, + "FullDocument": { + "enum": [ + "UpdateLookup", + "Default" + ], + "type": "string" + } + }, + "type": "object" + }, + "Endpoints": { + "additionalProperties": false, + "properties": { + "KafkaBootstrapServers": { + "items": { + "maxLength": 300, + "minLength": 1, + "pattern": "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9]):[0-9]{1,5}", + "type": "string" + }, + "maxItems": 10, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "Filter": { + "additionalProperties": false, + "properties": { + "Pattern": { + "maxLength": 4096, + "minLength": 0, + "pattern": ".*", + "type": "string" + } + }, + "type": "object" + }, + "FilterCriteria": { + "additionalProperties": false, + "properties": { + "Filters": { + "items": { + "$ref": "#/definitions/Filter" + }, + "maxItems": 20, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "MaximumConcurrency": { + "maximum": 1000, + "minimum": 2, + "type": "integer" + }, + "OnFailure": { + "additionalProperties": false, + "properties": { + "Destination": { + "maxLength": 1024, + "minLength": 12, + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "type": "string" + } + }, + "type": "object" + }, + "ScalingConfig": { + "additionalProperties": false, + "properties": { + "MaximumConcurrency": { + "$ref": "#/definitions/MaximumConcurrency" + } + }, + "type": "object" + }, + "SelfManagedEventSource": { + "additionalProperties": false, + "properties": { + "Endpoints": { + "$ref": "#/definitions/Endpoints" + } + }, + "type": "object" + }, + "SelfManagedKafkaEventSourceConfig": { + "additionalProperties": false, + "properties": { + "ConsumerGroupId": { + "$ref": "#/definitions/ConsumerGroupId" + } + }, + "type": "object" + }, + "SourceAccessConfiguration": { + "additionalProperties": false, + "properties": { + "Type": { + "enum": [ + "BASIC_AUTH", + "VPC_SUBNET", + "VPC_SECURITY_GROUP", + "SASL_SCRAM_512_AUTH", + "SASL_SCRAM_256_AUTH", + "VIRTUAL_HOST", + "CLIENT_CERTIFICATE_TLS_AUTH", + "SERVER_ROOT_CA_CERTIFICATE" + ], + "type": "string" + }, + "URI": { + "maxLength": 200, + "minLength": 1, + "pattern": "[a-zA-Z0-9-\\/*:_+=.@-]*", + "type": "string" + } + }, + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "lambda:CreateEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + }, + "delete": { + "permissions": [ + "lambda:DeleteEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + }, + "list": { + "permissions": [ + "lambda:ListEventSourceMappings" + ] + }, + "read": { + "permissions": [ + "lambda:GetEventSourceMapping" + ] + }, + "update": { + "permissions": [ + "lambda:UpdateEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AmazonManagedKafkaEventSourceConfig": { + "$ref": "#/definitions/AmazonManagedKafkaEventSourceConfig" + }, + "BatchSize": { + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "BisectBatchOnFunctionError": { + "type": "boolean" + }, + "DestinationConfig": { + "$ref": "#/definitions/DestinationConfig" + }, + "DocumentDBEventSourceConfig": { + "$ref": "#/definitions/DocumentDBEventSourceConfig" + }, + "Enabled": { + "type": "boolean" + }, + "EventSourceArn": { + "maxLength": 1024, + "minLength": 12, + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "type": "string" + }, + "FilterCriteria": { + "$ref": "#/definitions/FilterCriteria" + }, + "FunctionName": { + "maxLength": 140, + "minLength": 1, + "pattern": "(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?", + "type": "string" + }, + "FunctionResponseTypes": { + "items": { + "enum": [ + "ReportBatchItemFailures" + ], + "type": "string" + }, + "maxLength": 1, + "minLength": 0, + "type": "array", + "uniqueItems": true + }, + "Id": { + "maxLength": 36, + "minLength": 36, + "pattern": "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + "type": "string" + }, + "MaximumBatchingWindowInSeconds": { + "maximum": 300, + "minimum": 0, + "type": "integer" + }, + "MaximumRecordAgeInSeconds": { + "maximum": 604800, + "minimum": -1, + "type": "integer" + }, + "MaximumRetryAttempts": { + "maximum": 10000, + "minimum": -1, + "type": "integer" + }, + "ParallelizationFactor": { + "maximum": 10, + "minimum": 1, + "type": "integer" + }, + "Queues": { + "items": { + "maxLength": 1000, + "minLength": 1, + "pattern": "[\\s\\S]*", + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "ScalingConfig": { + "$ref": "#/definitions/ScalingConfig" + }, + "SelfManagedEventSource": { + "$ref": "#/definitions/SelfManagedEventSource" + }, + "SelfManagedKafkaEventSourceConfig": { + "$ref": "#/definitions/SelfManagedKafkaEventSourceConfig" + }, + "SourceAccessConfigurations": { + "items": { + "$ref": "#/definitions/SourceAccessConfiguration" + }, + "maxItems": 22, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "StartingPosition": { + "enum": [ + "TRIM_HORIZON", + "LATEST", + "AT_TIMESTAMP" + ], + "maxLength": 12, + "minLength": 6, + "pattern": "(LATEST|TRIM_HORIZON|AT_TIMESTAMP)+", + "type": "string" + }, + "StartingPositionTimestamp": { + "type": "number" + }, + "Topics": { + "items": { + "maxLength": 249, + "minLength": 1, + "pattern": "^[^.]([a-zA-Z0-9\\-_.]+)", + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "TumblingWindowInSeconds": { + "maximum": 900, + "minimum": 0, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "FunctionName" + ], + "typeName": "AWS::Lambda::EventSourceMapping" +} diff --git a/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-networkfirewall-tlsinspectionconfiguration.json b/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-networkfirewall-tlsinspectionconfiguration.json deleted file mode 100644 index ea743fee48..0000000000 --- a/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-networkfirewall-tlsinspectionconfiguration.json +++ /dev/null @@ -1,285 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/TLSInspectionConfigurationName" - ], - "definitions": { - "Address": { - "additionalProperties": false, - "properties": { - "AddressDefinition": { - "maxLength": 255, - "minLength": 1, - "pattern": "^([a-fA-F\\d:\\.]+/\\d{1,3})$", - "type": "string" - } - }, - "required": [ - "AddressDefinition" - ], - "type": "object" - }, - "PortRange": { - "additionalProperties": false, - "properties": { - "FromPort": { - "$ref": "#/definitions/PortRangeBound" - }, - "ToPort": { - "$ref": "#/definitions/PortRangeBound" - } - }, - "required": [ - "FromPort", - "ToPort" - ], - "type": "object" - }, - "PortRangeBound": { - "maximum": 65535, - "minimum": 0, - "type": "integer" - }, - "ProtocolNumber": { - "maximum": 255, - "minimum": 0, - "type": "integer" - }, - "ResourceArn": { - "maxLength": 256, - "minLength": 1, - "pattern": "^(arn:aws.*)$", - "type": "string" - }, - "RevokedStatusAction": { - "enum": [ - "PASS", - "DROP", - "REJECT" - ], - "type": "string" - }, - "ServerCertificate": { - "additionalProperties": false, - "properties": { - "ResourceArn": { - "$ref": "#/definitions/ResourceArn" - } - }, - "type": "object" - }, - "ServerCertificateConfiguration": { - "additionalProperties": false, - "properties": { - "CertificateAuthorityArn": { - "$ref": "#/definitions/ResourceArn" - }, - "CheckCertificateRevocationStatus": { - "additionalProperties": false, - "properties": { - "RevokedStatusAction": { - "$ref": "#/definitions/RevokedStatusAction" - }, - "UnknownStatusAction": { - "$ref": "#/definitions/UnknownStatusAction" - } - }, - "type": "object" - }, - "Scopes": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/ServerCertificateScope" - }, - "type": "array", - "uniqueItems": false - }, - "ServerCertificates": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ServerCertificate" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "ServerCertificateScope": { - "additionalProperties": false, - "properties": { - "DestinationPorts": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/PortRange" - }, - "type": "array", - "uniqueItems": false - }, - "Destinations": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Address" - }, - "type": "array", - "uniqueItems": false - }, - "Protocols": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/ProtocolNumber" - }, - "type": "array", - "uniqueItems": false - }, - "SourcePorts": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/PortRange" - }, - "type": "array", - "uniqueItems": false - }, - "Sources": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Address" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "TLSInspectionConfiguration": { - "additionalProperties": false, - "properties": { - "ServerCertificateConfigurations": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/ServerCertificateConfiguration" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "Value": { - "maxLength": 255, - "minLength": 0, - "pattern": "^.*$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "UnknownStatusAction": { - "enum": [ - "PASS", - "DROP", - "REJECT" - ], - "type": "string" - } - }, - "handlers": { - "create": { - "permissions": [ - "iam:CreateServiceLinkedRole", - "network-firewall:CreateTLSInspectionConfiguration", - "network-firewall:DescribeTLSInspectionConfiguration", - "network-firewall:TagResource" - ] - }, - "delete": { - "permissions": [ - "network-firewall:DeleteTLSInspectionConfiguration", - "network-firewall:DescribeTLSInspectionConfiguration", - "network-firewall:UntagResource" - ] - }, - "list": { - "permissions": [ - "network-firewall:ListTLSInspectionConfigurations" - ] - }, - "read": { - "permissions": [ - "network-firewall:DescribeTLSInspectionConfiguration", - "network-firewall:ListTagsForResources" - ] - }, - "update": { - "permissions": [ - "network-firewall:UpdateTLSInspectionConfiguration", - "network-firewall:DescribeTLSInspectionConfiguration", - "network-firewall:TagResource", - "network-firewall:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/TLSInspectionConfigurationArn" - ], - "properties": { - "Description": { - "maxLength": 512, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "TLSInspectionConfiguration": { - "$ref": "#/definitions/TLSInspectionConfiguration" - }, - "TLSInspectionConfigurationArn": { - "$ref": "#/definitions/ResourceArn" - }, - "TLSInspectionConfigurationId": { - "maxLength": 36, - "minLength": 36, - "pattern": "^([0-9a-f]{8})-([0-9a-f]{4}-){3}([0-9a-f]{12})$", - "type": "string" - }, - "TLSInspectionConfigurationName": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]+$", - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/TLSInspectionConfigurationArn", - "/properties/TLSInspectionConfigurationId" - ], - "required": [ - "TLSInspectionConfigurationName", - "TLSInspectionConfiguration" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkfirewall.git", - "tagging": { - "taggable": true - }, - "typeName": "AWS::NetworkFirewall::TLSInspectionConfiguration" -} diff --git a/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-sagemaker-appimageconfig.json b/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-sagemaker-appimageconfig.json new file mode 100644 index 0000000000..01116f524b --- /dev/null +++ b/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-sagemaker-appimageconfig.json @@ -0,0 +1,238 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AppImageConfigName", + "/properties/Tags" + ], + "definitions": { + "ContainerConfig": { + "additionalProperties": false, + "properties": { + "ContainerArguments": { + "items": { + "$ref": "#/definitions/CustomImageContainerArguments" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "ContainerEntrypoint": { + "items": { + "$ref": "#/definitions/CustomImageContainerEntrypoint" + }, + "maxItems": 1, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "ContainerEnvironmentVariables": { + "items": { + "$ref": "#/definitions/CustomImageContainerEnvironmentVariable" + }, + "maxItems": 25, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "CustomImageContainerArguments": { + "maxLength": 64, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "CustomImageContainerEntrypoint": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "CustomImageContainerEnvironmentVariable": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "FileSystemConfig": { + "additionalProperties": false, + "properties": { + "DefaultGid": { + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "DefaultUid": { + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "MountPath": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^/.*", + "type": "string" + } + }, + "type": "object" + }, + "JupyterLabAppImageConfig": { + "additionalProperties": false, + "properties": { + "ContainerConfig": { + "$ref": "#/definitions/ContainerConfig" + } + }, + "type": "object" + }, + "KernelGatewayImageConfig": { + "additionalProperties": false, + "properties": { + "FileSystemConfig": { + "$ref": "#/definitions/FileSystemConfig" + }, + "KernelSpecs": { + "items": { + "$ref": "#/definitions/KernelSpec" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "KernelSpecs" + ], + "type": "object" + }, + "KernelSpec": { + "additionalProperties": false, + "properties": { + "DisplayName": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Name": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "sagemaker:CreateAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + }, + "delete": { + "permissions": [ + "sagemaker:DeleteAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + }, + "list": { + "permissions": [ + "sagemaker:ListAppImageConfigs" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeAppImageConfig" + ] + }, + "update": { + "permissions": [ + "sagemaker:UpdateAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + } + }, + "primaryIdentifier": [ + "/properties/AppImageConfigName" + ], + "properties": { + "AppImageConfigArn": { + "maxLength": 256, + "minLength": 1, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:app-image-config/.*", + "type": "string" + }, + "AppImageConfigName": { + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", + "type": "string" + }, + "JupyterLabAppImageConfig": { + "$ref": "#/definitions/JupyterLabAppImageConfig" + }, + "KernelGatewayImageConfig": { + "$ref": "#/definitions/KernelGatewayImageConfig" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/AppImageConfigArn" + ], + "required": [ + "AppImageConfigName" + ], + "typeName": "AWS::SageMaker::AppImageConfig", + "writeOnlyProperties": [ + "/properties/Tags" + ] +} diff --git a/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-ssm-association.json b/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-ssm-association.json deleted file mode 100644 index a5d36d67b7..0000000000 --- a/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-ssm-association.json +++ /dev/null @@ -1,260 +0,0 @@ -{ - "additionalProperties": false, - "definitions": { - "InstanceAssociationOutputLocation": { - "additionalProperties": false, - "properties": { - "S3Location": { - "$ref": "#/definitions/S3OutputLocation" - } - }, - "type": "object" - }, - "ParameterValues": { - "items": { - "type": "string" - }, - "type": "array" - }, - "S3BucketName": { - "maxLength": 63, - "minLength": 3, - "type": "string" - }, - "S3KeyPrefix": { - "maxLength": 1024, - "type": "string" - }, - "S3OutputLocation": { - "additionalProperties": false, - "properties": { - "OutputS3BucketName": { - "$ref": "#/definitions/S3BucketName" - }, - "OutputS3KeyPrefix": { - "$ref": "#/definitions/S3KeyPrefix" - }, - "OutputS3Region": { - "$ref": "#/definitions/S3Region" - } - }, - "type": "object" - }, - "S3Region": { - "maxLength": 20, - "minLength": 3, - "type": "string" - }, - "Target": { - "additionalProperties": false, - "properties": { - "Key": { - "pattern": "^[\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]{1,128}$|resource-groups:Name", - "type": "string" - }, - "Values": { - "items": { - "type": "string" - }, - "maxItems": 50, - "minItems": 0, - "type": "array" - } - }, - "required": [ - "Key", - "Values" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "ec2:DescribeInstanceStatus", - "iam:PassRole", - "iam:CreateServiceLinkedRole", - "ssm:CreateAssociation", - "ssm:DescribeAssociation", - "ssm:GetCalendarState" - ] - }, - "delete": { - "permissions": [ - "ssm:DeleteAssociation" - ] - }, - "list": { - "permissions": [ - "ssm:ListAssociations" - ] - }, - "read": { - "permissions": [ - "ssm:DescribeAssociation", - "resource-groups:GetGroupQuery", - "resource-groups:ListGroups", - "resource-groups:ListGroupResources" - ] - }, - "update": { - "permissions": [ - "iam:PassRole", - "ssm:UpdateAssociation", - "ssm:GetCalendarState" - ] - } - }, - "primaryIdentifier": [ - "/properties/AssociationId" - ], - "properties": { - "ApplyOnlyAtCronInterval": { - "type": "boolean" - }, - "AssociationId": { - "examples": [ - "88df7b09-95e8-48c4-a3cb-08c2c20d5110", - "203dd0ec-0055-4bf0-a872-707f72ef06aa" - ], - "pattern": "[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}", - "type": "string" - }, - "AssociationName": { - "pattern": "^[a-zA-Z0-9_\\-.]{3,128}$", - "type": "string" - }, - "AutomationTargetParameterName": { - "maxLength": 50, - "minLength": 1, - "type": "string" - }, - "CalendarNames": { - "examples": [ - [ - "calendar1", - "calendar2" - ], - [ - "calendar3" - ] - ], - "items": { - "type": "string" - }, - "type": "array" - }, - "ComplianceSeverity": { - "enum": [ - "CRITICAL", - "HIGH", - "MEDIUM", - "LOW", - "UNSPECIFIED" - ], - "type": "string" - }, - "DocumentVersion": { - "pattern": "([$]LATEST|[$]DEFAULT|^[1-9][0-9]*$)", - "type": "string" - }, - "InstanceId": { - "examples": [ - "i-0e60836d21cf313c4", - "mi-0532c22e49636ee13" - ], - "pattern": "(^i-(\\w{8}|\\w{17})$)|(^mi-\\w{17}$)", - "type": "string" - }, - "MaxConcurrency": { - "examples": [ - "1%", - "10%", - "50%", - "1" - ], - "pattern": "^([1-9][0-9]{0,6}|[1-9][0-9]%|[1-9]%|100%)$", - "type": "string" - }, - "MaxErrors": { - "examples": [ - "1%", - "10%", - "50%", - "1" - ], - "pattern": "^([1-9][0-9]{0,6}|[0]|[1-9][0-9]%|[0-9]%|100%)$", - "type": "string" - }, - "Name": { - "examples": [ - "AWS-GatherSoftwareInventory", - "MyCustomSSMDocument" - ], - "pattern": "^[a-zA-Z0-9_\\-.:/]{3,200}$", - "type": "string" - }, - "OutputLocation": { - "$ref": "#/definitions/InstanceAssociationOutputLocation" - }, - "Parameters": { - "additionalProperties": false, - "patternProperties": { - ".{1,255}": { - "$ref": "#/definitions/ParameterValues" - } - }, - "type": "object" - }, - "ScheduleExpression": { - "examples": [ - "cron(0 0 */1 * * ? *)", - "cron(0 16 ? * TUE *)", - "rate(30 minutes)", - "rate(7 days)" - ], - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "ScheduleOffset": { - "maximum": 6, - "minimum": 1, - "type": "integer" - }, - "SyncCompliance": { - "enum": [ - "AUTO", - "MANUAL" - ], - "type": "string" - }, - "Targets": { - "items": { - "$ref": "#/definitions/Target" - }, - "maxItems": 5, - "minItems": 0, - "type": "array" - }, - "WaitForSuccessTimeoutSeconds": { - "maximum": 172800, - "minimum": 15, - "type": "integer" - } - }, - "readOnlyProperties": [ - "/properties/AssociationId" - ], - "required": [ - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ssm", - "tagging": { - "taggable": false - }, - "typeName": "AWS::SSM::Association", - "writeOnlyProperties": [ - "/properties/WaitForSuccessTimeoutSeconds" - ] -} 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 1aadce13c4..68d567c523 100644 --- a/src/cfnlint/data/schemas/providers/eu_central_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/eu_central_1/__init__.py @@ -10,6 +10,7 @@ "AWS::ApiGatewayV2::ApiMapping", "AWS::CE::AnomalySubscription", "AWS::Shield::DRTAccess", + "AWS::Deadline::Farm", "AWS::SSO::Assignment", "AWS::Glue::Partition", "AWS::RDS::Integration", @@ -42,6 +43,7 @@ "AWS::EC2::NetworkPerformanceMetricSubscription", "AWS::MediaLive::Channel", "AWS::Greengrass::DeviceDefinition", + "AWS::CleanRoomsML::TrainingDataset", "AWS::CloudFront::ContinuousDeploymentPolicy", "AWS::QuickSight::Analysis", "AWS::ECR::ReplicationConfiguration", @@ -134,6 +136,7 @@ "AWS::CloudTrail::EventDataStore", "AWS::AppIntegrations::Application", "AWS::KinesisFirehose::DeliveryStream", + "AWS::Deadline::QueueFleetAssociation", "AWS::EC2::NetworkInsightsAccessScope", "AWS::Cognito::UserPoolUserToGroupAttachment", "AWS::PCAConnectorAD::DirectoryRegistration", @@ -175,6 +178,7 @@ "AWS::IoTSiteWise::Portal", "AWS::Events::Archive", "AWS::MSK::Cluster", + "AWS::SecurityHub::DelegatedAdmin", "AWS::ControlTower::EnabledBaseline", "AWS::AppStream::AppBlockBuilder", "AWS::EC2::VPCEndpointConnectionNotification", @@ -226,6 +230,7 @@ "AWS::RoboMaker::SimulationApplication", "AWS::NetworkManager::TransitGatewayRegistration", "AWS::Amplify::App", + "AWS::EntityResolution::PolicyStatement", "AWS::InspectorV2::Filter", "AWS::ElastiCache::ReplicationGroup", "AWS::StepFunctions::StateMachineAlias", @@ -289,6 +294,7 @@ "AWS::Lambda::Alias", "AWS::Logs::LogAnomalyDetector", "AWS::WAF::IPSet", + "AWS::Deadline::Fleet", "AWS::IoTTwinMaker::Workspace", "AWS::VpcLattice::ServiceNetworkServiceAssociation", "AWS::EC2::TransitGatewayMulticastDomainAssociation", @@ -380,6 +386,7 @@ "AWS::SageMaker::Space", "AWS::IoT::PolicyPrincipalAttachment", "AWS::Timestream::ScheduledQuery", + "AWS::IVS::PlaybackRestrictionPolicy", "AWS::FMS::NotificationChannel", "AWS::MSK::BatchScramSecret", "AWS::Connect::HoursOfOperation", @@ -400,6 +407,7 @@ "AWS::ApiGatewayV2::VpcLink", "AWS::IoT::JobTemplate", "AWS::IoTFleetWise::SignalCatalog", + "AWS::Deadline::Queue", "AWS::ServiceCatalog::PortfolioProductAssociation", "AWS::DataBrew::Project", "AWS::VpcLattice::TargetGroup", @@ -469,6 +477,7 @@ "AWS::Config::OrganizationConformancePack", "AWS::Connect::QuickConnect", "AWS::Logs::QueryDefinition", + "AWS::SecurityHub::ProductSubscription", "AWS::IAM::InstanceProfile", "AWS::IoT::BillingGroup", "AWS::IoTFleetWise::DecoderManifest", @@ -489,6 +498,7 @@ "AWS::Cognito::UserPoolUICustomizationAttachment", "AWS::SageMaker::NotebookInstanceLifecycleConfig", "AWS::ImageBuilder::ContainerRecipe", + "AWS::CodeConnections::Connection", "AWS::Connect::Rule", "AWS::EFS::AccessPoint", "AWS::Omics::ReferenceStore", @@ -522,6 +532,7 @@ "AWS::ImageBuilder::Workflow", "AWS::ECS::TaskSet", "AWS::Omics::VariantStore", + "AWS::SecurityLake::AwsLogSource", "AWS::AppSync::ApiKey", "AWS::CloudFormation::TypeActivation", "AWS::GroundStation::DataflowEndpointGroup", @@ -585,6 +596,7 @@ "AWS::EC2::CustomerGateway", "AWS::IAM::GroupPolicy", "AWS::Scheduler::Schedule", + "AWS::Deadline::LicenseEndpoint", "AWS::WAF::ByteMatchSet", "AWS::AmplifyUIBuilder::Theme", "AWS::Neptune::DBClusterParameterGroup", @@ -611,6 +623,7 @@ "AWS::Glue::Trigger", "AWS::GlobalAccelerator::Listener", "AWS::VerifiedPermissions::PolicyStore", + "AWS::Deadline::QueueEnvironment", "AWS::Signer::SigningProfile", "AWS::EC2::VPCPeeringConnection", "AWS::SNS::TopicPolicy", @@ -679,6 +692,7 @@ "AWS::LookoutMetrics::Alert", "AWS::IoTWireless::TaskDefinition", "AWS::StepFunctions::Activity", + "AWS::IVS::EncoderConfiguration", "AWS::Synthetics::Group", "AWS::Forecast::Dataset", "AWS::SageMaker::Project", @@ -691,6 +705,7 @@ "AWS::CodeBuild::SourceCredential", "AWS::EMR::InstanceFleetConfig", "AWS::EMR::Cluster", + "AWS::SecurityLake::DataLake", "AWS::CodePipeline::Webhook", "AWS::ApiGatewayV2::DomainName", "AWS::CustomerProfiles::EventStream", @@ -782,6 +797,7 @@ "AWS::WorkSpacesWeb::TrustStore", "AWS::CustomerProfiles::Domain", "AWS::IoT::Policy", + "AWS::APS::Scraper", "AWS::EC2::TransitGatewayRoute", "AWS::SSM::MaintenanceWindow", "AWS::DataZone::Domain", @@ -804,6 +820,7 @@ "AWS::DevOpsGuru::LogAnomalyDetectionIntegration", "AWS::NetworkManager::Link", "AWS::QLDB::Stream", + "AWS::SecurityLake::Subscriber", "AWS::SageMaker::NotebookInstance", "AWS::IoTSiteWise::Dashboard", "AWS::Pinpoint::APNSVoipChannel", @@ -839,6 +856,7 @@ "AWS::AppSync::GraphQLApi", "AWS::GameLift::MatchmakingRuleSet", "AWS::EC2::EgressOnlyInternetGateway", + "AWS::SecurityHub::Insight", "AWS::Config::ConformancePack", "AWS::EC2::VPCCidrBlock", "AWS::APS::Workspace", @@ -916,6 +934,7 @@ "AWS::StepFunctions::StateMachine", "AWS::RDS::DBClusterParameterGroup", "AWS::WAF::XssMatchSet", + "AWS::IVS::StorageConfiguration", "AWS::EC2::VerifiedAccessTrustProvider", "AWS::AppMesh::VirtualRouter", "AWS::IoT::CertificateProvider", @@ -968,6 +987,7 @@ "AWS::CleanRooms::Collaboration", "AWS::SSM::Association", "AWS::EC2::ClientVpnEndpoint", + "AWS::EntityResolution::IdNamespace", "AWS::CloudFront::ResponseHeadersPolicy", "AWS::SecurityHub::AutomationRule", "AWS::MSK::ClusterPolicy", @@ -994,9 +1014,11 @@ "AWS::Route53Resolver::OutpostResolver", "AWS::ACMPCA::Certificate", "AWS::EC2::IPAMAllocation", + "AWS::Deadline::StorageProfile", "AWS::WorkSpaces::Workspace", "AWS::Inspector::AssessmentTemplate", "AWS::EMR::Studio", + "AWS::Deadline::MeteredProduct", "AWS::EC2::InstanceConnectEndpoint", "AWS::DAX::ParameterGroup", "AWS::DataZone::SubscriptionTarget", @@ -1176,8 +1198,10 @@ "aws-apigatewayv2-apimapping.json", "aws-ce-anomalysubscription.json", "aws-shield-drtaccess.json", + "aws-deadline-farm.json", "aws-sso-assignment.json", "aws-glue-partition.json", + "aws-rds-integration.json", "aws-ec2-transitgatewayroutetablepropagation.json", "aws-ssm-resourcepolicy.json", "aws-shield-proactiveengagement.json", @@ -1206,8 +1230,10 @@ "aws-ec2-networkperformancemetricsubscription.json", "aws-medialive-channel.json", "aws-greengrass-devicedefinition.json", + "aws-cleanroomsml-trainingdataset.json", "aws-cloudfront-continuousdeploymentpolicy.json", "aws-quicksight-analysis.json", + "aws-ecr-replicationconfiguration.json", "aws-appconfig-extensionassociation.json", "aws-vpclattice-service.json", "aws-s3outposts-accesspoint.json", @@ -1224,7 +1250,6 @@ "aws-apigatewayv2-integrationresponse.json", "aws-iotevents-input.json", "aws-ec2-networkacl.json", - "aws-lambda-eventsourcemapping.json", "aws-budgets-budgetsaction.json", "aws-logs-resourcepolicy.json", "aws-lex-botversion.json", @@ -1295,6 +1320,7 @@ "aws-cloudtrail-eventdatastore.json", "aws-appintegrations-application.json", "aws-kinesisfirehose-deliverystream.json", + "aws-deadline-queuefleetassociation.json", "aws-ec2-networkinsightsaccessscope.json", "aws-cognito-userpoolusertogroupattachment.json", "aws-pcaconnectorad-directoryregistration.json", @@ -1335,6 +1361,7 @@ "aws-iotsitewise-portal.json", "aws-events-archive.json", "aws-msk-cluster.json", + "aws-securityhub-delegatedadmin.json", "aws-controltower-enabledbaseline.json", "aws-appstream-appblockbuilder.json", "aws-ec2-vpcendpointconnectionnotification.json", @@ -1372,6 +1399,7 @@ "aws-wafregional-sizeconstraintset.json", "aws-eventschemas-discoverer.json", "aws-networkmanager-connectpeer.json", + "aws-elasticache-usergroup.json", "aws-iot-thinggroup.json", "aws-logs-deliverydestination.json", "aws-imagebuilder-imagerecipe.json", @@ -1385,6 +1413,7 @@ "aws-robomaker-simulationapplication.json", "aws-networkmanager-transitgatewayregistration.json", "aws-amplify-app.json", + "aws-entityresolution-policystatement.json", "aws-inspectorv2-filter.json", "aws-elasticache-replicationgroup.json", "aws-stepfunctions-statemachinealias.json", @@ -1447,11 +1476,13 @@ "aws-lambda-alias.json", "aws-logs-loganomalydetector.json", "aws-waf-ipset.json", + "aws-deadline-fleet.json", "aws-iottwinmaker-workspace.json", "aws-vpclattice-servicenetworkserviceassociation.json", "aws-ec2-transitgatewaymulticastdomainassociation.json", "aws-s3outposts-endpoint.json", "aws-waf-sizeconstraintset.json", + "aws-ec2-transitgatewayroutetableassociation.json", "aws-appconfig-environment.json", "aws-imagebuilder-image.json", "aws-elasticache-securitygroupingress.json", @@ -1537,6 +1568,7 @@ "aws-sagemaker-space.json", "aws-iot-policyprincipalattachment.json", "aws-timestream-scheduledquery.json", + "aws-ivs-playbackrestrictionpolicy.json", "aws-fms-notificationchannel.json", "aws-msk-batchscramsecret.json", "aws-connect-hoursofoperation.json", @@ -1556,6 +1588,7 @@ "aws-mediapackagev2-channelpolicy.json", "aws-iot-jobtemplate.json", "aws-iotfleetwise-signalcatalog.json", + "aws-deadline-queue.json", "aws-servicecatalog-portfolioproductassociation.json", "aws-databrew-project.json", "aws-vpclattice-targetgroup.json", @@ -1570,6 +1603,7 @@ "aws-iam-servercertificate.json", "aws-codestarconnections-connection.json", "aws-iot-securityprofile.json", + "aws-globalaccelerator-crossaccountattachment.json", "aws-events-eventbus.json", "aws-docdb-eventsubscription.json", "aws-sqs-queueinlinepolicy.json", @@ -1581,6 +1615,7 @@ "aws-appstream-imagebuilder.json", "aws-backupgateway-hypervisor.json", "aws-lightsail-disk.json", + "aws-connect-predefinedattribute.json", "aws-iam-policy.json", "aws-databrew-schedule.json", "aws-apprunner-service.json", @@ -1596,6 +1631,7 @@ "aws-robomaker-fleet.json", "aws-ec2-volumeattachment.json", "aws-glue-securityconfiguration.json", + "aws-networkfirewall-tlsinspectionconfiguration.json", "aws-opensearchserverless-collection.json", "aws-databrew-ruleset.json", "aws-gamelift-matchmakingconfiguration.json", @@ -1603,6 +1639,7 @@ "aws-ecs-clustercapacityproviderassociations.json", "aws-appconfig-configurationprofile.json", "aws-route53resolver-firewallrulegroup.json", + "aws-docdbelastic-cluster.json", "aws-msk-configuration.json", "aws-ec2-transitgateway.json", "aws-cognito-userpoolgroup.json", @@ -1616,8 +1653,10 @@ "aws-codebuild-project.json", "aws-efs-filesystem.json", "aws-pinpoint-apnsvoipsandboxchannel.json", + "aws-config-organizationconformancepack.json", "aws-connect-quickconnect.json", "aws-logs-querydefinition.json", + "aws-securityhub-productsubscription.json", "aws-iam-instanceprofile.json", "aws-iot-billinggroup.json", "aws-iotfleetwise-decodermanifest.json", @@ -1638,12 +1677,12 @@ "aws-cognito-userpooluicustomizationattachment.json", "aws-sagemaker-notebookinstancelifecycleconfig.json", "aws-imagebuilder-containerrecipe.json", + "aws-codeconnections-connection.json", "aws-connect-rule.json", "aws-efs-accesspoint.json", "aws-omics-referencestore.json", "aws-redshift-clustersecuritygroupingress.json", "aws-servicecatalogappregistry-attributegroupassociation.json", - "aws-elasticloadbalancingv2-loadbalancer.json", "aws-opensearchservice-domain.json", "aws-timestream-database.json", "aws-servicediscovery-instance.json", @@ -1651,6 +1690,7 @@ "aws-personalize-solution.json", "aws-apigatewayv2-deployment.json", "aws-servicecatalog-stacksetconstraint.json", + "aws-codestarconnections-repositorylink.json", "aws-ivs-channel.json", "aws-refactorspaces-service.json", "aws-memorydb-user.json", @@ -1669,6 +1709,7 @@ "aws-imagebuilder-workflow.json", "aws-ecs-taskset.json", "aws-omics-variantstore.json", + "aws-securitylake-awslogsource.json", "aws-appsync-apikey.json", "aws-cloudformation-typeactivation.json", "aws-groundstation-dataflowendpointgroup.json", @@ -1690,7 +1731,6 @@ "aws-logs-logstream.json", "aws-dms-replicationsubnetgroup.json", "aws-aps-rulegroupsnamespace.json", - "aws-s3outposts-bucket.json", "aws-workspacesweb-identityprovider.json", "aws-route53-recordsetgroup.json", "aws-appstream-applicationentitlementassociation.json", @@ -1709,6 +1749,7 @@ "aws-appflow-connector.json", "aws-lightsail-loadbalancer.json", "aws-cloudfront-keygroup.json", + "aws-codestarconnections-syncconfiguration.json", "aws-ec2-networkinterfaceattachment.json", "aws-glue-customentitytype.json", "aws-wisdom-knowledgebase.json", @@ -1726,9 +1767,9 @@ "aws-neptune-dbcluster.json", "aws-evidently-feature.json", "aws-backup-backupvault.json", - "aws-ec2-customergateway.json", "aws-iam-grouppolicy.json", "aws-scheduler-schedule.json", + "aws-deadline-licenseendpoint.json", "aws-waf-bytematchset.json", "aws-amplifyuibuilder-theme.json", "aws-neptune-dbclusterparametergroup.json", @@ -1755,6 +1796,7 @@ "aws-glue-trigger.json", "aws-globalaccelerator-listener.json", "aws-verifiedpermissions-policystore.json", + "aws-deadline-queueenvironment.json", "aws-signer-signingprofile.json", "aws-ec2-vpcpeeringconnection.json", "aws-sns-topicpolicy.json", @@ -1768,6 +1810,7 @@ "aws-route53resolver-firewallrulegroupassociation.json", "aws-route53resolver-resolverqueryloggingconfig.json", "aws-ec2-snapshotblockpublicaccess.json", + "aws-ec2-subnet.json", "aws-cloudtrail-resourcepolicy.json", "aws-iottwinmaker-componenttype.json", "aws-s3objectlambda-accesspoint.json", @@ -1822,6 +1865,7 @@ "aws-lookoutmetrics-alert.json", "aws-iotwireless-taskdefinition.json", "aws-stepfunctions-activity.json", + "aws-ivs-encoderconfiguration.json", "aws-synthetics-group.json", "aws-forecast-dataset.json", "aws-sagemaker-project.json", @@ -1834,6 +1878,7 @@ "aws-codebuild-sourcecredential.json", "aws-emr-instancefleetconfig.json", "aws-emr-cluster.json", + "aws-securitylake-datalake.json", "aws-codepipeline-webhook.json", "aws-apigatewayv2-domainname.json", "aws-customerprofiles-eventstream.json", @@ -1861,18 +1906,18 @@ "aws-iotanalytics-dataset.json", "aws-redshift-clustersecuritygroup.json", "aws-route53-cidrcollection.json", + "aws-ecr-pullthroughcacherule.json", "aws-glue-mltransform.json", "aws-iottwinmaker-entity.json", "aws-appconfig-hostedconfigurationversion.json", "aws-datasync-locationefs.json", "aws-ec2-localgatewayroutetable.json", "aws-apigateway-resource.json", - "aws-sagemaker-appimageconfig.json", - "aws-verifiedpermissions-identitysource.json", "aws-macie-session.json", "aws-elasticloadbalancingv2-targetgroup.json", "aws-applicationautoscaling-scalingpolicy.json", "aws-pipes-pipe.json", + "aws-iotsitewise-gateway.json", "aws-emr-studiosessionmapping.json", "aws-ivs-playbackkeypair.json", "aws-cloudformation-macro.json", @@ -1882,6 +1927,7 @@ "aws-lambda-layerversionpermission.json", "aws-secretsmanager-secret.json", "aws-route53resolver-resolverconfig.json", + "aws-elasticache-user.json", "aws-neptune-dbinstance.json", "aws-sagemaker-image.json", "aws-logs-subscriptionfilter.json", @@ -1920,6 +1966,7 @@ "aws-workspacesweb-truststore.json", "aws-customerprofiles-domain.json", "aws-iot-policy.json", + "aws-aps-scraper.json", "aws-ssm-maintenancewindow.json", "aws-datazone-domain.json", "aws-lakeformation-tagassociation.json", @@ -1941,6 +1988,7 @@ "aws-devopsguru-loganomalydetectionintegration.json", "aws-networkmanager-link.json", "aws-qldb-stream.json", + "aws-securitylake-subscriber.json", "aws-sagemaker-notebookinstance.json", "aws-iotsitewise-dashboard.json", "aws-pinpoint-apnsvoipchannel.json", @@ -1976,7 +2024,9 @@ "aws-appsync-graphqlapi.json", "aws-gamelift-matchmakingruleset.json", "aws-ec2-egressonlyinternetgateway.json", + "aws-securityhub-insight.json", "aws-config-conformancepack.json", + "aws-ec2-vpccidrblock.json", "aws-aps-workspace.json", "aws-gamelift-script.json", "aws-iam-virtualmfadevice.json", @@ -2016,6 +2066,7 @@ "aws-grafana-workspace.json", "aws-ec2-placementgroup.json", "aws-organizations-account.json", + "aws-ecr-repository.json", "aws-auditmanager-assessment.json", "aws-ses-dedicatedippool.json", "aws-iot-fleetmetric.json", @@ -2048,6 +2099,7 @@ "aws-stepfunctions-statemachine.json", "aws-rds-dbclusterparametergroup.json", "aws-waf-xssmatchset.json", + "aws-ivs-storageconfiguration.json", "aws-ec2-verifiedaccesstrustprovider.json", "aws-appmesh-virtualrouter.json", "aws-iot-certificateprovider.json", @@ -2079,6 +2131,7 @@ "aws-personalize-dataset.json", "aws-iot1click-placement.json", "aws-ec2-prefixlist.json", + "aws-ec2-instance.json", "aws-opensearchserverless-securityconfig.json", "aws-networkmanager-device.json", "aws-proton-environmentaccountconnection.json", @@ -2098,6 +2151,7 @@ "aws-cleanrooms-collaboration.json", "aws-ssm-association.json", "aws-ec2-clientvpnendpoint.json", + "aws-entityresolution-idnamespace.json", "aws-cloudfront-responseheaderspolicy.json", "aws-securityhub-automationrule.json", "aws-msk-clusterpolicy.json", @@ -2123,9 +2177,11 @@ "aws-route53resolver-outpostresolver.json", "aws-acmpca-certificate.json", "aws-ec2-ipamallocation.json", + "aws-deadline-storageprofile.json", "aws-workspaces-workspace.json", "aws-inspector-assessmenttemplate.json", "aws-emr-studio.json", + "aws-deadline-meteredproduct.json", "aws-ec2-instanceconnectendpoint.json", "aws-dax-parametergroup.json", "aws-datazone-subscriptiontarget.json", @@ -2143,7 +2199,6 @@ "aws-organizations-organizationalunit.json", "aws-appsync-datasource.json", "aws-sqs-queue.json", - "aws-ec2-securitygroupingress.json", "aws-guardduty-detector.json", "aws-sagemaker-modelqualityjobdefinition.json", "aws-iot-provisioningtemplate.json", @@ -2172,6 +2227,7 @@ "aws-groundstation-config.json", "aws-resourceexplorer2-defaultviewassociation.json", "aws-iotfleetwise-vehicle.json", + "aws-ecr-registrypolicy.json", "aws-redshift-scheduledaction.json", "aws-rds-dbsecuritygroup.json", "aws-pinpoint-baiduchannel.json", @@ -2200,6 +2256,7 @@ "aws-resourcegroups-group.json", "aws-cloudformation-resourcedefaultversion.json", "aws-ssm-resourcedatasync.json", + "aws-signer-profilepermission.json", "aws-backup-restoretestingplan.json", "aws-docdb-dbclusterparametergroup.json", "aws-s3-multiregionaccesspoint.json", @@ -2231,7 +2288,6 @@ "aws-dms-replicationinstance.json", "aws-dax-subnetgroup.json", "aws-servicecatalog-cloudformationproduct.json", - "aws-s3-storagelens.json", "aws-ec2-verifiedaccessgroup.json", "aws-ec2-vpcendpointservice.json", "aws-iam-managedpolicy.json", diff --git a/src/cfnlint/data/schemas/providers/eu_central_1/aws-codestarconnections-repositorylink.json b/src/cfnlint/data/schemas/providers/eu_central_1/aws-codestarconnections-repositorylink.json deleted file mode 100644 index acd21621a7..0000000000 --- a/src/cfnlint/data/schemas/providers/eu_central_1/aws-codestarconnections-repositorylink.json +++ /dev/null @@ -1,142 +0,0 @@ -{ - "additionalIdentifiers": [ - [ - "/properties/RepositoryLinkId" - ] - ], - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/RepositoryName", - "/properties/OwnerId" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "codestar-connections:CreateRepositoryLink", - "codestar-connections:TagResource", - "codestar-connections:UseConnection", - "codestar-connections:PassConnection", - "codestar-connections:GetConnection", - "iam:CreateServiceLinkedRole" - ] - }, - "delete": { - "permissions": [ - "codestar-connections:GetRepositoryLink", - "codestar-connections:DeleteRepositoryLink", - "codestar-connections:GetConnection" - ] - }, - "list": { - "permissions": [ - "codestar-connections:ListRepositoryLinks", - "codestar-connections:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "codestar-connections:GetRepositoryLink", - "codestar-connections:ListTagsForResource", - "codestar-connections:GetConnection" - ] - }, - "update": { - "permissions": [ - "codestar-connections:GetConnection", - "codestar-connections:ListTagsForResource", - "codestar-connections:PassConnection", - "codestar-connections:UseConnection", - "codestar-connections:TagResource", - "codestar-connections:UntagResource", - "codestar-connections:UpdateRepositoryLink" - ] - } - }, - "primaryIdentifier": [ - "/properties/RepositoryLinkArn" - ], - "properties": { - "ConnectionArn": { - "pattern": "arn:(aws|aws-us-gov|aws-cn):.+:.+:[0-9]{12}:.+", - "type": "string" - }, - "EncryptionKeyArn": { - "pattern": "arn:(aws|aws-us-gov|aws-cn):.+:.+:[0-9]{12}:.+", - "type": "string" - }, - "OwnerId": { - "pattern": "[a-za-z0-9_\\.-]+", - "type": "string" - }, - "ProviderType": { - "enum": [ - "GitHub", - "Bitbucket", - "GitHubEnterprise", - "GitLab", - "GitLabSelfManaged" - ], - "type": "string" - }, - "RepositoryLinkArn": { - "pattern": "arn:(aws|aws-us-gov|aws-cn):.+:.+:[0-9]{12}:.+", - "type": "string" - }, - "RepositoryLinkId": { - "pattern": "[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}", - "type": "string" - }, - "RepositoryName": { - "pattern": "[a-za-z0-9_\\.-]+", - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/RepositoryLinkArn", - "/properties/RepositoryLinkId", - "/properties/ProviderType" - ], - "required": [ - "RepositoryName", - "ConnectionArn", - "OwnerId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-codestarconnections.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::CodeStarConnections::RepositoryLink" -} diff --git a/src/cfnlint/data/schemas/providers/eu_central_1/aws-codestarconnections-syncconfiguration.json b/src/cfnlint/data/schemas/providers/eu_central_1/aws-codestarconnections-syncconfiguration.json deleted file mode 100644 index e85e34304d..0000000000 --- a/src/cfnlint/data/schemas/providers/eu_central_1/aws-codestarconnections-syncconfiguration.json +++ /dev/null @@ -1,117 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/SyncType", - "/properties/ResourceName" - ], - "definitions": {}, - "handlers": { - "create": { - "permissions": [ - "codestar-connections:CreateSyncConfiguration", - "codestar-connections:PassRepository", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "codestar-connections:DeleteSyncConfiguration", - "codestar-connections:GetSyncConfiguration" - ] - }, - "list": { - "permissions": [ - "codestar-connections:ListSyncConfigurations", - "codestar-connections:ListRepositoryLinks" - ] - }, - "read": { - "permissions": [ - "codestar-connections:GetSyncConfiguration" - ] - }, - "update": { - "permissions": [ - "codestar-connections:UpdateSyncConfiguration", - "codestar-connections:PassRepository", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/ResourceName", - "/properties/SyncType" - ], - "properties": { - "Branch": { - "type": "string" - }, - "ConfigFile": { - "type": "string" - }, - "OwnerId": { - "pattern": "[a-za-z0-9_\\.-]+", - "type": "string" - }, - "ProviderType": { - "enum": [ - "GitHub", - "Bitbucket", - "GitHubEnterprise", - "GitLab", - "GitLabSelfManaged" - ], - "type": "string" - }, - "PublishDeploymentStatus": { - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - }, - "RepositoryLinkId": { - "pattern": "[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}", - "type": "string" - }, - "RepositoryName": { - "pattern": "[a-za-z0-9_\\.-]+", - "type": "string" - }, - "ResourceName": { - "pattern": "[a-za-z0-9_\\.-]+", - "type": "string" - }, - "RoleArn": { - "type": "string" - }, - "SyncType": { - "type": "string" - }, - "TriggerResourceUpdateOn": { - "enum": [ - "ANY_CHANGE", - "FILE_CHANGE" - ], - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/ProviderType", - "/properties/OwnerId", - "/properties/RepositoryName" - ], - "required": [ - "Branch", - "ConfigFile", - "RepositoryLinkId", - "ResourceName", - "SyncType", - "RoleArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-codestarconnections.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::CodeStarConnections::SyncConfiguration" -} diff --git a/src/cfnlint/data/schemas/providers/eu_central_1/aws-config-organizationconformancepack.json b/src/cfnlint/data/schemas/providers/eu_central_1/aws-config-organizationconformancepack.json deleted file mode 100644 index 884dc86cd9..0000000000 --- a/src/cfnlint/data/schemas/providers/eu_central_1/aws-config-organizationconformancepack.json +++ /dev/null @@ -1,151 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/OrganizationConformancePackName" - ], - "definitions": { - "AccountId": { - "type": "string" - }, - "ConformancePackInputParameter": { - "properties": { - "ParameterName": { - "$ref": "#/definitions/ParameterName" - }, - "ParameterValue": { - "$ref": "#/definitions/ParameterValue" - } - }, - "required": [ - "ParameterName", - "ParameterValue" - ], - "type": "object" - }, - "ParameterName": { - "maxLength": 255, - "minLength": 0, - "type": "string" - }, - "ParameterValue": { - "maxLength": 4096, - "minLength": 0, - "type": "string" - } - }, - "documentationUrl": "https://docs.aws.amazon.com/config/latest/developerguide/conformance-pack-organization-apis.html", - "handlers": { - "create": { - "permissions": [ - "config:PutOrganizationConformancePack", - "config:DescribeOrganizationConformancePackStatuses", - "config:GetOrganizationConformancePackDetailedStatus", - "config:DescribeOrganizationConformancePacks", - "s3:GetObject", - "s3:GetBucketAcl", - "iam:CreateServiceLinkedRole", - "iam:PassRole", - "organizations:ListDelegatedAdministrators", - "organizations:EnableAWSServiceAccess" - ], - "timeoutInMinutes": 706 - }, - "delete": { - "permissions": [ - "config:DeleteOrganizationConformancePack", - "config:DescribeOrganizationConformancePackStatuses", - "config:GetOrganizationConformancePackDetailedStatus", - "organizations:ListDelegatedAdministrators" - ], - "timeoutInMinutes": 706 - }, - "list": { - "permissions": [ - "config:DescribeOrganizationConformancePacks" - ] - }, - "read": { - "permissions": [ - "config:DescribeOrganizationConformancePacks" - ] - }, - "update": { - "permissions": [ - "config:PutOrganizationConformancePack", - "config:DescribeOrganizationConformancePackStatuses", - "config:GetOrganizationConformancePackDetailedStatus", - "s3:GetObject", - "s3:GetBucketAcl", - "iam:CreateServiceLinkedRole", - "iam:PassRole", - "organizations:ListDelegatedAdministrators", - "organizations:EnableAWSServiceAccess" - ], - "timeoutInMinutes": 706 - } - }, - "primaryIdentifier": [ - "/properties/OrganizationConformancePackName" - ], - "properties": { - "ConformancePackInputParameters": { - "items": { - "$ref": "#/definitions/ConformancePackInputParameter" - }, - "maxItems": 60, - "minItems": 0, - "type": "array" - }, - "DeliveryS3Bucket": { - "maxLength": 63, - "minLength": 0, - "type": "string" - }, - "DeliveryS3KeyPrefix": { - "maxLength": 1024, - "minLength": 0, - "type": "string" - }, - "ExcludedAccounts": { - "items": { - "$ref": "#/definitions/AccountId" - }, - "maxItems": 1000, - "minItems": 0, - "type": "array" - }, - "OrganizationConformancePackName": { - "maxLength": 128, - "minLength": 1, - "pattern": "[a-zA-Z][-a-zA-Z0-9]*", - "type": "string" - }, - "TemplateBody": { - "maxLength": 51200, - "minLength": 1, - "type": "string" - }, - "TemplateS3Uri": { - "maxLength": 1024, - "minLength": 1, - "pattern": "s3://.*", - "type": "string" - } - }, - "required": [ - "OrganizationConformancePackName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-config.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagProperty": "/properties/Tags", - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::Config::OrganizationConformancePack", - "writeOnlyProperties": [ - "/properties/TemplateBody", - "/properties/TemplateS3Uri" - ] -} diff --git a/src/cfnlint/data/schemas/providers/eu_central_1/aws-connect-predefinedattribute.json b/src/cfnlint/data/schemas/providers/eu_central_1/aws-connect-predefinedattribute.json deleted file mode 100644 index 244a29df7c..0000000000 --- a/src/cfnlint/data/schemas/providers/eu_central_1/aws-connect-predefinedattribute.json +++ /dev/null @@ -1,105 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/InstanceArn", - "/properties/Name" - ], - "definitions": { - "StringList": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Value" - }, - "maxItems": 128, - "minItems": 1, - "type": "array" - }, - "Value": { - "maxLength": 64, - "minLength": 1, - "type": "string" - } - }, - "handlers": { - "create": { - "permissions": [ - "connect:CreatePredefinedAttribute" - ] - }, - "delete": { - "permissions": [ - "connect:DeletePredefinedAttribute" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "InstanceArn": { - "$ref": "resource-schema.json#/properties/InstanceArn" - } - }, - "required": [ - "InstanceArn" - ] - }, - "permissions": [ - "connect:ListPredefinedAttributes" - ] - }, - "read": { - "permissions": [ - "connect:DescribePredefinedAttribute" - ] - }, - "update": { - "permissions": [ - "connect:UpdatePredefinedAttribute" - ] - } - }, - "primaryIdentifier": [ - "/properties/InstanceArn", - "/properties/Name" - ], - "properties": { - "InstanceArn": { - "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$", - "type": "string" - }, - "LastModifiedRegion": { - "pattern": "[a-z]{2}(-[a-z]+){1,2}(-[0-9])?", - "type": "string" - }, - "LastModifiedTime": { - "type": "number" - }, - "Name": { - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "Values": { - "additionalProperties": false, - "properties": { - "StringList": { - "$ref": "#/definitions/StringList" - } - }, - "type": "object" - } - }, - "readOnlyProperties": [ - "/properties/LastModifiedRegion", - "/properties/LastModifiedTime" - ], - "required": [ - "InstanceArn", - "Name", - "Values" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-connect", - "tagging": { - "taggable": false - }, - "typeName": "AWS::Connect::PredefinedAttribute" -} diff --git a/src/cfnlint/data/schemas/providers/eu_central_1/aws-docdbelastic-cluster.json b/src/cfnlint/data/schemas/providers/eu_central_1/aws-docdbelastic-cluster.json deleted file mode 100644 index ad772b7ace..0000000000 --- a/src/cfnlint/data/schemas/providers/eu_central_1/aws-docdbelastic-cluster.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AdminUserName", - "/properties/AuthType", - "/properties/ClusterName", - "/properties/KmsKeyId" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "docdb-elastic:CreateCluster", - "docdb-elastic:TagResource", - "docdb-elastic:GetCluster", - "docdb-elastic:ListTagsForResource", - "ec2:CreateVpcEndpoint", - "ec2:DescribeVpcEndpoints", - "ec2:DeleteVpcEndpoints", - "ec2:ModifyVpcEndpoint", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:DescribeVpcAttribute", - "ec2:DescribeVpcs", - "ec2:DescribeAvailabilityZones", - "secretsmanager:ListSecrets", - "secretsmanager:ListSecretVersionIds", - "secretsmanager:DescribeSecret", - "secretsmanager:GetSecretValue", - "secretsmanager:GetResourcePolicy", - "kms:DescribeKey", - "kms:CreateGrant", - "kms:GenerateDataKey", - "kms:Decrypt", - "iam:CreateServiceLinkedRole" - ] - }, - "delete": { - "permissions": [ - "docdb-elastic:DeleteCluster", - "docdb-elastic:GetCluster", - "ec2:DescribeVpcEndpoints", - "ec2:DeleteVpcEndpoints", - "ec2:ModifyVpcEndpoint", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:DescribeVpcAttribute", - "ec2:DescribeVpcs", - "ec2:DescribeAvailabilityZones" - ] - }, - "list": { - "permissions": [ - "docdb-elastic:ListClusters" - ] - }, - "read": { - "permissions": [ - "docdb-elastic:GetCluster", - "docdb-elastic:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "docdb-elastic:UpdateCluster", - "docdb-elastic:TagResource", - "docdb-elastic:UntagResource", - "docdb-elastic:GetCluster", - "docdb-elastic:ListTagsForResource", - "ec2:CreateVpcEndpoint", - "ec2:DescribeVpcEndpoints", - "ec2:DeleteVpcEndpoints", - "ec2:ModifyVpcEndpoint", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:DescribeVpcAttribute", - "ec2:DescribeVpcs", - "ec2:DescribeAvailabilityZones", - "secretsmanager:ListSecrets", - "secretsmanager:ListSecretVersionIds", - "secretsmanager:DescribeSecret", - "secretsmanager:GetSecretValue", - "secretsmanager:GetResourcePolicy", - "kms:DescribeKey", - "kms:CreateGrant", - "kms:GenerateDataKey", - "kms:Decrypt" - ] - } - }, - "primaryIdentifier": [ - "/properties/ClusterArn" - ], - "properties": { - "AdminUserName": { - "type": "string" - }, - "AdminUserPassword": { - "type": "string" - }, - "AuthType": { - "type": "string" - }, - "BackupRetentionPeriod": { - "type": "integer" - }, - "ClusterArn": { - "type": "string" - }, - "ClusterEndpoint": { - "type": "string" - }, - "ClusterName": { - "maxLength": 50, - "minLength": 1, - "pattern": "[a-zA-z][a-zA-Z0-9]*(-[a-zA-Z0-9]+)*", - "type": "string" - }, - "KmsKeyId": { - "type": "string" - }, - "PreferredBackupWindow": { - "type": "string" - }, - "PreferredMaintenanceWindow": { - "type": "string" - }, - "ShardCapacity": { - "type": "integer" - }, - "ShardCount": { - "type": "integer" - }, - "ShardInstanceCount": { - "type": "integer" - }, - "SubnetIds": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "minItems": 0, - "type": "array", - "uniqueItems": true - }, - "VpcSecurityGroupIds": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/ClusterArn", - "/properties/ClusterEndpoint" - ], - "required": [ - "ClusterName", - "AdminUserName", - "ShardCapacity", - "ShardCount", - "AuthType" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-docdbelastic/", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::DocDBElastic::Cluster", - "writeOnlyProperties": [ - "/properties/AdminUserPassword" - ] -} diff --git a/src/cfnlint/data/schemas/providers/eu_central_1/aws-ec2-customergateway.json b/src/cfnlint/data/schemas/providers/eu_central_1/aws-ec2-customergateway.json new file mode 100644 index 0000000000..19e10fe34c --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_central_1/aws-ec2-customergateway.json @@ -0,0 +1,113 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/CertificateArn", + "/properties/BgpAsn", + "/properties/Type", + "/properties/IpAddress", + "/properties/DeviceName" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "ec2:CreateCustomerGateway", + "ec2:DescribeCustomerGateways", + "ec2:CreateTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteCustomerGateway", + "ec2:DescribeCustomerGateways", + "ec2:DeleteTags" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeCustomerGateways" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeCustomerGateways" + ] + }, + "update": { + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags", + "ec2:DescribeCustomerGateways" + ] + } + }, + "primaryIdentifier": [ + "/properties/CustomerGatewayId" + ], + "properties": { + "BgpAsn": { + "default": 65000, + "type": "integer" + }, + "CertificateArn": { + "pattern": "^arn:(aws[a-zA-Z-]*)?:acm:[a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\\d{1}:\\d{12}:certificate\\/[a-zA-Z0-9-_]+$", + "type": "string" + }, + "CustomerGatewayId": { + "type": "string" + }, + "DeviceName": { + "type": "string" + }, + "IpAddress": { + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Type": { + "enum": [ + "ipsec.1" + ], + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/CustomerGatewayId" + ], + "required": [ + "BgpAsn", + "IpAddress", + "Type" + ], + "tagging": { + "cloudFormationSystemTags": true, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::CustomerGateway" +} diff --git a/src/cfnlint/data/schemas/providers/eu_central_1/aws-ec2-instance.json b/src/cfnlint/data/schemas/providers/eu_central_1/aws-ec2-instance.json deleted file mode 100644 index 7b3bfed595..0000000000 --- a/src/cfnlint/data/schemas/providers/eu_central_1/aws-ec2-instance.json +++ /dev/null @@ -1,571 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ElasticGpuSpecifications", - "/properties/Ipv6Addresses", - "/properties/PlacementGroupName", - "/properties/HostResourceGroupArn", - "/properties/ImageId", - "/properties/CpuOptions", - "/properties/PrivateIpAddress", - "/properties/ElasticInferenceAccelerators", - "/properties/EnclaveOptions", - "/properties/HibernationOptions", - "/properties/KeyName", - "/properties/LicenseSpecifications", - "/properties/NetworkInterfaces", - "/properties/AvailabilityZone", - "/properties/SubnetId", - "/properties/LaunchTemplate", - "/properties/SecurityGroups", - "/properties/Ipv6AddressCount" - ], - "definitions": { - "AssociationParameter": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "BlockDeviceMapping": { - "additionalProperties": false, - "properties": { - "DeviceName": { - "type": "string" - }, - "Ebs": { - "$ref": "#/definitions/Ebs" - }, - "NoDevice": { - "$ref": "#/definitions/NoDevice" - }, - "VirtualName": { - "type": "string" - } - }, - "required": [ - "DeviceName" - ], - "requiredXor": [ - "VirtualName", - "Ebs", - "NoDevice" - ], - "type": "object" - }, - "CpuOptions": { - "additionalProperties": false, - "properties": { - "CoreCount": { - "type": "integer" - }, - "ThreadsPerCore": { - "type": "integer" - } - }, - "type": "object" - }, - "CreditSpecification": { - "additionalProperties": false, - "properties": { - "CPUCredits": { - "type": "string" - } - }, - "type": "object" - }, - "Ebs": { - "additionalProperties": false, - "properties": { - "DeleteOnTermination": { - "type": "boolean" - }, - "Encrypted": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "KmsKeyId": { - "type": "string" - }, - "SnapshotId": { - "type": "string" - }, - "VolumeSize": { - "type": "integer" - }, - "VolumeType": { - "type": "string" - } - }, - "type": "object" - }, - "ElasticGpuSpecification": { - "additionalProperties": false, - "properties": { - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "ElasticInferenceAccelerator": { - "additionalProperties": false, - "properties": { - "Count": { - "type": "integer" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "EnclaveOptions": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - } - }, - "type": "object" - }, - "HibernationOptions": { - "additionalProperties": false, - "properties": { - "Configured": { - "type": "boolean" - } - }, - "type": "object" - }, - "InstanceIpv6Address": { - "additionalProperties": false, - "properties": { - "Ipv6Address": { - "type": "string" - } - }, - "required": [ - "Ipv6Address" - ], - "type": "object" - }, - "LaunchTemplateSpecification": { - "additionalProperties": false, - "properties": { - "LaunchTemplateId": { - "type": "string" - }, - "LaunchTemplateName": { - "type": "string" - }, - "Version": { - "type": "string" - } - }, - "required": [ - "Version" - ], - "type": "object" - }, - "LicenseSpecification": { - "additionalProperties": false, - "properties": { - "LicenseConfigurationArn": { - "type": "string" - } - }, - "required": [ - "LicenseConfigurationArn" - ], - "type": "object" - }, - "NetworkInterface": { - "additionalProperties": false, - "properties": { - "AssociateCarrierIpAddress": { - "type": "boolean" - }, - "AssociatePublicIpAddress": { - "type": "boolean" - }, - "DeleteOnTermination": { - "type": "boolean" - }, - "Description": { - "type": "string" - }, - "DeviceIndex": { - "type": "string" - }, - "GroupSet": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": false - }, - "NetworkInterfaceId": { - "type": "string" - }, - "PrivateIpAddress": { - "type": "string" - }, - "PrivateIpAddresses": { - "items": { - "$ref": "#/definitions/PrivateIpAddressSpecification" - }, - "type": "array", - "uniqueItems": false - }, - "SecondaryPrivateIpAddressCount": { - "type": "integer" - }, - "SubnetId": { - "type": "string" - } - }, - "required": [ - "DeviceIndex" - ], - "type": "object" - }, - "NoDevice": { - "additionalProperties": false, - "type": "object" - }, - "PrivateDnsNameOptions": { - "additionalProperties": false, - "properties": { - "EnableResourceNameDnsAAAARecord": { - "type": "boolean" - }, - "EnableResourceNameDnsARecord": { - "type": "boolean" - }, - "HostnameType": { - "type": "string" - } - }, - "type": "object" - }, - "PrivateIpAddressSpecification": { - "additionalProperties": false, - "properties": { - "Primary": { - "type": "boolean" - }, - "PrivateIpAddress": { - "type": "string" - } - }, - "required": [ - "PrivateIpAddress", - "Primary" - ], - "type": "object" - }, - "SsmAssociation": { - "additionalProperties": false, - "properties": { - "AssociationParameters": { - "items": { - "$ref": "#/definitions/AssociationParameter" - }, - "type": "array", - "uniqueItems": false - }, - "DocumentName": { - "type": "string" - } - }, - "required": [ - "DocumentName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "Volume": { - "additionalProperties": false, - "properties": { - "Device": { - "type": "string" - }, - "VolumeId": { - "type": "string" - } - }, - "required": [ - "VolumeId", - "Device" - ], - "type": "object" - } - }, - "dependentExcluded": { - "NetworkInterfaces": [ - "SubnetId" - ], - "SubnetId": [ - "NetworkInterfaces" - ] - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AdditionalInfo": { - "type": "string" - }, - "Affinity": { - "enum": [ - "default", - "host" - ], - "type": "string" - }, - "AvailabilityZone": { - "cfnLint": [ - "AWS::EC2::Instance/Properties/AvailabilityZone" - ], - "type": "string" - }, - "BlockDeviceMappings": { - "items": { - "$ref": "#/definitions/BlockDeviceMapping" - }, - "type": "array", - "uniqueItems": false - }, - "CpuOptions": { - "$ref": "#/definitions/CpuOptions" - }, - "CreditSpecification": { - "$ref": "#/definitions/CreditSpecification" - }, - "DisableApiTermination": { - "type": "boolean" - }, - "EbsOptimized": { - "type": "boolean" - }, - "ElasticGpuSpecifications": { - "items": { - "$ref": "#/definitions/ElasticGpuSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "ElasticInferenceAccelerators": { - "items": { - "$ref": "#/definitions/ElasticInferenceAccelerator" - }, - "type": "array", - "uniqueItems": true - }, - "EnclaveOptions": { - "$ref": "#/definitions/EnclaveOptions" - }, - "HibernationOptions": { - "$ref": "#/definitions/HibernationOptions" - }, - "HostId": { - "type": "string" - }, - "HostResourceGroupArn": { - "type": "string" - }, - "IamInstanceProfile": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "ImageId": { - "type": "string" - }, - "InstanceInitiatedShutdownBehavior": { - "type": "string" - }, - "InstanceType": { - "cfnLint": [ - "AWS::EC2::Instance/Properties/InstanceType" - ], - "type": "string" - }, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": false - }, - "KernelId": { - "type": "string" - }, - "KeyName": { - "type": "string" - }, - "LaunchTemplate": { - "$ref": "#/definitions/LaunchTemplateSpecification" - }, - "LicenseSpecifications": { - "items": { - "$ref": "#/definitions/LicenseSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "Monitoring": { - "type": "boolean" - }, - "NetworkInterfaces": { - "items": { - "$ref": "#/definitions/NetworkInterface" - }, - "type": "array", - "uniqueItems": false - }, - "PlacementGroupName": { - "type": "string" - }, - "PrivateDnsName": { - "type": "string" - }, - "PrivateDnsNameOptions": { - "$ref": "#/definitions/PrivateDnsNameOptions" - }, - "PrivateIp": { - "type": "string" - }, - "PrivateIpAddress": { - "type": "string" - }, - "PropagateTagsToVolumeOnCreation": { - "type": "boolean" - }, - "PublicDnsName": { - "type": "string" - }, - "PublicIp": { - "type": "string" - }, - "RamdiskId": { - "type": "string" - }, - "SecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SecurityGroups": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SourceDestCheck": { - "type": "boolean" - }, - "SsmAssociations": { - "items": { - "$ref": "#/definitions/SsmAssociation" - }, - "type": "array", - "uniqueItems": false - }, - "SubnetId": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "Tenancy": { - "enum": [ - "default", - "dedicated", - "host" - ], - "type": "string" - }, - "UserData": { - "type": "string" - }, - "Volumes": { - "items": { - "$ref": "#/definitions/Volume" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/PublicIp", - "/properties/Id", - "/properties/PublicDnsName", - "/properties/PrivateDnsName", - "/properties/PrivateIp" - ], - "requiredXor": [ - "ImageId", - "LaunchTemplate" - ], - "typeName": "AWS::EC2::Instance" -} diff --git a/src/cfnlint/data/schemas/providers/eu_central_1/aws-ec2-securitygroupingress.json b/src/cfnlint/data/schemas/providers/eu_central_1/aws-ec2-securitygroupingress.json new file mode 100644 index 0000000000..83ebc2ae5c --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_central_1/aws-ec2-securitygroupingress.json @@ -0,0 +1,121 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::EC2::SecurityGroupIngress/Properties" + ], + "createOnlyProperties": [ + "/properties/GroupName", + "/properties/IpProtocol", + "/properties/SourceSecurityGroupId", + "/properties/SourcePrefixListId", + "/properties/ToPort", + "/properties/CidrIp", + "/properties/SourceSecurityGroupName", + "/properties/SourceSecurityGroupOwnerId", + "/properties/FromPort", + "/properties/GroupId", + "/properties/CidrIpv6" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeSecurityGroupRules", + "ec2:AuthorizeSecurityGroupIngress" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeSecurityGroupRules", + "ec2:RevokeSecurityGroupIngress" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroups", + "ec2:DescribeSecurityGroupRules" + ] + }, + "update": { + "permissions": [ + "ec2:UpdateSecurityGroupRuleDescriptionsIngress" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CidrIp": { + "type": "string" + }, + "CidrIpv6": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "FromPort": { + "minimum": -1, + "type": "integer" + }, + "GroupId": { + "type": "string" + }, + "GroupName": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "IpProtocol": { + "type": "string" + }, + "SourcePrefixListId": { + "type": "string" + }, + "SourceSecurityGroupId": { + "type": "string" + }, + "SourceSecurityGroupName": { + "type": "string" + }, + "SourceSecurityGroupOwnerId": { + "type": "string" + }, + "ToPort": { + "minimum": -1, + "type": "integer" + } + }, + "propertyTransform": { + "/properties/FromPort": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$ipProtocol := $mapVal ? $mapVal : $lowercase(IpProtocol);$ipProtocol in ['imcp', 'tcp', 'udp', 'imcp'] ? FromPort : -1)", + "/properties/IpProtocol": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$mapVal ? $mapVal : $lowercase(IpProtocol))", + "/properties/ToPort": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$ipProtocol := $mapVal ? $mapVal : $lowercase(IpProtocol);$ipProtocol in ['imcp', 'tcp', 'udp', 'imcp'] ? ToPort : -1)" + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IpProtocol" + ], + "requiredXor": [ + "CidrIp", + "CidrIpv6", + "SourcePrefixListId", + "SourceSecurityGroupId", + "SourceSecurityGroupName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SecurityGroupIngress" +} diff --git a/src/cfnlint/data/schemas/providers/eu_central_1/aws-ec2-subnet.json b/src/cfnlint/data/schemas/providers/eu_central_1/aws-ec2-subnet.json deleted file mode 100644 index 22edc4e5d5..0000000000 --- a/src/cfnlint/data/schemas/providers/eu_central_1/aws-ec2-subnet.json +++ /dev/null @@ -1,184 +0,0 @@ -{ - "additionalProperties": false, - "conditionalCreateOnlyProperties": [ - "/properties/Ipv6CidrBlock" - ], - "createOnlyProperties": [ - "/properties/VpcId", - "/properties/AvailabilityZone", - "/properties/AvailabilityZoneId", - "/properties/CidrBlock", - "/properties/OutpostArn", - "/properties/Ipv6Native", - "/properties/Ipv4IpamPoolId", - "/properties/Ipv4NetmaskLength", - "/properties/Ipv6IpamPoolId", - "/properties/Ipv6NetmaskLength" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "ec2:DescribeSubnets", - "ec2:CreateSubnet", - "ec2:CreateTags", - "ec2:ModifySubnetAttribute" - ] - }, - "delete": { - "permissions": [ - "ec2:DescribeSubnets", - "ec2:DeleteSubnet" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeSubnets", - "ec2:DescribeNetworkAcls" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeSubnets", - "ec2:DescribeNetworkAcls" - ] - }, - "update": { - "permissions": [ - "ec2:DescribeSubnets", - "ec2:ModifySubnetAttribute", - "ec2:CreateTags", - "ec2:DeleteTags", - "ec2:AssociateSubnetCidrBlock", - "ec2:DisassociateSubnetCidrBlock" - ] - } - }, - "primaryIdentifier": [ - "/properties/SubnetId" - ], - "properties": { - "AssignIpv6AddressOnCreation": { - "type": "boolean" - }, - "AvailabilityZone": { - "cfnLint": [ - "AWS::EC2::Subnet/Properties/AvailabilityZone" - ], - "type": "string" - }, - "AvailabilityZoneId": { - "type": "string" - }, - "CidrBlock": { - "type": "string" - }, - "EnableDns64": { - "type": "boolean" - }, - "EnableLniAtDeviceIndex": { - "type": "integer" - }, - "Ipv4IpamPoolId": { - "type": "string" - }, - "Ipv4NetmaskLength": { - "type": "integer" - }, - "Ipv6CidrBlock": { - "type": "string" - }, - "Ipv6CidrBlocks": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Ipv6IpamPoolId": { - "type": "string" - }, - "Ipv6Native": { - "type": "boolean" - }, - "Ipv6NetmaskLength": { - "type": "integer" - }, - "MapPublicIpOnLaunch": { - "type": "boolean" - }, - "NetworkAclAssociationId": { - "type": "string" - }, - "OutpostArn": { - "type": "string" - }, - "PrivateDnsNameOptionsOnLaunch": { - "additionalProperties": false, - "properties": { - "EnableResourceNameDnsAAAARecord": { - "type": "boolean" - }, - "EnableResourceNameDnsARecord": { - "type": "boolean" - }, - "HostnameType": { - "type": "string" - } - }, - "type": "object" - }, - "SubnetId": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "VpcId": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/NetworkAclAssociationId", - "/properties/SubnetId" - ], - "required": [ - "VpcId" - ], - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::EC2::Subnet", - "writeOnlyProperties": [ - "/properties/EnableLniAtDeviceIndex", - "/properties/Ipv4IpamPoolId", - "/properties/Ipv4NetmaskLength", - "/properties/Ipv6IpamPoolId", - "/properties/Ipv6NetmaskLength" - ] -} diff --git a/src/cfnlint/data/schemas/providers/eu_central_1/aws-ec2-transitgatewayroutetableassociation.json b/src/cfnlint/data/schemas/providers/eu_central_1/aws-ec2-transitgatewayroutetableassociation.json deleted file mode 100644 index d1da7ffa8c..0000000000 --- a/src/cfnlint/data/schemas/providers/eu_central_1/aws-ec2-transitgatewayroutetableassociation.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/TransitGatewayRouteTableId", - "/properties/TransitGatewayAttachmentId" - ], - "definitions": {}, - "handlers": { - "create": { - "permissions": [ - "ec2:AssociateTransitGatewayRouteTable", - "ec2:GetTransitGatewayRouteTableAssociations" - ] - }, - "delete": { - "permissions": [ - "ec2:GetTransitGatewayRouteTableAssociations", - "ec2:DisassociateTransitGatewayRouteTable" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "TransitGatewayRouteTableId": { - "$ref": "resource-schema.json#/properties/TransitGatewayRouteTableId" - } - }, - "required": [ - "TransitGatewayRouteTableId" - ] - }, - "permissions": [ - "ec2:GetTransitGatewayRouteTableAssociations" - ] - }, - "read": { - "permissions": [ - "ec2:GetTransitGatewayRouteTableAssociations" - ] - } - }, - "primaryIdentifier": [ - "/properties/TransitGatewayRouteTableId", - "/properties/TransitGatewayAttachmentId" - ], - "properties": { - "TransitGatewayAttachmentId": { - "type": "string" - }, - "TransitGatewayRouteTableId": { - "type": "string" - } - }, - "replacementStrategy": "delete_then_create", - "required": [ - "TransitGatewayRouteTableId", - "TransitGatewayAttachmentId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-transitgateway.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::EC2::TransitGatewayRouteTableAssociation" -} diff --git a/src/cfnlint/data/schemas/providers/eu_central_1/aws-ecr-pullthroughcacherule.json b/src/cfnlint/data/schemas/providers/eu_central_1/aws-ecr-pullthroughcacherule.json deleted file mode 100644 index 0ee5af15ab..0000000000 --- a/src/cfnlint/data/schemas/providers/eu_central_1/aws-ecr-pullthroughcacherule.json +++ /dev/null @@ -1,128 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/EcrRepositoryPrefix", - "/properties/UpstreamRegistryUrl", - "/properties/CredentialArn", - "/properties/UpstreamRegistry" - ], - "definitions": { - "CredentialArn": { - "maxLength": 612, - "minLength": 50, - "pattern": "^arn:aws:secretsmanager:[a-zA-Z0-9-:]+:secret:ecr\\-pullthroughcache\\/[a-zA-Z0-9\\/_+=.@-]+$", - "type": "string" - }, - "EcrRepositoryPrefix": { - "maxLength": 30, - "minLength": 2, - "pattern": "(?:[a-z0-9]+(?:[._-][a-z0-9]+)*/)*[a-z0-9]+(?:[._-][a-z0-9]+)*", - "type": "string" - }, - "PullThroughCacheRule": { - "additionalProperties": false, - "maxItems": 50, - "minItems": 0, - "properties": { - "CredentialArn": { - "$ref": "#/definitions/CredentialArn" - }, - "EcrRepositoryPrefix": { - "$ref": "#/definitions/EcrRepositoryPrefix" - }, - "RegistryId": { - "$ref": "#/definitions/RegistryId" - }, - "UpstreamRegistry": { - "$ref": "#/definitions/UpstreamRegistry" - }, - "UpstreamRegistryUrl": { - "$ref": "#/definitions/UpstreamRegistryUrl" - } - }, - "required": [ - "EcrRepositoryPrefix", - "UpstreamRegistryUrl" - ], - "type": "object" - }, - "RegistryId": { - "pattern": "^[0-9]{12}$", - "type": "string" - }, - "UpstreamRegistry": { - "type": "string" - }, - "UpstreamRegistryUrl": { - "type": "string" - } - }, - "handlers": { - "create": { - "permissions": [ - "ecr:DescribePullThroughCacheRules", - "ecr:CreatePullThroughCacheRule", - "ecr:DeletePullThroughCacheRule", - "iam:CreateServiceLinkedRole", - "secretsmanager:GetSecretValue" - ] - }, - "delete": { - "permissions": [ - "ecr:DescribePullThroughCacheRules", - "ecr:DeletePullThroughCacheRule" - ] - }, - "list": { - "permissions": [ - "ecr:DescribePullThroughCacheRules" - ] - }, - "read": { - "permissions": [ - "ecr:DescribePullThroughCacheRules" - ] - }, - "update": { - "permissions": [ - "ecr:DescribePullThroughCacheRules", - "ecr:CreatePullThroughCacheRule", - "ecr:DeletePullThroughCacheRule", - "iam:CreateServiceLinkedRole", - "secretsmanager:GetSecretValue" - ] - } - }, - "primaryIdentifier": [ - "/properties/EcrRepositoryPrefix" - ], - "properties": { - "CredentialArn": { - "maxLength": 612, - "minLength": 50, - "pattern": "^arn:aws:secretsmanager:[a-zA-Z0-9-:]+:secret:ecr\\-pullthroughcache\\/[a-zA-Z0-9\\/_+=.@-]+$", - "type": "string" - }, - "EcrRepositoryPrefix": { - "maxLength": 30, - "minLength": 2, - "pattern": "(?:[a-z0-9]+(?:[._-][a-z0-9]+)*/)*[a-z0-9]+(?:[._-][a-z0-9]+)*", - "type": "string" - }, - "UpstreamRegistry": { - "type": "string" - }, - "UpstreamRegistryUrl": { - "type": "string" - } - }, - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ecr.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::ECR::PullThroughCacheRule", - "writeOnlyProperties": [ - "/properties/CredentialArn", - "/properties/UpstreamRegistry" - ] -} diff --git a/src/cfnlint/data/schemas/providers/eu_central_1/aws-ecr-registrypolicy.json b/src/cfnlint/data/schemas/providers/eu_central_1/aws-ecr-registrypolicy.json deleted file mode 100644 index 21c904f1bf..0000000000 --- a/src/cfnlint/data/schemas/providers/eu_central_1/aws-ecr-registrypolicy.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "additionalProperties": false, - "definitions": { - "RegistryId": { - "maxLength": 12, - "minLength": 12, - "pattern": "^[0-9]{12}$", - "type": "string" - } - }, - "handlers": { - "create": { - "permissions": [ - "ecr:GetRegistryPolicy", - "ecr:PutRegistryPolicy" - ] - }, - "delete": { - "permissions": [ - "ecr:DeleteRegistryPolicy" - ] - }, - "list": { - "permissions": [ - "ecr:GetRegistryPolicy" - ] - }, - "read": { - "permissions": [ - "ecr:GetRegistryPolicy" - ] - }, - "update": { - "permissions": [ - "ecr:GetRegistryPolicy", - "ecr:PutRegistryPolicy" - ] - } - }, - "primaryIdentifier": [ - "/properties/RegistryId" - ], - "properties": { - "PolicyText": { - "type": "object" - }, - "RegistryId": { - "$ref": "#/definitions/RegistryId" - } - }, - "readOnlyProperties": [ - "/properties/RegistryId" - ], - "required": [ - "PolicyText" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ecr.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::ECR::RegistryPolicy" -} diff --git a/src/cfnlint/data/schemas/providers/eu_central_1/aws-ecr-replicationconfiguration.json b/src/cfnlint/data/schemas/providers/eu_central_1/aws-ecr-replicationconfiguration.json deleted file mode 100644 index f69e98a4cc..0000000000 --- a/src/cfnlint/data/schemas/providers/eu_central_1/aws-ecr-replicationconfiguration.json +++ /dev/null @@ -1,152 +0,0 @@ -{ - "additionalProperties": false, - "definitions": { - "Filter": { - "pattern": "^(?:[a-z0-9]+(?:[._-][a-z0-9]*)*/)*[a-z0-9]*(?:[._-][a-z0-9]*)*$", - "type": "string" - }, - "FilterType": { - "enum": [ - "PREFIX_MATCH" - ], - "type": "string" - }, - "Region": { - "pattern": "[0-9a-z-]{2,25}", - "type": "string" - }, - "RegistryId": { - "pattern": "^[0-9]{12}$", - "type": "string" - }, - "ReplicationConfiguration": { - "additionalProperties": false, - "properties": { - "Rules": { - "items": { - "$ref": "#/definitions/ReplicationRule" - }, - "maxItems": 10, - "minItems": 0, - "type": "array" - } - }, - "required": [ - "Rules" - ], - "type": "object" - }, - "ReplicationDestination": { - "additionalProperties": false, - "properties": { - "Region": { - "$ref": "#/definitions/Region" - }, - "RegistryId": { - "$ref": "#/definitions/RegistryId" - } - }, - "required": [ - "Region", - "RegistryId" - ], - "type": "object" - }, - "ReplicationRule": { - "additionalProperties": false, - "properties": { - "Destinations": { - "items": { - "$ref": "#/definitions/ReplicationDestination" - }, - "maxItems": 25, - "minItems": 1, - "type": "array" - }, - "RepositoryFilters": { - "items": { - "$ref": "#/definitions/RepositoryFilter" - }, - "maxItems": 100, - "minItems": 0, - "type": "array" - } - }, - "required": [ - "Destinations" - ], - "type": "object" - }, - "RepositoryFilter": { - "additionalProperties": false, - "properties": { - "Filter": { - "$ref": "#/definitions/Filter" - }, - "FilterType": { - "$ref": "#/definitions/FilterType" - } - }, - "required": [ - "Filter", - "FilterType" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "ecr:DescribeRegistry", - "ecr:PutReplicationConfiguration", - "iam:CreateServiceLinkedRole" - ] - }, - "delete": { - "permissions": [ - "ecr:DescribeRegistry", - "ecr:PutReplicationConfiguration", - "iam:CreateServiceLinkedRole" - ] - }, - "list": { - "permissions": [ - "ecr:DescribeRegistry" - ] - }, - "read": { - "permissions": [ - "ecr:DescribeRegistry" - ] - }, - "update": { - "permissions": [ - "ecr:DescribeRegistry", - "ecr:PutReplicationConfiguration", - "iam:CreateServiceLinkedRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/RegistryId" - ], - "properties": { - "RegistryId": { - "type": "string" - }, - "ReplicationConfiguration": { - "$ref": "#/definitions/ReplicationConfiguration" - } - }, - "readOnlyProperties": [ - "/properties/RegistryId" - ], - "required": [ - "ReplicationConfiguration" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ecr.git", - "tagging": { - "taggable": false - }, - "typeName": "AWS::ECR::ReplicationConfiguration" -} diff --git a/src/cfnlint/data/schemas/providers/eu_central_1/aws-ecr-repository.json b/src/cfnlint/data/schemas/providers/eu_central_1/aws-ecr-repository.json deleted file mode 100644 index 8c60194618..0000000000 --- a/src/cfnlint/data/schemas/providers/eu_central_1/aws-ecr-repository.json +++ /dev/null @@ -1,215 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/RepositoryName", - "/properties/EncryptionConfiguration", - "/properties/EncryptionConfiguration/EncryptionType", - "/properties/EncryptionConfiguration/KmsKey" - ], - "definitions": { - "EmptyOnDelete": { - "type": "boolean" - }, - "EncryptionConfiguration": { - "additionalProperties": false, - "properties": { - "EncryptionType": { - "$ref": "#/definitions/EncryptionType" - }, - "KmsKey": { - "$ref": "#/definitions/KmsKey" - } - }, - "required": [ - "EncryptionType" - ], - "type": "object" - }, - "EncryptionType": { - "enum": [ - "AES256", - "KMS" - ], - "type": "string" - }, - "ImageScanningConfiguration": { - "additionalProperties": false, - "properties": { - "ScanOnPush": { - "$ref": "#/definitions/ScanOnPush" - } - }, - "type": "object" - }, - "KmsKey": { - "maxLength": 2048, - "minLength": 1, - "type": "string" - }, - "LifecyclePolicy": { - "additionalProperties": false, - "properties": { - "LifecyclePolicyText": { - "$ref": "#/definitions/LifecyclePolicyText" - }, - "RegistryId": { - "$ref": "#/definitions/RegistryId" - } - }, - "type": "object" - }, - "LifecyclePolicyText": { - "maxLength": 30720, - "minLength": 100, - "type": "string" - }, - "RegistryId": { - "maxLength": 12, - "minLength": 12, - "pattern": "^[0-9]{12}$", - "type": "string" - }, - "ScanOnPush": { - "type": "boolean" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 127, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 255, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "ecr:CreateRepository", - "ecr:PutLifecyclePolicy", - "ecr:SetRepositoryPolicy", - "ecr:TagResource", - "kms:DescribeKey", - "kms:CreateGrant", - "kms:RetireGrant" - ] - }, - "delete": { - "permissions": [ - "ecr:DeleteRepository", - "kms:RetireGrant" - ] - }, - "list": { - "permissions": [ - "ecr:DescribeRepositories" - ] - }, - "read": { - "permissions": [ - "ecr:DescribeRepositories", - "ecr:GetLifecyclePolicy", - "ecr:GetRepositoryPolicy", - "ecr:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "ecr:DescribeRepositories", - "ecr:PutLifecyclePolicy", - "ecr:SetRepositoryPolicy", - "ecr:ListTagsForResource", - "ecr:TagResource", - "ecr:UntagResource", - "ecr:DeleteLifecyclePolicy", - "ecr:DeleteRepositoryPolicy", - "ecr:PutImageScanningConfiguration", - "ecr:PutImageTagMutability", - "kms:DescribeKey", - "kms:CreateGrant", - "kms:RetireGrant" - ] - } - }, - "primaryIdentifier": [ - "/properties/RepositoryName" - ], - "properties": { - "Arn": { - "type": "string" - }, - "EmptyOnDelete": { - "$ref": "#/definitions/EmptyOnDelete" - }, - "EncryptionConfiguration": { - "$ref": "#/definitions/EncryptionConfiguration" - }, - "ImageScanningConfiguration": { - "$ref": "#/definitions/ImageScanningConfiguration" - }, - "ImageTagMutability": { - "enum": [ - "MUTABLE", - "IMMUTABLE" - ], - "type": "string" - }, - "LifecyclePolicy": { - "$ref": "#/definitions/LifecyclePolicy" - }, - "RepositoryName": { - "maxLength": 256, - "minLength": 2, - "pattern": "^(?=.{2,256}$)((?:[a-z0-9]+(?:[._-][a-z0-9]+)*/)*[a-z0-9]+(?:[._-][a-z0-9]+)*)$", - "type": "string" - }, - "RepositoryPolicyText": { - "cfnLint": [ - "AWS::ECR::Repository/Properties/RepositoryPolicyText" - ], - "type": [ - "object", - "string" - ] - }, - "RepositoryUri": { - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/RepositoryUri" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ecr.git", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::ECR::Repository", - "writeOnlyProperties": [ - "/properties/EmptyOnDelete" - ] -} diff --git a/src/cfnlint/data/schemas/providers/eu_central_1/aws-elasticache-user.json b/src/cfnlint/data/schemas/providers/eu_central_1/aws-elasticache-user.json deleted file mode 100644 index 0775783108..0000000000 --- a/src/cfnlint/data/schemas/providers/eu_central_1/aws-elasticache-user.json +++ /dev/null @@ -1,166 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/UserId", - "/properties/UserName", - "/properties/Engine" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z0-9 _\\.\\/=+:\\-@]*$", - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "pattern": "^[a-zA-Z0-9 _\\.\\/=+:\\-@]*$", - "type": "string" - } - }, - "required": [ - "Key" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "elasticache:CreateUser", - "elasticache:DescribeUsers", - "elasticache:ListTagsForResource", - "elasticache:AddTagsToResource" - ] - }, - "delete": { - "permissions": [ - "elasticache:DeleteUser", - "elasticache:DescribeUsers" - ] - }, - "list": { - "permissions": [ - "elasticache:DescribeUsers", - "elasticache:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "elasticache:DescribeUsers", - "elasticache:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "elasticache:ModifyUser", - "elasticache:DescribeUsers", - "elasticache:ListTagsForResource", - "elasticache:AddTagsToResource", - "elasticache:RemoveTagsFromResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/UserId" - ], - "properties": { - "AccessString": { - "type": "string" - }, - "Arn": { - "type": "string" - }, - "AuthenticationMode": { - "additionalProperties": false, - "properties": { - "Passwords": { - "$comment": "List of passwords.", - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Type": { - "enum": [ - "password", - "no-password-required", - "iam" - ], - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "Engine": { - "enum": [ - "redis" - ], - "type": "string" - }, - "NoPasswordRequired": { - "type": "boolean" - }, - "Passwords": { - "$comment": "List of passwords.", - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Status": { - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "UserId": { - "pattern": "[a-z][a-z0-9\\\\-]*", - "type": "string" - }, - "UserName": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Status", - "/properties/Arn" - ], - "required": [ - "UserId", - "UserName", - "Engine" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticache", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::ElastiCache::User", - "writeOnlyProperties": [ - "/properties/Passwords", - "/properties/NoPasswordRequired", - "/properties/AccessString", - "/properties/AuthenticationMode" - ] -} diff --git a/src/cfnlint/data/schemas/providers/eu_central_1/aws-elasticache-usergroup.json b/src/cfnlint/data/schemas/providers/eu_central_1/aws-elasticache-usergroup.json deleted file mode 100644 index 285e73b7c4..0000000000 --- a/src/cfnlint/data/schemas/providers/eu_central_1/aws-elasticache-usergroup.json +++ /dev/null @@ -1,126 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/UserGroupId", - "/properties/Engine" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z0-9 _\\.\\/=+:\\-@]*$", - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "pattern": "^[a-zA-Z0-9 _\\.\\/=+:\\-@]*$", - "type": "string" - } - }, - "required": [ - "Key" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "elasticache:CreateUserGroup", - "elasticache:DescribeUserGroups", - "elasticache:ListTagsForResource", - "elasticache:AddTagsToResource" - ] - }, - "delete": { - "permissions": [ - "elasticache:ModifyReplicationGroup", - "elasticache:DeleteUserGroup", - "elasticache:DescribeUserGroups", - "elasticache:ListTagsForResource" - ] - }, - "list": { - "permissions": [ - "elasticache:DescribeUserGroups", - "elasticache:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "elasticache:DescribeUserGroups", - "elasticache:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "elasticache:ModifyUserGroup", - "elasticache:DescribeUserGroups", - "elasticache:ListTagsForResource", - "elasticache:AddTagsToResource", - "elasticache:RemoveTagsFromResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/UserGroupId" - ], - "properties": { - "Arn": { - "type": "string" - }, - "Engine": { - "enum": [ - "redis" - ], - "type": "string" - }, - "Status": { - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "UserGroupId": { - "pattern": "[a-z][a-z0-9\\\\-]*", - "type": "string" - }, - "UserIds": { - "$comment": "List of users.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Status", - "/properties/Arn" - ], - "required": [ - "UserGroupId", - "Engine", - "UserIds" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticache", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::ElastiCache::UserGroup" -} diff --git a/src/cfnlint/data/schemas/providers/eu_central_1/aws-elasticloadbalancingv2-loadbalancer.json b/src/cfnlint/data/schemas/providers/eu_central_1/aws-elasticloadbalancingv2-loadbalancer.json new file mode 100644 index 0000000000..90b3c53ec8 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_central_1/aws-elasticloadbalancingv2-loadbalancer.json @@ -0,0 +1,194 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Type", + "/properties/Scheme" + ], + "definitions": { + "LoadBalancerAttribute": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "SubnetMapping": { + "additionalProperties": false, + "properties": { + "AllocationId": { + "type": "string" + }, + "IPv6Address": { + "type": "string" + }, + "PrivateIPv4Address": { + "type": "string" + }, + "SubnetId": { + "type": "string" + } + }, + "required": [ + "SubnetId" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "documentationUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html", + "handlers": { + "create": { + "permissions": [ + "elasticloadbalancing:CreateLoadBalancer", + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:AddTags" + ], + "timeoutInMinutes": 30 + }, + "delete": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DeleteLoadBalancer" + ] + }, + "list": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers" + ] + }, + "read": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DescribeLoadBalancerAttributes", + "elasticloadbalancing:DescribeTags" + ] + }, + "update": { + "permissions": [ + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:SetSubnets", + "elasticloadbalancing:SetIpAddressType", + "elasticloadbalancing:SetSecurityGroups", + "elasticloadbalancing:AddTags", + "elasticloadbalancing:RemoveTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/LoadBalancerArn" + ], + "properties": { + "CanonicalHostedZoneID": { + "type": "string" + }, + "DNSName": { + "type": "string" + }, + "EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic": { + "type": "string" + }, + "IpAddressType": { + "type": "string" + }, + "LoadBalancerArn": { + "type": "string" + }, + "LoadBalancerAttributes": { + "arrayType": "AttributeList", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LoadBalancerAttribute" + }, + "type": "array", + "uniqueItems": true + }, + "LoadBalancerFullName": { + "type": "string" + }, + "LoadBalancerName": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Scheme": { + "type": "string" + }, + "SecurityGroups": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "SubnetMappings": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SubnetMapping" + }, + "type": "array", + "uniqueItems": true + }, + "Subnets": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Type": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/LoadBalancerName", + "/properties/LoadBalancerFullName", + "/properties/CanonicalHostedZoneID", + "/properties/LoadBalancerArn", + "/properties/DNSName" + ], + "requiredXor": [ + "SubnetMappings", + "Subnets" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticloadbalancingv2", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ElasticLoadBalancingV2::LoadBalancer" +} diff --git a/src/cfnlint/data/schemas/providers/eu_central_1/aws-globalaccelerator-crossaccountattachment.json b/src/cfnlint/data/schemas/providers/eu_central_1/aws-globalaccelerator-crossaccountattachment.json deleted file mode 100644 index 0f7d73bef3..0000000000 --- a/src/cfnlint/data/schemas/providers/eu_central_1/aws-globalaccelerator-crossaccountattachment.json +++ /dev/null @@ -1,116 +0,0 @@ -{ - "additionalProperties": false, - "definitions": { - "Resource": { - "additionalProperties": false, - "properties": { - "EndpointId": { - "type": "string" - }, - "Region": { - "type": "string" - } - }, - "required": [ - "EndpointId" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 127, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 255, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "globalaccelerator:DescribeCrossAccountAttachment", - "globalaccelerator:CreateCrossAccountAttachment", - "globalaccelerator:TagResource" - ] - }, - "delete": { - "permissions": [ - "globalaccelerator:DescribeCrossAccountAttachment", - "globalaccelerator:DeleteCrossAccountAttachment" - ] - }, - "list": { - "permissions": [ - "globalaccelerator:ListCrossAccountAttachments" - ] - }, - "read": { - "permissions": [ - "globalaccelerator:DescribeCrossAccountAttachment" - ] - }, - "update": { - "permissions": [ - "globalaccelerator:UpdateCrossAccountAttachment", - "globalaccelerator:DescribeCrossAccountAttachment", - "globalaccelerator:TagResource", - "globalaccelerator:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/AttachmentArn" - ], - "properties": { - "AttachmentArn": { - "type": "string" - }, - "Name": { - "maxLength": 64, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_-]{0,64}$", - "type": "string" - }, - "Principals": { - "items": { - "type": "string" - }, - "type": "array" - }, - "Resources": { - "items": { - "$ref": "#/definitions/Resource" - }, - "type": "array" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/AttachmentArn" - ], - "required": [ - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-globalaccelerator", - "typeName": "AWS::GlobalAccelerator::CrossAccountAttachment", - "writeOnlyProperties": [ - "/properties/Resources/*/Region" - ] -} diff --git a/src/cfnlint/data/schemas/providers/eu_central_1/aws-iotsitewise-gateway.json b/src/cfnlint/data/schemas/providers/eu_central_1/aws-iotsitewise-gateway.json deleted file mode 100644 index 20b0ba8baa..0000000000 --- a/src/cfnlint/data/schemas/providers/eu_central_1/aws-iotsitewise-gateway.json +++ /dev/null @@ -1,179 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/GatewayPlatform" - ], - "definitions": { - "CapabilityConfiguration": { - "type": "string" - }, - "CapabilityNamespace": { - "type": "string" - }, - "GatewayCapabilitySummary": { - "additionalProperties": false, - "properties": { - "CapabilityConfiguration": { - "$ref": "#/definitions/CapabilityConfiguration" - }, - "CapabilityNamespace": { - "$ref": "#/definitions/CapabilityNamespace" - } - }, - "required": [ - "CapabilityNamespace" - ], - "type": "object" - }, - "GatewayPlatform": { - "additionalProperties": false, - "oneOf": [ - { - "required": [ - "Greengrass" - ] - }, - { - "required": [ - "GreengrassV2" - ] - } - ], - "properties": { - "Greengrass": { - "$ref": "#/definitions/Greengrass" - }, - "GreengrassV2": { - "$ref": "#/definitions/GreengrassV2" - } - }, - "type": "object" - }, - "Greengrass": { - "additionalProperties": false, - "properties": { - "GroupArn": { - "type": "string" - } - }, - "required": [ - "GroupArn" - ], - "type": "object" - }, - "GreengrassV2": { - "additionalProperties": false, - "properties": { - "CoreDeviceThingName": { - "type": "string" - } - }, - "required": [ - "CoreDeviceThingName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "iotsitewise:CreateGateway", - "iotsitewise:DescribeGateway", - "iotsitewise:DescribeGatewayCapabilityConfiguration", - "iotsitewise:UpdateGatewayCapabilityConfiguration", - "iam:PassRole", - "iam:GetRole", - "greengrass:GetCoreDevice", - "iotsitewise:ListTagsForResource", - "iotsitewise:TagResource", - "iot:DescribeThing" - ] - }, - "delete": { - "permissions": [ - "iotsitewise:DescribeGateway", - "iotsitewise:DescribeGatewayCapabilityConfiguration", - "iotsitewise:DeleteGateway" - ] - }, - "list": { - "permissions": [ - "iotsitewise:ListGateways" - ] - }, - "read": { - "permissions": [ - "iotsitewise:DescribeGateway", - "iotsitewise:DescribeGatewayCapabilityConfiguration", - "iotsitewise:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "iotsitewise:UpdateGateway", - "iotsitewise:UpdateGatewayCapabilityConfiguration", - "iotsitewise:TagResource", - "iotsitewise:UntagResource", - "iotsitewise:DescribeGateway", - "iotsitewise:DescribeGatewayCapabilityConfiguration", - "iotsitewise:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/GatewayId" - ], - "properties": { - "GatewayCapabilitySummaries": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/GatewayCapabilitySummary" - }, - "type": "array", - "uniqueItems": true - }, - "GatewayId": { - "type": "string" - }, - "GatewayName": { - "type": "string" - }, - "GatewayPlatform": { - "$ref": "#/definitions/GatewayPlatform" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/GatewayId" - ], - "required": [ - "GatewayName", - "GatewayPlatform" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-IoTSiteWise.git", - "taggable": true, - "typeName": "AWS::IoTSiteWise::Gateway" -} diff --git a/src/cfnlint/data/schemas/providers/eu_central_1/aws-lambda-eventsourcemapping.json b/src/cfnlint/data/schemas/providers/eu_central_1/aws-lambda-eventsourcemapping.json new file mode 100644 index 0000000000..cb7599c139 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_central_1/aws-lambda-eventsourcemapping.json @@ -0,0 +1,353 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::Lambda::EventSourceMapping/Properties" + ], + "createOnlyProperties": [ + "/properties/EventSourceArn", + "/properties/StartingPosition", + "/properties/StartingPositionTimestamp", + "/properties/SelfManagedEventSource", + "/properties/AmazonManagedKafkaEventSourceConfig", + "/properties/SelfManagedKafkaEventSourceConfig" + ], + "definitions": { + "AmazonManagedKafkaEventSourceConfig": { + "additionalProperties": false, + "properties": { + "ConsumerGroupId": { + "$ref": "#/definitions/ConsumerGroupId" + } + }, + "type": "object" + }, + "ConsumerGroupId": { + "maxLength": 200, + "minLength": 1, + "pattern": "[a-zA-Z0-9-\\/*:_+=.@-]*", + "type": "string" + }, + "DestinationConfig": { + "additionalProperties": false, + "properties": { + "OnFailure": { + "$ref": "#/definitions/OnFailure" + } + }, + "type": "object" + }, + "DocumentDBEventSourceConfig": { + "additionalProperties": false, + "properties": { + "CollectionName": { + "maxLength": 57, + "minLength": 1, + "type": "string" + }, + "DatabaseName": { + "maxLength": 63, + "minLength": 1, + "type": "string" + }, + "FullDocument": { + "enum": [ + "UpdateLookup", + "Default" + ], + "type": "string" + } + }, + "type": "object" + }, + "Endpoints": { + "additionalProperties": false, + "properties": { + "KafkaBootstrapServers": { + "items": { + "maxLength": 300, + "minLength": 1, + "pattern": "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9]):[0-9]{1,5}", + "type": "string" + }, + "maxItems": 10, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "Filter": { + "additionalProperties": false, + "properties": { + "Pattern": { + "maxLength": 4096, + "minLength": 0, + "pattern": ".*", + "type": "string" + } + }, + "type": "object" + }, + "FilterCriteria": { + "additionalProperties": false, + "properties": { + "Filters": { + "items": { + "$ref": "#/definitions/Filter" + }, + "maxItems": 20, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "MaximumConcurrency": { + "maximum": 1000, + "minimum": 2, + "type": "integer" + }, + "OnFailure": { + "additionalProperties": false, + "properties": { + "Destination": { + "maxLength": 1024, + "minLength": 12, + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "type": "string" + } + }, + "type": "object" + }, + "ScalingConfig": { + "additionalProperties": false, + "properties": { + "MaximumConcurrency": { + "$ref": "#/definitions/MaximumConcurrency" + } + }, + "type": "object" + }, + "SelfManagedEventSource": { + "additionalProperties": false, + "properties": { + "Endpoints": { + "$ref": "#/definitions/Endpoints" + } + }, + "type": "object" + }, + "SelfManagedKafkaEventSourceConfig": { + "additionalProperties": false, + "properties": { + "ConsumerGroupId": { + "$ref": "#/definitions/ConsumerGroupId" + } + }, + "type": "object" + }, + "SourceAccessConfiguration": { + "additionalProperties": false, + "properties": { + "Type": { + "enum": [ + "BASIC_AUTH", + "VPC_SUBNET", + "VPC_SECURITY_GROUP", + "SASL_SCRAM_512_AUTH", + "SASL_SCRAM_256_AUTH", + "VIRTUAL_HOST", + "CLIENT_CERTIFICATE_TLS_AUTH", + "SERVER_ROOT_CA_CERTIFICATE" + ], + "type": "string" + }, + "URI": { + "maxLength": 200, + "minLength": 1, + "pattern": "[a-zA-Z0-9-\\/*:_+=.@-]*", + "type": "string" + } + }, + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "lambda:CreateEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + }, + "delete": { + "permissions": [ + "lambda:DeleteEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + }, + "list": { + "permissions": [ + "lambda:ListEventSourceMappings" + ] + }, + "read": { + "permissions": [ + "lambda:GetEventSourceMapping" + ] + }, + "update": { + "permissions": [ + "lambda:UpdateEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AmazonManagedKafkaEventSourceConfig": { + "$ref": "#/definitions/AmazonManagedKafkaEventSourceConfig" + }, + "BatchSize": { + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "BisectBatchOnFunctionError": { + "type": "boolean" + }, + "DestinationConfig": { + "$ref": "#/definitions/DestinationConfig" + }, + "DocumentDBEventSourceConfig": { + "$ref": "#/definitions/DocumentDBEventSourceConfig" + }, + "Enabled": { + "type": "boolean" + }, + "EventSourceArn": { + "maxLength": 1024, + "minLength": 12, + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "type": "string" + }, + "FilterCriteria": { + "$ref": "#/definitions/FilterCriteria" + }, + "FunctionName": { + "maxLength": 140, + "minLength": 1, + "pattern": "(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?", + "type": "string" + }, + "FunctionResponseTypes": { + "items": { + "enum": [ + "ReportBatchItemFailures" + ], + "type": "string" + }, + "maxLength": 1, + "minLength": 0, + "type": "array", + "uniqueItems": true + }, + "Id": { + "maxLength": 36, + "minLength": 36, + "pattern": "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + "type": "string" + }, + "MaximumBatchingWindowInSeconds": { + "maximum": 300, + "minimum": 0, + "type": "integer" + }, + "MaximumRecordAgeInSeconds": { + "maximum": 604800, + "minimum": -1, + "type": "integer" + }, + "MaximumRetryAttempts": { + "maximum": 10000, + "minimum": -1, + "type": "integer" + }, + "ParallelizationFactor": { + "maximum": 10, + "minimum": 1, + "type": "integer" + }, + "Queues": { + "items": { + "maxLength": 1000, + "minLength": 1, + "pattern": "[\\s\\S]*", + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "ScalingConfig": { + "$ref": "#/definitions/ScalingConfig" + }, + "SelfManagedEventSource": { + "$ref": "#/definitions/SelfManagedEventSource" + }, + "SelfManagedKafkaEventSourceConfig": { + "$ref": "#/definitions/SelfManagedKafkaEventSourceConfig" + }, + "SourceAccessConfigurations": { + "items": { + "$ref": "#/definitions/SourceAccessConfiguration" + }, + "maxItems": 22, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "StartingPosition": { + "enum": [ + "TRIM_HORIZON", + "LATEST", + "AT_TIMESTAMP" + ], + "maxLength": 12, + "minLength": 6, + "pattern": "(LATEST|TRIM_HORIZON|AT_TIMESTAMP)+", + "type": "string" + }, + "StartingPositionTimestamp": { + "type": "number" + }, + "Topics": { + "items": { + "maxLength": 249, + "minLength": 1, + "pattern": "^[^.]([a-zA-Z0-9\\-_.]+)", + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "TumblingWindowInSeconds": { + "maximum": 900, + "minimum": 0, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "FunctionName" + ], + "typeName": "AWS::Lambda::EventSourceMapping" +} diff --git a/src/cfnlint/data/schemas/providers/eu_central_1/aws-rds-integration.json b/src/cfnlint/data/schemas/providers/eu_central_1/aws-rds-integration.json deleted file mode 100644 index 083ea4e42f..0000000000 --- a/src/cfnlint/data/schemas/providers/eu_central_1/aws-rds-integration.json +++ /dev/null @@ -1,144 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/SourceArn", - "/properties/TargetArn", - "/properties/KMSKeyId", - "/properties/AdditionalEncryptionContext", - "/properties/IntegrationName" - ], - "definitions": { - "EncryptionContextMap": { - "additionalProperties": false, - "patternProperties": { - "^[\\s\\S]*$": { - "maxLength": 131072, - "minLength": 0, - "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" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - } - }, - "handlers": { - "create": { - "permissions": [ - "rds:CreateIntegration", - "rds:DescribeIntegrations", - "rds:AddTagsToResource", - "kms:CreateGrant", - "kms:DescribeKey", - "redshift:CreateInboundIntegration" - ] - }, - "delete": { - "permissions": [ - "rds:DeleteIntegration", - "rds:DescribeIntegrations" - ] - }, - "list": { - "permissions": [ - "rds:DescribeIntegrations" - ] - }, - "read": { - "permissions": [ - "rds:DescribeIntegrations" - ] - }, - "update": { - "permissions": [ - "rds:DescribeIntegrations", - "rds:AddTagsToResource", - "rds:RemoveTagsFromResource", - "rds:ModifyIntegration" - ] - } - }, - "primaryIdentifier": [ - "/properties/IntegrationArn" - ], - "properties": { - "AdditionalEncryptionContext": { - "$ref": "#/definitions/EncryptionContextMap" - }, - "CreateTime": { - "type": "string" - }, - "IntegrationArn": { - "type": "string" - }, - "IntegrationName": { - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "KMSKeyId": { - "type": "string" - }, - "SourceArn": { - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "TargetArn": { - "type": "string" - } - }, - "propertyTransform": { - "/properties/KmsKeyId": "$join([\"arn:(aws)[-]{0,1}[a-z]{0,2}[-]{0,1}[a-z]{0,3}:kms:[a-z]{2}[-]{1}[a-z]{3,10}[-]{0,1}[a-z]{0,10}[-]{1}[1-3]{1}:[0-9]{12}[:]{1}key\\/\", KmsKeyId])", - "/properties/SourceArn": "$lowercase(SourceArn)" - }, - "readOnlyProperties": [ - "/properties/IntegrationArn", - "/properties/CreateTime" - ], - "required": [ - "SourceArn", - "TargetArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::RDS::Integration" -} diff --git a/src/cfnlint/data/schemas/providers/eu_central_1/aws-s3-storagelens.json b/src/cfnlint/data/schemas/providers/eu_central_1/aws-s3-storagelens.json new file mode 100644 index 0000000000..8b8e790b64 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_central_1/aws-s3-storagelens.json @@ -0,0 +1,447 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/StorageLensConfiguration/Id" + ], + "definitions": { + "AccountLevel": { + "additionalProperties": false, + "properties": { + "ActivityMetrics": { + "$ref": "#/definitions/ActivityMetrics" + }, + "AdvancedCostOptimizationMetrics": { + "$ref": "#/definitions/AdvancedCostOptimizationMetrics" + }, + "AdvancedDataProtectionMetrics": { + "$ref": "#/definitions/AdvancedDataProtectionMetrics" + }, + "BucketLevel": { + "$ref": "#/definitions/BucketLevel" + }, + "DetailedStatusCodesMetrics": { + "$ref": "#/definitions/DetailedStatusCodesMetrics" + }, + "StorageLensGroupLevel": { + "$ref": "#/definitions/StorageLensGroupLevel" + } + }, + "required": [ + "BucketLevel" + ], + "type": "object" + }, + "ActivityMetrics": { + "additionalProperties": false, + "properties": { + "IsEnabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "AdvancedCostOptimizationMetrics": { + "additionalProperties": false, + "properties": { + "IsEnabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "AdvancedDataProtectionMetrics": { + "additionalProperties": false, + "properties": { + "IsEnabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "Arn": { + "type": "string" + }, + "AwsOrg": { + "additionalProperties": false, + "properties": { + "Arn": { + "$ref": "#/definitions/Arn" + } + }, + "required": [ + "Arn" + ], + "type": "object" + }, + "BucketLevel": { + "additionalProperties": false, + "properties": { + "ActivityMetrics": { + "$ref": "#/definitions/ActivityMetrics" + }, + "AdvancedCostOptimizationMetrics": { + "$ref": "#/definitions/AdvancedCostOptimizationMetrics" + }, + "AdvancedDataProtectionMetrics": { + "$ref": "#/definitions/AdvancedDataProtectionMetrics" + }, + "DetailedStatusCodesMetrics": { + "$ref": "#/definitions/DetailedStatusCodesMetrics" + }, + "PrefixLevel": { + "$ref": "#/definitions/PrefixLevel" + } + }, + "type": "object" + }, + "BucketsAndRegions": { + "additionalProperties": false, + "properties": { + "Buckets": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Arn" + }, + "type": "array", + "uniqueItems": true + }, + "Regions": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "CloudWatchMetrics": { + "additionalProperties": false, + "properties": { + "IsEnabled": { + "type": "boolean" + } + }, + "required": [ + "IsEnabled" + ], + "type": "object" + }, + "DataExport": { + "additionalProperties": false, + "properties": { + "CloudWatchMetrics": { + "$ref": "#/definitions/CloudWatchMetrics" + }, + "S3BucketDestination": { + "$ref": "#/definitions/S3BucketDestination" + } + }, + "type": "object" + }, + "DetailedStatusCodesMetrics": { + "additionalProperties": false, + "properties": { + "IsEnabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "Encryption": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "SSES3": { + "additionalProperties": false, + "type": "object" + } + }, + "required": [ + "SSES3" + ] + }, + { + "additionalProperties": false, + "properties": { + "SSEKMS": { + "$ref": "#/definitions/SSEKMS" + } + }, + "required": [ + "SSEKMS" + ] + } + ], + "type": "object" + }, + "Id": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z0-9\\-_.]+$", + "type": "string" + }, + "PrefixLevel": { + "additionalProperties": false, + "properties": { + "StorageMetrics": { + "$ref": "#/definitions/PrefixLevelStorageMetrics" + } + }, + "required": [ + "StorageMetrics" + ], + "type": "object" + }, + "PrefixLevelStorageMetrics": { + "additionalProperties": false, + "properties": { + "IsEnabled": { + "type": "boolean" + }, + "SelectionCriteria": { + "$ref": "#/definitions/SelectionCriteria" + } + }, + "type": "object" + }, + "S3BucketDestination": { + "additionalProperties": false, + "properties": { + "AccountId": { + "type": "string" + }, + "Arn": { + "relationshipRef": { + "propertyPath": "/properties/Arn", + "typeName": "AWS::S3::Bucket" + }, + "type": "string" + }, + "Encryption": { + "$ref": "#/definitions/Encryption" + }, + "Format": { + "enum": [ + "CSV", + "Parquet" + ], + "type": "string" + }, + "OutputSchemaVersion": { + "enum": [ + "V_1" + ], + "type": "string" + }, + "Prefix": { + "type": "string" + } + }, + "required": [ + "OutputSchemaVersion", + "Format", + "AccountId", + "Arn" + ], + "type": "object" + }, + "SSEKMS": { + "additionalProperties": false, + "properties": { + "KeyId": { + "type": "string" + } + }, + "required": [ + "KeyId" + ], + "type": "object" + }, + "SelectionCriteria": { + "additionalProperties": false, + "properties": { + "Delimiter": { + "type": "string" + }, + "MaxDepth": { + "type": "integer" + }, + "MinStorageBytesPercentage": { + "type": "number" + } + }, + "type": "object" + }, + "StorageLensConfiguration": { + "additionalProperties": false, + "properties": { + "AccountLevel": { + "$ref": "#/definitions/AccountLevel" + }, + "AwsOrg": { + "$ref": "#/definitions/AwsOrg" + }, + "DataExport": { + "$ref": "#/definitions/DataExport" + }, + "Exclude": { + "$ref": "#/definitions/BucketsAndRegions" + }, + "Id": { + "$ref": "#/definitions/Id" + }, + "Include": { + "$ref": "#/definitions/BucketsAndRegions" + }, + "IsEnabled": { + "type": "boolean" + }, + "StorageLensArn": { + "type": "string" + } + }, + "required": [ + "Id", + "AccountLevel", + "IsEnabled" + ], + "type": "object" + }, + "StorageLensGroupArn": { + "type": "string" + }, + "StorageLensGroupLevel": { + "additionalProperties": false, + "properties": { + "StorageLensGroupSelectionCriteria": { + "$ref": "#/definitions/StorageLensGroupSelectionCriteria" + } + }, + "type": "object" + }, + "StorageLensGroupSelectionCriteria": { + "additionalProperties": false, + "properties": { + "Exclude": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/StorageLensGroupArn" + }, + "type": "array", + "uniqueItems": true + }, + "Include": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/StorageLensGroupArn" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 127, + "minLength": 1, + "pattern": "^(?!aws:.*)[a-zA-Z0-9\\s\\_\\.\\/\\=\\+\\-\\@\\:]+$", + "type": "string" + }, + "Value": { + "maxLength": 255, + "minLength": 1, + "pattern": "^(?!aws:.*)[a-zA-Z0-9\\s\\_\\.\\/\\=\\+\\-\\@\\:]+$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "s3:PutStorageLensConfiguration", + "s3:PutStorageLensConfigurationTagging", + "s3:GetStorageLensConfiguration", + "s3:GetStorageLensConfigurationTagging", + "organizations:DescribeOrganization", + "organizations:ListAccounts", + "organizations:ListAWSServiceAccessForOrganization", + "organizations:ListDelegatedAdministrators", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "s3:DeleteStorageLensConfiguration", + "s3:DeleteStorageLensConfigurationTagging" + ] + }, + "list": { + "permissions": [ + "s3:ListStorageLensConfigurations" + ] + }, + "read": { + "permissions": [ + "s3:GetStorageLensConfiguration", + "s3:GetStorageLensConfigurationTagging" + ] + }, + "update": { + "permissions": [ + "s3:PutStorageLensConfiguration", + "s3:PutStorageLensConfigurationTagging", + "s3:GetStorageLensConfiguration", + "s3:GetStorageLensConfigurationTagging", + "organizations:DescribeOrganization", + "organizations:ListAccounts", + "organizations:ListAWSServiceAccessForOrganization", + "organizations:ListDelegatedAdministrators", + "iam:CreateServiceLinkedRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/StorageLensConfiguration/Id" + ], + "properties": { + "StorageLensConfiguration": { + "$ref": "#/definitions/StorageLensConfiguration" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/StorageLensConfiguration/StorageLensArn" + ], + "required": [ + "StorageLensConfiguration" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-s3-storagelens", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::S3::StorageLens" +} diff --git a/src/cfnlint/data/schemas/providers/eu_central_1/aws-s3outposts-bucket.json b/src/cfnlint/data/schemas/providers/eu_central_1/aws-s3outposts-bucket.json new file mode 100644 index 0000000000..c4128c5b1b --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_central_1/aws-s3outposts-bucket.json @@ -0,0 +1,279 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/BucketName", + "/properties/OutpostId" + ], + "definitions": { + "AbortIncompleteMultipartUpload": { + "additionalProperties": false, + "properties": { + "DaysAfterInitiation": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "DaysAfterInitiation" + ], + "type": "object" + }, + "FilterAndOperator": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "Prefix": { + "$ref": "#/definitions/FilterPrefix" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/FilterTag" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "Tags" + ], + "type": "object" + } + ] + }, + "FilterPrefix": { + "type": "string" + }, + "FilterTag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:=+\\/\\-@%]*)$", + "type": "string" + }, + "Value": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:=+\\/\\-@%]*)$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "LifecycleConfiguration": { + "additionalProperties": false, + "properties": { + "Rules": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Rule" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "Rules" + ], + "type": "object" + }, + "Rule": { + "additionalProperties": false, + "anyOf": [ + { + "required": [ + "Status", + "AbortIncompleteMultipartUpload" + ] + }, + { + "required": [ + "Status", + "ExpirationDate" + ] + }, + { + "required": [ + "Status", + "ExpirationInDays" + ] + } + ], + "properties": { + "AbortIncompleteMultipartUpload": { + "$ref": "#/definitions/AbortIncompleteMultipartUpload" + }, + "ExpirationDate": { + "$ref": "#/definitions/iso8601UTC" + }, + "ExpirationInDays": { + "minimum": 1, + "type": "integer" + }, + "Filter": { + "additionalProperties": false, + "oneOf": [ + { + "required": [ + "Prefix" + ] + }, + { + "required": [ + "Tag" + ] + }, + { + "required": [ + "AndOperator" + ] + } + ], + "properties": { + "AndOperator": { + "$ref": "#/definitions/FilterAndOperator" + }, + "Prefix": { + "$ref": "#/definitions/FilterPrefix" + }, + "Tag": { + "$ref": "#/definitions/FilterTag" + } + }, + "type": "object" + }, + "Id": { + "maxLength": 255, + "type": "string" + }, + "Status": { + "enum": [ + "Enabled", + "Disabled" + ], + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^(?!aws:.*)([\\p{L}\\p{Z}\\p{N}_.:=+\\/\\-@%]*)$", + "type": "string" + }, + "Value": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:=+\\/\\-@%]*)$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "iso8601UTC": { + "pattern": "^([0-2]\\d{3})-(0[0-9]|1[0-2])-([0-2]\\d|3[01])T([01]\\d|2[0-4]):([0-5]\\d):([0-6]\\d)((\\.\\d{3})?)Z$", + "type": "string" + } + }, + "handlers": { + "create": { + "permissions": [ + "s3-outposts:CreateBucket", + "s3-outposts:PutBucketTagging", + "s3-outposts:PutLifecycleConfiguration" + ] + }, + "delete": { + "permissions": [ + "s3-outposts:DeleteBucket" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "OutpostId": { + "$ref": "resource-schema.json#/properties/OutpostId" + } + }, + "required": [ + "OutpostId" + ] + }, + "permissions": [ + "s3-outposts:ListRegionalBuckets" + ] + }, + "read": { + "permissions": [ + "s3-outposts:GetBucket", + "s3-outposts:GetBucketTagging", + "s3-outposts:GetLifecycleConfiguration" + ] + }, + "update": { + "permissions": [ + "s3-outposts:PutBucketTagging", + "s3-outposts:DeleteBucketTagging", + "s3-outposts:PutLifecycleConfiguration" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:[^:]+:s3-outposts:[a-zA-Z0-9\\-]+:\\d{12}:outpost\\/[^:]+\\/bucket\\/[^:]+$", + "type": "string" + }, + "BucketName": { + "maxLength": 63, + "minLength": 3, + "pattern": "(?=^.{3,63}$)(?!^(\\d+\\.)+\\d+$)(^(([a-z0-9]|[a-z0-9][a-z0-9\\-]*[a-z0-9])\\.)*([a-z0-9]|[a-z0-9][a-z0-9\\-]*[a-z0-9])$)", + "type": "string" + }, + "LifecycleConfiguration": { + "$ref": "#/definitions/LifecycleConfiguration" + }, + "OutpostId": { + "pattern": "^(op-[a-f0-9]{17}|\\d{12}|ec2)$", + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "BucketName", + "OutpostId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-s3outposts.git", + "taggable": true, + "typeName": "AWS::S3Outposts::Bucket" +} diff --git a/src/cfnlint/data/schemas/providers/eu_central_1/aws-sagemaker-appimageconfig.json b/src/cfnlint/data/schemas/providers/eu_central_1/aws-sagemaker-appimageconfig.json new file mode 100644 index 0000000000..01116f524b --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_central_1/aws-sagemaker-appimageconfig.json @@ -0,0 +1,238 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AppImageConfigName", + "/properties/Tags" + ], + "definitions": { + "ContainerConfig": { + "additionalProperties": false, + "properties": { + "ContainerArguments": { + "items": { + "$ref": "#/definitions/CustomImageContainerArguments" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "ContainerEntrypoint": { + "items": { + "$ref": "#/definitions/CustomImageContainerEntrypoint" + }, + "maxItems": 1, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "ContainerEnvironmentVariables": { + "items": { + "$ref": "#/definitions/CustomImageContainerEnvironmentVariable" + }, + "maxItems": 25, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "CustomImageContainerArguments": { + "maxLength": 64, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "CustomImageContainerEntrypoint": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "CustomImageContainerEnvironmentVariable": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "FileSystemConfig": { + "additionalProperties": false, + "properties": { + "DefaultGid": { + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "DefaultUid": { + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "MountPath": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^/.*", + "type": "string" + } + }, + "type": "object" + }, + "JupyterLabAppImageConfig": { + "additionalProperties": false, + "properties": { + "ContainerConfig": { + "$ref": "#/definitions/ContainerConfig" + } + }, + "type": "object" + }, + "KernelGatewayImageConfig": { + "additionalProperties": false, + "properties": { + "FileSystemConfig": { + "$ref": "#/definitions/FileSystemConfig" + }, + "KernelSpecs": { + "items": { + "$ref": "#/definitions/KernelSpec" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "KernelSpecs" + ], + "type": "object" + }, + "KernelSpec": { + "additionalProperties": false, + "properties": { + "DisplayName": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Name": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "sagemaker:CreateAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + }, + "delete": { + "permissions": [ + "sagemaker:DeleteAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + }, + "list": { + "permissions": [ + "sagemaker:ListAppImageConfigs" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeAppImageConfig" + ] + }, + "update": { + "permissions": [ + "sagemaker:UpdateAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + } + }, + "primaryIdentifier": [ + "/properties/AppImageConfigName" + ], + "properties": { + "AppImageConfigArn": { + "maxLength": 256, + "minLength": 1, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:app-image-config/.*", + "type": "string" + }, + "AppImageConfigName": { + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", + "type": "string" + }, + "JupyterLabAppImageConfig": { + "$ref": "#/definitions/JupyterLabAppImageConfig" + }, + "KernelGatewayImageConfig": { + "$ref": "#/definitions/KernelGatewayImageConfig" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/AppImageConfigArn" + ], + "required": [ + "AppImageConfigName" + ], + "typeName": "AWS::SageMaker::AppImageConfig", + "writeOnlyProperties": [ + "/properties/Tags" + ] +} diff --git a/src/cfnlint/data/schemas/providers/eu_central_1/aws-signer-profilepermission.json b/src/cfnlint/data/schemas/providers/eu_central_1/aws-signer-profilepermission.json deleted file mode 100644 index 0f8d81fad7..0000000000 --- a/src/cfnlint/data/schemas/providers/eu_central_1/aws-signer-profilepermission.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ProfileName", - "/properties/Action", - "/properties/Principal", - "/properties/StatementId", - "/properties/ProfileVersion" - ], - "handlers": { - "create": { - "permissions": [ - "signer:AddProfilePermission", - "signer:ListProfilePermissions" - ] - }, - "delete": { - "permissions": [ - "signer:RemoveProfilePermission", - "signer:ListProfilePermissions" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "ProfileName": { - "$ref": "resource-schema.json#/properties/ProfileName" - }, - "StatementId": { - "$ref": "resource-schema.json#/properties/StatementId" - } - } - }, - "permissions": [ - "signer:ListProfilePermissions", - "signer:GetSigningProfile" - ] - }, - "read": { - "permissions": [ - "signer:ListProfilePermissions" - ] - } - }, - "primaryIdentifier": [ - "/properties/StatementId", - "/properties/ProfileName" - ], - "properties": { - "Action": { - "type": "string" - }, - "Principal": { - "type": "string" - }, - "ProfileName": { - "type": "string" - }, - "ProfileVersion": { - "pattern": "^[0-9a-zA-Z]{10}$", - "type": "string" - }, - "StatementId": { - "type": "string" - } - }, - "required": [ - "ProfileName", - "Action", - "Principal", - "StatementId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "typeName": "AWS::Signer::ProfilePermission" -} diff --git a/src/cfnlint/data/schemas/providers/eu_central_1/aws-verifiedpermissions-identitysource.json b/src/cfnlint/data/schemas/providers/eu_central_1/aws-verifiedpermissions-identitysource.json new file mode 100644 index 0000000000..46a0ad88f1 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_central_1/aws-verifiedpermissions-identitysource.json @@ -0,0 +1,221 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PolicyStoreId" + ], + "definitions": { + "CognitoGroupConfiguration": { + "additionalProperties": false, + "properties": { + "GroupEntityType": { + "maxLength": 200, + "minLength": 1, + "pattern": "^([_a-zA-Z][_a-zA-Z0-9]*::)*[_a-zA-Z][_a-zA-Z0-9]*$", + "type": "string" + } + }, + "required": [ + "GroupEntityType" + ], + "type": "object" + }, + "CognitoUserPoolConfiguration": { + "additionalProperties": false, + "properties": { + "ClientIds": { + "insertionOrder": false, + "items": { + "maxLength": 255, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "maxItems": 1000, + "minItems": 0, + "type": "array" + }, + "GroupConfiguration": { + "$ref": "#/definitions/CognitoGroupConfiguration" + }, + "UserPoolArn": { + "maxLength": 255, + "minLength": 1, + "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", + "type": "string" + } + }, + "required": [ + "UserPoolArn" + ], + "type": "object" + }, + "IdentitySourceConfiguration": { + "additionalProperties": false, + "properties": { + "CognitoUserPoolConfiguration": { + "$ref": "#/definitions/CognitoUserPoolConfiguration" + } + }, + "required": [ + "CognitoUserPoolConfiguration" + ], + "title": "CognitoUserPoolConfiguration", + "type": "object" + }, + "IdentitySourceDetails": { + "additionalProperties": false, + "properties": { + "ClientIds": { + "insertionOrder": false, + "items": { + "maxLength": 255, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "maxItems": 1000, + "minItems": 0, + "type": "array" + }, + "DiscoveryUrl": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^https://.*$", + "type": "string" + }, + "OpenIdIssuer": { + "$ref": "#/definitions/OpenIdIssuer" + }, + "UserPoolArn": { + "maxLength": 255, + "minLength": 1, + "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", + "type": "string" + } + }, + "type": "object" + }, + "OpenIdIssuer": { + "enum": [ + "COGNITO" + ], + "type": "string" + } + }, + "deprecatedProperties": [ + "/properties/Details" + ], + "handlers": { + "create": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "delete": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "PolicyStoreId": { + "$ref": "resource-schema.json#/properties/PolicyStoreId" + } + }, + "required": [ + "PolicyStoreId" + ] + }, + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "read": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "update": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + } + }, + "primaryIdentifier": [ + "/properties/IdentitySourceId", + "/properties/PolicyStoreId" + ], + "properties": { + "Configuration": { + "$ref": "#/definitions/IdentitySourceConfiguration" + }, + "Details": { + "$ref": "#/definitions/IdentitySourceDetails" + }, + "IdentitySourceId": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]*$", + "type": "string" + }, + "PolicyStoreId": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]*$", + "type": "string" + }, + "PrincipalEntityType": { + "maxLength": 200, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Details", + "/properties/IdentitySourceId" + ], + "required": [ + "Configuration", + "PolicyStoreId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-avp", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::VerifiedPermissions::IdentitySource" +} 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 c93bb63caf..d9aea3a30d 100644 --- a/src/cfnlint/data/schemas/providers/eu_central_2/__init__.py +++ b/src/cfnlint/data/schemas/providers/eu_central_2/__init__.py @@ -66,6 +66,7 @@ "AWS::ElastiCache::SecurityGroup", "AWS::OpsWorks::Layer", "AWS::KinesisFirehose::DeliveryStream", + "AWS::Cognito::UserPoolUserToGroupAttachment", "AWS::PCAConnectorAD::DirectoryRegistration", "AWS::ImageBuilder::Component", "AWS::Glue::Connection", @@ -82,6 +83,7 @@ "AWS::DataSync::LocationHDFS", "AWS::Events::Archive", "AWS::MSK::Cluster", + "AWS::SecurityHub::DelegatedAdmin", "AWS::ControlTower::EnabledBaseline", "AWS::EC2::VPCEndpointConnectionNotification", "AWS::CodePipeline::Pipeline", @@ -189,6 +191,7 @@ "AWS::ServiceCatalog::PortfolioShare", "AWS::ApiGateway::VpcLink", "AWS::IAM::ServerCertificate", + "AWS::GlobalAccelerator::CrossAccountAttachment", "AWS::Events::EventBus", "AWS::SQS::QueueInlinePolicy", "AWS::Organizations::Organization", @@ -206,6 +209,7 @@ "AWS::Route53Resolver::FirewallRuleGroup", "AWS::MSK::Configuration", "AWS::EC2::TransitGateway", + "AWS::Cognito::UserPoolGroup", "AWS::EC2::VPCEndpointServicePermissions", "AWS::SSM::MaintenanceWindowTask", "AWS::EC2::TransitGatewayMulticastDomain", @@ -213,6 +217,7 @@ "AWS::EKS::Cluster", "AWS::EFS::FileSystem", "AWS::Logs::QueryDefinition", + "AWS::SecurityHub::ProductSubscription", "AWS::IAM::InstanceProfile", "AWS::DataSync::LocationNFS", "AWS::CertificateManager::Certificate", @@ -252,6 +257,7 @@ "AWS::CloudFront::KeyGroup", "AWS::EC2::NetworkInterfaceAttachment", "AWS::EC2::TransitGatewayAttachment", + "AWS::Cognito::UserPoolUser", "AWS::CodeDeploy::DeploymentConfig", "AWS::StepFunctions::StateMachineVersion", "AWS::ServiceCatalogAppRegistry::Application", @@ -375,6 +381,7 @@ "AWS::IAM::UserPolicy", "AWS::CloudFront::OriginAccessControl", "AWS::InspectorV2::CisScanConfiguration", + "AWS::Cognito::UserPool", "AWS::SecretsManager::RotationSchedule", "AWS::Lambda::Permission", "AWS::NetworkFirewall::FirewallPolicy", @@ -383,6 +390,7 @@ "AWS::ServiceCatalogAppRegistry::AttributeGroup", "AWS::AppSync::GraphQLApi", "AWS::EC2::EgressOnlyInternetGateway", + "AWS::SecurityHub::Insight", "AWS::EC2::VPCCidrBlock", "AWS::ACMPCA::CertificateAuthority", "AWS::Athena::PreparedStatement", @@ -502,8 +510,10 @@ "AWS::EC2::LaunchTemplate", "AWS::CloudFront::OriginRequestPolicy", "AWS::DataSync::LocationFSxONTAP", + "AWS::Cognito::UserPoolRiskConfigurationAttachment", "AWS::PCAConnectorAD::ServicePrincipalName", "AWS::ElasticBeanstalk::Environment", + "AWS::Cognito::UserPoolClient", "AWS::Lambda::Version", "AWS::EC2::DHCPOptions", "AWS::EC2::IPAMPool", @@ -515,6 +525,7 @@ "AWS::EC2::EIP", "AWS::VerifiedPermissions::Policy", "AWS::CloudFormation::ResourceVersion", + "AWS::Cognito::LogDeliveryConfiguration", "AWS::Chatbot::MicrosoftTeamsChannelConfiguration", "AWS::RDS::DBParameterGroup", "AWS::SecurityHub::Hub", @@ -539,7 +550,6 @@ "aws-guardduty-filter.json", "aws-ecs-service.json", "aws-dms-replicationconfig.json", - "aws-ec2-securitygroupegress.json", "aws-glue-dataqualityruleset.json", "aws-config-configurationrecorder.json", "aws-ec2-networkperformancemetricsubscription.json", @@ -551,11 +561,9 @@ "aws-rds-dbinstance.json", "aws-ec2-vpcdhcpoptionsassociation.json", "aws-ec2-networkacl.json", - "aws-lambda-eventsourcemapping.json", "aws-logs-resourcepolicy.json", "aws-servicecatalog-launchnotificationconstraint.json", "aws-transfer-certificate.json", - "aws-cloudwatch-compositealarm.json", "aws-route53resolver-firewalldomainlist.json", "aws-redshift-endpointaccess.json", "aws-appconfig-application.json", @@ -579,6 +587,7 @@ "aws-eks-accessentry.json", "aws-elasticache-securitygroup.json", "aws-kinesisfirehose-deliverystream.json", + "aws-cognito-userpoolusertogroupattachment.json", "aws-pcaconnectorad-directoryregistration.json", "aws-imagebuilder-component.json", "aws-glue-connection.json", @@ -593,6 +602,7 @@ "aws-datasync-locationhdfs.json", "aws-events-archive.json", "aws-msk-cluster.json", + "aws-securityhub-delegatedadmin.json", "aws-controltower-enabledbaseline.json", "aws-ec2-vpcendpointconnectionnotification.json", "aws-config-configurationaggregator.json", @@ -640,12 +650,10 @@ "aws-autoscaling-launchconfiguration.json", "aws-logs-loganomalydetector.json", "aws-ec2-transitgatewaymulticastdomainassociation.json", - "aws-ec2-transitgatewayroutetableassociation.json", "aws-appconfig-environment.json", "aws-imagebuilder-image.json", "aws-elasticache-securitygroupingress.json", "aws-cloudwatch-dashboard.json", - "aws-cloudwatch-alarm.json", "aws-guardduty-member.json", "aws-cloudformation-customresource.json", "aws-wafv2-rulegroup.json", @@ -681,6 +689,7 @@ "aws-athena-workgroup.json", "aws-servicecatalog-portfolioshare.json", "aws-iam-servercertificate.json", + "aws-globalaccelerator-crossaccountattachment.json", "aws-events-eventbus.json", "aws-sqs-queueinlinepolicy.json", "aws-organizations-organization.json", @@ -697,6 +706,7 @@ "aws-route53resolver-firewallrulegroup.json", "aws-msk-configuration.json", "aws-ec2-transitgateway.json", + "aws-cognito-userpoolgroup.json", "aws-ec2-vpcendpointservicepermissions.json", "aws-ssm-maintenancewindowtask.json", "aws-ec2-transitgatewaymulticastdomain.json", @@ -704,6 +714,7 @@ "aws-eks-cluster.json", "aws-efs-filesystem.json", "aws-logs-querydefinition.json", + "aws-securityhub-productsubscription.json", "aws-iam-instanceprofile.json", "aws-datasync-locationnfs.json", "aws-certificatemanager-certificate.json", @@ -741,6 +752,7 @@ "aws-iam-samlprovider.json", "aws-cloudfront-keygroup.json", "aws-ec2-networkinterfaceattachment.json", + "aws-cognito-userpooluser.json", "aws-codedeploy-deploymentconfig.json", "aws-stepfunctions-statemachineversion.json", "aws-servicecatalogappregistry-application.json", @@ -845,8 +857,8 @@ "aws-ec2-subnetnetworkaclassociation.json", "aws-servicecatalog-serviceaction.json", "aws-iam-userpolicy.json", - "aws-cloudfront-originaccesscontrol.json", "aws-inspectorv2-cisscanconfiguration.json", + "aws-cognito-userpool.json", "aws-secretsmanager-rotationschedule.json", "aws-lambda-permission.json", "aws-networkfirewall-firewallpolicy.json", @@ -855,7 +867,7 @@ "aws-servicecatalogappregistry-attributegroup.json", "aws-appsync-graphqlapi.json", "aws-ec2-egressonlyinternetgateway.json", - "aws-acmpca-certificateauthority.json", + "aws-securityhub-insight.json", "aws-athena-preparedstatement.json", "aws-autoscaling-scheduledaction.json", "aws-lakeformation-resource.json", @@ -887,6 +899,7 @@ "aws-athena-datacatalog.json", "aws-glue-workflow.json", "aws-ec2-prefixlist.json", + "aws-ec2-instance.json", "aws-ec2-subnetcidrblock.json", "aws-waf-sqlinjectionmatchset.json", "aws-ec2-flowlog.json", @@ -947,7 +960,9 @@ "aws-ec2-launchtemplate.json", "aws-cloudfront-originrequestpolicy.json", "aws-datasync-locationfsxontap.json", + "aws-cognito-userpoolriskconfigurationattachment.json", "aws-pcaconnectorad-serviceprincipalname.json", + "aws-cognito-userpoolclient.json", "aws-lambda-version.json", "aws-ec2-dhcpoptions.json", "aws-ec2-ipampool.json", @@ -957,13 +972,13 @@ "aws-ec2-eip.json", "aws-verifiedpermissions-policy.json", "aws-cloudformation-resourceversion.json", + "aws-cognito-logdeliveryconfiguration.json", "aws-chatbot-microsoftteamschannelconfiguration.json", "aws-rds-dbparametergroup.json", "aws-securityhub-hub.json", "aws-s3-accesspoint.json", "aws-batch-jobqueue.json", "aws-elasticloadbalancingv2-listener.json", - "aws-redshift-eventsubscription.json", "aws-cloudformation-waitconditionhandle.json", "aws-globalaccelerator-accelerator.json", "aws-eks-addon.json", diff --git a/src/cfnlint/data/schemas/providers/eu_central_2/aws-acmpca-certificateauthority.json b/src/cfnlint/data/schemas/providers/eu_central_2/aws-acmpca-certificateauthority.json new file mode 100644 index 0000000000..08ec85e5fa --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_central_2/aws-acmpca-certificateauthority.json @@ -0,0 +1,429 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Type", + "/properties/KeyAlgorithm", + "/properties/SigningAlgorithm", + "/properties/Subject", + "/properties/CsrExtensions", + "/properties/KeyStorageSecurityStandard", + "/properties/UsageMode" + ], + "definitions": { + "AccessDescription": { + "additionalProperties": false, + "properties": { + "AccessLocation": { + "$ref": "#/definitions/GeneralName" + }, + "AccessMethod": { + "$ref": "#/definitions/AccessMethod" + } + }, + "required": [ + "AccessMethod", + "AccessLocation" + ], + "type": "object" + }, + "AccessMethod": { + "additionalProperties": false, + "properties": { + "AccessMethodType": { + "$ref": "#/definitions/AccessMethodType" + }, + "CustomObjectIdentifier": { + "$ref": "#/definitions/CustomObjectIdentifier" + } + }, + "type": "object" + }, + "AccessMethodType": { + "type": "string" + }, + "Arn": { + "type": "string" + }, + "CrlConfiguration": { + "additionalProperties": false, + "properties": { + "CrlDistributionPointExtensionConfiguration": { + "$ref": "#/definitions/CrlDistributionPointExtensionConfiguration" + }, + "CustomCname": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + }, + "ExpirationInDays": { + "type": "integer" + }, + "S3BucketName": { + "type": "string" + }, + "S3ObjectAcl": { + "type": "string" + } + }, + "type": "object" + }, + "CrlDistributionPointExtensionConfiguration": { + "additionalProperties": false, + "properties": { + "OmitExtension": { + "type": "boolean" + } + }, + "required": [ + "OmitExtension" + ], + "type": "object" + }, + "CsrExtensions": { + "additionalProperties": false, + "properties": { + "KeyUsage": { + "$ref": "#/definitions/KeyUsage" + }, + "SubjectInformationAccess": { + "$ref": "#/definitions/SubjectInformationAccess" + } + }, + "type": "object" + }, + "CustomAttribute": { + "additionalProperties": false, + "properties": { + "ObjectIdentifier": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "ObjectIdentifier", + "Value" + ], + "type": "object" + }, + "CustomAttributeList": { + "items": { + "$ref": "#/definitions/CustomAttribute" + }, + "type": "array" + }, + "CustomObjectIdentifier": { + "type": "string" + }, + "DnsName": { + "type": "string" + }, + "EdiPartyName": { + "additionalProperties": false, + "properties": { + "NameAssigner": { + "type": "string" + }, + "PartyName": { + "type": "string" + } + }, + "required": [ + "PartyName", + "NameAssigner" + ], + "type": "object" + }, + "GeneralName": { + "additionalProperties": false, + "properties": { + "DirectoryName": { + "$ref": "#/definitions/Subject" + }, + "DnsName": { + "$ref": "#/definitions/DnsName" + }, + "EdiPartyName": { + "$ref": "#/definitions/EdiPartyName" + }, + "IpAddress": { + "$ref": "#/definitions/IpAddress" + }, + "OtherName": { + "$ref": "#/definitions/OtherName" + }, + "RegisteredId": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Rfc822Name": { + "$ref": "#/definitions/Rfc822Name" + }, + "UniformResourceIdentifier": { + "$ref": "#/definitions/UniformResourceIdentifier" + } + }, + "type": "object" + }, + "IpAddress": { + "type": "string" + }, + "KeyUsage": { + "additionalProperties": false, + "properties": { + "CRLSign": { + "default": false, + "type": "boolean" + }, + "DataEncipherment": { + "default": false, + "type": "boolean" + }, + "DecipherOnly": { + "default": false, + "type": "boolean" + }, + "DigitalSignature": { + "default": false, + "type": "boolean" + }, + "EncipherOnly": { + "default": false, + "type": "boolean" + }, + "KeyAgreement": { + "default": false, + "type": "boolean" + }, + "KeyCertSign": { + "default": false, + "type": "boolean" + }, + "KeyEncipherment": { + "default": false, + "type": "boolean" + }, + "NonRepudiation": { + "default": false, + "type": "boolean" + } + }, + "type": "object" + }, + "OcspConfiguration": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + }, + "OcspCustomCname": { + "type": "string" + } + }, + "type": "object" + }, + "OtherName": { + "additionalProperties": false, + "properties": { + "TypeId": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "TypeId", + "Value" + ], + "type": "object" + }, + "RevocationConfiguration": { + "additionalProperties": false, + "properties": { + "CrlConfiguration": { + "$ref": "#/definitions/CrlConfiguration" + }, + "OcspConfiguration": { + "$ref": "#/definitions/OcspConfiguration" + } + }, + "type": "object" + }, + "Rfc822Name": { + "type": "string" + }, + "Subject": { + "additionalProperties": false, + "properties": { + "CommonName": { + "type": "string" + }, + "Country": { + "type": "string" + }, + "CustomAttributes": { + "$ref": "#/definitions/CustomAttributeList" + }, + "DistinguishedNameQualifier": { + "type": "string" + }, + "GenerationQualifier": { + "type": "string" + }, + "GivenName": { + "type": "string" + }, + "Initials": { + "type": "string" + }, + "Locality": { + "type": "string" + }, + "Organization": { + "type": "string" + }, + "OrganizationalUnit": { + "type": "string" + }, + "Pseudonym": { + "type": "string" + }, + "SerialNumber": { + "type": "string" + }, + "State": { + "type": "string" + }, + "Surname": { + "type": "string" + }, + "Title": { + "type": "string" + } + }, + "type": "object" + }, + "SubjectInformationAccess": { + "items": { + "$ref": "#/definitions/AccessDescription" + }, + "type": "array" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "UniformResourceIdentifier": { + "type": "string" + } + }, + "handlers": { + "create": { + "permissions": [ + "acm-pca:CreateCertificateAuthority", + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr" + ] + }, + "delete": { + "permissions": [ + "acm-pca:DeleteCertificateAuthority", + "acm-pca:DescribeCertificateAuthority" + ] + }, + "list": { + "permissions": [ + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr", + "acm-pca:ListCertificateAuthorities", + "acm-pca:ListTags" + ] + }, + "read": { + "permissions": [ + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr", + "acm-pca:ListTags" + ] + }, + "update": { + "permissions": [ + "acm-pca:ListTags", + "acm-pca:TagCertificateAuthority", + "acm-pca:UntagCertificateAuthority", + "acm-pca:UpdateCertificateAuthority" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "$ref": "#/definitions/Arn" + }, + "CertificateSigningRequest": { + "type": "string" + }, + "CsrExtensions": { + "$ref": "#/definitions/CsrExtensions" + }, + "KeyAlgorithm": { + "type": "string" + }, + "KeyStorageSecurityStandard": { + "type": "string" + }, + "RevocationConfiguration": { + "$ref": "#/definitions/RevocationConfiguration" + }, + "SigningAlgorithm": { + "type": "string" + }, + "Subject": { + "$ref": "#/definitions/Subject" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "Type": { + "type": "string" + }, + "UsageMode": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CertificateSigningRequest" + ], + "required": [ + "Type", + "KeyAlgorithm", + "SigningAlgorithm", + "Subject" + ], + "sourceUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_ACMPCA.html", + "typeName": "AWS::ACMPCA::CertificateAuthority", + "writeOnlyProperties": [ + "/properties/Subject", + "/properties/Subject", + "/properties/CsrExtensions", + "/properties/Tags", + "/properties/RevocationConfiguration", + "/properties/KeyStorageSecurityStandard" + ] +} diff --git a/src/cfnlint/data/schemas/providers/eu_central_2/aws-cloudfront-originaccesscontrol.json b/src/cfnlint/data/schemas/providers/eu_central_2/aws-cloudfront-originaccesscontrol.json new file mode 100644 index 0000000000..2da12fdee1 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_central_2/aws-cloudfront-originaccesscontrol.json @@ -0,0 +1,88 @@ +{ + "additionalProperties": false, + "definitions": { + "OriginAccessControlConfig": { + "additionalProperties": false, + "properties": { + "Description": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "OriginAccessControlOriginType": { + "pattern": "^(s3|mediastore)$", + "type": "string" + }, + "SigningBehavior": { + "pattern": "^(never|no-override|always)$", + "type": "string" + }, + "SigningProtocol": { + "pattern": "^(sigv4)$", + "type": "string" + } + }, + "required": [ + "Name", + "SigningProtocol", + "SigningBehavior", + "OriginAccessControlOriginType" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "cloudfront:CreateOriginAccessControl" + ] + }, + "delete": { + "permissions": [ + "cloudfront:DeleteOriginAccessControl", + "cloudfront:GetOriginAccessControl" + ] + }, + "list": { + "permissions": [ + "cloudfront:ListOriginAccessControls" + ] + }, + "read": { + "permissions": [ + "cloudfront:GetOriginAccessControl" + ] + }, + "update": { + "permissions": [ + "cloudfront:UpdateOriginAccessControl", + "cloudfront:GetOriginAccessControl" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "type": "string" + }, + "OriginAccessControlConfig": { + "$ref": "#/definitions/OriginAccessControlConfig" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "OriginAccessControlConfig" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::CloudFront::OriginAccessControl" +} diff --git a/src/cfnlint/data/schemas/providers/eu_central_2/aws-cloudwatch-alarm.json b/src/cfnlint/data/schemas/providers/eu_central_2/aws-cloudwatch-alarm.json new file mode 100644 index 0000000000..613fbe51c1 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_central_2/aws-cloudwatch-alarm.json @@ -0,0 +1,318 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::CloudWatch::Alarm/Properties" + ], + "createOnlyProperties": [ + "/properties/AlarmName" + ], + "definitions": { + "Dimension": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Name" + ], + "type": "object" + }, + "Metric": { + "additionalProperties": false, + "properties": { + "Dimensions": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Dimension" + }, + "type": "array", + "uniqueItems": false + }, + "MetricName": { + "type": "string" + }, + "Namespace": { + "type": "string" + } + }, + "type": "object" + }, + "MetricDataQuery": { + "additionalProperties": false, + "properties": { + "AccountId": { + "type": "string" + }, + "Expression": { + "type": "string" + }, + "Id": { + "pattern": "^([a-z])([A-Za-z0-9\\_]*)$", + "type": "string" + }, + "Label": { + "type": "string" + }, + "MetricStat": { + "$ref": "#/definitions/MetricStat" + }, + "Period": { + "type": "integer" + }, + "ReturnData": { + "type": "boolean" + } + }, + "required": [ + "Id" + ], + "type": "object" + }, + "MetricStat": { + "additionalProperties": false, + "properties": { + "Metric": { + "$ref": "#/definitions/Metric" + }, + "Period": { + "type": "integer" + }, + "Stat": { + "type": "string" + }, + "Unit": { + "type": "string" + } + }, + "required": [ + "Stat", + "Period", + "Metric" + ], + "type": "object" + } + }, + "dependentExcluded": { + "ExtendedStatistic": [ + "Statistic" + ], + "Metrics": [ + "MetricName", + "Dimensions", + "Period", + "Namespace", + "Statistic", + "ExtendedStatistic", + "Unit" + ], + "Statistic": [ + "ExtendedStatistic" + ], + "Threshold": [ + "ThresholdMetricId" + ], + "ThresholdMetricId": [ + "Threshold" + ] + }, + "handlers": { + "create": { + "permissions": [ + "cloudwatch:PutMetricAlarm", + "cloudwatch:DescribeAlarms" + ] + }, + "delete": { + "permissions": [ + "cloudwatch:DeleteAlarms", + "cloudwatch:DescribeAlarms" + ] + }, + "list": { + "permissions": [ + "cloudwatch:DescribeAlarms" + ] + }, + "read": { + "permissions": [ + "cloudwatch:DescribeAlarms" + ] + }, + "update": { + "permissions": [ + "cloudwatch:PutMetricAlarm", + "cloudwatch:DescribeAlarms" + ] + } + }, + "primaryIdentifier": [ + "/properties/AlarmName" + ], + "properties": { + "ActionsEnabled": { + "default": true, + "type": "boolean" + }, + "AlarmActions": { + "items": { + "maximum": 1024, + "minimum": 1, + "type": "string" + }, + "maxItems": 5, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "AlarmDescription": { + "type": "string" + }, + "AlarmName": { + "type": "string" + }, + "Arn": { + "type": "string" + }, + "ComparisonOperator": { + "enum": [ + "GreaterThanOrEqualToThreshold", + "GreaterThanThreshold", + "LessThanThreshold", + "LessThanOrEqualToThreshold", + "LessThanLowerOrGreaterThanUpperThreshold", + "LessThanLowerThreshold", + "GreaterThanUpperThreshold" + ], + "type": "string" + }, + "DatapointsToAlarm": { + "type": "integer" + }, + "Dimensions": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Dimension" + }, + "type": "array", + "uniqueItems": false + }, + "EvaluateLowSampleCountPercentile": { + "type": "string" + }, + "EvaluationPeriods": { + "type": "integer" + }, + "ExtendedStatistic": { + "type": "string" + }, + "InsufficientDataActions": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "MetricName": { + "type": "string" + }, + "Metrics": { + "items": { + "$ref": "#/definitions/MetricDataQuery" + }, + "type": "array", + "uniqueItems": true + }, + "Namespace": { + "type": "string" + }, + "OKActions": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Period": { + "type": "integer" + }, + "Statistic": { + "enum": [ + "SampleCount", + "Average", + "Sum", + "Minimum", + "Maximum" + ], + "type": "string" + }, + "Threshold": { + "type": "number" + }, + "ThresholdMetricId": { + "type": "string" + }, + "TreatMissingData": { + "enum": [ + "breaching", + "ignore", + "missing", + "notBreaching" + ], + "type": "string" + }, + "Unit": { + "enum": [ + "Seconds", + "Microseconds", + "Milliseconds", + "Bytes", + "Kilobytes", + "Megabytes", + "Gigabytes", + "Terabytes", + "Bits", + "Kilobits", + "Megabits", + "Gigabits", + "Terabits", + "Percent", + "Count", + "Bytes/Second", + "Kilobytes/Second", + "Megabytes/Second", + "Gigabytes/Second", + "Terabytes/Second", + "Bits/Second", + "Kilobits/Second", + "Megabits/Second", + "Gigabits/Second", + "Terabits/Second", + "Count/Second", + "None" + ], + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "ComparisonOperator", + "EvaluationPeriods" + ], + "requiredXor": [ + "Metrics", + "MetricName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cloudwatch.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::CloudWatch::Alarm" +} diff --git a/src/cfnlint/data/schemas/providers/eu_central_2/aws-cloudwatch-compositealarm.json b/src/cfnlint/data/schemas/providers/eu_central_2/aws-cloudwatch-compositealarm.json new file mode 100644 index 0000000000..6503a56146 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_central_2/aws-cloudwatch-compositealarm.json @@ -0,0 +1,115 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AlarmName" + ], + "handlers": { + "create": { + "permissions": [ + "cloudwatch:DescribeAlarms", + "cloudwatch:PutCompositeAlarm" + ] + }, + "delete": { + "permissions": [ + "cloudwatch:DescribeAlarms", + "cloudwatch:DeleteAlarms" + ] + }, + "list": { + "permissions": [ + "cloudwatch:DescribeAlarms" + ] + }, + "read": { + "permissions": [ + "cloudwatch:DescribeAlarms" + ] + }, + "update": { + "permissions": [ + "cloudwatch:DescribeAlarms", + "cloudwatch:PutCompositeAlarm" + ] + } + }, + "primaryIdentifier": [ + "/properties/AlarmName" + ], + "properties": { + "ActionsEnabled": { + "type": "boolean" + }, + "ActionsSuppressor": { + "maxLength": 1600, + "minLength": 1, + "type": "string" + }, + "ActionsSuppressorExtensionPeriod": { + "minimum": 0, + "type": "integer" + }, + "ActionsSuppressorWaitPeriod": { + "minimum": 0, + "type": "integer" + }, + "AlarmActions": { + "items": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "maxItems": 5, + "type": "array" + }, + "AlarmDescription": { + "maxLength": 1024, + "minLength": 0, + "type": "string" + }, + "AlarmName": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "AlarmRule": { + "maxLength": 10240, + "minLength": 1, + "type": "string" + }, + "Arn": { + "maxLength": 1600, + "minLength": 1, + "type": "string" + }, + "InsufficientDataActions": { + "items": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "maxItems": 5, + "type": "array" + }, + "OKActions": { + "items": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "maxItems": 5, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "AlarmRule" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cloudwatch.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::CloudWatch::CompositeAlarm" +} diff --git a/src/cfnlint/data/schemas/providers/eu_central_2/aws-dynamodb-globaltable.json b/src/cfnlint/data/schemas/providers/eu_central_2/aws-dynamodb-globaltable.json index 4e5ba995cb..ae37e9142b 100644 --- a/src/cfnlint/data/schemas/providers/eu_central_2/aws-dynamodb-globaltable.json +++ b/src/cfnlint/data/schemas/providers/eu_central_2/aws-dynamodb-globaltable.json @@ -8,6 +8,27 @@ ] ], "additionalProperties": false, + "allOf": [ + { + "if": { + "required": [ + "LocalSecondaryIndexes" + ], + "type": "object" + }, + "then": { + "properties": { + "AttributeDefinitions": { + "minItems": 2 + }, + "KeySchema": { + "minItems": 2 + } + }, + "type": "object" + } + } + ], "createOnlyProperties": [ "/properties/LocalSecondaryIndexes", "/properties/TableName", @@ -79,13 +100,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "minItems": 1, - "type": "array", - "uniqueItems": true + "minItems": 1 }, "Projection": { "$ref": "#/definitions/Projection" @@ -102,22 +119,60 @@ "type": "object" }, "KeySchema": { - "additionalProperties": false, - "properties": { - "AttributeName": { - "maxLength": 255, - "minLength": 1, - "type": "string" + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "KeyType": { + "enum": [ + "HASH", + "RANGE" + ], + "type": "string" + } }, - "KeyType": { - "type": "string" - } + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" }, - "required": [ - "KeyType", - "AttributeName" + "prefixItems": [ + { + "additionalProperties": false, + "properties": { + "KeyType": { + "const": "HASH", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + }, + { + "properties": { + "KeyType": { + "const": "RANGE", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + } ], - "type": "object" + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "KinesisStreamSpecification": { "additionalProperties": false, @@ -147,12 +202,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "type": "array", - "uniqueItems": true + "minItems": 2 }, "Projection": { "$ref": "#/definitions/Projection" @@ -511,7 +563,10 @@ }, "minItems": 1, "type": "array", - "uniqueItems": true + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "BillingMode": { "type": "string" @@ -525,13 +580,9 @@ "uniqueItems": true }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "minItems": 1, - "type": "array", - "uniqueItems": true + "minItems": 1 }, "LocalSecondaryIndexes": { "insertionOrder": false, diff --git a/src/cfnlint/data/schemas/providers/eu_central_2/aws-dynamodb-table.json b/src/cfnlint/data/schemas/providers/eu_central_2/aws-dynamodb-table.json index efc82f1d70..f21d084b10 100644 --- a/src/cfnlint/data/schemas/providers/eu_central_2/aws-dynamodb-table.json +++ b/src/cfnlint/data/schemas/providers/eu_central_2/aws-dynamodb-table.json @@ -1,5 +1,26 @@ { "additionalProperties": false, + "allOf": [ + { + "if": { + "required": [ + "LocalSecondaryIndexes" + ], + "type": "object" + }, + "then": { + "properties": { + "AttributeDefinitions": { + "minItems": 2 + }, + "KeySchema": { + "minItems": 2 + } + }, + "type": "object" + } + } + ], "cfnLint": [ "AWS::DynamoDB::Table/Properties" ], @@ -95,11 +116,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 }, "Projection": { "$ref": "#/definitions/Projection" @@ -147,24 +166,57 @@ "type": "object" }, "KeySchema": { - "additionalProperties": false, - "properties": { - "AttributeName": { - "type": "string" + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "type": "string" + }, + "KeyType": { + "enum": [ + "HASH", + "RANGE" + ], + "type": "string" + } }, - "KeyType": { - "enum": [ - "HASH", - "RANGE" + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" + }, + "prefixItems": [ + { + "properties": { + "KeyType": { + "const": "HASH", + "type": "string" + } + }, + "required": [ + "KeyType" ], - "type": "string" + "type": "object" + }, + { + "properties": { + "KeyType": { + "const": "RANGE", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" } - }, - "required": [ - "KeyType", - "AttributeName" ], - "type": "object" + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "KinesisStreamSpecification": { "additionalProperties": false, @@ -192,11 +244,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 2 }, "Projection": { "$ref": "#/definitions/Projection" @@ -451,7 +501,10 @@ "$ref": "#/definitions/AttributeDefinition" }, "type": "array", - "uniqueItems": true + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "BillingMode": { "enum": [ @@ -479,11 +532,9 @@ "KeySchema": { "oneOf": [ { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 }, { "type": "object" diff --git a/src/cfnlint/data/schemas/providers/eu_central_2/aws-ec2-instance.json b/src/cfnlint/data/schemas/providers/eu_central_2/aws-ec2-instance.json deleted file mode 100644 index 7b3bfed595..0000000000 --- a/src/cfnlint/data/schemas/providers/eu_central_2/aws-ec2-instance.json +++ /dev/null @@ -1,571 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ElasticGpuSpecifications", - "/properties/Ipv6Addresses", - "/properties/PlacementGroupName", - "/properties/HostResourceGroupArn", - "/properties/ImageId", - "/properties/CpuOptions", - "/properties/PrivateIpAddress", - "/properties/ElasticInferenceAccelerators", - "/properties/EnclaveOptions", - "/properties/HibernationOptions", - "/properties/KeyName", - "/properties/LicenseSpecifications", - "/properties/NetworkInterfaces", - "/properties/AvailabilityZone", - "/properties/SubnetId", - "/properties/LaunchTemplate", - "/properties/SecurityGroups", - "/properties/Ipv6AddressCount" - ], - "definitions": { - "AssociationParameter": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "BlockDeviceMapping": { - "additionalProperties": false, - "properties": { - "DeviceName": { - "type": "string" - }, - "Ebs": { - "$ref": "#/definitions/Ebs" - }, - "NoDevice": { - "$ref": "#/definitions/NoDevice" - }, - "VirtualName": { - "type": "string" - } - }, - "required": [ - "DeviceName" - ], - "requiredXor": [ - "VirtualName", - "Ebs", - "NoDevice" - ], - "type": "object" - }, - "CpuOptions": { - "additionalProperties": false, - "properties": { - "CoreCount": { - "type": "integer" - }, - "ThreadsPerCore": { - "type": "integer" - } - }, - "type": "object" - }, - "CreditSpecification": { - "additionalProperties": false, - "properties": { - "CPUCredits": { - "type": "string" - } - }, - "type": "object" - }, - "Ebs": { - "additionalProperties": false, - "properties": { - "DeleteOnTermination": { - "type": "boolean" - }, - "Encrypted": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "KmsKeyId": { - "type": "string" - }, - "SnapshotId": { - "type": "string" - }, - "VolumeSize": { - "type": "integer" - }, - "VolumeType": { - "type": "string" - } - }, - "type": "object" - }, - "ElasticGpuSpecification": { - "additionalProperties": false, - "properties": { - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "ElasticInferenceAccelerator": { - "additionalProperties": false, - "properties": { - "Count": { - "type": "integer" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "EnclaveOptions": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - } - }, - "type": "object" - }, - "HibernationOptions": { - "additionalProperties": false, - "properties": { - "Configured": { - "type": "boolean" - } - }, - "type": "object" - }, - "InstanceIpv6Address": { - "additionalProperties": false, - "properties": { - "Ipv6Address": { - "type": "string" - } - }, - "required": [ - "Ipv6Address" - ], - "type": "object" - }, - "LaunchTemplateSpecification": { - "additionalProperties": false, - "properties": { - "LaunchTemplateId": { - "type": "string" - }, - "LaunchTemplateName": { - "type": "string" - }, - "Version": { - "type": "string" - } - }, - "required": [ - "Version" - ], - "type": "object" - }, - "LicenseSpecification": { - "additionalProperties": false, - "properties": { - "LicenseConfigurationArn": { - "type": "string" - } - }, - "required": [ - "LicenseConfigurationArn" - ], - "type": "object" - }, - "NetworkInterface": { - "additionalProperties": false, - "properties": { - "AssociateCarrierIpAddress": { - "type": "boolean" - }, - "AssociatePublicIpAddress": { - "type": "boolean" - }, - "DeleteOnTermination": { - "type": "boolean" - }, - "Description": { - "type": "string" - }, - "DeviceIndex": { - "type": "string" - }, - "GroupSet": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": false - }, - "NetworkInterfaceId": { - "type": "string" - }, - "PrivateIpAddress": { - "type": "string" - }, - "PrivateIpAddresses": { - "items": { - "$ref": "#/definitions/PrivateIpAddressSpecification" - }, - "type": "array", - "uniqueItems": false - }, - "SecondaryPrivateIpAddressCount": { - "type": "integer" - }, - "SubnetId": { - "type": "string" - } - }, - "required": [ - "DeviceIndex" - ], - "type": "object" - }, - "NoDevice": { - "additionalProperties": false, - "type": "object" - }, - "PrivateDnsNameOptions": { - "additionalProperties": false, - "properties": { - "EnableResourceNameDnsAAAARecord": { - "type": "boolean" - }, - "EnableResourceNameDnsARecord": { - "type": "boolean" - }, - "HostnameType": { - "type": "string" - } - }, - "type": "object" - }, - "PrivateIpAddressSpecification": { - "additionalProperties": false, - "properties": { - "Primary": { - "type": "boolean" - }, - "PrivateIpAddress": { - "type": "string" - } - }, - "required": [ - "PrivateIpAddress", - "Primary" - ], - "type": "object" - }, - "SsmAssociation": { - "additionalProperties": false, - "properties": { - "AssociationParameters": { - "items": { - "$ref": "#/definitions/AssociationParameter" - }, - "type": "array", - "uniqueItems": false - }, - "DocumentName": { - "type": "string" - } - }, - "required": [ - "DocumentName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "Volume": { - "additionalProperties": false, - "properties": { - "Device": { - "type": "string" - }, - "VolumeId": { - "type": "string" - } - }, - "required": [ - "VolumeId", - "Device" - ], - "type": "object" - } - }, - "dependentExcluded": { - "NetworkInterfaces": [ - "SubnetId" - ], - "SubnetId": [ - "NetworkInterfaces" - ] - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AdditionalInfo": { - "type": "string" - }, - "Affinity": { - "enum": [ - "default", - "host" - ], - "type": "string" - }, - "AvailabilityZone": { - "cfnLint": [ - "AWS::EC2::Instance/Properties/AvailabilityZone" - ], - "type": "string" - }, - "BlockDeviceMappings": { - "items": { - "$ref": "#/definitions/BlockDeviceMapping" - }, - "type": "array", - "uniqueItems": false - }, - "CpuOptions": { - "$ref": "#/definitions/CpuOptions" - }, - "CreditSpecification": { - "$ref": "#/definitions/CreditSpecification" - }, - "DisableApiTermination": { - "type": "boolean" - }, - "EbsOptimized": { - "type": "boolean" - }, - "ElasticGpuSpecifications": { - "items": { - "$ref": "#/definitions/ElasticGpuSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "ElasticInferenceAccelerators": { - "items": { - "$ref": "#/definitions/ElasticInferenceAccelerator" - }, - "type": "array", - "uniqueItems": true - }, - "EnclaveOptions": { - "$ref": "#/definitions/EnclaveOptions" - }, - "HibernationOptions": { - "$ref": "#/definitions/HibernationOptions" - }, - "HostId": { - "type": "string" - }, - "HostResourceGroupArn": { - "type": "string" - }, - "IamInstanceProfile": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "ImageId": { - "type": "string" - }, - "InstanceInitiatedShutdownBehavior": { - "type": "string" - }, - "InstanceType": { - "cfnLint": [ - "AWS::EC2::Instance/Properties/InstanceType" - ], - "type": "string" - }, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": false - }, - "KernelId": { - "type": "string" - }, - "KeyName": { - "type": "string" - }, - "LaunchTemplate": { - "$ref": "#/definitions/LaunchTemplateSpecification" - }, - "LicenseSpecifications": { - "items": { - "$ref": "#/definitions/LicenseSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "Monitoring": { - "type": "boolean" - }, - "NetworkInterfaces": { - "items": { - "$ref": "#/definitions/NetworkInterface" - }, - "type": "array", - "uniqueItems": false - }, - "PlacementGroupName": { - "type": "string" - }, - "PrivateDnsName": { - "type": "string" - }, - "PrivateDnsNameOptions": { - "$ref": "#/definitions/PrivateDnsNameOptions" - }, - "PrivateIp": { - "type": "string" - }, - "PrivateIpAddress": { - "type": "string" - }, - "PropagateTagsToVolumeOnCreation": { - "type": "boolean" - }, - "PublicDnsName": { - "type": "string" - }, - "PublicIp": { - "type": "string" - }, - "RamdiskId": { - "type": "string" - }, - "SecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SecurityGroups": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SourceDestCheck": { - "type": "boolean" - }, - "SsmAssociations": { - "items": { - "$ref": "#/definitions/SsmAssociation" - }, - "type": "array", - "uniqueItems": false - }, - "SubnetId": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "Tenancy": { - "enum": [ - "default", - "dedicated", - "host" - ], - "type": "string" - }, - "UserData": { - "type": "string" - }, - "Volumes": { - "items": { - "$ref": "#/definitions/Volume" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/PublicIp", - "/properties/Id", - "/properties/PublicDnsName", - "/properties/PrivateDnsName", - "/properties/PrivateIp" - ], - "requiredXor": [ - "ImageId", - "LaunchTemplate" - ], - "typeName": "AWS::EC2::Instance" -} diff --git a/src/cfnlint/data/schemas/providers/eu_central_2/aws-ec2-securitygroupegress.json b/src/cfnlint/data/schemas/providers/eu_central_2/aws-ec2-securitygroupegress.json new file mode 100644 index 0000000000..f94631dad2 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_central_2/aws-ec2-securitygroupegress.json @@ -0,0 +1,98 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::EC2::SecurityGroupEgress/Properties" + ], + "createOnlyProperties": [ + "/properties/IpProtocol", + "/properties/DestinationSecurityGroupId", + "/properties/ToPort", + "/properties/CidrIp", + "/properties/FromPort", + "/properties/GroupId", + "/properties/CidrIpv6", + "/properties/DestinationPrefixListId" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:AuthorizeSecurityGroupEgress", + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "delete": { + "permissions": [ + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "update": { + "permissions": [ + "ec2:UpdateSecurityGroupRuleDescriptionsEgress" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CidrIp": { + "type": "string" + }, + "CidrIpv6": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "DestinationPrefixListId": { + "type": "string" + }, + "DestinationSecurityGroupId": { + "type": "string" + }, + "FromPort": { + "minimum": -1, + "type": "integer" + }, + "GroupId": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "IpProtocol": { + "type": "string" + }, + "ToPort": { + "minimum": -1, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IpProtocol", + "GroupId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SecurityGroupEgress" +} diff --git a/src/cfnlint/data/schemas/providers/eu_central_2/aws-ec2-transitgatewayroutetableassociation.json b/src/cfnlint/data/schemas/providers/eu_central_2/aws-ec2-transitgatewayroutetableassociation.json new file mode 100644 index 0000000000..890b2c4be2 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_central_2/aws-ec2-transitgatewayroutetableassociation.json @@ -0,0 +1,29 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TransitGatewayRouteTableId", + "/properties/TransitGatewayAttachmentId" + ], + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "type": "string" + }, + "TransitGatewayAttachmentId": { + "type": "string" + }, + "TransitGatewayRouteTableId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "TransitGatewayRouteTableId", + "TransitGatewayAttachmentId" + ], + "typeName": "AWS::EC2::TransitGatewayRouteTableAssociation" +} diff --git a/src/cfnlint/data/schemas/providers/eu_central_2/aws-lambda-eventsourcemapping.json b/src/cfnlint/data/schemas/providers/eu_central_2/aws-lambda-eventsourcemapping.json new file mode 100644 index 0000000000..cb7599c139 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_central_2/aws-lambda-eventsourcemapping.json @@ -0,0 +1,353 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::Lambda::EventSourceMapping/Properties" + ], + "createOnlyProperties": [ + "/properties/EventSourceArn", + "/properties/StartingPosition", + "/properties/StartingPositionTimestamp", + "/properties/SelfManagedEventSource", + "/properties/AmazonManagedKafkaEventSourceConfig", + "/properties/SelfManagedKafkaEventSourceConfig" + ], + "definitions": { + "AmazonManagedKafkaEventSourceConfig": { + "additionalProperties": false, + "properties": { + "ConsumerGroupId": { + "$ref": "#/definitions/ConsumerGroupId" + } + }, + "type": "object" + }, + "ConsumerGroupId": { + "maxLength": 200, + "minLength": 1, + "pattern": "[a-zA-Z0-9-\\/*:_+=.@-]*", + "type": "string" + }, + "DestinationConfig": { + "additionalProperties": false, + "properties": { + "OnFailure": { + "$ref": "#/definitions/OnFailure" + } + }, + "type": "object" + }, + "DocumentDBEventSourceConfig": { + "additionalProperties": false, + "properties": { + "CollectionName": { + "maxLength": 57, + "minLength": 1, + "type": "string" + }, + "DatabaseName": { + "maxLength": 63, + "minLength": 1, + "type": "string" + }, + "FullDocument": { + "enum": [ + "UpdateLookup", + "Default" + ], + "type": "string" + } + }, + "type": "object" + }, + "Endpoints": { + "additionalProperties": false, + "properties": { + "KafkaBootstrapServers": { + "items": { + "maxLength": 300, + "minLength": 1, + "pattern": "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9]):[0-9]{1,5}", + "type": "string" + }, + "maxItems": 10, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "Filter": { + "additionalProperties": false, + "properties": { + "Pattern": { + "maxLength": 4096, + "minLength": 0, + "pattern": ".*", + "type": "string" + } + }, + "type": "object" + }, + "FilterCriteria": { + "additionalProperties": false, + "properties": { + "Filters": { + "items": { + "$ref": "#/definitions/Filter" + }, + "maxItems": 20, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "MaximumConcurrency": { + "maximum": 1000, + "minimum": 2, + "type": "integer" + }, + "OnFailure": { + "additionalProperties": false, + "properties": { + "Destination": { + "maxLength": 1024, + "minLength": 12, + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "type": "string" + } + }, + "type": "object" + }, + "ScalingConfig": { + "additionalProperties": false, + "properties": { + "MaximumConcurrency": { + "$ref": "#/definitions/MaximumConcurrency" + } + }, + "type": "object" + }, + "SelfManagedEventSource": { + "additionalProperties": false, + "properties": { + "Endpoints": { + "$ref": "#/definitions/Endpoints" + } + }, + "type": "object" + }, + "SelfManagedKafkaEventSourceConfig": { + "additionalProperties": false, + "properties": { + "ConsumerGroupId": { + "$ref": "#/definitions/ConsumerGroupId" + } + }, + "type": "object" + }, + "SourceAccessConfiguration": { + "additionalProperties": false, + "properties": { + "Type": { + "enum": [ + "BASIC_AUTH", + "VPC_SUBNET", + "VPC_SECURITY_GROUP", + "SASL_SCRAM_512_AUTH", + "SASL_SCRAM_256_AUTH", + "VIRTUAL_HOST", + "CLIENT_CERTIFICATE_TLS_AUTH", + "SERVER_ROOT_CA_CERTIFICATE" + ], + "type": "string" + }, + "URI": { + "maxLength": 200, + "minLength": 1, + "pattern": "[a-zA-Z0-9-\\/*:_+=.@-]*", + "type": "string" + } + }, + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "lambda:CreateEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + }, + "delete": { + "permissions": [ + "lambda:DeleteEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + }, + "list": { + "permissions": [ + "lambda:ListEventSourceMappings" + ] + }, + "read": { + "permissions": [ + "lambda:GetEventSourceMapping" + ] + }, + "update": { + "permissions": [ + "lambda:UpdateEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AmazonManagedKafkaEventSourceConfig": { + "$ref": "#/definitions/AmazonManagedKafkaEventSourceConfig" + }, + "BatchSize": { + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "BisectBatchOnFunctionError": { + "type": "boolean" + }, + "DestinationConfig": { + "$ref": "#/definitions/DestinationConfig" + }, + "DocumentDBEventSourceConfig": { + "$ref": "#/definitions/DocumentDBEventSourceConfig" + }, + "Enabled": { + "type": "boolean" + }, + "EventSourceArn": { + "maxLength": 1024, + "minLength": 12, + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "type": "string" + }, + "FilterCriteria": { + "$ref": "#/definitions/FilterCriteria" + }, + "FunctionName": { + "maxLength": 140, + "minLength": 1, + "pattern": "(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?", + "type": "string" + }, + "FunctionResponseTypes": { + "items": { + "enum": [ + "ReportBatchItemFailures" + ], + "type": "string" + }, + "maxLength": 1, + "minLength": 0, + "type": "array", + "uniqueItems": true + }, + "Id": { + "maxLength": 36, + "minLength": 36, + "pattern": "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + "type": "string" + }, + "MaximumBatchingWindowInSeconds": { + "maximum": 300, + "minimum": 0, + "type": "integer" + }, + "MaximumRecordAgeInSeconds": { + "maximum": 604800, + "minimum": -1, + "type": "integer" + }, + "MaximumRetryAttempts": { + "maximum": 10000, + "minimum": -1, + "type": "integer" + }, + "ParallelizationFactor": { + "maximum": 10, + "minimum": 1, + "type": "integer" + }, + "Queues": { + "items": { + "maxLength": 1000, + "minLength": 1, + "pattern": "[\\s\\S]*", + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "ScalingConfig": { + "$ref": "#/definitions/ScalingConfig" + }, + "SelfManagedEventSource": { + "$ref": "#/definitions/SelfManagedEventSource" + }, + "SelfManagedKafkaEventSourceConfig": { + "$ref": "#/definitions/SelfManagedKafkaEventSourceConfig" + }, + "SourceAccessConfigurations": { + "items": { + "$ref": "#/definitions/SourceAccessConfiguration" + }, + "maxItems": 22, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "StartingPosition": { + "enum": [ + "TRIM_HORIZON", + "LATEST", + "AT_TIMESTAMP" + ], + "maxLength": 12, + "minLength": 6, + "pattern": "(LATEST|TRIM_HORIZON|AT_TIMESTAMP)+", + "type": "string" + }, + "StartingPositionTimestamp": { + "type": "number" + }, + "Topics": { + "items": { + "maxLength": 249, + "minLength": 1, + "pattern": "^[^.]([a-zA-Z0-9\\-_.]+)", + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "TumblingWindowInSeconds": { + "maximum": 900, + "minimum": 0, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "FunctionName" + ], + "typeName": "AWS::Lambda::EventSourceMapping" +} diff --git a/src/cfnlint/data/schemas/providers/eu_central_2/aws-redshift-eventsubscription.json b/src/cfnlint/data/schemas/providers/eu_central_2/aws-redshift-eventsubscription.json new file mode 100644 index 0000000000..994c39f7d4 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_central_2/aws-redshift-eventsubscription.json @@ -0,0 +1,181 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/SubscriptionName" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "redshift:CreateEventSubscription", + "redshift:CreateTags", + "redshift:DescribeTags", + "redshift:DescribeEventSubscriptions" + ] + }, + "delete": { + "permissions": [ + "redshift:DescribeEventSubscriptions", + "redshift:DeleteEventSubscription", + "redshift:DescribeTags", + "redshift:DeleteTags" + ] + }, + "list": { + "permissions": [ + "redshift:DescribeTags", + "redshift:DescribeEventSubscriptions" + ] + }, + "read": { + "permissions": [ + "redshift:DescribeEventSubscriptions", + "redshift:DescribeTags" + ] + }, + "update": { + "permissions": [ + "redshift:ModifyEventSubscription", + "redshift:CreateTags", + "redshift:DescribeTags", + "redshift:DescribeEventSubscriptions", + "redshift:DeleteTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/SubscriptionName" + ], + "properties": { + "CustSubscriptionId": { + "type": "string" + }, + "CustomerAwsId": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + }, + "EventCategories": { + "insertionOrder": false, + "items": { + "enum": [ + "configuration", + "management", + "monitoring", + "security", + "pending" + ], + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "EventCategoriesList": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Severity": { + "enum": [ + "ERROR", + "INFO" + ], + "type": "string" + }, + "SnsTopicArn": { + "type": "string" + }, + "SourceIds": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "SourceIdsList": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "SourceType": { + "enum": [ + "cluster", + "cluster-parameter-group", + "cluster-security-group", + "cluster-snapshot", + "scheduled-action" + ], + "type": "string" + }, + "Status": { + "enum": [ + "active", + "no-permission", + "topic-not-exist" + ], + "type": "string" + }, + "SubscriptionCreationTime": { + "type": "string" + }, + "SubscriptionName": { + "pattern": "^(?=^[a-zA-Z][a-zA-Z0-9]*(-[a-zA-Z0-9]+)*$).{1,255}$", + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/CustomerAwsId", + "/properties/CustSubscriptionId", + "/properties/Status", + "/properties/SubscriptionCreationTime", + "/properties/SourceIdsList", + "/properties/EventCategoriesList" + ], + "required": [ + "SubscriptionName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-redshift", + "tagging": { + "taggable": true + }, + "typeName": "AWS::Redshift::EventSubscription", + "writeOnlyProperties": [ + "/properties/Tags", + "/properties/Tags/*/Key", + "/properties/Tags/*/Value" + ] +} 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 6cd8937357..a45bf9b1a4 100644 --- a/src/cfnlint/data/schemas/providers/eu_north_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/eu_north_1/__init__.py @@ -37,6 +37,7 @@ "AWS::MSK::Replicator", "AWS::EC2::NetworkPerformanceMetricSubscription", "AWS::MediaLive::Channel", + "AWS::CleanRoomsML::TrainingDataset", "AWS::CloudFront::ContinuousDeploymentPolicy", "AWS::QuickSight::Analysis", "AWS::ECR::ReplicationConfiguration", @@ -142,6 +143,7 @@ "AWS::DataSync::LocationHDFS", "AWS::Events::Archive", "AWS::MSK::Cluster", + "AWS::SecurityHub::DelegatedAdmin", "AWS::ControlTower::EnabledBaseline", "AWS::EC2::VPCEndpointConnectionNotification", "AWS::CodePipeline::Pipeline", @@ -338,6 +340,7 @@ "AWS::IAM::ServerCertificate", "AWS::CodeStarConnections::Connection", "AWS::IoT::SecurityProfile", + "AWS::GlobalAccelerator::CrossAccountAttachment", "AWS::Events::EventBus", "AWS::SQS::QueueInlinePolicy", "AWS::Organizations::Organization", @@ -374,6 +377,7 @@ "AWS::EFS::FileSystem", "AWS::Config::OrganizationConformancePack", "AWS::Logs::QueryDefinition", + "AWS::SecurityHub::ProductSubscription", "AWS::IAM::InstanceProfile", "AWS::IoT::BillingGroup", "AWS::DataSync::LocationNFS", @@ -389,6 +393,7 @@ "AWS::Cognito::UserPoolUICustomizationAttachment", "AWS::SageMaker::NotebookInstanceLifecycleConfig", "AWS::ImageBuilder::ContainerRecipe", + "AWS::CodeConnections::Connection", "AWS::EFS::AccessPoint", "AWS::Redshift::ClusterSecurityGroupIngress", "AWS::ServiceCatalogAppRegistry::AttributeGroupAssociation", @@ -416,6 +421,7 @@ "AWS::EC2::ClientVpnRoute", "AWS::ImageBuilder::Workflow", "AWS::ECS::TaskSet", + "AWS::SecurityLake::AwsLogSource", "AWS::AppSync::ApiKey", "AWS::CloudFormation::TypeActivation", "AWS::GroundStation::DataflowEndpointGroup", @@ -553,6 +559,7 @@ "AWS::CodeBuild::SourceCredential", "AWS::EMR::InstanceFleetConfig", "AWS::EMR::Cluster", + "AWS::SecurityLake::DataLake", "AWS::CodePipeline::Webhook", "AWS::ApiGatewayV2::DomainName", "AWS::RDS::DBCluster", @@ -628,6 +635,7 @@ "AWS::Logs::Delivery", "AWS::ServiceCatalog::Portfolio", "AWS::IoT::Policy", + "AWS::APS::Scraper", "AWS::EC2::TransitGatewayRoute", "AWS::SSM::MaintenanceWindow", "AWS::DataZone::Domain", @@ -643,6 +651,7 @@ "AWS::IoT::ScheduledAudit", "AWS::DevOpsGuru::LogAnomalyDetectionIntegration", "AWS::NetworkManager::Link", + "AWS::SecurityLake::Subscriber", "AWS::SageMaker::NotebookInstance", "AWS::SSO::InstanceAccessControlAttributeConfiguration", "AWS::WAFRegional::ByteMatchSet", @@ -672,6 +681,7 @@ "AWS::AppSync::GraphQLApi", "AWS::EC2::EgressOnlyInternetGateway", "AWS::Athena::CapacityReservation", + "AWS::SecurityHub::Insight", "AWS::Config::ConformancePack", "AWS::EC2::VPCCidrBlock", "AWS::APS::Workspace", @@ -955,7 +965,6 @@ "aws-memorydb-cluster.json", "aws-dms-replicationconfig.json", "aws-wafregional-ipset.json", - "aws-ec2-securitygroupegress.json", "aws-ec2-localgatewayroutetablevpcassociation.json", "aws-config-organizationconfigrule.json", "aws-glue-dataqualityruleset.json", @@ -965,6 +974,7 @@ "aws-msk-replicator.json", "aws-ec2-networkperformancemetricsubscription.json", "aws-medialive-channel.json", + "aws-cleanroomsml-trainingdataset.json", "aws-cloudfront-continuousdeploymentpolicy.json", "aws-quicksight-analysis.json", "aws-ecr-replicationconfiguration.json", @@ -983,7 +993,6 @@ "aws-apigateway-model.json", "aws-apigatewayv2-integrationresponse.json", "aws-ec2-networkacl.json", - "aws-lambda-eventsourcemapping.json", "aws-logs-resourcepolicy.json", "aws-servicecatalog-launchnotificationconstraint.json", "aws-dms-instanceprofile.json", @@ -1066,6 +1075,7 @@ "aws-datasync-locationhdfs.json", "aws-events-archive.json", "aws-msk-cluster.json", + "aws-securityhub-delegatedadmin.json", "aws-controltower-enabledbaseline.json", "aws-ec2-vpcendpointconnectionnotification.json", "aws-codepipeline-pipeline.json", @@ -1161,7 +1171,6 @@ "aws-ec2-transitgatewaymulticastdomainassociation.json", "aws-s3outposts-endpoint.json", "aws-waf-sizeconstraintset.json", - "aws-ec2-transitgatewayroutetableassociation.json", "aws-appconfig-environment.json", "aws-imagebuilder-image.json", "aws-elasticache-securitygroupingress.json", @@ -1257,6 +1266,7 @@ "aws-iam-servercertificate.json", "aws-codestarconnections-connection.json", "aws-iot-securityprofile.json", + "aws-globalaccelerator-crossaccountattachment.json", "aws-events-eventbus.json", "aws-sqs-queueinlinepolicy.json", "aws-organizations-organization.json", @@ -1292,6 +1302,7 @@ "aws-efs-filesystem.json", "aws-config-organizationconformancepack.json", "aws-logs-querydefinition.json", + "aws-securityhub-productsubscription.json", "aws-iam-instanceprofile.json", "aws-iot-billinggroup.json", "aws-datasync-locationnfs.json", @@ -1305,6 +1316,7 @@ "aws-servicecatalog-serviceactionassociation.json", "aws-sagemaker-notebookinstancelifecycleconfig.json", "aws-imagebuilder-containerrecipe.json", + "aws-codeconnections-connection.json", "aws-efs-accesspoint.json", "aws-redshift-clustersecuritygroupingress.json", "aws-servicecatalogappregistry-attributegroupassociation.json", @@ -1331,6 +1343,7 @@ "aws-ec2-clientvpnroute.json", "aws-imagebuilder-workflow.json", "aws-ecs-taskset.json", + "aws-securitylake-awslogsource.json", "aws-appsync-apikey.json", "aws-cloudformation-typeactivation.json", "aws-groundstation-dataflowendpointgroup.json", @@ -1464,6 +1477,7 @@ "aws-codebuild-sourcecredential.json", "aws-emr-instancefleetconfig.json", "aws-emr-cluster.json", + "aws-securitylake-datalake.json", "aws-codepipeline-webhook.json", "aws-apigatewayv2-domainname.json", "aws-rds-dbcluster.json", @@ -1493,8 +1507,6 @@ "aws-datasync-locationefs.json", "aws-ec2-localgatewayroutetable.json", "aws-apigateway-resource.json", - "aws-sagemaker-appimageconfig.json", - "aws-verifiedpermissions-identitysource.json", "aws-macie-session.json", "aws-elasticloadbalancingv2-targetgroup.json", "aws-applicationautoscaling-scalingpolicy.json", @@ -1536,6 +1548,7 @@ "aws-logs-delivery.json", "aws-servicecatalog-portfolio.json", "aws-iot-policy.json", + "aws-aps-scraper.json", "aws-ssm-maintenancewindow.json", "aws-datazone-domain.json", "aws-lakeformation-tagassociation.json", @@ -1550,6 +1563,7 @@ "aws-iot-scheduledaudit.json", "aws-devopsguru-loganomalydetectionintegration.json", "aws-networkmanager-link.json", + "aws-securitylake-subscriber.json", "aws-sagemaker-notebookinstance.json", "aws-sso-instanceaccesscontrolattributeconfiguration.json", "aws-wafregional-bytematchset.json", @@ -1579,6 +1593,7 @@ "aws-appsync-graphqlapi.json", "aws-ec2-egressonlyinternetgateway.json", "aws-athena-capacityreservation.json", + "aws-securityhub-insight.json", "aws-config-conformancepack.json", "aws-ec2-vpccidrblock.json", "aws-aps-workspace.json", @@ -1659,6 +1674,7 @@ "aws-iot-accountauditconfiguration.json", "aws-sagemaker-userprofile.json", "aws-ec2-prefixlist.json", + "aws-ec2-instance.json", "aws-networkmanager-device.json", "aws-ec2-subnetcidrblock.json", "aws-mediapackage-asset.json", diff --git a/src/cfnlint/data/schemas/providers/eu_north_1/aws-dynamodb-globaltable.json b/src/cfnlint/data/schemas/providers/eu_north_1/aws-dynamodb-globaltable.json index 4e5ba995cb..ae37e9142b 100644 --- a/src/cfnlint/data/schemas/providers/eu_north_1/aws-dynamodb-globaltable.json +++ b/src/cfnlint/data/schemas/providers/eu_north_1/aws-dynamodb-globaltable.json @@ -8,6 +8,27 @@ ] ], "additionalProperties": false, + "allOf": [ + { + "if": { + "required": [ + "LocalSecondaryIndexes" + ], + "type": "object" + }, + "then": { + "properties": { + "AttributeDefinitions": { + "minItems": 2 + }, + "KeySchema": { + "minItems": 2 + } + }, + "type": "object" + } + } + ], "createOnlyProperties": [ "/properties/LocalSecondaryIndexes", "/properties/TableName", @@ -79,13 +100,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "minItems": 1, - "type": "array", - "uniqueItems": true + "minItems": 1 }, "Projection": { "$ref": "#/definitions/Projection" @@ -102,22 +119,60 @@ "type": "object" }, "KeySchema": { - "additionalProperties": false, - "properties": { - "AttributeName": { - "maxLength": 255, - "minLength": 1, - "type": "string" + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "KeyType": { + "enum": [ + "HASH", + "RANGE" + ], + "type": "string" + } }, - "KeyType": { - "type": "string" - } + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" }, - "required": [ - "KeyType", - "AttributeName" + "prefixItems": [ + { + "additionalProperties": false, + "properties": { + "KeyType": { + "const": "HASH", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + }, + { + "properties": { + "KeyType": { + "const": "RANGE", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + } ], - "type": "object" + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "KinesisStreamSpecification": { "additionalProperties": false, @@ -147,12 +202,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "type": "array", - "uniqueItems": true + "minItems": 2 }, "Projection": { "$ref": "#/definitions/Projection" @@ -511,7 +563,10 @@ }, "minItems": 1, "type": "array", - "uniqueItems": true + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "BillingMode": { "type": "string" @@ -525,13 +580,9 @@ "uniqueItems": true }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "minItems": 1, - "type": "array", - "uniqueItems": true + "minItems": 1 }, "LocalSecondaryIndexes": { "insertionOrder": false, diff --git a/src/cfnlint/data/schemas/providers/eu_north_1/aws-dynamodb-table.json b/src/cfnlint/data/schemas/providers/eu_north_1/aws-dynamodb-table.json index efc82f1d70..f21d084b10 100644 --- a/src/cfnlint/data/schemas/providers/eu_north_1/aws-dynamodb-table.json +++ b/src/cfnlint/data/schemas/providers/eu_north_1/aws-dynamodb-table.json @@ -1,5 +1,26 @@ { "additionalProperties": false, + "allOf": [ + { + "if": { + "required": [ + "LocalSecondaryIndexes" + ], + "type": "object" + }, + "then": { + "properties": { + "AttributeDefinitions": { + "minItems": 2 + }, + "KeySchema": { + "minItems": 2 + } + }, + "type": "object" + } + } + ], "cfnLint": [ "AWS::DynamoDB::Table/Properties" ], @@ -95,11 +116,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 }, "Projection": { "$ref": "#/definitions/Projection" @@ -147,24 +166,57 @@ "type": "object" }, "KeySchema": { - "additionalProperties": false, - "properties": { - "AttributeName": { - "type": "string" + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "type": "string" + }, + "KeyType": { + "enum": [ + "HASH", + "RANGE" + ], + "type": "string" + } }, - "KeyType": { - "enum": [ - "HASH", - "RANGE" + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" + }, + "prefixItems": [ + { + "properties": { + "KeyType": { + "const": "HASH", + "type": "string" + } + }, + "required": [ + "KeyType" ], - "type": "string" + "type": "object" + }, + { + "properties": { + "KeyType": { + "const": "RANGE", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" } - }, - "required": [ - "KeyType", - "AttributeName" ], - "type": "object" + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "KinesisStreamSpecification": { "additionalProperties": false, @@ -192,11 +244,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 2 }, "Projection": { "$ref": "#/definitions/Projection" @@ -451,7 +501,10 @@ "$ref": "#/definitions/AttributeDefinition" }, "type": "array", - "uniqueItems": true + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "BillingMode": { "enum": [ @@ -479,11 +532,9 @@ "KeySchema": { "oneOf": [ { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 }, { "type": "object" diff --git a/src/cfnlint/data/schemas/providers/eu_north_1/aws-ec2-instance.json b/src/cfnlint/data/schemas/providers/eu_north_1/aws-ec2-instance.json deleted file mode 100644 index 7b3bfed595..0000000000 --- a/src/cfnlint/data/schemas/providers/eu_north_1/aws-ec2-instance.json +++ /dev/null @@ -1,571 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ElasticGpuSpecifications", - "/properties/Ipv6Addresses", - "/properties/PlacementGroupName", - "/properties/HostResourceGroupArn", - "/properties/ImageId", - "/properties/CpuOptions", - "/properties/PrivateIpAddress", - "/properties/ElasticInferenceAccelerators", - "/properties/EnclaveOptions", - "/properties/HibernationOptions", - "/properties/KeyName", - "/properties/LicenseSpecifications", - "/properties/NetworkInterfaces", - "/properties/AvailabilityZone", - "/properties/SubnetId", - "/properties/LaunchTemplate", - "/properties/SecurityGroups", - "/properties/Ipv6AddressCount" - ], - "definitions": { - "AssociationParameter": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "BlockDeviceMapping": { - "additionalProperties": false, - "properties": { - "DeviceName": { - "type": "string" - }, - "Ebs": { - "$ref": "#/definitions/Ebs" - }, - "NoDevice": { - "$ref": "#/definitions/NoDevice" - }, - "VirtualName": { - "type": "string" - } - }, - "required": [ - "DeviceName" - ], - "requiredXor": [ - "VirtualName", - "Ebs", - "NoDevice" - ], - "type": "object" - }, - "CpuOptions": { - "additionalProperties": false, - "properties": { - "CoreCount": { - "type": "integer" - }, - "ThreadsPerCore": { - "type": "integer" - } - }, - "type": "object" - }, - "CreditSpecification": { - "additionalProperties": false, - "properties": { - "CPUCredits": { - "type": "string" - } - }, - "type": "object" - }, - "Ebs": { - "additionalProperties": false, - "properties": { - "DeleteOnTermination": { - "type": "boolean" - }, - "Encrypted": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "KmsKeyId": { - "type": "string" - }, - "SnapshotId": { - "type": "string" - }, - "VolumeSize": { - "type": "integer" - }, - "VolumeType": { - "type": "string" - } - }, - "type": "object" - }, - "ElasticGpuSpecification": { - "additionalProperties": false, - "properties": { - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "ElasticInferenceAccelerator": { - "additionalProperties": false, - "properties": { - "Count": { - "type": "integer" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "EnclaveOptions": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - } - }, - "type": "object" - }, - "HibernationOptions": { - "additionalProperties": false, - "properties": { - "Configured": { - "type": "boolean" - } - }, - "type": "object" - }, - "InstanceIpv6Address": { - "additionalProperties": false, - "properties": { - "Ipv6Address": { - "type": "string" - } - }, - "required": [ - "Ipv6Address" - ], - "type": "object" - }, - "LaunchTemplateSpecification": { - "additionalProperties": false, - "properties": { - "LaunchTemplateId": { - "type": "string" - }, - "LaunchTemplateName": { - "type": "string" - }, - "Version": { - "type": "string" - } - }, - "required": [ - "Version" - ], - "type": "object" - }, - "LicenseSpecification": { - "additionalProperties": false, - "properties": { - "LicenseConfigurationArn": { - "type": "string" - } - }, - "required": [ - "LicenseConfigurationArn" - ], - "type": "object" - }, - "NetworkInterface": { - "additionalProperties": false, - "properties": { - "AssociateCarrierIpAddress": { - "type": "boolean" - }, - "AssociatePublicIpAddress": { - "type": "boolean" - }, - "DeleteOnTermination": { - "type": "boolean" - }, - "Description": { - "type": "string" - }, - "DeviceIndex": { - "type": "string" - }, - "GroupSet": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": false - }, - "NetworkInterfaceId": { - "type": "string" - }, - "PrivateIpAddress": { - "type": "string" - }, - "PrivateIpAddresses": { - "items": { - "$ref": "#/definitions/PrivateIpAddressSpecification" - }, - "type": "array", - "uniqueItems": false - }, - "SecondaryPrivateIpAddressCount": { - "type": "integer" - }, - "SubnetId": { - "type": "string" - } - }, - "required": [ - "DeviceIndex" - ], - "type": "object" - }, - "NoDevice": { - "additionalProperties": false, - "type": "object" - }, - "PrivateDnsNameOptions": { - "additionalProperties": false, - "properties": { - "EnableResourceNameDnsAAAARecord": { - "type": "boolean" - }, - "EnableResourceNameDnsARecord": { - "type": "boolean" - }, - "HostnameType": { - "type": "string" - } - }, - "type": "object" - }, - "PrivateIpAddressSpecification": { - "additionalProperties": false, - "properties": { - "Primary": { - "type": "boolean" - }, - "PrivateIpAddress": { - "type": "string" - } - }, - "required": [ - "PrivateIpAddress", - "Primary" - ], - "type": "object" - }, - "SsmAssociation": { - "additionalProperties": false, - "properties": { - "AssociationParameters": { - "items": { - "$ref": "#/definitions/AssociationParameter" - }, - "type": "array", - "uniqueItems": false - }, - "DocumentName": { - "type": "string" - } - }, - "required": [ - "DocumentName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "Volume": { - "additionalProperties": false, - "properties": { - "Device": { - "type": "string" - }, - "VolumeId": { - "type": "string" - } - }, - "required": [ - "VolumeId", - "Device" - ], - "type": "object" - } - }, - "dependentExcluded": { - "NetworkInterfaces": [ - "SubnetId" - ], - "SubnetId": [ - "NetworkInterfaces" - ] - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AdditionalInfo": { - "type": "string" - }, - "Affinity": { - "enum": [ - "default", - "host" - ], - "type": "string" - }, - "AvailabilityZone": { - "cfnLint": [ - "AWS::EC2::Instance/Properties/AvailabilityZone" - ], - "type": "string" - }, - "BlockDeviceMappings": { - "items": { - "$ref": "#/definitions/BlockDeviceMapping" - }, - "type": "array", - "uniqueItems": false - }, - "CpuOptions": { - "$ref": "#/definitions/CpuOptions" - }, - "CreditSpecification": { - "$ref": "#/definitions/CreditSpecification" - }, - "DisableApiTermination": { - "type": "boolean" - }, - "EbsOptimized": { - "type": "boolean" - }, - "ElasticGpuSpecifications": { - "items": { - "$ref": "#/definitions/ElasticGpuSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "ElasticInferenceAccelerators": { - "items": { - "$ref": "#/definitions/ElasticInferenceAccelerator" - }, - "type": "array", - "uniqueItems": true - }, - "EnclaveOptions": { - "$ref": "#/definitions/EnclaveOptions" - }, - "HibernationOptions": { - "$ref": "#/definitions/HibernationOptions" - }, - "HostId": { - "type": "string" - }, - "HostResourceGroupArn": { - "type": "string" - }, - "IamInstanceProfile": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "ImageId": { - "type": "string" - }, - "InstanceInitiatedShutdownBehavior": { - "type": "string" - }, - "InstanceType": { - "cfnLint": [ - "AWS::EC2::Instance/Properties/InstanceType" - ], - "type": "string" - }, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": false - }, - "KernelId": { - "type": "string" - }, - "KeyName": { - "type": "string" - }, - "LaunchTemplate": { - "$ref": "#/definitions/LaunchTemplateSpecification" - }, - "LicenseSpecifications": { - "items": { - "$ref": "#/definitions/LicenseSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "Monitoring": { - "type": "boolean" - }, - "NetworkInterfaces": { - "items": { - "$ref": "#/definitions/NetworkInterface" - }, - "type": "array", - "uniqueItems": false - }, - "PlacementGroupName": { - "type": "string" - }, - "PrivateDnsName": { - "type": "string" - }, - "PrivateDnsNameOptions": { - "$ref": "#/definitions/PrivateDnsNameOptions" - }, - "PrivateIp": { - "type": "string" - }, - "PrivateIpAddress": { - "type": "string" - }, - "PropagateTagsToVolumeOnCreation": { - "type": "boolean" - }, - "PublicDnsName": { - "type": "string" - }, - "PublicIp": { - "type": "string" - }, - "RamdiskId": { - "type": "string" - }, - "SecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SecurityGroups": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SourceDestCheck": { - "type": "boolean" - }, - "SsmAssociations": { - "items": { - "$ref": "#/definitions/SsmAssociation" - }, - "type": "array", - "uniqueItems": false - }, - "SubnetId": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "Tenancy": { - "enum": [ - "default", - "dedicated", - "host" - ], - "type": "string" - }, - "UserData": { - "type": "string" - }, - "Volumes": { - "items": { - "$ref": "#/definitions/Volume" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/PublicIp", - "/properties/Id", - "/properties/PublicDnsName", - "/properties/PrivateDnsName", - "/properties/PrivateIp" - ], - "requiredXor": [ - "ImageId", - "LaunchTemplate" - ], - "typeName": "AWS::EC2::Instance" -} diff --git a/src/cfnlint/data/schemas/providers/eu_north_1/aws-ec2-securitygroupegress.json b/src/cfnlint/data/schemas/providers/eu_north_1/aws-ec2-securitygroupegress.json new file mode 100644 index 0000000000..f94631dad2 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_north_1/aws-ec2-securitygroupegress.json @@ -0,0 +1,98 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::EC2::SecurityGroupEgress/Properties" + ], + "createOnlyProperties": [ + "/properties/IpProtocol", + "/properties/DestinationSecurityGroupId", + "/properties/ToPort", + "/properties/CidrIp", + "/properties/FromPort", + "/properties/GroupId", + "/properties/CidrIpv6", + "/properties/DestinationPrefixListId" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:AuthorizeSecurityGroupEgress", + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "delete": { + "permissions": [ + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "update": { + "permissions": [ + "ec2:UpdateSecurityGroupRuleDescriptionsEgress" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CidrIp": { + "type": "string" + }, + "CidrIpv6": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "DestinationPrefixListId": { + "type": "string" + }, + "DestinationSecurityGroupId": { + "type": "string" + }, + "FromPort": { + "minimum": -1, + "type": "integer" + }, + "GroupId": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "IpProtocol": { + "type": "string" + }, + "ToPort": { + "minimum": -1, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IpProtocol", + "GroupId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SecurityGroupEgress" +} diff --git a/src/cfnlint/data/schemas/providers/eu_north_1/aws-ec2-transitgatewayroutetableassociation.json b/src/cfnlint/data/schemas/providers/eu_north_1/aws-ec2-transitgatewayroutetableassociation.json new file mode 100644 index 0000000000..890b2c4be2 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_north_1/aws-ec2-transitgatewayroutetableassociation.json @@ -0,0 +1,29 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TransitGatewayRouteTableId", + "/properties/TransitGatewayAttachmentId" + ], + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "type": "string" + }, + "TransitGatewayAttachmentId": { + "type": "string" + }, + "TransitGatewayRouteTableId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "TransitGatewayRouteTableId", + "TransitGatewayAttachmentId" + ], + "typeName": "AWS::EC2::TransitGatewayRouteTableAssociation" +} diff --git a/src/cfnlint/data/schemas/providers/eu_north_1/aws-lambda-eventsourcemapping.json b/src/cfnlint/data/schemas/providers/eu_north_1/aws-lambda-eventsourcemapping.json new file mode 100644 index 0000000000..cb7599c139 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_north_1/aws-lambda-eventsourcemapping.json @@ -0,0 +1,353 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::Lambda::EventSourceMapping/Properties" + ], + "createOnlyProperties": [ + "/properties/EventSourceArn", + "/properties/StartingPosition", + "/properties/StartingPositionTimestamp", + "/properties/SelfManagedEventSource", + "/properties/AmazonManagedKafkaEventSourceConfig", + "/properties/SelfManagedKafkaEventSourceConfig" + ], + "definitions": { + "AmazonManagedKafkaEventSourceConfig": { + "additionalProperties": false, + "properties": { + "ConsumerGroupId": { + "$ref": "#/definitions/ConsumerGroupId" + } + }, + "type": "object" + }, + "ConsumerGroupId": { + "maxLength": 200, + "minLength": 1, + "pattern": "[a-zA-Z0-9-\\/*:_+=.@-]*", + "type": "string" + }, + "DestinationConfig": { + "additionalProperties": false, + "properties": { + "OnFailure": { + "$ref": "#/definitions/OnFailure" + } + }, + "type": "object" + }, + "DocumentDBEventSourceConfig": { + "additionalProperties": false, + "properties": { + "CollectionName": { + "maxLength": 57, + "minLength": 1, + "type": "string" + }, + "DatabaseName": { + "maxLength": 63, + "minLength": 1, + "type": "string" + }, + "FullDocument": { + "enum": [ + "UpdateLookup", + "Default" + ], + "type": "string" + } + }, + "type": "object" + }, + "Endpoints": { + "additionalProperties": false, + "properties": { + "KafkaBootstrapServers": { + "items": { + "maxLength": 300, + "minLength": 1, + "pattern": "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9]):[0-9]{1,5}", + "type": "string" + }, + "maxItems": 10, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "Filter": { + "additionalProperties": false, + "properties": { + "Pattern": { + "maxLength": 4096, + "minLength": 0, + "pattern": ".*", + "type": "string" + } + }, + "type": "object" + }, + "FilterCriteria": { + "additionalProperties": false, + "properties": { + "Filters": { + "items": { + "$ref": "#/definitions/Filter" + }, + "maxItems": 20, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "MaximumConcurrency": { + "maximum": 1000, + "minimum": 2, + "type": "integer" + }, + "OnFailure": { + "additionalProperties": false, + "properties": { + "Destination": { + "maxLength": 1024, + "minLength": 12, + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "type": "string" + } + }, + "type": "object" + }, + "ScalingConfig": { + "additionalProperties": false, + "properties": { + "MaximumConcurrency": { + "$ref": "#/definitions/MaximumConcurrency" + } + }, + "type": "object" + }, + "SelfManagedEventSource": { + "additionalProperties": false, + "properties": { + "Endpoints": { + "$ref": "#/definitions/Endpoints" + } + }, + "type": "object" + }, + "SelfManagedKafkaEventSourceConfig": { + "additionalProperties": false, + "properties": { + "ConsumerGroupId": { + "$ref": "#/definitions/ConsumerGroupId" + } + }, + "type": "object" + }, + "SourceAccessConfiguration": { + "additionalProperties": false, + "properties": { + "Type": { + "enum": [ + "BASIC_AUTH", + "VPC_SUBNET", + "VPC_SECURITY_GROUP", + "SASL_SCRAM_512_AUTH", + "SASL_SCRAM_256_AUTH", + "VIRTUAL_HOST", + "CLIENT_CERTIFICATE_TLS_AUTH", + "SERVER_ROOT_CA_CERTIFICATE" + ], + "type": "string" + }, + "URI": { + "maxLength": 200, + "minLength": 1, + "pattern": "[a-zA-Z0-9-\\/*:_+=.@-]*", + "type": "string" + } + }, + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "lambda:CreateEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + }, + "delete": { + "permissions": [ + "lambda:DeleteEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + }, + "list": { + "permissions": [ + "lambda:ListEventSourceMappings" + ] + }, + "read": { + "permissions": [ + "lambda:GetEventSourceMapping" + ] + }, + "update": { + "permissions": [ + "lambda:UpdateEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AmazonManagedKafkaEventSourceConfig": { + "$ref": "#/definitions/AmazonManagedKafkaEventSourceConfig" + }, + "BatchSize": { + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "BisectBatchOnFunctionError": { + "type": "boolean" + }, + "DestinationConfig": { + "$ref": "#/definitions/DestinationConfig" + }, + "DocumentDBEventSourceConfig": { + "$ref": "#/definitions/DocumentDBEventSourceConfig" + }, + "Enabled": { + "type": "boolean" + }, + "EventSourceArn": { + "maxLength": 1024, + "minLength": 12, + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "type": "string" + }, + "FilterCriteria": { + "$ref": "#/definitions/FilterCriteria" + }, + "FunctionName": { + "maxLength": 140, + "minLength": 1, + "pattern": "(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?", + "type": "string" + }, + "FunctionResponseTypes": { + "items": { + "enum": [ + "ReportBatchItemFailures" + ], + "type": "string" + }, + "maxLength": 1, + "minLength": 0, + "type": "array", + "uniqueItems": true + }, + "Id": { + "maxLength": 36, + "minLength": 36, + "pattern": "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + "type": "string" + }, + "MaximumBatchingWindowInSeconds": { + "maximum": 300, + "minimum": 0, + "type": "integer" + }, + "MaximumRecordAgeInSeconds": { + "maximum": 604800, + "minimum": -1, + "type": "integer" + }, + "MaximumRetryAttempts": { + "maximum": 10000, + "minimum": -1, + "type": "integer" + }, + "ParallelizationFactor": { + "maximum": 10, + "minimum": 1, + "type": "integer" + }, + "Queues": { + "items": { + "maxLength": 1000, + "minLength": 1, + "pattern": "[\\s\\S]*", + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "ScalingConfig": { + "$ref": "#/definitions/ScalingConfig" + }, + "SelfManagedEventSource": { + "$ref": "#/definitions/SelfManagedEventSource" + }, + "SelfManagedKafkaEventSourceConfig": { + "$ref": "#/definitions/SelfManagedKafkaEventSourceConfig" + }, + "SourceAccessConfigurations": { + "items": { + "$ref": "#/definitions/SourceAccessConfiguration" + }, + "maxItems": 22, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "StartingPosition": { + "enum": [ + "TRIM_HORIZON", + "LATEST", + "AT_TIMESTAMP" + ], + "maxLength": 12, + "minLength": 6, + "pattern": "(LATEST|TRIM_HORIZON|AT_TIMESTAMP)+", + "type": "string" + }, + "StartingPositionTimestamp": { + "type": "number" + }, + "Topics": { + "items": { + "maxLength": 249, + "minLength": 1, + "pattern": "^[^.]([a-zA-Z0-9\\-_.]+)", + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "TumblingWindowInSeconds": { + "maximum": 900, + "minimum": 0, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "FunctionName" + ], + "typeName": "AWS::Lambda::EventSourceMapping" +} diff --git a/src/cfnlint/data/schemas/providers/eu_north_1/aws-sagemaker-appimageconfig.json b/src/cfnlint/data/schemas/providers/eu_north_1/aws-sagemaker-appimageconfig.json new file mode 100644 index 0000000000..01116f524b --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_north_1/aws-sagemaker-appimageconfig.json @@ -0,0 +1,238 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AppImageConfigName", + "/properties/Tags" + ], + "definitions": { + "ContainerConfig": { + "additionalProperties": false, + "properties": { + "ContainerArguments": { + "items": { + "$ref": "#/definitions/CustomImageContainerArguments" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "ContainerEntrypoint": { + "items": { + "$ref": "#/definitions/CustomImageContainerEntrypoint" + }, + "maxItems": 1, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "ContainerEnvironmentVariables": { + "items": { + "$ref": "#/definitions/CustomImageContainerEnvironmentVariable" + }, + "maxItems": 25, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "CustomImageContainerArguments": { + "maxLength": 64, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "CustomImageContainerEntrypoint": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "CustomImageContainerEnvironmentVariable": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "FileSystemConfig": { + "additionalProperties": false, + "properties": { + "DefaultGid": { + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "DefaultUid": { + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "MountPath": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^/.*", + "type": "string" + } + }, + "type": "object" + }, + "JupyterLabAppImageConfig": { + "additionalProperties": false, + "properties": { + "ContainerConfig": { + "$ref": "#/definitions/ContainerConfig" + } + }, + "type": "object" + }, + "KernelGatewayImageConfig": { + "additionalProperties": false, + "properties": { + "FileSystemConfig": { + "$ref": "#/definitions/FileSystemConfig" + }, + "KernelSpecs": { + "items": { + "$ref": "#/definitions/KernelSpec" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "KernelSpecs" + ], + "type": "object" + }, + "KernelSpec": { + "additionalProperties": false, + "properties": { + "DisplayName": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Name": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "sagemaker:CreateAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + }, + "delete": { + "permissions": [ + "sagemaker:DeleteAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + }, + "list": { + "permissions": [ + "sagemaker:ListAppImageConfigs" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeAppImageConfig" + ] + }, + "update": { + "permissions": [ + "sagemaker:UpdateAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + } + }, + "primaryIdentifier": [ + "/properties/AppImageConfigName" + ], + "properties": { + "AppImageConfigArn": { + "maxLength": 256, + "minLength": 1, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:app-image-config/.*", + "type": "string" + }, + "AppImageConfigName": { + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", + "type": "string" + }, + "JupyterLabAppImageConfig": { + "$ref": "#/definitions/JupyterLabAppImageConfig" + }, + "KernelGatewayImageConfig": { + "$ref": "#/definitions/KernelGatewayImageConfig" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/AppImageConfigArn" + ], + "required": [ + "AppImageConfigName" + ], + "typeName": "AWS::SageMaker::AppImageConfig", + "writeOnlyProperties": [ + "/properties/Tags" + ] +} diff --git a/src/cfnlint/data/schemas/providers/eu_north_1/aws-verifiedpermissions-identitysource.json b/src/cfnlint/data/schemas/providers/eu_north_1/aws-verifiedpermissions-identitysource.json new file mode 100644 index 0000000000..46a0ad88f1 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_north_1/aws-verifiedpermissions-identitysource.json @@ -0,0 +1,221 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PolicyStoreId" + ], + "definitions": { + "CognitoGroupConfiguration": { + "additionalProperties": false, + "properties": { + "GroupEntityType": { + "maxLength": 200, + "minLength": 1, + "pattern": "^([_a-zA-Z][_a-zA-Z0-9]*::)*[_a-zA-Z][_a-zA-Z0-9]*$", + "type": "string" + } + }, + "required": [ + "GroupEntityType" + ], + "type": "object" + }, + "CognitoUserPoolConfiguration": { + "additionalProperties": false, + "properties": { + "ClientIds": { + "insertionOrder": false, + "items": { + "maxLength": 255, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "maxItems": 1000, + "minItems": 0, + "type": "array" + }, + "GroupConfiguration": { + "$ref": "#/definitions/CognitoGroupConfiguration" + }, + "UserPoolArn": { + "maxLength": 255, + "minLength": 1, + "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", + "type": "string" + } + }, + "required": [ + "UserPoolArn" + ], + "type": "object" + }, + "IdentitySourceConfiguration": { + "additionalProperties": false, + "properties": { + "CognitoUserPoolConfiguration": { + "$ref": "#/definitions/CognitoUserPoolConfiguration" + } + }, + "required": [ + "CognitoUserPoolConfiguration" + ], + "title": "CognitoUserPoolConfiguration", + "type": "object" + }, + "IdentitySourceDetails": { + "additionalProperties": false, + "properties": { + "ClientIds": { + "insertionOrder": false, + "items": { + "maxLength": 255, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "maxItems": 1000, + "minItems": 0, + "type": "array" + }, + "DiscoveryUrl": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^https://.*$", + "type": "string" + }, + "OpenIdIssuer": { + "$ref": "#/definitions/OpenIdIssuer" + }, + "UserPoolArn": { + "maxLength": 255, + "minLength": 1, + "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", + "type": "string" + } + }, + "type": "object" + }, + "OpenIdIssuer": { + "enum": [ + "COGNITO" + ], + "type": "string" + } + }, + "deprecatedProperties": [ + "/properties/Details" + ], + "handlers": { + "create": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "delete": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "PolicyStoreId": { + "$ref": "resource-schema.json#/properties/PolicyStoreId" + } + }, + "required": [ + "PolicyStoreId" + ] + }, + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "read": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "update": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + } + }, + "primaryIdentifier": [ + "/properties/IdentitySourceId", + "/properties/PolicyStoreId" + ], + "properties": { + "Configuration": { + "$ref": "#/definitions/IdentitySourceConfiguration" + }, + "Details": { + "$ref": "#/definitions/IdentitySourceDetails" + }, + "IdentitySourceId": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]*$", + "type": "string" + }, + "PolicyStoreId": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]*$", + "type": "string" + }, + "PrincipalEntityType": { + "maxLength": 200, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Details", + "/properties/IdentitySourceId" + ], + "required": [ + "Configuration", + "PolicyStoreId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-avp", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::VerifiedPermissions::IdentitySource" +} diff --git a/src/cfnlint/data/schemas/providers/eu_south_1/__init__.py b/src/cfnlint/data/schemas/providers/eu_south_1/__init__.py index 45bff4db2b..ab8c0fb7f5 100644 --- a/src/cfnlint/data/schemas/providers/eu_south_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/eu_south_1/__init__.py @@ -110,6 +110,7 @@ "AWS::DataSync::LocationHDFS", "AWS::Events::Archive", "AWS::MSK::Cluster", + "AWS::SecurityHub::DelegatedAdmin", "AWS::ControlTower::EnabledBaseline", "AWS::EC2::VPCEndpointConnectionNotification", "AWS::CodePipeline::Pipeline", @@ -261,6 +262,7 @@ "AWS::NetworkManager::CustomerGatewayAssociation", "AWS::IAM::ServerCertificate", "AWS::CodeStarConnections::Connection", + "AWS::GlobalAccelerator::CrossAccountAttachment", "AWS::Events::EventBus", "AWS::DocDB::EventSubscription", "AWS::SQS::QueueInlinePolicy", @@ -294,6 +296,7 @@ "AWS::CodeBuild::Project", "AWS::EFS::FileSystem", "AWS::Logs::QueryDefinition", + "AWS::SecurityHub::ProductSubscription", "AWS::IAM::InstanceProfile", "AWS::DataSync::LocationNFS", "AWS::Amplify::Domain", @@ -306,6 +309,7 @@ "AWS::ServiceCatalog::ServiceActionAssociation", "AWS::SageMaker::NotebookInstanceLifecycleConfig", "AWS::ImageBuilder::ContainerRecipe", + "AWS::CodeConnections::Connection", "AWS::EFS::AccessPoint", "AWS::Redshift::ClusterSecurityGroupIngress", "AWS::ServiceCatalogAppRegistry::AttributeGroupAssociation", @@ -538,6 +542,7 @@ "AWS::EC2::ClientVpnTargetNetworkAssociation", "AWS::AppSync::GraphQLApi", "AWS::EC2::EgressOnlyInternetGateway", + "AWS::SecurityHub::Insight", "AWS::EC2::VPCCidrBlock", "AWS::IAM::VirtualMFADevice", "AWS::EC2::NetworkInsightsPath", @@ -753,7 +758,6 @@ "aws-ecs-service.json", "aws-ram-resourceshare.json", "aws-dms-replicationconfig.json", - "aws-ec2-securitygroupegress.json", "aws-ec2-localgatewayroutetablevpcassociation.json", "aws-config-organizationconfigrule.json", "aws-glue-dataqualityruleset.json", @@ -772,6 +776,7 @@ "aws-apigateway-model.json", "aws-apigatewayv2-integrationresponse.json", "aws-ec2-networkacl.json", + "aws-lambda-eventsourcemapping.json", "aws-logs-resourcepolicy.json", "aws-servicecatalog-launchnotificationconstraint.json", "aws-ec2-networkinsightsaccessscopeanalysis.json", @@ -833,6 +838,7 @@ "aws-datasync-locationhdfs.json", "aws-events-archive.json", "aws-msk-cluster.json", + "aws-securityhub-delegatedadmin.json", "aws-controltower-enabledbaseline.json", "aws-ec2-vpcendpointconnectionnotification.json", "aws-codepipeline-pipeline.json", @@ -904,7 +910,6 @@ "aws-logs-loganomalydetector.json", "aws-ec2-transitgatewaymulticastdomainassociation.json", "aws-s3outposts-endpoint.json", - "aws-ec2-transitgatewayroutetableassociation.json", "aws-appconfig-environment.json", "aws-imagebuilder-image.json", "aws-elasticache-securitygroupingress.json", @@ -971,6 +976,7 @@ "aws-networkmanager-customergatewayassociation.json", "aws-iam-servercertificate.json", "aws-codestarconnections-connection.json", + "aws-globalaccelerator-crossaccountattachment.json", "aws-events-eventbus.json", "aws-docdb-eventsubscription.json", "aws-sqs-queueinlinepolicy.json", @@ -1003,6 +1009,7 @@ "aws-codebuild-project.json", "aws-efs-filesystem.json", "aws-logs-querydefinition.json", + "aws-securityhub-productsubscription.json", "aws-iam-instanceprofile.json", "aws-datasync-locationnfs.json", "aws-amplify-domain.json", @@ -1015,6 +1022,7 @@ "aws-servicecatalog-serviceactionassociation.json", "aws-sagemaker-notebookinstancelifecycleconfig.json", "aws-imagebuilder-containerrecipe.json", + "aws-codeconnections-connection.json", "aws-efs-accesspoint.json", "aws-redshift-clustersecuritygroupingress.json", "aws-servicecatalogappregistry-attributegroupassociation.json", @@ -1084,6 +1092,7 @@ "aws-securityhub-standard.json", "aws-rolesanywhere-crl.json", "aws-sns-topicinlinepolicy.json", + "aws-redshift-clusterparametergroup.json", "aws-organizations-policy.json", "aws-glue-trigger.json", "aws-globalaccelerator-listener.json", @@ -1138,6 +1147,7 @@ "aws-logs-accountpolicy.json", "aws-s3-bucketpolicy.json", "aws-appsync-graphqlschema.json", + "aws-redshift-cluster.json", "aws-codebuild-sourcecredential.json", "aws-emr-instancefleetconfig.json", "aws-emr-cluster.json", @@ -1166,8 +1176,6 @@ "aws-datasync-locationefs.json", "aws-ec2-localgatewayroutetable.json", "aws-apigateway-resource.json", - "aws-sagemaker-appimageconfig.json", - "aws-verifiedpermissions-identitysource.json", "aws-macie-session.json", "aws-elasticloadbalancingv2-targetgroup.json", "aws-applicationautoscaling-scalingpolicy.json", @@ -1230,10 +1238,10 @@ "aws-ec2-clientvpntargetnetworkassociation.json", "aws-appsync-graphqlapi.json", "aws-ec2-egressonlyinternetgateway.json", + "aws-securityhub-insight.json", "aws-ec2-vpccidrblock.json", "aws-iam-virtualmfadevice.json", "aws-ec2-networkinsightspath.json", - "aws-acmpca-certificateauthority.json", "aws-autoscaling-scheduledaction.json", "aws-cognito-identitypoolprincipaltag.json", "aws-apigatewayv2-route.json", @@ -1284,6 +1292,7 @@ "aws-apigatewayv2-authorizer.json", "aws-sagemaker-userprofile.json", "aws-ec2-prefixlist.json", + "aws-ec2-instance.json", "aws-networkmanager-device.json", "aws-ec2-subnetcidrblock.json", "aws-elasticbeanstalk-applicationversion.json", diff --git a/src/cfnlint/data/schemas/providers/eu_south_1/aws-acmpca-certificateauthority.json b/src/cfnlint/data/schemas/providers/eu_south_1/aws-acmpca-certificateauthority.json new file mode 100644 index 0000000000..08ec85e5fa --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_south_1/aws-acmpca-certificateauthority.json @@ -0,0 +1,429 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Type", + "/properties/KeyAlgorithm", + "/properties/SigningAlgorithm", + "/properties/Subject", + "/properties/CsrExtensions", + "/properties/KeyStorageSecurityStandard", + "/properties/UsageMode" + ], + "definitions": { + "AccessDescription": { + "additionalProperties": false, + "properties": { + "AccessLocation": { + "$ref": "#/definitions/GeneralName" + }, + "AccessMethod": { + "$ref": "#/definitions/AccessMethod" + } + }, + "required": [ + "AccessMethod", + "AccessLocation" + ], + "type": "object" + }, + "AccessMethod": { + "additionalProperties": false, + "properties": { + "AccessMethodType": { + "$ref": "#/definitions/AccessMethodType" + }, + "CustomObjectIdentifier": { + "$ref": "#/definitions/CustomObjectIdentifier" + } + }, + "type": "object" + }, + "AccessMethodType": { + "type": "string" + }, + "Arn": { + "type": "string" + }, + "CrlConfiguration": { + "additionalProperties": false, + "properties": { + "CrlDistributionPointExtensionConfiguration": { + "$ref": "#/definitions/CrlDistributionPointExtensionConfiguration" + }, + "CustomCname": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + }, + "ExpirationInDays": { + "type": "integer" + }, + "S3BucketName": { + "type": "string" + }, + "S3ObjectAcl": { + "type": "string" + } + }, + "type": "object" + }, + "CrlDistributionPointExtensionConfiguration": { + "additionalProperties": false, + "properties": { + "OmitExtension": { + "type": "boolean" + } + }, + "required": [ + "OmitExtension" + ], + "type": "object" + }, + "CsrExtensions": { + "additionalProperties": false, + "properties": { + "KeyUsage": { + "$ref": "#/definitions/KeyUsage" + }, + "SubjectInformationAccess": { + "$ref": "#/definitions/SubjectInformationAccess" + } + }, + "type": "object" + }, + "CustomAttribute": { + "additionalProperties": false, + "properties": { + "ObjectIdentifier": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "ObjectIdentifier", + "Value" + ], + "type": "object" + }, + "CustomAttributeList": { + "items": { + "$ref": "#/definitions/CustomAttribute" + }, + "type": "array" + }, + "CustomObjectIdentifier": { + "type": "string" + }, + "DnsName": { + "type": "string" + }, + "EdiPartyName": { + "additionalProperties": false, + "properties": { + "NameAssigner": { + "type": "string" + }, + "PartyName": { + "type": "string" + } + }, + "required": [ + "PartyName", + "NameAssigner" + ], + "type": "object" + }, + "GeneralName": { + "additionalProperties": false, + "properties": { + "DirectoryName": { + "$ref": "#/definitions/Subject" + }, + "DnsName": { + "$ref": "#/definitions/DnsName" + }, + "EdiPartyName": { + "$ref": "#/definitions/EdiPartyName" + }, + "IpAddress": { + "$ref": "#/definitions/IpAddress" + }, + "OtherName": { + "$ref": "#/definitions/OtherName" + }, + "RegisteredId": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Rfc822Name": { + "$ref": "#/definitions/Rfc822Name" + }, + "UniformResourceIdentifier": { + "$ref": "#/definitions/UniformResourceIdentifier" + } + }, + "type": "object" + }, + "IpAddress": { + "type": "string" + }, + "KeyUsage": { + "additionalProperties": false, + "properties": { + "CRLSign": { + "default": false, + "type": "boolean" + }, + "DataEncipherment": { + "default": false, + "type": "boolean" + }, + "DecipherOnly": { + "default": false, + "type": "boolean" + }, + "DigitalSignature": { + "default": false, + "type": "boolean" + }, + "EncipherOnly": { + "default": false, + "type": "boolean" + }, + "KeyAgreement": { + "default": false, + "type": "boolean" + }, + "KeyCertSign": { + "default": false, + "type": "boolean" + }, + "KeyEncipherment": { + "default": false, + "type": "boolean" + }, + "NonRepudiation": { + "default": false, + "type": "boolean" + } + }, + "type": "object" + }, + "OcspConfiguration": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + }, + "OcspCustomCname": { + "type": "string" + } + }, + "type": "object" + }, + "OtherName": { + "additionalProperties": false, + "properties": { + "TypeId": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "TypeId", + "Value" + ], + "type": "object" + }, + "RevocationConfiguration": { + "additionalProperties": false, + "properties": { + "CrlConfiguration": { + "$ref": "#/definitions/CrlConfiguration" + }, + "OcspConfiguration": { + "$ref": "#/definitions/OcspConfiguration" + } + }, + "type": "object" + }, + "Rfc822Name": { + "type": "string" + }, + "Subject": { + "additionalProperties": false, + "properties": { + "CommonName": { + "type": "string" + }, + "Country": { + "type": "string" + }, + "CustomAttributes": { + "$ref": "#/definitions/CustomAttributeList" + }, + "DistinguishedNameQualifier": { + "type": "string" + }, + "GenerationQualifier": { + "type": "string" + }, + "GivenName": { + "type": "string" + }, + "Initials": { + "type": "string" + }, + "Locality": { + "type": "string" + }, + "Organization": { + "type": "string" + }, + "OrganizationalUnit": { + "type": "string" + }, + "Pseudonym": { + "type": "string" + }, + "SerialNumber": { + "type": "string" + }, + "State": { + "type": "string" + }, + "Surname": { + "type": "string" + }, + "Title": { + "type": "string" + } + }, + "type": "object" + }, + "SubjectInformationAccess": { + "items": { + "$ref": "#/definitions/AccessDescription" + }, + "type": "array" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "UniformResourceIdentifier": { + "type": "string" + } + }, + "handlers": { + "create": { + "permissions": [ + "acm-pca:CreateCertificateAuthority", + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr" + ] + }, + "delete": { + "permissions": [ + "acm-pca:DeleteCertificateAuthority", + "acm-pca:DescribeCertificateAuthority" + ] + }, + "list": { + "permissions": [ + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr", + "acm-pca:ListCertificateAuthorities", + "acm-pca:ListTags" + ] + }, + "read": { + "permissions": [ + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr", + "acm-pca:ListTags" + ] + }, + "update": { + "permissions": [ + "acm-pca:ListTags", + "acm-pca:TagCertificateAuthority", + "acm-pca:UntagCertificateAuthority", + "acm-pca:UpdateCertificateAuthority" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "$ref": "#/definitions/Arn" + }, + "CertificateSigningRequest": { + "type": "string" + }, + "CsrExtensions": { + "$ref": "#/definitions/CsrExtensions" + }, + "KeyAlgorithm": { + "type": "string" + }, + "KeyStorageSecurityStandard": { + "type": "string" + }, + "RevocationConfiguration": { + "$ref": "#/definitions/RevocationConfiguration" + }, + "SigningAlgorithm": { + "type": "string" + }, + "Subject": { + "$ref": "#/definitions/Subject" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "Type": { + "type": "string" + }, + "UsageMode": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CertificateSigningRequest" + ], + "required": [ + "Type", + "KeyAlgorithm", + "SigningAlgorithm", + "Subject" + ], + "sourceUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_ACMPCA.html", + "typeName": "AWS::ACMPCA::CertificateAuthority", + "writeOnlyProperties": [ + "/properties/Subject", + "/properties/Subject", + "/properties/CsrExtensions", + "/properties/Tags", + "/properties/RevocationConfiguration", + "/properties/KeyStorageSecurityStandard" + ] +} diff --git a/src/cfnlint/data/schemas/providers/eu_south_1/aws-dynamodb-globaltable.json b/src/cfnlint/data/schemas/providers/eu_south_1/aws-dynamodb-globaltable.json index 4e5ba995cb..ae37e9142b 100644 --- a/src/cfnlint/data/schemas/providers/eu_south_1/aws-dynamodb-globaltable.json +++ b/src/cfnlint/data/schemas/providers/eu_south_1/aws-dynamodb-globaltable.json @@ -8,6 +8,27 @@ ] ], "additionalProperties": false, + "allOf": [ + { + "if": { + "required": [ + "LocalSecondaryIndexes" + ], + "type": "object" + }, + "then": { + "properties": { + "AttributeDefinitions": { + "minItems": 2 + }, + "KeySchema": { + "minItems": 2 + } + }, + "type": "object" + } + } + ], "createOnlyProperties": [ "/properties/LocalSecondaryIndexes", "/properties/TableName", @@ -79,13 +100,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "minItems": 1, - "type": "array", - "uniqueItems": true + "minItems": 1 }, "Projection": { "$ref": "#/definitions/Projection" @@ -102,22 +119,60 @@ "type": "object" }, "KeySchema": { - "additionalProperties": false, - "properties": { - "AttributeName": { - "maxLength": 255, - "minLength": 1, - "type": "string" + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "KeyType": { + "enum": [ + "HASH", + "RANGE" + ], + "type": "string" + } }, - "KeyType": { - "type": "string" - } + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" }, - "required": [ - "KeyType", - "AttributeName" + "prefixItems": [ + { + "additionalProperties": false, + "properties": { + "KeyType": { + "const": "HASH", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + }, + { + "properties": { + "KeyType": { + "const": "RANGE", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + } ], - "type": "object" + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "KinesisStreamSpecification": { "additionalProperties": false, @@ -147,12 +202,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "type": "array", - "uniqueItems": true + "minItems": 2 }, "Projection": { "$ref": "#/definitions/Projection" @@ -511,7 +563,10 @@ }, "minItems": 1, "type": "array", - "uniqueItems": true + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "BillingMode": { "type": "string" @@ -525,13 +580,9 @@ "uniqueItems": true }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "minItems": 1, - "type": "array", - "uniqueItems": true + "minItems": 1 }, "LocalSecondaryIndexes": { "insertionOrder": false, diff --git a/src/cfnlint/data/schemas/providers/eu_south_1/aws-dynamodb-table.json b/src/cfnlint/data/schemas/providers/eu_south_1/aws-dynamodb-table.json index efc82f1d70..f21d084b10 100644 --- a/src/cfnlint/data/schemas/providers/eu_south_1/aws-dynamodb-table.json +++ b/src/cfnlint/data/schemas/providers/eu_south_1/aws-dynamodb-table.json @@ -1,5 +1,26 @@ { "additionalProperties": false, + "allOf": [ + { + "if": { + "required": [ + "LocalSecondaryIndexes" + ], + "type": "object" + }, + "then": { + "properties": { + "AttributeDefinitions": { + "minItems": 2 + }, + "KeySchema": { + "minItems": 2 + } + }, + "type": "object" + } + } + ], "cfnLint": [ "AWS::DynamoDB::Table/Properties" ], @@ -95,11 +116,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 }, "Projection": { "$ref": "#/definitions/Projection" @@ -147,24 +166,57 @@ "type": "object" }, "KeySchema": { - "additionalProperties": false, - "properties": { - "AttributeName": { - "type": "string" + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "type": "string" + }, + "KeyType": { + "enum": [ + "HASH", + "RANGE" + ], + "type": "string" + } }, - "KeyType": { - "enum": [ - "HASH", - "RANGE" + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" + }, + "prefixItems": [ + { + "properties": { + "KeyType": { + "const": "HASH", + "type": "string" + } + }, + "required": [ + "KeyType" ], - "type": "string" + "type": "object" + }, + { + "properties": { + "KeyType": { + "const": "RANGE", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" } - }, - "required": [ - "KeyType", - "AttributeName" ], - "type": "object" + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "KinesisStreamSpecification": { "additionalProperties": false, @@ -192,11 +244,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 2 }, "Projection": { "$ref": "#/definitions/Projection" @@ -451,7 +501,10 @@ "$ref": "#/definitions/AttributeDefinition" }, "type": "array", - "uniqueItems": true + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "BillingMode": { "enum": [ @@ -479,11 +532,9 @@ "KeySchema": { "oneOf": [ { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 }, { "type": "object" diff --git a/src/cfnlint/data/schemas/providers/eu_south_1/aws-ec2-instance.json b/src/cfnlint/data/schemas/providers/eu_south_1/aws-ec2-instance.json deleted file mode 100644 index 7b3bfed595..0000000000 --- a/src/cfnlint/data/schemas/providers/eu_south_1/aws-ec2-instance.json +++ /dev/null @@ -1,571 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ElasticGpuSpecifications", - "/properties/Ipv6Addresses", - "/properties/PlacementGroupName", - "/properties/HostResourceGroupArn", - "/properties/ImageId", - "/properties/CpuOptions", - "/properties/PrivateIpAddress", - "/properties/ElasticInferenceAccelerators", - "/properties/EnclaveOptions", - "/properties/HibernationOptions", - "/properties/KeyName", - "/properties/LicenseSpecifications", - "/properties/NetworkInterfaces", - "/properties/AvailabilityZone", - "/properties/SubnetId", - "/properties/LaunchTemplate", - "/properties/SecurityGroups", - "/properties/Ipv6AddressCount" - ], - "definitions": { - "AssociationParameter": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "BlockDeviceMapping": { - "additionalProperties": false, - "properties": { - "DeviceName": { - "type": "string" - }, - "Ebs": { - "$ref": "#/definitions/Ebs" - }, - "NoDevice": { - "$ref": "#/definitions/NoDevice" - }, - "VirtualName": { - "type": "string" - } - }, - "required": [ - "DeviceName" - ], - "requiredXor": [ - "VirtualName", - "Ebs", - "NoDevice" - ], - "type": "object" - }, - "CpuOptions": { - "additionalProperties": false, - "properties": { - "CoreCount": { - "type": "integer" - }, - "ThreadsPerCore": { - "type": "integer" - } - }, - "type": "object" - }, - "CreditSpecification": { - "additionalProperties": false, - "properties": { - "CPUCredits": { - "type": "string" - } - }, - "type": "object" - }, - "Ebs": { - "additionalProperties": false, - "properties": { - "DeleteOnTermination": { - "type": "boolean" - }, - "Encrypted": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "KmsKeyId": { - "type": "string" - }, - "SnapshotId": { - "type": "string" - }, - "VolumeSize": { - "type": "integer" - }, - "VolumeType": { - "type": "string" - } - }, - "type": "object" - }, - "ElasticGpuSpecification": { - "additionalProperties": false, - "properties": { - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "ElasticInferenceAccelerator": { - "additionalProperties": false, - "properties": { - "Count": { - "type": "integer" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "EnclaveOptions": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - } - }, - "type": "object" - }, - "HibernationOptions": { - "additionalProperties": false, - "properties": { - "Configured": { - "type": "boolean" - } - }, - "type": "object" - }, - "InstanceIpv6Address": { - "additionalProperties": false, - "properties": { - "Ipv6Address": { - "type": "string" - } - }, - "required": [ - "Ipv6Address" - ], - "type": "object" - }, - "LaunchTemplateSpecification": { - "additionalProperties": false, - "properties": { - "LaunchTemplateId": { - "type": "string" - }, - "LaunchTemplateName": { - "type": "string" - }, - "Version": { - "type": "string" - } - }, - "required": [ - "Version" - ], - "type": "object" - }, - "LicenseSpecification": { - "additionalProperties": false, - "properties": { - "LicenseConfigurationArn": { - "type": "string" - } - }, - "required": [ - "LicenseConfigurationArn" - ], - "type": "object" - }, - "NetworkInterface": { - "additionalProperties": false, - "properties": { - "AssociateCarrierIpAddress": { - "type": "boolean" - }, - "AssociatePublicIpAddress": { - "type": "boolean" - }, - "DeleteOnTermination": { - "type": "boolean" - }, - "Description": { - "type": "string" - }, - "DeviceIndex": { - "type": "string" - }, - "GroupSet": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": false - }, - "NetworkInterfaceId": { - "type": "string" - }, - "PrivateIpAddress": { - "type": "string" - }, - "PrivateIpAddresses": { - "items": { - "$ref": "#/definitions/PrivateIpAddressSpecification" - }, - "type": "array", - "uniqueItems": false - }, - "SecondaryPrivateIpAddressCount": { - "type": "integer" - }, - "SubnetId": { - "type": "string" - } - }, - "required": [ - "DeviceIndex" - ], - "type": "object" - }, - "NoDevice": { - "additionalProperties": false, - "type": "object" - }, - "PrivateDnsNameOptions": { - "additionalProperties": false, - "properties": { - "EnableResourceNameDnsAAAARecord": { - "type": "boolean" - }, - "EnableResourceNameDnsARecord": { - "type": "boolean" - }, - "HostnameType": { - "type": "string" - } - }, - "type": "object" - }, - "PrivateIpAddressSpecification": { - "additionalProperties": false, - "properties": { - "Primary": { - "type": "boolean" - }, - "PrivateIpAddress": { - "type": "string" - } - }, - "required": [ - "PrivateIpAddress", - "Primary" - ], - "type": "object" - }, - "SsmAssociation": { - "additionalProperties": false, - "properties": { - "AssociationParameters": { - "items": { - "$ref": "#/definitions/AssociationParameter" - }, - "type": "array", - "uniqueItems": false - }, - "DocumentName": { - "type": "string" - } - }, - "required": [ - "DocumentName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "Volume": { - "additionalProperties": false, - "properties": { - "Device": { - "type": "string" - }, - "VolumeId": { - "type": "string" - } - }, - "required": [ - "VolumeId", - "Device" - ], - "type": "object" - } - }, - "dependentExcluded": { - "NetworkInterfaces": [ - "SubnetId" - ], - "SubnetId": [ - "NetworkInterfaces" - ] - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AdditionalInfo": { - "type": "string" - }, - "Affinity": { - "enum": [ - "default", - "host" - ], - "type": "string" - }, - "AvailabilityZone": { - "cfnLint": [ - "AWS::EC2::Instance/Properties/AvailabilityZone" - ], - "type": "string" - }, - "BlockDeviceMappings": { - "items": { - "$ref": "#/definitions/BlockDeviceMapping" - }, - "type": "array", - "uniqueItems": false - }, - "CpuOptions": { - "$ref": "#/definitions/CpuOptions" - }, - "CreditSpecification": { - "$ref": "#/definitions/CreditSpecification" - }, - "DisableApiTermination": { - "type": "boolean" - }, - "EbsOptimized": { - "type": "boolean" - }, - "ElasticGpuSpecifications": { - "items": { - "$ref": "#/definitions/ElasticGpuSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "ElasticInferenceAccelerators": { - "items": { - "$ref": "#/definitions/ElasticInferenceAccelerator" - }, - "type": "array", - "uniqueItems": true - }, - "EnclaveOptions": { - "$ref": "#/definitions/EnclaveOptions" - }, - "HibernationOptions": { - "$ref": "#/definitions/HibernationOptions" - }, - "HostId": { - "type": "string" - }, - "HostResourceGroupArn": { - "type": "string" - }, - "IamInstanceProfile": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "ImageId": { - "type": "string" - }, - "InstanceInitiatedShutdownBehavior": { - "type": "string" - }, - "InstanceType": { - "cfnLint": [ - "AWS::EC2::Instance/Properties/InstanceType" - ], - "type": "string" - }, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": false - }, - "KernelId": { - "type": "string" - }, - "KeyName": { - "type": "string" - }, - "LaunchTemplate": { - "$ref": "#/definitions/LaunchTemplateSpecification" - }, - "LicenseSpecifications": { - "items": { - "$ref": "#/definitions/LicenseSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "Monitoring": { - "type": "boolean" - }, - "NetworkInterfaces": { - "items": { - "$ref": "#/definitions/NetworkInterface" - }, - "type": "array", - "uniqueItems": false - }, - "PlacementGroupName": { - "type": "string" - }, - "PrivateDnsName": { - "type": "string" - }, - "PrivateDnsNameOptions": { - "$ref": "#/definitions/PrivateDnsNameOptions" - }, - "PrivateIp": { - "type": "string" - }, - "PrivateIpAddress": { - "type": "string" - }, - "PropagateTagsToVolumeOnCreation": { - "type": "boolean" - }, - "PublicDnsName": { - "type": "string" - }, - "PublicIp": { - "type": "string" - }, - "RamdiskId": { - "type": "string" - }, - "SecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SecurityGroups": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SourceDestCheck": { - "type": "boolean" - }, - "SsmAssociations": { - "items": { - "$ref": "#/definitions/SsmAssociation" - }, - "type": "array", - "uniqueItems": false - }, - "SubnetId": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "Tenancy": { - "enum": [ - "default", - "dedicated", - "host" - ], - "type": "string" - }, - "UserData": { - "type": "string" - }, - "Volumes": { - "items": { - "$ref": "#/definitions/Volume" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/PublicIp", - "/properties/Id", - "/properties/PublicDnsName", - "/properties/PrivateDnsName", - "/properties/PrivateIp" - ], - "requiredXor": [ - "ImageId", - "LaunchTemplate" - ], - "typeName": "AWS::EC2::Instance" -} diff --git a/src/cfnlint/data/schemas/providers/eu_south_1/aws-ec2-securitygroupegress.json b/src/cfnlint/data/schemas/providers/eu_south_1/aws-ec2-securitygroupegress.json new file mode 100644 index 0000000000..f94631dad2 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_south_1/aws-ec2-securitygroupegress.json @@ -0,0 +1,98 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::EC2::SecurityGroupEgress/Properties" + ], + "createOnlyProperties": [ + "/properties/IpProtocol", + "/properties/DestinationSecurityGroupId", + "/properties/ToPort", + "/properties/CidrIp", + "/properties/FromPort", + "/properties/GroupId", + "/properties/CidrIpv6", + "/properties/DestinationPrefixListId" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:AuthorizeSecurityGroupEgress", + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "delete": { + "permissions": [ + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "update": { + "permissions": [ + "ec2:UpdateSecurityGroupRuleDescriptionsEgress" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CidrIp": { + "type": "string" + }, + "CidrIpv6": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "DestinationPrefixListId": { + "type": "string" + }, + "DestinationSecurityGroupId": { + "type": "string" + }, + "FromPort": { + "minimum": -1, + "type": "integer" + }, + "GroupId": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "IpProtocol": { + "type": "string" + }, + "ToPort": { + "minimum": -1, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IpProtocol", + "GroupId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SecurityGroupEgress" +} diff --git a/src/cfnlint/data/schemas/providers/eu_south_1/aws-ec2-transitgatewayroutetableassociation.json b/src/cfnlint/data/schemas/providers/eu_south_1/aws-ec2-transitgatewayroutetableassociation.json new file mode 100644 index 0000000000..890b2c4be2 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_south_1/aws-ec2-transitgatewayroutetableassociation.json @@ -0,0 +1,29 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TransitGatewayRouteTableId", + "/properties/TransitGatewayAttachmentId" + ], + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "type": "string" + }, + "TransitGatewayAttachmentId": { + "type": "string" + }, + "TransitGatewayRouteTableId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "TransitGatewayRouteTableId", + "TransitGatewayAttachmentId" + ], + "typeName": "AWS::EC2::TransitGatewayRouteTableAssociation" +} diff --git a/src/cfnlint/data/schemas/providers/eu_south_1/aws-redshift-cluster.json b/src/cfnlint/data/schemas/providers/eu_south_1/aws-redshift-cluster.json deleted file mode 100644 index bdd4d92992..0000000000 --- a/src/cfnlint/data/schemas/providers/eu_south_1/aws-redshift-cluster.json +++ /dev/null @@ -1,332 +0,0 @@ -{ - "additionalProperties": false, - "cfnLint": "AWS::Redshift::Cluster/Properties", - "createOnlyProperties": [ - "/properties/ClusterIdentifier", - "/properties/OwnerAccount", - "/properties/SnapshotIdentifier", - "/properties/DBName", - "/properties/SnapshotClusterIdentifier", - "/properties/ClusterSubnetGroupName", - "/properties/MasterUsername" - ], - "definitions": { - "Endpoint": { - "additionalProperties": false, - "properties": { - "Address": { - "type": "string" - }, - "Port": { - "type": "string" - } - }, - "type": "object" - }, - "LoggingProperties": { - "additionalProperties": false, - "properties": { - "BucketName": { - "type": "string" - }, - "S3KeyPrefix": { - "type": "string" - } - }, - "required": [ - "BucketName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 127, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 255, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "redshift:DescribeClusters", - "redshift:CreateCluster", - "redshift:RestoreFromClusterSnapshot", - "redshift:EnableLogging", - "redshift:DescribeTags" - ], - "timeoutInMinutes": 2160 - }, - "delete": { - "permissions": [ - "redshift:DescribeTags", - "redshift:DescribeClusters", - "redshift:DeleteCluster" - ], - "timeoutInMinutes": 2160 - }, - "list": { - "permissions": [ - "redshift:DescribeTags", - "redshift:DescribeClusters" - ] - }, - "read": { - "permissions": [ - "redshift:DescribeClusters", - "redshift:DescribeLoggingStatus", - "redshift:DescribeSnapshotCopyGrant", - "redshift:DescribeClusterDbRevisions", - "redshift:DescribeTags" - ] - }, - "update": { - "permissions": [ - "redshift:DescribeClusters", - "redshift:ModifyCluster", - "redshift:ModifyClusterIamRoles", - "redshift:EnableLogging", - "redshift:CreateTags", - "redshift:DeleteTags", - "redshift:DescribeTags", - "redshift:DisableLogging", - "redshift:RebootCluster", - "redshift:EnableSnapshotCopy", - "redshift:DisableSnapshotCopy", - "redshift:ModifySnapshotCopyRetentionPeriod", - "redshift:ModifyAquaConfiguration", - "redshift:ResizeCluster", - "redshift:ModifyClusterMaintenance", - "redshift:DescribeClusterDbRevisions", - "redshift:ModifyClusterDbRevisions", - "redshift:PauseCluster", - "redshift:ResumeCluster", - "redshift:RotateEncryptionKey", - "redshift:FailoverPrimaryCompute" - ], - "timeoutInMinutes": 2160 - } - }, - "primaryIdentifier": [ - "/properties/ClusterIdentifier" - ], - "properties": { - "AllowVersionUpgrade": { - "type": "boolean" - }, - "AquaConfigurationStatus": { - "type": "string" - }, - "AutomatedSnapshotRetentionPeriod": { - "type": "integer" - }, - "AvailabilityZone": { - "type": "string" - }, - "AvailabilityZoneRelocation": { - "type": "boolean" - }, - "AvailabilityZoneRelocationStatus": { - "type": "string" - }, - "Classic": { - "type": "boolean" - }, - "ClusterIdentifier": { - "maxLength": 63, - "type": "string" - }, - "ClusterParameterGroupName": { - "maxLength": 255, - "type": "string" - }, - "ClusterSecurityGroups": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "ClusterSubnetGroupName": { - "type": "string" - }, - "ClusterType": { - "type": "string" - }, - "ClusterVersion": { - "type": "string" - }, - "DBName": { - "type": "string" - }, - "DeferMaintenance": { - "type": "boolean" - }, - "DeferMaintenanceDuration": { - "type": "integer" - }, - "DeferMaintenanceEndTime": { - "type": "string" - }, - "DeferMaintenanceIdentifier": { - "type": "string" - }, - "DeferMaintenanceStartTime": { - "type": "string" - }, - "DestinationRegion": { - "type": "string" - }, - "ElasticIp": { - "type": "string" - }, - "Encrypted": { - "type": "boolean" - }, - "Endpoint": { - "$ref": "#/definitions/Endpoint" - }, - "EnhancedVpcRouting": { - "type": "boolean" - }, - "HsmClientCertificateIdentifier": { - "type": "string" - }, - "HsmConfigurationIdentifier": { - "type": "string" - }, - "IamRoles": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "maxItems": 50, - "type": "array" - }, - "Id": { - "type": "string" - }, - "KmsKeyId": { - "type": "string" - }, - "LoggingProperties": { - "$ref": "#/definitions/LoggingProperties" - }, - "MaintenanceTrackName": { - "type": "string" - }, - "ManualSnapshotRetentionPeriod": { - "type": "integer" - }, - "MasterUserPassword": { - "maxLength": 64, - "type": "string" - }, - "MasterUsername": { - "maxLength": 128, - "type": "string" - }, - "MultiAZ": { - "type": "boolean" - }, - "NodeType": { - "cfnLint": "AWS::Redshift::Cluster/Properties/NodeType", - "type": "string" - }, - "NumberOfNodes": { - "maximum": 100, - "minimum": 1, - "type": "integer" - }, - "OwnerAccount": { - "type": "string" - }, - "Port": { - "type": "integer" - }, - "PreferredMaintenanceWindow": { - "type": "string" - }, - "PubliclyAccessible": { - "type": "boolean" - }, - "ResourceAction": { - "type": "string" - }, - "RevisionTarget": { - "type": "string" - }, - "RotateEncryptionKey": { - "type": "boolean" - }, - "SnapshotClusterIdentifier": { - "type": "string" - }, - "SnapshotCopyGrantName": { - "type": "string" - }, - "SnapshotCopyManual": { - "type": "boolean" - }, - "SnapshotCopyRetentionPeriod": { - "type": "integer" - }, - "SnapshotIdentifier": { - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": false - }, - "VpcSecurityGroupIds": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/DeferMaintenanceIdentifier", - "/properties/Endpoint/Port", - "/properties/Endpoint/Address" - ], - "required": [ - "MasterUserPassword", - "NodeType", - "MasterUsername", - "DBName", - "ClusterType" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "taggable": true - }, - "typeName": "AWS::Redshift::Cluster", - "writeOnlyProperties": [ - "/properties/MasterUserPassword", - "/properties/Classic", - "/properties/SnapshotIdentifier" - ] -} diff --git a/src/cfnlint/data/schemas/providers/eu_south_1/aws-redshift-clusterparametergroup.json b/src/cfnlint/data/schemas/providers/eu_south_1/aws-redshift-clusterparametergroup.json deleted file mode 100644 index 6e830dea20..0000000000 --- a/src/cfnlint/data/schemas/providers/eu_south_1/aws-redshift-clusterparametergroup.json +++ /dev/null @@ -1,136 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ParameterGroupName", - "/properties/ParameterGroupFamily", - "/properties/Description" - ], - "definitions": { - "Parameter": { - "additionalProperties": false, - "properties": { - "ParameterName": { - "type": "string" - }, - "ParameterValue": { - "type": "string" - } - }, - "required": [ - "ParameterValue", - "ParameterName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "redshift:CreateClusterParameterGroup", - "redshift:ModifyClusterParameterGroup", - "redshift:DescribeClusterParameterGroups", - "redshift:CreateTags", - "ec2:AllocateAddress", - "ec2:AssociateAddress", - "ec2:AttachNetworkInterface", - "ec2:DescribeAccountAttributes", - "ec2:DescribeAddresses", - "ec2:DescribeAvailabilityZones", - "ec2:DescribeInternetGateways", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:DescribeVpcs" - ] - }, - "delete": { - "permissions": [ - "redshift:DeleteClusterParameterGroup", - "initech:DeleteReport" - ] - }, - "list": { - "permissions": [ - "redshift:DescribeClusterParameterGroups", - "initech:ListReports" - ] - }, - "read": { - "permissions": [ - "redshift:DescribeClusterParameterGroups", - "initech:DescribeReport" - ] - }, - "update": { - "permissions": [ - "redshift:ResetClusterParameterGroup", - "redshift:ModifyClusterParameterGroup", - "redshift:DescribeTags", - "redshift:CreateTags", - "redshift:DeleteTags", - "initech:UpdateReport" - ] - } - }, - "primaryIdentifier": [ - "/properties/ParameterGroupName" - ], - "properties": { - "Description": { - "type": "string" - }, - "ParameterGroupFamily": { - "type": "string" - }, - "ParameterGroupName": { - "maxLength": 255, - "type": "string" - }, - "Parameters": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Parameter" - }, - "type": "array" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "required": [ - "Description", - "ParameterGroupFamily" - ], - "tagging": { - "taggable": true - }, - "typeName": "AWS::Redshift::ClusterParameterGroup", - "writeOnlyProperties": [ - "/properties/Tags", - "/properties/Tags/*/Key", - "/properties/Tags/*/Value" - ] -} diff --git a/src/cfnlint/data/schemas/providers/eu_south_1/aws-sagemaker-appimageconfig.json b/src/cfnlint/data/schemas/providers/eu_south_1/aws-sagemaker-appimageconfig.json new file mode 100644 index 0000000000..01116f524b --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_south_1/aws-sagemaker-appimageconfig.json @@ -0,0 +1,238 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AppImageConfigName", + "/properties/Tags" + ], + "definitions": { + "ContainerConfig": { + "additionalProperties": false, + "properties": { + "ContainerArguments": { + "items": { + "$ref": "#/definitions/CustomImageContainerArguments" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "ContainerEntrypoint": { + "items": { + "$ref": "#/definitions/CustomImageContainerEntrypoint" + }, + "maxItems": 1, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "ContainerEnvironmentVariables": { + "items": { + "$ref": "#/definitions/CustomImageContainerEnvironmentVariable" + }, + "maxItems": 25, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "CustomImageContainerArguments": { + "maxLength": 64, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "CustomImageContainerEntrypoint": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "CustomImageContainerEnvironmentVariable": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "FileSystemConfig": { + "additionalProperties": false, + "properties": { + "DefaultGid": { + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "DefaultUid": { + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "MountPath": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^/.*", + "type": "string" + } + }, + "type": "object" + }, + "JupyterLabAppImageConfig": { + "additionalProperties": false, + "properties": { + "ContainerConfig": { + "$ref": "#/definitions/ContainerConfig" + } + }, + "type": "object" + }, + "KernelGatewayImageConfig": { + "additionalProperties": false, + "properties": { + "FileSystemConfig": { + "$ref": "#/definitions/FileSystemConfig" + }, + "KernelSpecs": { + "items": { + "$ref": "#/definitions/KernelSpec" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "KernelSpecs" + ], + "type": "object" + }, + "KernelSpec": { + "additionalProperties": false, + "properties": { + "DisplayName": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Name": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "sagemaker:CreateAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + }, + "delete": { + "permissions": [ + "sagemaker:DeleteAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + }, + "list": { + "permissions": [ + "sagemaker:ListAppImageConfigs" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeAppImageConfig" + ] + }, + "update": { + "permissions": [ + "sagemaker:UpdateAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + } + }, + "primaryIdentifier": [ + "/properties/AppImageConfigName" + ], + "properties": { + "AppImageConfigArn": { + "maxLength": 256, + "minLength": 1, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:app-image-config/.*", + "type": "string" + }, + "AppImageConfigName": { + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", + "type": "string" + }, + "JupyterLabAppImageConfig": { + "$ref": "#/definitions/JupyterLabAppImageConfig" + }, + "KernelGatewayImageConfig": { + "$ref": "#/definitions/KernelGatewayImageConfig" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/AppImageConfigArn" + ], + "required": [ + "AppImageConfigName" + ], + "typeName": "AWS::SageMaker::AppImageConfig", + "writeOnlyProperties": [ + "/properties/Tags" + ] +} diff --git a/src/cfnlint/data/schemas/providers/eu_south_1/aws-verifiedpermissions-identitysource.json b/src/cfnlint/data/schemas/providers/eu_south_1/aws-verifiedpermissions-identitysource.json new file mode 100644 index 0000000000..46a0ad88f1 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_south_1/aws-verifiedpermissions-identitysource.json @@ -0,0 +1,221 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PolicyStoreId" + ], + "definitions": { + "CognitoGroupConfiguration": { + "additionalProperties": false, + "properties": { + "GroupEntityType": { + "maxLength": 200, + "minLength": 1, + "pattern": "^([_a-zA-Z][_a-zA-Z0-9]*::)*[_a-zA-Z][_a-zA-Z0-9]*$", + "type": "string" + } + }, + "required": [ + "GroupEntityType" + ], + "type": "object" + }, + "CognitoUserPoolConfiguration": { + "additionalProperties": false, + "properties": { + "ClientIds": { + "insertionOrder": false, + "items": { + "maxLength": 255, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "maxItems": 1000, + "minItems": 0, + "type": "array" + }, + "GroupConfiguration": { + "$ref": "#/definitions/CognitoGroupConfiguration" + }, + "UserPoolArn": { + "maxLength": 255, + "minLength": 1, + "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", + "type": "string" + } + }, + "required": [ + "UserPoolArn" + ], + "type": "object" + }, + "IdentitySourceConfiguration": { + "additionalProperties": false, + "properties": { + "CognitoUserPoolConfiguration": { + "$ref": "#/definitions/CognitoUserPoolConfiguration" + } + }, + "required": [ + "CognitoUserPoolConfiguration" + ], + "title": "CognitoUserPoolConfiguration", + "type": "object" + }, + "IdentitySourceDetails": { + "additionalProperties": false, + "properties": { + "ClientIds": { + "insertionOrder": false, + "items": { + "maxLength": 255, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "maxItems": 1000, + "minItems": 0, + "type": "array" + }, + "DiscoveryUrl": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^https://.*$", + "type": "string" + }, + "OpenIdIssuer": { + "$ref": "#/definitions/OpenIdIssuer" + }, + "UserPoolArn": { + "maxLength": 255, + "minLength": 1, + "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", + "type": "string" + } + }, + "type": "object" + }, + "OpenIdIssuer": { + "enum": [ + "COGNITO" + ], + "type": "string" + } + }, + "deprecatedProperties": [ + "/properties/Details" + ], + "handlers": { + "create": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "delete": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "PolicyStoreId": { + "$ref": "resource-schema.json#/properties/PolicyStoreId" + } + }, + "required": [ + "PolicyStoreId" + ] + }, + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "read": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "update": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + } + }, + "primaryIdentifier": [ + "/properties/IdentitySourceId", + "/properties/PolicyStoreId" + ], + "properties": { + "Configuration": { + "$ref": "#/definitions/IdentitySourceConfiguration" + }, + "Details": { + "$ref": "#/definitions/IdentitySourceDetails" + }, + "IdentitySourceId": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]*$", + "type": "string" + }, + "PolicyStoreId": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]*$", + "type": "string" + }, + "PrincipalEntityType": { + "maxLength": 200, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Details", + "/properties/IdentitySourceId" + ], + "required": [ + "Configuration", + "PolicyStoreId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-avp", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::VerifiedPermissions::IdentitySource" +} diff --git a/src/cfnlint/data/schemas/providers/eu_south_2/__init__.py b/src/cfnlint/data/schemas/providers/eu_south_2/__init__.py index c82641b6e3..9f84ad3440 100644 --- a/src/cfnlint/data/schemas/providers/eu_south_2/__init__.py +++ b/src/cfnlint/data/schemas/providers/eu_south_2/__init__.py @@ -35,6 +35,7 @@ "AWS::ApiGateway::DocumentationPart", "AWS::CloudWatch::CompositeAlarm", "AWS::Route53Resolver::FirewallDomainList", + "AWS::Redshift::EndpointAccess", "AWS::AppConfig::Application", "AWS::OpsWorks::Stack", "AWS::GameLift::Fleet", @@ -53,6 +54,7 @@ "AWS::WAFv2::RegexPatternSet", "AWS::EKS::FargateProfile", "AWS::Route53::DNSSEC", + "AWS::Redshift::EndpointAuthorization", "AWS::EC2::TransitGatewayRouteTable", "AWS::ControlTower::EnabledControl", "AWS::Route53::RecordSet", @@ -77,6 +79,7 @@ "AWS::DataSync::LocationHDFS", "AWS::Events::Archive", "AWS::MSK::Cluster", + "AWS::SecurityHub::DelegatedAdmin", "AWS::ControlTower::EnabledBaseline", "AWS::EC2::VPCEndpointConnectionNotification", "AWS::CodePipeline::Pipeline", @@ -185,6 +188,7 @@ "AWS::ServiceCatalog::PortfolioShare", "AWS::ApiGateway::VpcLink", "AWS::IAM::ServerCertificate", + "AWS::GlobalAccelerator::CrossAccountAttachment", "AWS::Events::EventBus", "AWS::SQS::QueueInlinePolicy", "AWS::Organizations::Organization", @@ -209,6 +213,7 @@ "AWS::EKS::Cluster", "AWS::EFS::FileSystem", "AWS::Logs::QueryDefinition", + "AWS::SecurityHub::ProductSubscription", "AWS::IAM::InstanceProfile", "AWS::DataSync::LocationNFS", "AWS::SageMaker::Domain", @@ -384,6 +389,7 @@ "AWS::ServiceCatalogAppRegistry::AttributeGroup", "AWS::AppSync::GraphQLApi", "AWS::EC2::EgressOnlyInternetGateway", + "AWS::SecurityHub::Insight", "AWS::EC2::VPCCidrBlock", "AWS::ACMPCA::CertificateAuthority", "AWS::Athena::PreparedStatement", @@ -473,6 +479,7 @@ "AWS::LakeFormation::DataLakeSettings", "AWS::AutoScaling::ScalingPolicy", "AWS::ECR::RegistryPolicy", + "AWS::Redshift::ScheduledAction", "AWS::RDS::DBSecurityGroup", "AWS::CloudWatch::MetricStream", "AWS::SSM::Parameter", @@ -524,6 +531,7 @@ "AWS::S3::AccessPoint", "AWS::Batch::JobQueue", "AWS::ElasticLoadBalancingV2::Listener", + "AWS::Redshift::EventSubscription", "AWS::CloudFormation::WaitConditionHandle", "AWS::GlobalAccelerator::Accelerator", "AWS::EKS::Addon", @@ -538,7 +546,6 @@ "aws-guardduty-filter.json", "aws-ecs-service.json", "aws-dms-replicationconfig.json", - "aws-ec2-securitygroupegress.json", "aws-glue-dataqualityruleset.json", "aws-config-configurationrecorder.json", "aws-ec2-networkperformancemetricsubscription.json", @@ -546,15 +553,16 @@ "aws-ecr-replicationconfiguration.json", "aws-appconfig-extensionassociation.json", "aws-ec2-ipampoolcidr.json", + "aws-redshift-clustersubnetgroup.json", "aws-rds-dbinstance.json", "aws-ec2-vpcdhcpoptionsassociation.json", "aws-ec2-networkacl.json", - "aws-lambda-eventsourcemapping.json", "aws-logs-resourcepolicy.json", "aws-servicecatalog-launchnotificationconstraint.json", "aws-transfer-certificate.json", "aws-cloudwatch-compositealarm.json", "aws-route53resolver-firewalldomainlist.json", + "aws-redshift-endpointaccess.json", "aws-appconfig-application.json", "aws-datasync-locationfsxwindows.json", "aws-autoscaling-warmpool.json", @@ -568,6 +576,7 @@ "aws-wafv2-regexpatternset.json", "aws-eks-fargateprofile.json", "aws-route53-dnssec.json", + "aws-redshift-endpointauthorization.json", "aws-ec2-transitgatewayroutetable.json", "aws-controltower-enabledcontrol.json", "aws-route53-recordset.json", @@ -589,6 +598,7 @@ "aws-datasync-locationhdfs.json", "aws-events-archive.json", "aws-msk-cluster.json", + "aws-securityhub-delegatedadmin.json", "aws-controltower-enabledbaseline.json", "aws-ec2-vpcendpointconnectionnotification.json", "aws-codepipeline-pipeline.json", @@ -682,6 +692,7 @@ "aws-sagemaker-imageversion.json", "aws-servicecatalog-portfolioshare.json", "aws-iam-servercertificate.json", + "aws-globalaccelerator-crossaccountattachment.json", "aws-events-eventbus.json", "aws-sqs-queueinlinepolicy.json", "aws-organizations-organization.json", @@ -705,8 +716,8 @@ "aws-eks-cluster.json", "aws-efs-filesystem.json", "aws-logs-querydefinition.json", + "aws-securityhub-productsubscription.json", "aws-datasync-locationnfs.json", - "aws-sagemaker-domain.json", "aws-certificatemanager-certificate.json", "aws-sdb-domain.json", "aws-ec2-subnetroutetableassociation.json", @@ -756,6 +767,7 @@ "aws-datasync-locationsmb.json", "aws-securityhub-standard.json", "aws-sns-topicinlinepolicy.json", + "aws-redshift-clusterparametergroup.json", "aws-organizations-policy.json", "aws-glue-trigger.json", "aws-globalaccelerator-listener.json", @@ -795,6 +807,7 @@ "aws-logs-accountpolicy.json", "aws-s3-bucketpolicy.json", "aws-appsync-graphqlschema.json", + "aws-redshift-cluster.json", "aws-emr-instancefleetconfig.json", "aws-emr-cluster.json", "aws-rds-dbcluster.json", @@ -814,7 +827,6 @@ "aws-glue-mltransform.json", "aws-appconfig-hostedconfigurationversion.json", "aws-datasync-locationefs.json", - "aws-sagemaker-appimageconfig.json", "aws-elasticloadbalancingv2-targetgroup.json", "aws-applicationautoscaling-scalingpolicy.json", "aws-pipes-pipe.json", @@ -859,7 +871,7 @@ "aws-servicecatalogappregistry-attributegroup.json", "aws-appsync-graphqlapi.json", "aws-ec2-egressonlyinternetgateway.json", - "aws-acmpca-certificateauthority.json", + "aws-securityhub-insight.json", "aws-athena-preparedstatement.json", "aws-autoscaling-scheduledaction.json", "aws-lakeformation-resource.json", @@ -891,8 +903,8 @@ "aws-events-connection.json", "aws-athena-datacatalog.json", "aws-glue-workflow.json", - "aws-sagemaker-userprofile.json", "aws-ec2-prefixlist.json", + "aws-ec2-instance.json", "aws-ec2-subnetcidrblock.json", "aws-waf-sqlinjectionmatchset.json", "aws-ec2-transitgatewayvpcattachment.json", @@ -931,6 +943,7 @@ "aws-athena-namedquery.json", "aws-lakeformation-datalakesettings.json", "aws-ecr-registrypolicy.json", + "aws-redshift-scheduledaction.json", "aws-rds-dbsecuritygroup.json", "aws-cloudwatch-metricstream.json", "aws-ssm-parameter.json", @@ -973,6 +986,7 @@ "aws-s3-accesspoint.json", "aws-batch-jobqueue.json", "aws-elasticloadbalancingv2-listener.json", + "aws-redshift-eventsubscription.json", "aws-cloudformation-waitconditionhandle.json", "aws-globalaccelerator-accelerator.json", "aws-eks-addon.json", diff --git a/src/cfnlint/data/schemas/providers/eu_south_2/aws-acmpca-certificateauthority.json b/src/cfnlint/data/schemas/providers/eu_south_2/aws-acmpca-certificateauthority.json new file mode 100644 index 0000000000..08ec85e5fa --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_south_2/aws-acmpca-certificateauthority.json @@ -0,0 +1,429 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Type", + "/properties/KeyAlgorithm", + "/properties/SigningAlgorithm", + "/properties/Subject", + "/properties/CsrExtensions", + "/properties/KeyStorageSecurityStandard", + "/properties/UsageMode" + ], + "definitions": { + "AccessDescription": { + "additionalProperties": false, + "properties": { + "AccessLocation": { + "$ref": "#/definitions/GeneralName" + }, + "AccessMethod": { + "$ref": "#/definitions/AccessMethod" + } + }, + "required": [ + "AccessMethod", + "AccessLocation" + ], + "type": "object" + }, + "AccessMethod": { + "additionalProperties": false, + "properties": { + "AccessMethodType": { + "$ref": "#/definitions/AccessMethodType" + }, + "CustomObjectIdentifier": { + "$ref": "#/definitions/CustomObjectIdentifier" + } + }, + "type": "object" + }, + "AccessMethodType": { + "type": "string" + }, + "Arn": { + "type": "string" + }, + "CrlConfiguration": { + "additionalProperties": false, + "properties": { + "CrlDistributionPointExtensionConfiguration": { + "$ref": "#/definitions/CrlDistributionPointExtensionConfiguration" + }, + "CustomCname": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + }, + "ExpirationInDays": { + "type": "integer" + }, + "S3BucketName": { + "type": "string" + }, + "S3ObjectAcl": { + "type": "string" + } + }, + "type": "object" + }, + "CrlDistributionPointExtensionConfiguration": { + "additionalProperties": false, + "properties": { + "OmitExtension": { + "type": "boolean" + } + }, + "required": [ + "OmitExtension" + ], + "type": "object" + }, + "CsrExtensions": { + "additionalProperties": false, + "properties": { + "KeyUsage": { + "$ref": "#/definitions/KeyUsage" + }, + "SubjectInformationAccess": { + "$ref": "#/definitions/SubjectInformationAccess" + } + }, + "type": "object" + }, + "CustomAttribute": { + "additionalProperties": false, + "properties": { + "ObjectIdentifier": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "ObjectIdentifier", + "Value" + ], + "type": "object" + }, + "CustomAttributeList": { + "items": { + "$ref": "#/definitions/CustomAttribute" + }, + "type": "array" + }, + "CustomObjectIdentifier": { + "type": "string" + }, + "DnsName": { + "type": "string" + }, + "EdiPartyName": { + "additionalProperties": false, + "properties": { + "NameAssigner": { + "type": "string" + }, + "PartyName": { + "type": "string" + } + }, + "required": [ + "PartyName", + "NameAssigner" + ], + "type": "object" + }, + "GeneralName": { + "additionalProperties": false, + "properties": { + "DirectoryName": { + "$ref": "#/definitions/Subject" + }, + "DnsName": { + "$ref": "#/definitions/DnsName" + }, + "EdiPartyName": { + "$ref": "#/definitions/EdiPartyName" + }, + "IpAddress": { + "$ref": "#/definitions/IpAddress" + }, + "OtherName": { + "$ref": "#/definitions/OtherName" + }, + "RegisteredId": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Rfc822Name": { + "$ref": "#/definitions/Rfc822Name" + }, + "UniformResourceIdentifier": { + "$ref": "#/definitions/UniformResourceIdentifier" + } + }, + "type": "object" + }, + "IpAddress": { + "type": "string" + }, + "KeyUsage": { + "additionalProperties": false, + "properties": { + "CRLSign": { + "default": false, + "type": "boolean" + }, + "DataEncipherment": { + "default": false, + "type": "boolean" + }, + "DecipherOnly": { + "default": false, + "type": "boolean" + }, + "DigitalSignature": { + "default": false, + "type": "boolean" + }, + "EncipherOnly": { + "default": false, + "type": "boolean" + }, + "KeyAgreement": { + "default": false, + "type": "boolean" + }, + "KeyCertSign": { + "default": false, + "type": "boolean" + }, + "KeyEncipherment": { + "default": false, + "type": "boolean" + }, + "NonRepudiation": { + "default": false, + "type": "boolean" + } + }, + "type": "object" + }, + "OcspConfiguration": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + }, + "OcspCustomCname": { + "type": "string" + } + }, + "type": "object" + }, + "OtherName": { + "additionalProperties": false, + "properties": { + "TypeId": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "TypeId", + "Value" + ], + "type": "object" + }, + "RevocationConfiguration": { + "additionalProperties": false, + "properties": { + "CrlConfiguration": { + "$ref": "#/definitions/CrlConfiguration" + }, + "OcspConfiguration": { + "$ref": "#/definitions/OcspConfiguration" + } + }, + "type": "object" + }, + "Rfc822Name": { + "type": "string" + }, + "Subject": { + "additionalProperties": false, + "properties": { + "CommonName": { + "type": "string" + }, + "Country": { + "type": "string" + }, + "CustomAttributes": { + "$ref": "#/definitions/CustomAttributeList" + }, + "DistinguishedNameQualifier": { + "type": "string" + }, + "GenerationQualifier": { + "type": "string" + }, + "GivenName": { + "type": "string" + }, + "Initials": { + "type": "string" + }, + "Locality": { + "type": "string" + }, + "Organization": { + "type": "string" + }, + "OrganizationalUnit": { + "type": "string" + }, + "Pseudonym": { + "type": "string" + }, + "SerialNumber": { + "type": "string" + }, + "State": { + "type": "string" + }, + "Surname": { + "type": "string" + }, + "Title": { + "type": "string" + } + }, + "type": "object" + }, + "SubjectInformationAccess": { + "items": { + "$ref": "#/definitions/AccessDescription" + }, + "type": "array" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "UniformResourceIdentifier": { + "type": "string" + } + }, + "handlers": { + "create": { + "permissions": [ + "acm-pca:CreateCertificateAuthority", + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr" + ] + }, + "delete": { + "permissions": [ + "acm-pca:DeleteCertificateAuthority", + "acm-pca:DescribeCertificateAuthority" + ] + }, + "list": { + "permissions": [ + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr", + "acm-pca:ListCertificateAuthorities", + "acm-pca:ListTags" + ] + }, + "read": { + "permissions": [ + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr", + "acm-pca:ListTags" + ] + }, + "update": { + "permissions": [ + "acm-pca:ListTags", + "acm-pca:TagCertificateAuthority", + "acm-pca:UntagCertificateAuthority", + "acm-pca:UpdateCertificateAuthority" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "$ref": "#/definitions/Arn" + }, + "CertificateSigningRequest": { + "type": "string" + }, + "CsrExtensions": { + "$ref": "#/definitions/CsrExtensions" + }, + "KeyAlgorithm": { + "type": "string" + }, + "KeyStorageSecurityStandard": { + "type": "string" + }, + "RevocationConfiguration": { + "$ref": "#/definitions/RevocationConfiguration" + }, + "SigningAlgorithm": { + "type": "string" + }, + "Subject": { + "$ref": "#/definitions/Subject" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "Type": { + "type": "string" + }, + "UsageMode": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CertificateSigningRequest" + ], + "required": [ + "Type", + "KeyAlgorithm", + "SigningAlgorithm", + "Subject" + ], + "sourceUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_ACMPCA.html", + "typeName": "AWS::ACMPCA::CertificateAuthority", + "writeOnlyProperties": [ + "/properties/Subject", + "/properties/Subject", + "/properties/CsrExtensions", + "/properties/Tags", + "/properties/RevocationConfiguration", + "/properties/KeyStorageSecurityStandard" + ] +} diff --git a/src/cfnlint/data/schemas/providers/eu_south_2/aws-dynamodb-globaltable.json b/src/cfnlint/data/schemas/providers/eu_south_2/aws-dynamodb-globaltable.json index 4e5ba995cb..ae37e9142b 100644 --- a/src/cfnlint/data/schemas/providers/eu_south_2/aws-dynamodb-globaltable.json +++ b/src/cfnlint/data/schemas/providers/eu_south_2/aws-dynamodb-globaltable.json @@ -8,6 +8,27 @@ ] ], "additionalProperties": false, + "allOf": [ + { + "if": { + "required": [ + "LocalSecondaryIndexes" + ], + "type": "object" + }, + "then": { + "properties": { + "AttributeDefinitions": { + "minItems": 2 + }, + "KeySchema": { + "minItems": 2 + } + }, + "type": "object" + } + } + ], "createOnlyProperties": [ "/properties/LocalSecondaryIndexes", "/properties/TableName", @@ -79,13 +100,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "minItems": 1, - "type": "array", - "uniqueItems": true + "minItems": 1 }, "Projection": { "$ref": "#/definitions/Projection" @@ -102,22 +119,60 @@ "type": "object" }, "KeySchema": { - "additionalProperties": false, - "properties": { - "AttributeName": { - "maxLength": 255, - "minLength": 1, - "type": "string" + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "KeyType": { + "enum": [ + "HASH", + "RANGE" + ], + "type": "string" + } }, - "KeyType": { - "type": "string" - } + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" }, - "required": [ - "KeyType", - "AttributeName" + "prefixItems": [ + { + "additionalProperties": false, + "properties": { + "KeyType": { + "const": "HASH", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + }, + { + "properties": { + "KeyType": { + "const": "RANGE", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + } ], - "type": "object" + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "KinesisStreamSpecification": { "additionalProperties": false, @@ -147,12 +202,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "type": "array", - "uniqueItems": true + "minItems": 2 }, "Projection": { "$ref": "#/definitions/Projection" @@ -511,7 +563,10 @@ }, "minItems": 1, "type": "array", - "uniqueItems": true + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "BillingMode": { "type": "string" @@ -525,13 +580,9 @@ "uniqueItems": true }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "minItems": 1, - "type": "array", - "uniqueItems": true + "minItems": 1 }, "LocalSecondaryIndexes": { "insertionOrder": false, diff --git a/src/cfnlint/data/schemas/providers/eu_south_2/aws-dynamodb-table.json b/src/cfnlint/data/schemas/providers/eu_south_2/aws-dynamodb-table.json index efc82f1d70..f21d084b10 100644 --- a/src/cfnlint/data/schemas/providers/eu_south_2/aws-dynamodb-table.json +++ b/src/cfnlint/data/schemas/providers/eu_south_2/aws-dynamodb-table.json @@ -1,5 +1,26 @@ { "additionalProperties": false, + "allOf": [ + { + "if": { + "required": [ + "LocalSecondaryIndexes" + ], + "type": "object" + }, + "then": { + "properties": { + "AttributeDefinitions": { + "minItems": 2 + }, + "KeySchema": { + "minItems": 2 + } + }, + "type": "object" + } + } + ], "cfnLint": [ "AWS::DynamoDB::Table/Properties" ], @@ -95,11 +116,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 }, "Projection": { "$ref": "#/definitions/Projection" @@ -147,24 +166,57 @@ "type": "object" }, "KeySchema": { - "additionalProperties": false, - "properties": { - "AttributeName": { - "type": "string" + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "type": "string" + }, + "KeyType": { + "enum": [ + "HASH", + "RANGE" + ], + "type": "string" + } }, - "KeyType": { - "enum": [ - "HASH", - "RANGE" + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" + }, + "prefixItems": [ + { + "properties": { + "KeyType": { + "const": "HASH", + "type": "string" + } + }, + "required": [ + "KeyType" ], - "type": "string" + "type": "object" + }, + { + "properties": { + "KeyType": { + "const": "RANGE", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" } - }, - "required": [ - "KeyType", - "AttributeName" ], - "type": "object" + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "KinesisStreamSpecification": { "additionalProperties": false, @@ -192,11 +244,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 2 }, "Projection": { "$ref": "#/definitions/Projection" @@ -451,7 +501,10 @@ "$ref": "#/definitions/AttributeDefinition" }, "type": "array", - "uniqueItems": true + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "BillingMode": { "enum": [ @@ -479,11 +532,9 @@ "KeySchema": { "oneOf": [ { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 }, { "type": "object" diff --git a/src/cfnlint/data/schemas/providers/eu_south_2/aws-ec2-instance.json b/src/cfnlint/data/schemas/providers/eu_south_2/aws-ec2-instance.json deleted file mode 100644 index 7b3bfed595..0000000000 --- a/src/cfnlint/data/schemas/providers/eu_south_2/aws-ec2-instance.json +++ /dev/null @@ -1,571 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ElasticGpuSpecifications", - "/properties/Ipv6Addresses", - "/properties/PlacementGroupName", - "/properties/HostResourceGroupArn", - "/properties/ImageId", - "/properties/CpuOptions", - "/properties/PrivateIpAddress", - "/properties/ElasticInferenceAccelerators", - "/properties/EnclaveOptions", - "/properties/HibernationOptions", - "/properties/KeyName", - "/properties/LicenseSpecifications", - "/properties/NetworkInterfaces", - "/properties/AvailabilityZone", - "/properties/SubnetId", - "/properties/LaunchTemplate", - "/properties/SecurityGroups", - "/properties/Ipv6AddressCount" - ], - "definitions": { - "AssociationParameter": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "BlockDeviceMapping": { - "additionalProperties": false, - "properties": { - "DeviceName": { - "type": "string" - }, - "Ebs": { - "$ref": "#/definitions/Ebs" - }, - "NoDevice": { - "$ref": "#/definitions/NoDevice" - }, - "VirtualName": { - "type": "string" - } - }, - "required": [ - "DeviceName" - ], - "requiredXor": [ - "VirtualName", - "Ebs", - "NoDevice" - ], - "type": "object" - }, - "CpuOptions": { - "additionalProperties": false, - "properties": { - "CoreCount": { - "type": "integer" - }, - "ThreadsPerCore": { - "type": "integer" - } - }, - "type": "object" - }, - "CreditSpecification": { - "additionalProperties": false, - "properties": { - "CPUCredits": { - "type": "string" - } - }, - "type": "object" - }, - "Ebs": { - "additionalProperties": false, - "properties": { - "DeleteOnTermination": { - "type": "boolean" - }, - "Encrypted": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "KmsKeyId": { - "type": "string" - }, - "SnapshotId": { - "type": "string" - }, - "VolumeSize": { - "type": "integer" - }, - "VolumeType": { - "type": "string" - } - }, - "type": "object" - }, - "ElasticGpuSpecification": { - "additionalProperties": false, - "properties": { - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "ElasticInferenceAccelerator": { - "additionalProperties": false, - "properties": { - "Count": { - "type": "integer" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "EnclaveOptions": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - } - }, - "type": "object" - }, - "HibernationOptions": { - "additionalProperties": false, - "properties": { - "Configured": { - "type": "boolean" - } - }, - "type": "object" - }, - "InstanceIpv6Address": { - "additionalProperties": false, - "properties": { - "Ipv6Address": { - "type": "string" - } - }, - "required": [ - "Ipv6Address" - ], - "type": "object" - }, - "LaunchTemplateSpecification": { - "additionalProperties": false, - "properties": { - "LaunchTemplateId": { - "type": "string" - }, - "LaunchTemplateName": { - "type": "string" - }, - "Version": { - "type": "string" - } - }, - "required": [ - "Version" - ], - "type": "object" - }, - "LicenseSpecification": { - "additionalProperties": false, - "properties": { - "LicenseConfigurationArn": { - "type": "string" - } - }, - "required": [ - "LicenseConfigurationArn" - ], - "type": "object" - }, - "NetworkInterface": { - "additionalProperties": false, - "properties": { - "AssociateCarrierIpAddress": { - "type": "boolean" - }, - "AssociatePublicIpAddress": { - "type": "boolean" - }, - "DeleteOnTermination": { - "type": "boolean" - }, - "Description": { - "type": "string" - }, - "DeviceIndex": { - "type": "string" - }, - "GroupSet": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": false - }, - "NetworkInterfaceId": { - "type": "string" - }, - "PrivateIpAddress": { - "type": "string" - }, - "PrivateIpAddresses": { - "items": { - "$ref": "#/definitions/PrivateIpAddressSpecification" - }, - "type": "array", - "uniqueItems": false - }, - "SecondaryPrivateIpAddressCount": { - "type": "integer" - }, - "SubnetId": { - "type": "string" - } - }, - "required": [ - "DeviceIndex" - ], - "type": "object" - }, - "NoDevice": { - "additionalProperties": false, - "type": "object" - }, - "PrivateDnsNameOptions": { - "additionalProperties": false, - "properties": { - "EnableResourceNameDnsAAAARecord": { - "type": "boolean" - }, - "EnableResourceNameDnsARecord": { - "type": "boolean" - }, - "HostnameType": { - "type": "string" - } - }, - "type": "object" - }, - "PrivateIpAddressSpecification": { - "additionalProperties": false, - "properties": { - "Primary": { - "type": "boolean" - }, - "PrivateIpAddress": { - "type": "string" - } - }, - "required": [ - "PrivateIpAddress", - "Primary" - ], - "type": "object" - }, - "SsmAssociation": { - "additionalProperties": false, - "properties": { - "AssociationParameters": { - "items": { - "$ref": "#/definitions/AssociationParameter" - }, - "type": "array", - "uniqueItems": false - }, - "DocumentName": { - "type": "string" - } - }, - "required": [ - "DocumentName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "Volume": { - "additionalProperties": false, - "properties": { - "Device": { - "type": "string" - }, - "VolumeId": { - "type": "string" - } - }, - "required": [ - "VolumeId", - "Device" - ], - "type": "object" - } - }, - "dependentExcluded": { - "NetworkInterfaces": [ - "SubnetId" - ], - "SubnetId": [ - "NetworkInterfaces" - ] - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AdditionalInfo": { - "type": "string" - }, - "Affinity": { - "enum": [ - "default", - "host" - ], - "type": "string" - }, - "AvailabilityZone": { - "cfnLint": [ - "AWS::EC2::Instance/Properties/AvailabilityZone" - ], - "type": "string" - }, - "BlockDeviceMappings": { - "items": { - "$ref": "#/definitions/BlockDeviceMapping" - }, - "type": "array", - "uniqueItems": false - }, - "CpuOptions": { - "$ref": "#/definitions/CpuOptions" - }, - "CreditSpecification": { - "$ref": "#/definitions/CreditSpecification" - }, - "DisableApiTermination": { - "type": "boolean" - }, - "EbsOptimized": { - "type": "boolean" - }, - "ElasticGpuSpecifications": { - "items": { - "$ref": "#/definitions/ElasticGpuSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "ElasticInferenceAccelerators": { - "items": { - "$ref": "#/definitions/ElasticInferenceAccelerator" - }, - "type": "array", - "uniqueItems": true - }, - "EnclaveOptions": { - "$ref": "#/definitions/EnclaveOptions" - }, - "HibernationOptions": { - "$ref": "#/definitions/HibernationOptions" - }, - "HostId": { - "type": "string" - }, - "HostResourceGroupArn": { - "type": "string" - }, - "IamInstanceProfile": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "ImageId": { - "type": "string" - }, - "InstanceInitiatedShutdownBehavior": { - "type": "string" - }, - "InstanceType": { - "cfnLint": [ - "AWS::EC2::Instance/Properties/InstanceType" - ], - "type": "string" - }, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": false - }, - "KernelId": { - "type": "string" - }, - "KeyName": { - "type": "string" - }, - "LaunchTemplate": { - "$ref": "#/definitions/LaunchTemplateSpecification" - }, - "LicenseSpecifications": { - "items": { - "$ref": "#/definitions/LicenseSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "Monitoring": { - "type": "boolean" - }, - "NetworkInterfaces": { - "items": { - "$ref": "#/definitions/NetworkInterface" - }, - "type": "array", - "uniqueItems": false - }, - "PlacementGroupName": { - "type": "string" - }, - "PrivateDnsName": { - "type": "string" - }, - "PrivateDnsNameOptions": { - "$ref": "#/definitions/PrivateDnsNameOptions" - }, - "PrivateIp": { - "type": "string" - }, - "PrivateIpAddress": { - "type": "string" - }, - "PropagateTagsToVolumeOnCreation": { - "type": "boolean" - }, - "PublicDnsName": { - "type": "string" - }, - "PublicIp": { - "type": "string" - }, - "RamdiskId": { - "type": "string" - }, - "SecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SecurityGroups": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SourceDestCheck": { - "type": "boolean" - }, - "SsmAssociations": { - "items": { - "$ref": "#/definitions/SsmAssociation" - }, - "type": "array", - "uniqueItems": false - }, - "SubnetId": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "Tenancy": { - "enum": [ - "default", - "dedicated", - "host" - ], - "type": "string" - }, - "UserData": { - "type": "string" - }, - "Volumes": { - "items": { - "$ref": "#/definitions/Volume" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/PublicIp", - "/properties/Id", - "/properties/PublicDnsName", - "/properties/PrivateDnsName", - "/properties/PrivateIp" - ], - "requiredXor": [ - "ImageId", - "LaunchTemplate" - ], - "typeName": "AWS::EC2::Instance" -} diff --git a/src/cfnlint/data/schemas/providers/eu_south_2/aws-ec2-securitygroupegress.json b/src/cfnlint/data/schemas/providers/eu_south_2/aws-ec2-securitygroupegress.json new file mode 100644 index 0000000000..f94631dad2 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_south_2/aws-ec2-securitygroupegress.json @@ -0,0 +1,98 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::EC2::SecurityGroupEgress/Properties" + ], + "createOnlyProperties": [ + "/properties/IpProtocol", + "/properties/DestinationSecurityGroupId", + "/properties/ToPort", + "/properties/CidrIp", + "/properties/FromPort", + "/properties/GroupId", + "/properties/CidrIpv6", + "/properties/DestinationPrefixListId" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:AuthorizeSecurityGroupEgress", + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "delete": { + "permissions": [ + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "update": { + "permissions": [ + "ec2:UpdateSecurityGroupRuleDescriptionsEgress" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CidrIp": { + "type": "string" + }, + "CidrIpv6": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "DestinationPrefixListId": { + "type": "string" + }, + "DestinationSecurityGroupId": { + "type": "string" + }, + "FromPort": { + "minimum": -1, + "type": "integer" + }, + "GroupId": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "IpProtocol": { + "type": "string" + }, + "ToPort": { + "minimum": -1, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IpProtocol", + "GroupId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SecurityGroupEgress" +} diff --git a/src/cfnlint/data/schemas/providers/eu_south_2/aws-lambda-eventsourcemapping.json b/src/cfnlint/data/schemas/providers/eu_south_2/aws-lambda-eventsourcemapping.json new file mode 100644 index 0000000000..cb7599c139 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_south_2/aws-lambda-eventsourcemapping.json @@ -0,0 +1,353 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::Lambda::EventSourceMapping/Properties" + ], + "createOnlyProperties": [ + "/properties/EventSourceArn", + "/properties/StartingPosition", + "/properties/StartingPositionTimestamp", + "/properties/SelfManagedEventSource", + "/properties/AmazonManagedKafkaEventSourceConfig", + "/properties/SelfManagedKafkaEventSourceConfig" + ], + "definitions": { + "AmazonManagedKafkaEventSourceConfig": { + "additionalProperties": false, + "properties": { + "ConsumerGroupId": { + "$ref": "#/definitions/ConsumerGroupId" + } + }, + "type": "object" + }, + "ConsumerGroupId": { + "maxLength": 200, + "minLength": 1, + "pattern": "[a-zA-Z0-9-\\/*:_+=.@-]*", + "type": "string" + }, + "DestinationConfig": { + "additionalProperties": false, + "properties": { + "OnFailure": { + "$ref": "#/definitions/OnFailure" + } + }, + "type": "object" + }, + "DocumentDBEventSourceConfig": { + "additionalProperties": false, + "properties": { + "CollectionName": { + "maxLength": 57, + "minLength": 1, + "type": "string" + }, + "DatabaseName": { + "maxLength": 63, + "minLength": 1, + "type": "string" + }, + "FullDocument": { + "enum": [ + "UpdateLookup", + "Default" + ], + "type": "string" + } + }, + "type": "object" + }, + "Endpoints": { + "additionalProperties": false, + "properties": { + "KafkaBootstrapServers": { + "items": { + "maxLength": 300, + "minLength": 1, + "pattern": "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9]):[0-9]{1,5}", + "type": "string" + }, + "maxItems": 10, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "Filter": { + "additionalProperties": false, + "properties": { + "Pattern": { + "maxLength": 4096, + "minLength": 0, + "pattern": ".*", + "type": "string" + } + }, + "type": "object" + }, + "FilterCriteria": { + "additionalProperties": false, + "properties": { + "Filters": { + "items": { + "$ref": "#/definitions/Filter" + }, + "maxItems": 20, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "MaximumConcurrency": { + "maximum": 1000, + "minimum": 2, + "type": "integer" + }, + "OnFailure": { + "additionalProperties": false, + "properties": { + "Destination": { + "maxLength": 1024, + "minLength": 12, + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "type": "string" + } + }, + "type": "object" + }, + "ScalingConfig": { + "additionalProperties": false, + "properties": { + "MaximumConcurrency": { + "$ref": "#/definitions/MaximumConcurrency" + } + }, + "type": "object" + }, + "SelfManagedEventSource": { + "additionalProperties": false, + "properties": { + "Endpoints": { + "$ref": "#/definitions/Endpoints" + } + }, + "type": "object" + }, + "SelfManagedKafkaEventSourceConfig": { + "additionalProperties": false, + "properties": { + "ConsumerGroupId": { + "$ref": "#/definitions/ConsumerGroupId" + } + }, + "type": "object" + }, + "SourceAccessConfiguration": { + "additionalProperties": false, + "properties": { + "Type": { + "enum": [ + "BASIC_AUTH", + "VPC_SUBNET", + "VPC_SECURITY_GROUP", + "SASL_SCRAM_512_AUTH", + "SASL_SCRAM_256_AUTH", + "VIRTUAL_HOST", + "CLIENT_CERTIFICATE_TLS_AUTH", + "SERVER_ROOT_CA_CERTIFICATE" + ], + "type": "string" + }, + "URI": { + "maxLength": 200, + "minLength": 1, + "pattern": "[a-zA-Z0-9-\\/*:_+=.@-]*", + "type": "string" + } + }, + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "lambda:CreateEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + }, + "delete": { + "permissions": [ + "lambda:DeleteEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + }, + "list": { + "permissions": [ + "lambda:ListEventSourceMappings" + ] + }, + "read": { + "permissions": [ + "lambda:GetEventSourceMapping" + ] + }, + "update": { + "permissions": [ + "lambda:UpdateEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AmazonManagedKafkaEventSourceConfig": { + "$ref": "#/definitions/AmazonManagedKafkaEventSourceConfig" + }, + "BatchSize": { + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "BisectBatchOnFunctionError": { + "type": "boolean" + }, + "DestinationConfig": { + "$ref": "#/definitions/DestinationConfig" + }, + "DocumentDBEventSourceConfig": { + "$ref": "#/definitions/DocumentDBEventSourceConfig" + }, + "Enabled": { + "type": "boolean" + }, + "EventSourceArn": { + "maxLength": 1024, + "minLength": 12, + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "type": "string" + }, + "FilterCriteria": { + "$ref": "#/definitions/FilterCriteria" + }, + "FunctionName": { + "maxLength": 140, + "minLength": 1, + "pattern": "(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?", + "type": "string" + }, + "FunctionResponseTypes": { + "items": { + "enum": [ + "ReportBatchItemFailures" + ], + "type": "string" + }, + "maxLength": 1, + "minLength": 0, + "type": "array", + "uniqueItems": true + }, + "Id": { + "maxLength": 36, + "minLength": 36, + "pattern": "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + "type": "string" + }, + "MaximumBatchingWindowInSeconds": { + "maximum": 300, + "minimum": 0, + "type": "integer" + }, + "MaximumRecordAgeInSeconds": { + "maximum": 604800, + "minimum": -1, + "type": "integer" + }, + "MaximumRetryAttempts": { + "maximum": 10000, + "minimum": -1, + "type": "integer" + }, + "ParallelizationFactor": { + "maximum": 10, + "minimum": 1, + "type": "integer" + }, + "Queues": { + "items": { + "maxLength": 1000, + "minLength": 1, + "pattern": "[\\s\\S]*", + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "ScalingConfig": { + "$ref": "#/definitions/ScalingConfig" + }, + "SelfManagedEventSource": { + "$ref": "#/definitions/SelfManagedEventSource" + }, + "SelfManagedKafkaEventSourceConfig": { + "$ref": "#/definitions/SelfManagedKafkaEventSourceConfig" + }, + "SourceAccessConfigurations": { + "items": { + "$ref": "#/definitions/SourceAccessConfiguration" + }, + "maxItems": 22, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "StartingPosition": { + "enum": [ + "TRIM_HORIZON", + "LATEST", + "AT_TIMESTAMP" + ], + "maxLength": 12, + "minLength": 6, + "pattern": "(LATEST|TRIM_HORIZON|AT_TIMESTAMP)+", + "type": "string" + }, + "StartingPositionTimestamp": { + "type": "number" + }, + "Topics": { + "items": { + "maxLength": 249, + "minLength": 1, + "pattern": "^[^.]([a-zA-Z0-9\\-_.]+)", + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "TumblingWindowInSeconds": { + "maximum": 900, + "minimum": 0, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "FunctionName" + ], + "typeName": "AWS::Lambda::EventSourceMapping" +} diff --git a/src/cfnlint/data/schemas/providers/eu_south_2/aws-redshift-cluster.json b/src/cfnlint/data/schemas/providers/eu_south_2/aws-redshift-cluster.json deleted file mode 100644 index a354cb134c..0000000000 --- a/src/cfnlint/data/schemas/providers/eu_south_2/aws-redshift-cluster.json +++ /dev/null @@ -1,184 +0,0 @@ -{ - "additionalProperties": false, - "cfnLint": "AWS::Redshift::Cluster/Properties", - "createOnlyProperties": [ - "/properties/KmsKeyId", - "/properties/MasterUsername", - "/properties/OwnerAccount", - "/properties/SnapshotIdentifier", - "/properties/Encrypted", - "/properties/Port", - "/properties/DBName", - "/properties/SnapshotClusterIdentifier", - "/properties/AvailabilityZone", - "/properties/ClusterSubnetGroupName", - "/properties/ClusterIdentifier", - "/properties/ElasticIp" - ], - "definitions": { - "LoggingProperties": { - "additionalProperties": false, - "properties": { - "BucketName": { - "type": "string" - }, - "S3KeyPrefix": { - "type": "string" - } - }, - "required": [ - "BucketName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AllowVersionUpgrade": { - "type": "boolean" - }, - "AutomatedSnapshotRetentionPeriod": { - "type": "integer" - }, - "AvailabilityZone": { - "type": "string" - }, - "ClusterIdentifier": { - "type": "string" - }, - "ClusterParameterGroupName": { - "type": "string" - }, - "ClusterSecurityGroups": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "ClusterSubnetGroupName": { - "type": "string" - }, - "ClusterType": { - "type": "string" - }, - "ClusterVersion": { - "type": "string" - }, - "DBName": { - "type": "string" - }, - "ElasticIp": { - "type": "string" - }, - "Encrypted": { - "type": "boolean" - }, - "EndpointAddress": { - "type": "string" - }, - "EndpointPort": { - "type": "string" - }, - "HsmClientCertificateIdentifier": { - "type": "string" - }, - "HsmConfigurationIdentifier": { - "type": "string" - }, - "IamRoles": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Id": { - "type": "string" - }, - "KmsKeyId": { - "type": "string" - }, - "LoggingProperties": { - "$ref": "#/definitions/LoggingProperties" - }, - "MasterUserPassword": { - "type": "string" - }, - "MasterUsername": { - "type": "string" - }, - "NodeType": { - "cfnLint": "AWS::Redshift::Cluster/Properties/NodeType", - "type": "string" - }, - "NumberOfNodes": { - "maximum": 100, - "minimum": 1, - "type": "integer" - }, - "OwnerAccount": { - "type": "string" - }, - "Port": { - "type": "integer" - }, - "PreferredMaintenanceWindow": { - "type": "string" - }, - "PubliclyAccessible": { - "type": "boolean" - }, - "SnapshotClusterIdentifier": { - "type": "string" - }, - "SnapshotIdentifier": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "VpcSecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/EndpointPort", - "/properties/EndpointAddress" - ], - "required": [ - "MasterUserPassword", - "NodeType", - "MasterUsername", - "DBName", - "ClusterType" - ], - "typeName": "AWS::Redshift::Cluster" -} diff --git a/src/cfnlint/data/schemas/providers/eu_south_2/aws-redshift-clusterparametergroup.json b/src/cfnlint/data/schemas/providers/eu_south_2/aws-redshift-clusterparametergroup.json deleted file mode 100644 index da0d11f5b9..0000000000 --- a/src/cfnlint/data/schemas/providers/eu_south_2/aws-redshift-clusterparametergroup.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ParameterGroupFamily", - "/properties/Description" - ], - "definitions": { - "Parameter": { - "additionalProperties": false, - "properties": { - "ParameterName": { - "type": "string" - }, - "ParameterValue": { - "type": "string" - } - }, - "required": [ - "ParameterValue", - "ParameterName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Description": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "ParameterGroupFamily": { - "type": "string" - }, - "Parameters": { - "items": { - "$ref": "#/definitions/Parameter" - }, - "type": "array", - "uniqueItems": false - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Description", - "ParameterGroupFamily" - ], - "typeName": "AWS::Redshift::ClusterParameterGroup" -} diff --git a/src/cfnlint/data/schemas/providers/eu_south_2/aws-redshift-clustersubnetgroup.json b/src/cfnlint/data/schemas/providers/eu_south_2/aws-redshift-clustersubnetgroup.json deleted file mode 100644 index 96ded934d4..0000000000 --- a/src/cfnlint/data/schemas/providers/eu_south_2/aws-redshift-clustersubnetgroup.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "additionalProperties": false, - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Description": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "SubnetIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Description", - "SubnetIds" - ], - "typeName": "AWS::Redshift::ClusterSubnetGroup" -} diff --git a/src/cfnlint/data/schemas/providers/eu_south_2/aws-sagemaker-appimageconfig.json b/src/cfnlint/data/schemas/providers/eu_south_2/aws-sagemaker-appimageconfig.json new file mode 100644 index 0000000000..01116f524b --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_south_2/aws-sagemaker-appimageconfig.json @@ -0,0 +1,238 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AppImageConfigName", + "/properties/Tags" + ], + "definitions": { + "ContainerConfig": { + "additionalProperties": false, + "properties": { + "ContainerArguments": { + "items": { + "$ref": "#/definitions/CustomImageContainerArguments" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "ContainerEntrypoint": { + "items": { + "$ref": "#/definitions/CustomImageContainerEntrypoint" + }, + "maxItems": 1, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "ContainerEnvironmentVariables": { + "items": { + "$ref": "#/definitions/CustomImageContainerEnvironmentVariable" + }, + "maxItems": 25, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "CustomImageContainerArguments": { + "maxLength": 64, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "CustomImageContainerEntrypoint": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "CustomImageContainerEnvironmentVariable": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "FileSystemConfig": { + "additionalProperties": false, + "properties": { + "DefaultGid": { + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "DefaultUid": { + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "MountPath": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^/.*", + "type": "string" + } + }, + "type": "object" + }, + "JupyterLabAppImageConfig": { + "additionalProperties": false, + "properties": { + "ContainerConfig": { + "$ref": "#/definitions/ContainerConfig" + } + }, + "type": "object" + }, + "KernelGatewayImageConfig": { + "additionalProperties": false, + "properties": { + "FileSystemConfig": { + "$ref": "#/definitions/FileSystemConfig" + }, + "KernelSpecs": { + "items": { + "$ref": "#/definitions/KernelSpec" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "KernelSpecs" + ], + "type": "object" + }, + "KernelSpec": { + "additionalProperties": false, + "properties": { + "DisplayName": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Name": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "sagemaker:CreateAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + }, + "delete": { + "permissions": [ + "sagemaker:DeleteAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + }, + "list": { + "permissions": [ + "sagemaker:ListAppImageConfigs" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeAppImageConfig" + ] + }, + "update": { + "permissions": [ + "sagemaker:UpdateAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + } + }, + "primaryIdentifier": [ + "/properties/AppImageConfigName" + ], + "properties": { + "AppImageConfigArn": { + "maxLength": 256, + "minLength": 1, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:app-image-config/.*", + "type": "string" + }, + "AppImageConfigName": { + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", + "type": "string" + }, + "JupyterLabAppImageConfig": { + "$ref": "#/definitions/JupyterLabAppImageConfig" + }, + "KernelGatewayImageConfig": { + "$ref": "#/definitions/KernelGatewayImageConfig" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/AppImageConfigArn" + ], + "required": [ + "AppImageConfigName" + ], + "typeName": "AWS::SageMaker::AppImageConfig", + "writeOnlyProperties": [ + "/properties/Tags" + ] +} diff --git a/src/cfnlint/data/schemas/providers/eu_south_2/aws-sagemaker-domain.json b/src/cfnlint/data/schemas/providers/eu_south_2/aws-sagemaker-domain.json new file mode 100644 index 0000000000..e57c036025 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_south_2/aws-sagemaker-domain.json @@ -0,0 +1,739 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AuthMode", + "/properties/DomainName", + "/properties/DomainSettings/RStudioServerProDomainSettings/DefaultResourceSpec", + "/properties/KmsKeyId", + "/properties/VpcId", + "/properties/Tags" + ], + "definitions": { + "CodeEditorAppSettings": { + "additionalProperties": false, + "properties": { + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + }, + "LifecycleConfigArns": { + "items": { + "$ref": "#/definitions/StudioLifecycleConfigArn" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "CodeRepository": { + "additionalProperties": false, + "properties": { + "RepositoryUrl": { + "maxLength": 256, + "pattern": "^https://([.\\-_a-zA-Z0-9]+/?){3,1016}$", + "type": "string" + } + }, + "required": [ + "RepositoryUrl" + ], + "type": "object" + }, + "CustomFileSystemConfig": { + "additionalProperties": false, + "properties": { + "EFSFileSystemConfig": { + "$ref": "#/definitions/EFSFileSystemConfig" + } + }, + "type": "object" + }, + "CustomImage": { + "additionalProperties": false, + "properties": { + "AppImageConfigName": { + "maxLength": 63, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", + "type": "string" + }, + "ImageName": { + "maxLength": 63, + "pattern": "^[a-zA-Z0-9]([-.]?[a-zA-Z0-9]){0,62}$", + "type": "string" + }, + "ImageVersionNumber": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "AppImageConfigName", + "ImageName" + ], + "type": "object" + }, + "CustomPosixUserConfig": { + "additionalProperties": false, + "properties": { + "Gid": { + "maximum": 4000000, + "minimum": 1001, + "type": "integer" + }, + "Uid": { + "maximum": 4000000, + "minimum": 10000, + "type": "integer" + } + }, + "required": [ + "Uid", + "Gid" + ], + "type": "object" + }, + "DefaultEbsStorageSettings": { + "additionalProperties": false, + "properties": { + "DefaultEbsVolumeSizeInGb": { + "$ref": "#/definitions/SpaceEbsVolumeSizeInGb" + }, + "MaximumEbsVolumeSizeInGb": { + "$ref": "#/definitions/SpaceEbsVolumeSizeInGb" + } + }, + "required": [ + "DefaultEbsVolumeSizeInGb", + "MaximumEbsVolumeSizeInGb" + ], + "type": "object" + }, + "DefaultSpaceSettings": { + "additionalProperties": false, + "properties": { + "ExecutionRole": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "JupyterServerAppSettings": { + "$ref": "#/definitions/JupyterServerAppSettings" + }, + "KernelGatewayAppSettings": { + "$ref": "#/definitions/KernelGatewayAppSettings" + }, + "SecurityGroups": { + "insertionOrder": false, + "items": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 5, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "ExecutionRole" + ], + "type": "object" + }, + "DefaultSpaceStorageSettings": { + "additionalProperties": false, + "properties": { + "DefaultEbsStorageSettings": { + "$ref": "#/definitions/DefaultEbsStorageSettings" + } + }, + "type": "object" + }, + "DockerSettings": { + "additionalProperties": false, + "properties": { + "EnableDockerAccess": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "VpcOnlyTrustedAccounts": { + "insertionOrder": false, + "items": { + "maxLength": 12, + "pattern": "^[0-9]$", + "type": "string" + }, + "maxItems": 10, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "DomainSettings": { + "additionalProperties": false, + "properties": { + "DockerSettings": { + "$ref": "#/definitions/DockerSettings" + }, + "RStudioServerProDomainSettings": { + "$ref": "#/definitions/RStudioServerProDomainSettings" + }, + "SecurityGroupIds": { + "insertionOrder": false, + "items": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 3, + "minItems": 1, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "EFSFileSystemConfig": { + "additionalProperties": false, + "properties": { + "FileSystemId": { + "maxLength": 21, + "minLength": 11, + "pattern": "^(fs-[0-9a-f]{8,})$", + "type": "string" + }, + "FileSystemPath": { + "maxLength": 256, + "minLength": 1, + "pattern": "^\\/\\S*$", + "type": "string" + } + }, + "required": [ + "FileSystemId" + ], + "type": "object" + }, + "JupyterLabAppSettings": { + "additionalProperties": false, + "properties": { + "CodeRepositories": { + "items": { + "$ref": "#/definitions/CodeRepository" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "CustomImages": { + "items": { + "$ref": "#/definitions/CustomImage" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + }, + "LifecycleConfigArns": { + "items": { + "$ref": "#/definitions/StudioLifecycleConfigArn" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "JupyterServerAppSettings": { + "additionalProperties": false, + "properties": { + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + } + }, + "type": "object" + }, + "KernelGatewayAppSettings": { + "additionalProperties": false, + "properties": { + "CustomImages": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/CustomImage" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + } + }, + "type": "object" + }, + "RSessionAppSettings": { + "additionalProperties": false, + "properties": { + "CustomImages": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/CustomImage" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + } + }, + "type": "object" + }, + "RStudioServerProAppSettings": { + "additionalProperties": false, + "properties": { + "AccessStatus": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "UserGroup": { + "enum": [ + "R_STUDIO_ADMIN", + "R_STUDIO_USER" + ], + "type": "string" + } + }, + "type": "object" + }, + "RStudioServerProDomainSettings": { + "additionalProperties": false, + "properties": { + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + }, + "DomainExecutionRoleArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "RStudioConnectUrl": { + "pattern": "^(https:|http:|www\\.)\\S*", + "type": "string" + }, + "RStudioPackageManagerUrl": { + "pattern": "^(https:|http:|www\\.)\\S*", + "type": "string" + } + }, + "required": [ + "DomainExecutionRoleArn" + ], + "type": "object" + }, + "ResourceSpec": { + "additionalProperties": false, + "properties": { + "InstanceType": { + "enum": [ + "system", + "ml.t3.micro", + "ml.t3.small", + "ml.t3.medium", + "ml.t3.large", + "ml.t3.xlarge", + "ml.t3.2xlarge", + "ml.m5.large", + "ml.m5.xlarge", + "ml.m5.2xlarge", + "ml.m5.4xlarge", + "ml.m5.8xlarge", + "ml.m5.12xlarge", + "ml.m5.16xlarge", + "ml.m5.24xlarge", + "ml.c5.large", + "ml.c5.xlarge", + "ml.c5.2xlarge", + "ml.c5.4xlarge", + "ml.c5.9xlarge", + "ml.c5.12xlarge", + "ml.c5.18xlarge", + "ml.c5.24xlarge", + "ml.p3.2xlarge", + "ml.p3.8xlarge", + "ml.p3.16xlarge", + "ml.g4dn.xlarge", + "ml.g4dn.2xlarge", + "ml.g4dn.4xlarge", + "ml.g4dn.8xlarge", + "ml.g4dn.12xlarge", + "ml.g4dn.16xlarge", + "ml.r5.large", + "ml.r5.xlarge", + "ml.r5.2xlarge", + "ml.r5.4xlarge", + "ml.r5.8xlarge", + "ml.r5.12xlarge", + "ml.r5.16xlarge", + "ml.r5.24xlarge", + "ml.p3dn.24xlarge", + "ml.m5d.large", + "ml.m5d.xlarge", + "ml.m5d.2xlarge", + "ml.m5d.4xlarge", + "ml.m5d.8xlarge", + "ml.m5d.12xlarge", + "ml.m5d.16xlarge", + "ml.m5d.24xlarge", + "ml.g5.xlarge", + "ml.g5.2xlarge", + "ml.g5.4xlarge", + "ml.g5.8xlarge", + "ml.g5.12xlarge", + "ml.g5.16xlarge", + "ml.g5.24xlarge", + "ml.g5.48xlarge", + "ml.p4d.24xlarge", + "ml.p4de.24xlarge", + "ml.geospatial.interactive", + "ml.trn1.2xlarge", + "ml.trn1.32xlarge", + "ml.trn1n.32xlarge" + ], + "type": "string" + }, + "LifecycleConfigArn": { + "maxLength": 256, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:studio-lifecycle-config/.*", + "type": "string" + }, + "SageMakerImageArn": { + "maxLength": 256, + "pattern": "^arn:aws(-[\\w]+)*:sagemaker:.+:[0-9]{12}:image/[a-z0-9]([-.]?[a-z0-9])*$", + "type": "string" + }, + "SageMakerImageVersionArn": { + "maxLength": 256, + "pattern": "^arn:aws(-[\\w]+)*:sagemaker:.+:[0-9]{12}:image-version/[a-z0-9]([-.]?[a-z0-9])*/[0-9]+$", + "type": "string" + } + }, + "type": "object" + }, + "SharingSettings": { + "additionalProperties": false, + "properties": { + "NotebookOutputOption": { + "enum": [ + "Allowed", + "Disabled" + ], + "type": "string" + }, + "S3KmsKeyId": { + "maxLength": 2048, + "pattern": ".*", + "type": "string" + }, + "S3OutputPath": { + "maxLength": 1024, + "pattern": "^(https|s3)://([^/]+)/?(.*)$", + "type": "string" + } + }, + "type": "object" + }, + "SpaceEbsVolumeSizeInGb": { + "maximum": 16384, + "minimum": 5, + "type": "integer" + }, + "StudioLifecycleConfigArn": { + "maxLength": 256, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:studio-lifecycle-config/.*", + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "UserSettings": { + "additionalProperties": false, + "properties": { + "CodeEditorAppSettings": { + "$ref": "#/definitions/CodeEditorAppSettings" + }, + "CustomFileSystemConfigs": { + "items": { + "$ref": "#/definitions/CustomFileSystemConfig" + }, + "maxItems": 2, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "CustomPosixUserConfig": { + "$ref": "#/definitions/CustomPosixUserConfig" + }, + "DefaultLandingUri": { + "maxLength": 1023, + "type": "string" + }, + "ExecutionRole": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "JupyterLabAppSettings": { + "$ref": "#/definitions/JupyterLabAppSettings" + }, + "JupyterServerAppSettings": { + "$ref": "#/definitions/JupyterServerAppSettings" + }, + "KernelGatewayAppSettings": { + "$ref": "#/definitions/KernelGatewayAppSettings" + }, + "RSessionAppSettings": { + "$ref": "#/definitions/RSessionAppSettings" + }, + "RStudioServerProAppSettings": { + "$ref": "#/definitions/RStudioServerProAppSettings" + }, + "SecurityGroups": { + "insertionOrder": false, + "items": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 5, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "SharingSettings": { + "$ref": "#/definitions/SharingSettings" + }, + "SpaceStorageSettings": { + "$ref": "#/definitions/DefaultSpaceStorageSettings" + }, + "StudioWebPortal": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + } + }, + "required": [ + "ExecutionRole" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "sagemaker:CreateApp", + "sagemaker:CreateDomain", + "sagemaker:DescribeDomain", + "sagemaker:DescribeImage", + "sagemaker:DescribeImageVersion", + "iam:CreateServiceLinkedRole", + "iam:PassRole", + "efs:CreateFileSystem", + "kms:CreateGrant", + "kms:Decrypt", + "kms:DescribeKey", + "kms:GenerateDataKeyWithoutPlainText" + ] + }, + "delete": { + "permissions": [ + "sagemaker:DeleteApp", + "sagemaker:DeleteDomain", + "sagemaker:DescribeDomain" + ] + }, + "list": { + "permissions": [ + "sagemaker:ListDomains" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeDomain" + ] + }, + "update": { + "permissions": [ + "sagemaker:CreateApp", + "sagemaker:UpdateDomain", + "sagemaker:DescribeDomain", + "sagemaker:DescribeImage", + "sagemaker:DescribeImageVersion", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/DomainId" + ], + "properties": { + "AppNetworkAccessType": { + "enum": [ + "PublicInternetOnly", + "VpcOnly" + ], + "type": "string" + }, + "AppSecurityGroupManagement": { + "enum": [ + "Service", + "Customer" + ], + "type": "string" + }, + "AuthMode": { + "enum": [ + "SSO", + "IAM" + ], + "type": "string" + }, + "DefaultSpaceSettings": { + "$ref": "#/definitions/DefaultSpaceSettings" + }, + "DefaultUserSettings": { + "$ref": "#/definitions/UserSettings" + }, + "DomainArn": { + "maxLength": 256, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:domain/.*", + "type": "string" + }, + "DomainId": { + "maxLength": 63, + "pattern": "^d-(-*[a-z0-9])+", + "type": "string" + }, + "DomainName": { + "maxLength": 63, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", + "type": "string" + }, + "DomainSettings": { + "$ref": "#/definitions/DomainSettings" + }, + "HomeEfsFileSystemId": { + "maxLength": 32, + "type": "string" + }, + "KmsKeyId": { + "maxLength": 2048, + "pattern": ".*", + "type": "string" + }, + "SecurityGroupIdForDomainBoundary": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "SingleSignOnApplicationArn": { + "pattern": "^arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):sso::[0-9]+:application/[a-zA-Z0-9-_.]+/apl-[a-zA-Z0-9]+$", + "type": "string" + }, + "SingleSignOnManagedApplicationInstanceId": { + "maxLength": 256, + "type": "string" + }, + "SubnetIds": { + "insertionOrder": false, + "items": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 16, + "minItems": 1, + "type": "array", + "uniqueItems": false + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "Url": { + "maxLength": 1024, + "type": "string" + }, + "VpcId": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/DomainArn", + "/properties/Url", + "/properties/DomainId", + "/properties/HomeEfsFileSystemId", + "/properties/SecurityGroupIdForDomainBoundary", + "/properties/SingleSignOnManagedApplicationInstanceId", + "/properties/SingleSignOnApplicationArn" + ], + "required": [ + "AuthMode", + "DefaultUserSettings", + "DomainName", + "SubnetIds", + "VpcId" + ], + "typeName": "AWS::SageMaker::Domain", + "writeOnlyProperties": [ + "/properties/Tags" + ] +} diff --git a/src/cfnlint/data/schemas/providers/eu_south_2/aws-sagemaker-userprofile.json b/src/cfnlint/data/schemas/providers/eu_south_2/aws-sagemaker-userprofile.json new file mode 100644 index 0000000000..d0f8848903 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_south_2/aws-sagemaker-userprofile.json @@ -0,0 +1,524 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DomainId", + "/properties/UserProfileName", + "/properties/SingleSignOnUserIdentifier", + "/properties/SingleSignOnUserValue", + "/properties/UserSettings/RStudioServerProAppSettings/AccessStatus", + "/properties/UserSettings/RStudioServerProAppSettings/UserGroup", + "/properties/Tags" + ], + "definitions": { + "CodeEditorAppSettings": { + "additionalProperties": false, + "properties": { + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + }, + "LifecycleConfigArns": { + "items": { + "$ref": "#/definitions/StudioLifecycleConfigArn" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "CodeRepository": { + "additionalProperties": false, + "properties": { + "RepositoryUrl": { + "maxLength": 256, + "pattern": "^https://([.\\-_a-zA-Z0-9]+/?){3,1016}$", + "type": "string" + } + }, + "required": [ + "RepositoryUrl" + ], + "type": "object" + }, + "CustomFileSystemConfig": { + "additionalProperties": false, + "properties": { + "EFSFileSystemConfig": { + "$ref": "#/definitions/EFSFileSystemConfig" + } + }, + "type": "object" + }, + "CustomImage": { + "additionalProperties": false, + "properties": { + "AppImageConfigName": { + "maxLength": 63, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", + "type": "string" + }, + "ImageName": { + "maxLength": 63, + "pattern": "^[a-zA-Z0-9]([-.]?[a-zA-Z0-9]){0,62}$", + "type": "string" + }, + "ImageVersionNumber": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "AppImageConfigName", + "ImageName" + ], + "type": "object" + }, + "CustomPosixUserConfig": { + "additionalProperties": false, + "properties": { + "Gid": { + "maximum": 4000000, + "minimum": 1001, + "type": "integer" + }, + "Uid": { + "maximum": 4000000, + "minimum": 10000, + "type": "integer" + } + }, + "required": [ + "Uid", + "Gid" + ], + "type": "object" + }, + "DefaultEbsStorageSettings": { + "additionalProperties": false, + "properties": { + "DefaultEbsVolumeSizeInGb": { + "$ref": "#/definitions/SpaceEbsVolumeSizeInGb" + }, + "MaximumEbsVolumeSizeInGb": { + "$ref": "#/definitions/SpaceEbsVolumeSizeInGb" + } + }, + "required": [ + "DefaultEbsVolumeSizeInGb", + "MaximumEbsVolumeSizeInGb" + ], + "type": "object" + }, + "DefaultSpaceStorageSettings": { + "additionalProperties": false, + "properties": { + "DefaultEbsStorageSettings": { + "$ref": "#/definitions/DefaultEbsStorageSettings" + } + }, + "type": "object" + }, + "EFSFileSystemConfig": { + "additionalProperties": false, + "properties": { + "FileSystemId": { + "maxLength": 21, + "minLength": 11, + "pattern": "^(fs-[0-9a-f]{8,})$", + "type": "string" + }, + "FileSystemPath": { + "maxLength": 256, + "minLength": 1, + "pattern": "^\\/\\S*$", + "type": "string" + } + }, + "required": [ + "FileSystemId" + ], + "type": "object" + }, + "JupyterLabAppSettings": { + "additionalProperties": false, + "properties": { + "CodeRepositories": { + "items": { + "$ref": "#/definitions/CodeRepository" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "CustomImages": { + "items": { + "$ref": "#/definitions/CustomImage" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + }, + "LifecycleConfigArns": { + "items": { + "$ref": "#/definitions/StudioLifecycleConfigArn" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "JupyterServerAppSettings": { + "additionalProperties": false, + "properties": { + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + } + }, + "type": "object" + }, + "KernelGatewayAppSettings": { + "additionalProperties": false, + "properties": { + "CustomImages": { + "items": { + "$ref": "#/definitions/CustomImage" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + } + }, + "type": "object" + }, + "RStudioServerProAppSettings": { + "additionalProperties": false, + "properties": { + "AccessStatus": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "UserGroup": { + "enum": [ + "R_STUDIO_ADMIN", + "R_STUDIO_USER" + ], + "type": "string" + } + }, + "type": "object" + }, + "ResourceSpec": { + "additionalProperties": false, + "properties": { + "InstanceType": { + "enum": [ + "system", + "ml.t3.micro", + "ml.t3.small", + "ml.t3.medium", + "ml.t3.large", + "ml.t3.xlarge", + "ml.t3.2xlarge", + "ml.m5.large", + "ml.m5.xlarge", + "ml.m5.2xlarge", + "ml.m5.4xlarge", + "ml.m5.8xlarge", + "ml.m5.12xlarge", + "ml.m5.16xlarge", + "ml.m5.24xlarge", + "ml.c5.large", + "ml.c5.xlarge", + "ml.c5.2xlarge", + "ml.c5.4xlarge", + "ml.c5.9xlarge", + "ml.c5.12xlarge", + "ml.c5.18xlarge", + "ml.c5.24xlarge", + "ml.p3.2xlarge", + "ml.p3.8xlarge", + "ml.p3.16xlarge", + "ml.g4dn.xlarge", + "ml.g4dn.2xlarge", + "ml.g4dn.4xlarge", + "ml.g4dn.8xlarge", + "ml.g4dn.12xlarge", + "ml.g4dn.16xlarge", + "ml.r5.large", + "ml.r5.xlarge", + "ml.r5.2xlarge", + "ml.r5.4xlarge", + "ml.r5.8xlarge", + "ml.r5.12xlarge", + "ml.r5.16xlarge", + "ml.r5.24xlarge", + "ml.p3dn.24xlarge", + "ml.m5d.large", + "ml.m5d.xlarge", + "ml.m5d.2xlarge", + "ml.m5d.4xlarge", + "ml.m5d.8xlarge", + "ml.m5d.12xlarge", + "ml.m5d.16xlarge", + "ml.m5d.24xlarge", + "ml.g5.xlarge", + "ml.g5.2xlarge", + "ml.g5.4xlarge", + "ml.g5.8xlarge", + "ml.g5.12xlarge", + "ml.g5.16xlarge", + "ml.g5.24xlarge", + "ml.g5.48xlarge", + "ml.p4d.24xlarge", + "ml.p4de.24xlarge", + "ml.geospatial.interactive", + "ml.trn1.2xlarge", + "ml.trn1.32xlarge", + "ml.trn1n.32xlarge" + ], + "type": "string" + }, + "SageMakerImageArn": { + "maxLength": 256, + "pattern": "^arn:aws(-[\\w]+)*:sagemaker:.+:[0-9]{12}:image/[a-z0-9]([-.]?[a-z0-9])*$", + "type": "string" + }, + "SageMakerImageVersionArn": { + "maxLength": 256, + "pattern": "^arn:aws(-[\\w]+)*:sagemaker:.+:[0-9]{12}:image-version/[a-z0-9]([-.]?[a-z0-9])*/[0-9]+$", + "type": "string" + } + }, + "type": "object" + }, + "SharingSettings": { + "additionalProperties": false, + "properties": { + "NotebookOutputOption": { + "enum": [ + "Allowed", + "Disabled" + ], + "type": "string" + }, + "S3KmsKeyId": { + "maxLength": 2048, + "pattern": ".*", + "type": "string" + }, + "S3OutputPath": { + "maxLength": 1024, + "pattern": "^(https|s3)://([^/]+)/?(.*)$", + "type": "string" + } + }, + "type": "object" + }, + "SpaceEbsVolumeSizeInGb": { + "maximum": 16384, + "minimum": 5, + "type": "integer" + }, + "StudioLifecycleConfigArn": { + "maxLength": 256, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:studio-lifecycle-config/.*", + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "UserSettings": { + "additionalProperties": false, + "properties": { + "CodeEditorAppSettings": { + "$ref": "#/definitions/CodeEditorAppSettings" + }, + "CustomFileSystemConfigs": { + "items": { + "$ref": "#/definitions/CustomFileSystemConfig" + }, + "maxItems": 2, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "CustomPosixUserConfig": { + "$ref": "#/definitions/CustomPosixUserConfig" + }, + "DefaultLandingUri": { + "maxLength": 1023, + "type": "string" + }, + "ExecutionRole": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "JupyterLabAppSettings": { + "$ref": "#/definitions/JupyterLabAppSettings" + }, + "JupyterServerAppSettings": { + "$ref": "#/definitions/JupyterServerAppSettings" + }, + "KernelGatewayAppSettings": { + "$ref": "#/definitions/KernelGatewayAppSettings" + }, + "RStudioServerProAppSettings": { + "$ref": "#/definitions/RStudioServerProAppSettings" + }, + "SecurityGroups": { + "items": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 5, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "SharingSettings": { + "$ref": "#/definitions/SharingSettings" + }, + "SpaceStorageSettings": { + "$ref": "#/definitions/DefaultSpaceStorageSettings" + }, + "StudioWebPortal": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + } + }, + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "sagemaker:CreateUserProfile", + "sagemaker:DescribeUserProfile", + "sagemaker:DescribeImage", + "sagemaker:DescribeImageVersion", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "sagemaker:DeleteUserProfile", + "sagemaker:DescribeUserProfile" + ] + }, + "list": { + "permissions": [ + "sagemaker:ListUserProfiles" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeUserProfile" + ] + }, + "update": { + "permissions": [ + "sagemaker:UpdateUserProfile", + "sagemaker:DescribeUserProfile", + "sagemaker:DescribeImage", + "sagemaker:DescribeImageVersion", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/UserProfileName", + "/properties/DomainId" + ], + "properties": { + "DomainId": { + "maxLength": 63, + "minLength": 1, + "type": "string" + }, + "SingleSignOnUserIdentifier": { + "pattern": "UserName", + "type": "string" + }, + "SingleSignOnUserValue": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "UserProfileArn": { + "maxLength": 256, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:user-profile/.*", + "type": "string" + }, + "UserProfileName": { + "maxLength": 63, + "minLength": 1, + "type": "string" + }, + "UserSettings": { + "$ref": "#/definitions/UserSettings", + "maxItems": 50, + "minItems": 0, + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/UserProfileArn" + ], + "required": [ + "DomainId", + "UserProfileName" + ], + "typeName": "AWS::SageMaker::UserProfile", + "writeOnlyProperties": [ + "/properties/Tags" + ] +} 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 9f22ea7187..a460ab3214 100644 --- a/src/cfnlint/data/schemas/providers/eu_west_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/eu_west_1/__init__.py @@ -9,6 +9,7 @@ "AWS::ApiGatewayV2::ApiMapping", "AWS::CE::AnomalySubscription", "AWS::Shield::DRTAccess", + "AWS::Deadline::Farm", "AWS::SSO::Assignment", "AWS::Glue::Partition", "AWS::RDS::Integration", @@ -41,6 +42,7 @@ "AWS::EC2::NetworkPerformanceMetricSubscription", "AWS::MediaLive::Channel", "AWS::Greengrass::DeviceDefinition", + "AWS::CleanRoomsML::TrainingDataset", "AWS::CloudFront::ContinuousDeploymentPolicy", "AWS::QuickSight::Analysis", "AWS::Kendra::Faq", @@ -132,6 +134,7 @@ "AWS::OpsWorks::Layer", "AWS::CloudTrail::EventDataStore", "AWS::KinesisFirehose::DeliveryStream", + "AWS::Deadline::QueueFleetAssociation", "AWS::EC2::NetworkInsightsAccessScope", "AWS::Cognito::UserPoolUserToGroupAttachment", "AWS::PCAConnectorAD::DirectoryRegistration", @@ -173,6 +176,7 @@ "AWS::IoTSiteWise::Portal", "AWS::Events::Archive", "AWS::MSK::Cluster", + "AWS::SecurityHub::DelegatedAdmin", "AWS::ControlTower::EnabledBaseline", "AWS::AppStream::AppBlockBuilder", "AWS::EC2::VPCEndpointConnectionNotification", @@ -223,6 +227,7 @@ "AWS::RoboMaker::SimulationApplication", "AWS::NetworkManager::TransitGatewayRegistration", "AWS::Amplify::App", + "AWS::EntityResolution::PolicyStatement", "AWS::InspectorV2::Filter", "AWS::ElastiCache::ReplicationGroup", "AWS::StepFunctions::StateMachineAlias", @@ -285,6 +290,7 @@ "AWS::Lambda::Alias", "AWS::Logs::LogAnomalyDetector", "AWS::WAF::IPSet", + "AWS::Deadline::Fleet", "AWS::IoTTwinMaker::Workspace", "AWS::VpcLattice::ServiceNetworkServiceAssociation", "AWS::EC2::TransitGatewayMulticastDomainAssociation", @@ -376,6 +382,7 @@ "AWS::IoT::PolicyPrincipalAttachment", "AWS::Timestream::ScheduledQuery", "AWS::FraudDetector::List", + "AWS::IVS::PlaybackRestrictionPolicy", "AWS::FMS::NotificationChannel", "AWS::MSK::BatchScramSecret", "AWS::DMS::Certificate", @@ -392,6 +399,7 @@ "AWS::MediaPackageV2::ChannelPolicy", "AWS::ApiGatewayV2::VpcLink", "AWS::IoT::JobTemplate", + "AWS::Deadline::Queue", "AWS::ServiceCatalog::PortfolioProductAssociation", "AWS::DataBrew::Project", "AWS::VpcLattice::TargetGroup", @@ -406,6 +414,7 @@ "AWS::IAM::ServerCertificate", "AWS::CodeStarConnections::Connection", "AWS::IoT::SecurityProfile", + "AWS::GlobalAccelerator::CrossAccountAttachment", "AWS::Events::EventBus", "AWS::DocDB::EventSubscription", "AWS::SQS::QueueInlinePolicy", @@ -454,6 +463,7 @@ "AWS::Pinpoint::APNSVoipSandboxChannel", "AWS::Config::OrganizationConformancePack", "AWS::Logs::QueryDefinition", + "AWS::SecurityHub::ProductSubscription", "AWS::IAM::InstanceProfile", "AWS::IoT::BillingGroup", "AWS::AppStream::Application", @@ -473,6 +483,7 @@ "AWS::Cognito::UserPoolUICustomizationAttachment", "AWS::SageMaker::NotebookInstanceLifecycleConfig", "AWS::ImageBuilder::ContainerRecipe", + "AWS::CodeConnections::Connection", "AWS::EFS::AccessPoint", "AWS::Omics::ReferenceStore", "AWS::Redshift::ClusterSecurityGroupIngress", @@ -505,6 +516,7 @@ "AWS::ImageBuilder::Workflow", "AWS::ECS::TaskSet", "AWS::Omics::VariantStore", + "AWS::SecurityLake::AwsLogSource", "AWS::AppSync::ApiKey", "AWS::CloudFormation::TypeActivation", "AWS::GroundStation::DataflowEndpointGroup", @@ -564,6 +576,7 @@ "AWS::EC2::CustomerGateway", "AWS::IAM::GroupPolicy", "AWS::Scheduler::Schedule", + "AWS::Deadline::LicenseEndpoint", "AWS::WAF::ByteMatchSet", "AWS::AmplifyUIBuilder::Theme", "AWS::Neptune::DBClusterParameterGroup", @@ -590,6 +603,7 @@ "AWS::Glue::Trigger", "AWS::GlobalAccelerator::Listener", "AWS::VerifiedPermissions::PolicyStore", + "AWS::Deadline::QueueEnvironment", "AWS::Signer::SigningProfile", "AWS::KendraRanking::ExecutionPlan", "AWS::EC2::VPCPeeringConnection", @@ -658,6 +672,7 @@ "AWS::LookoutMetrics::Alert", "AWS::IoTWireless::TaskDefinition", "AWS::StepFunctions::Activity", + "AWS::IVS::EncoderConfiguration", "AWS::Synthetics::Group", "AWS::Forecast::Dataset", "AWS::SageMaker::Project", @@ -670,6 +685,7 @@ "AWS::CodeBuild::SourceCredential", "AWS::EMR::InstanceFleetConfig", "AWS::EMR::Cluster", + "AWS::SecurityLake::DataLake", "AWS::CodePipeline::Webhook", "AWS::ApiGatewayV2::DomainName", "AWS::RDS::DBCluster", @@ -764,6 +780,7 @@ "AWS::ServiceCatalog::Portfolio", "AWS::WorkSpacesWeb::TrustStore", "AWS::IoT::Policy", + "AWS::APS::Scraper", "AWS::EC2::TransitGatewayRoute", "AWS::SSM::MaintenanceWindow", "AWS::DataZone::Domain", @@ -785,6 +802,7 @@ "AWS::DevOpsGuru::LogAnomalyDetectionIntegration", "AWS::NetworkManager::Link", "AWS::QLDB::Stream", + "AWS::SecurityLake::Subscriber", "AWS::SageMaker::NotebookInstance", "AWS::IoTSiteWise::Dashboard", "AWS::Pinpoint::APNSVoipChannel", @@ -820,6 +838,7 @@ "AWS::GameLift::MatchmakingRuleSet", "AWS::EC2::EgressOnlyInternetGateway", "AWS::Athena::CapacityReservation", + "AWS::SecurityHub::Insight", "AWS::Config::ConformancePack", "AWS::EC2::VPCCidrBlock", "AWS::APS::Workspace", @@ -899,6 +918,7 @@ "AWS::StepFunctions::StateMachine", "AWS::RDS::DBClusterParameterGroup", "AWS::WAF::XssMatchSet", + "AWS::IVS::StorageConfiguration", "AWS::EC2::VerifiedAccessTrustProvider", "AWS::AppMesh::VirtualRouter", "AWS::IoT::CertificateProvider", @@ -949,6 +969,7 @@ "AWS::CleanRooms::Collaboration", "AWS::SSM::Association", "AWS::EC2::ClientVpnEndpoint", + "AWS::EntityResolution::IdNamespace", "AWS::CloudFront::ResponseHeadersPolicy", "AWS::SecurityHub::AutomationRule", "AWS::MSK::ClusterPolicy", @@ -975,9 +996,11 @@ "AWS::Route53Resolver::OutpostResolver", "AWS::ACMPCA::Certificate", "AWS::EC2::IPAMAllocation", + "AWS::Deadline::StorageProfile", "AWS::WorkSpaces::Workspace", "AWS::Inspector::AssessmentTemplate", "AWS::EMR::Studio", + "AWS::Deadline::MeteredProduct", "AWS::EC2::InstanceConnectEndpoint", "AWS::DAX::ParameterGroup", "AWS::DataZone::SubscriptionTarget", @@ -1153,6 +1176,7 @@ "aws-apigatewayv2-apimapping.json", "aws-ce-anomalysubscription.json", "aws-shield-drtaccess.json", + "aws-deadline-farm.json", "aws-sso-assignment.json", "aws-glue-partition.json", "aws-rds-integration.json", @@ -1169,12 +1193,10 @@ "aws-ram-resourceshare.json", "aws-memorydb-cluster.json", "aws-dms-replicationconfig.json", - "aws-dynamodb-table.json", "aws-amazonmq-configurationassociation.json", "aws-wafregional-ipset.json", "aws-redshiftserverless-namespace.json", "aws-apprunner-observabilityconfiguration.json", - "aws-ec2-securitygroupegress.json", "aws-ec2-localgatewayroutetablevpcassociation.json", "aws-config-organizationconfigrule.json", "aws-glue-dataqualityruleset.json", @@ -1185,6 +1207,7 @@ "aws-ec2-networkperformancemetricsubscription.json", "aws-medialive-channel.json", "aws-greengrass-devicedefinition.json", + "aws-cleanroomsml-trainingdataset.json", "aws-cloudfront-continuousdeploymentpolicy.json", "aws-quicksight-analysis.json", "aws-kendra-faq.json", @@ -1205,6 +1228,7 @@ "aws-apigatewayv2-integrationresponse.json", "aws-iotevents-input.json", "aws-ec2-networkacl.json", + "aws-lambda-eventsourcemapping.json", "aws-budgets-budgetsaction.json", "aws-logs-resourcepolicy.json", "aws-lex-botversion.json", @@ -1229,7 +1253,6 @@ "aws-mediatailor-channel.json", "aws-lambda-url.json", "aws-mediatailor-channelpolicy.json", - "aws-gamelift-fleet.json", "aws-datasync-locationfsxwindows.json", "aws-gamelift-build.json", "aws-apigateway-requestvalidator.json", @@ -1275,6 +1298,7 @@ "aws-opsworks-layer.json", "aws-cloudtrail-eventdatastore.json", "aws-kinesisfirehose-deliverystream.json", + "aws-deadline-queuefleetassociation.json", "aws-ec2-networkinsightsaccessscope.json", "aws-cognito-userpoolusertogroupattachment.json", "aws-pcaconnectorad-directoryregistration.json", @@ -1316,6 +1340,7 @@ "aws-iotsitewise-portal.json", "aws-events-archive.json", "aws-msk-cluster.json", + "aws-securityhub-delegatedadmin.json", "aws-controltower-enabledbaseline.json", "aws-appstream-appblockbuilder.json", "aws-ec2-vpcendpointconnectionnotification.json", @@ -1366,6 +1391,7 @@ "aws-robomaker-simulationapplication.json", "aws-networkmanager-transitgatewayregistration.json", "aws-amplify-app.json", + "aws-entityresolution-policystatement.json", "aws-inspectorv2-filter.json", "aws-elasticache-replicationgroup.json", "aws-stepfunctions-statemachinealias.json", @@ -1427,6 +1453,7 @@ "aws-lambda-alias.json", "aws-logs-loganomalydetector.json", "aws-waf-ipset.json", + "aws-deadline-fleet.json", "aws-iottwinmaker-workspace.json", "aws-vpclattice-servicenetworkserviceassociation.json", "aws-ec2-transitgatewaymulticastdomainassociation.json", @@ -1478,7 +1505,6 @@ "aws-servicecatalog-launchtemplateconstraint.json", "aws-devopsguru-resourcecollection.json", "aws-wafv2-loggingconfiguration.json", - "aws-dynamodb-globaltable.json", "alexa-ask-skill.json", "aws-backup-backupplan.json", "aws-pinpoint-eventstream.json", @@ -1518,6 +1544,7 @@ "aws-iot-policyprincipalattachment.json", "aws-timestream-scheduledquery.json", "aws-frauddetector-list.json", + "aws-ivs-playbackrestrictionpolicy.json", "aws-fms-notificationchannel.json", "aws-msk-batchscramsecret.json", "aws-dms-certificate.json", @@ -1533,6 +1560,7 @@ "aws-mediaconnect-bridgesource.json", "aws-mediapackagev2-channelpolicy.json", "aws-iot-jobtemplate.json", + "aws-deadline-queue.json", "aws-servicecatalog-portfolioproductassociation.json", "aws-databrew-project.json", "aws-vpclattice-targetgroup.json", @@ -1547,6 +1575,7 @@ "aws-iam-servercertificate.json", "aws-codestarconnections-connection.json", "aws-iot-securityprofile.json", + "aws-globalaccelerator-crossaccountattachment.json", "aws-events-eventbus.json", "aws-docdb-eventsubscription.json", "aws-sqs-queueinlinepolicy.json", @@ -1595,6 +1624,7 @@ "aws-pinpoint-apnsvoipsandboxchannel.json", "aws-config-organizationconformancepack.json", "aws-logs-querydefinition.json", + "aws-securityhub-productsubscription.json", "aws-iam-instanceprofile.json", "aws-iot-billinggroup.json", "aws-appstream-application.json", @@ -1603,7 +1633,6 @@ "aws-kinesisanalyticsv2-applicationoutput.json", "aws-ivs-recordingconfiguration.json", "aws-medialive-inputsecuritygroup.json", - "aws-sagemaker-domain.json", "aws-greengrass-coredefinitionversion.json", "aws-codebuild-fleet.json", "aws-certificatemanager-certificate.json", @@ -1614,6 +1643,7 @@ "aws-cognito-userpooluicustomizationattachment.json", "aws-sagemaker-notebookinstancelifecycleconfig.json", "aws-imagebuilder-containerrecipe.json", + "aws-codeconnections-connection.json", "aws-efs-accesspoint.json", "aws-omics-referencestore.json", "aws-redshift-clustersecuritygroupingress.json", @@ -1646,6 +1676,7 @@ "aws-imagebuilder-workflow.json", "aws-ecs-taskset.json", "aws-omics-variantstore.json", + "aws-securitylake-awslogsource.json", "aws-appsync-apikey.json", "aws-cloudformation-typeactivation.json", "aws-groundstation-dataflowendpointgroup.json", @@ -1704,6 +1735,7 @@ "aws-ec2-customergateway.json", "aws-iam-grouppolicy.json", "aws-scheduler-schedule.json", + "aws-deadline-licenseendpoint.json", "aws-waf-bytematchset.json", "aws-amplifyuibuilder-theme.json", "aws-neptune-dbclusterparametergroup.json", @@ -1730,6 +1762,7 @@ "aws-glue-trigger.json", "aws-globalaccelerator-listener.json", "aws-verifiedpermissions-policystore.json", + "aws-deadline-queueenvironment.json", "aws-signer-signingprofile.json", "aws-kendraranking-executionplan.json", "aws-ec2-vpcpeeringconnection.json", @@ -1798,6 +1831,7 @@ "aws-lookoutmetrics-alert.json", "aws-iotwireless-taskdefinition.json", "aws-stepfunctions-activity.json", + "aws-ivs-encoderconfiguration.json", "aws-synthetics-group.json", "aws-forecast-dataset.json", "aws-sagemaker-project.json", @@ -1810,6 +1844,7 @@ "aws-codebuild-sourcecredential.json", "aws-emr-instancefleetconfig.json", "aws-emr-cluster.json", + "aws-securitylake-datalake.json", "aws-codepipeline-webhook.json", "aws-apigatewayv2-domainname.json", "aws-rds-dbcluster.json", @@ -1849,12 +1884,11 @@ "aws-datasync-locationefs.json", "aws-ec2-localgatewayroutetable.json", "aws-apigateway-resource.json", - "aws-sagemaker-appimageconfig.json", - "aws-verifiedpermissions-identitysource.json", "aws-macie-session.json", "aws-elasticloadbalancingv2-targetgroup.json", "aws-applicationautoscaling-scalingpolicy.json", "aws-pipes-pipe.json", + "aws-iotsitewise-gateway.json", "aws-emr-studiosessionmapping.json", "aws-ivs-playbackkeypair.json", "aws-cloudformation-macro.json", @@ -1903,6 +1937,7 @@ "aws-servicecatalog-portfolio.json", "aws-workspacesweb-truststore.json", "aws-iot-policy.json", + "aws-aps-scraper.json", "aws-ec2-transitgatewayroute.json", "aws-ssm-maintenancewindow.json", "aws-datazone-domain.json", @@ -1924,6 +1959,7 @@ "aws-devopsguru-loganomalydetectionintegration.json", "aws-networkmanager-link.json", "aws-qldb-stream.json", + "aws-securitylake-subscriber.json", "aws-sagemaker-notebookinstance.json", "aws-iotsitewise-dashboard.json", "aws-pinpoint-apnsvoipchannel.json", @@ -1959,6 +1995,7 @@ "aws-gamelift-matchmakingruleset.json", "aws-ec2-egressonlyinternetgateway.json", "aws-athena-capacityreservation.json", + "aws-securityhub-insight.json", "aws-config-conformancepack.json", "aws-ec2-vpccidrblock.json", "aws-aps-workspace.json", @@ -2037,6 +2074,7 @@ "aws-stepfunctions-statemachine.json", "aws-rds-dbclusterparametergroup.json", "aws-waf-xssmatchset.json", + "aws-ivs-storageconfiguration.json", "aws-ec2-verifiedaccesstrustprovider.json", "aws-appmesh-virtualrouter.json", "aws-iot-certificateprovider.json", @@ -2064,10 +2102,10 @@ "aws-glue-workflow.json", "aws-apigatewayv2-authorizer.json", "aws-iot-accountauditconfiguration.json", - "aws-sagemaker-userprofile.json", "aws-personalize-dataset.json", "aws-iot1click-placement.json", "aws-ec2-prefixlist.json", + "aws-ec2-instance.json", "aws-opensearchserverless-securityconfig.json", "aws-networkmanager-device.json", "aws-proton-environmentaccountconnection.json", @@ -2085,6 +2123,7 @@ "aws-cleanrooms-collaboration.json", "aws-ssm-association.json", "aws-ec2-clientvpnendpoint.json", + "aws-entityresolution-idnamespace.json", "aws-cloudfront-responseheaderspolicy.json", "aws-securityhub-automationrule.json", "aws-msk-clusterpolicy.json", @@ -2111,9 +2150,11 @@ "aws-route53resolver-outpostresolver.json", "aws-acmpca-certificate.json", "aws-ec2-ipamallocation.json", + "aws-deadline-storageprofile.json", "aws-workspaces-workspace.json", "aws-inspector-assessmenttemplate.json", "aws-emr-studio.json", + "aws-deadline-meteredproduct.json", "aws-ec2-instanceconnectendpoint.json", "aws-dax-parametergroup.json", "aws-datazone-subscriptiontarget.json", diff --git a/src/cfnlint/data/schemas/providers/eu_west_1/aws-dynamodb-globaltable.json b/src/cfnlint/data/schemas/providers/eu_west_1/aws-dynamodb-globaltable.json new file mode 100644 index 0000000000..748ce4bf8f --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_west_1/aws-dynamodb-globaltable.json @@ -0,0 +1,673 @@ +{ + "additionalIdentifiers": [ + [ + "/properties/Arn" + ], + [ + "/properties/StreamArn" + ] + ], + "additionalProperties": false, + "allOf": [ + { + "if": { + "required": [ + "LocalSecondaryIndexes" + ], + "type": "object" + }, + "then": { + "properties": { + "AttributeDefinitions": { + "minItems": 2 + }, + "KeySchema": { + "minItems": 2 + } + }, + "type": "object" + } + } + ], + "createOnlyProperties": [ + "/properties/LocalSecondaryIndexes", + "/properties/TableName", + "/properties/KeySchema" + ], + "definitions": { + "AttributeDefinition": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "AttributeType": { + "type": "string" + } + }, + "required": [ + "AttributeName", + "AttributeType" + ], + "type": "object" + }, + "CapacityAutoScalingSettings": { + "additionalProperties": false, + "properties": { + "MaxCapacity": { + "minimum": 1, + "type": "integer" + }, + "MinCapacity": { + "minimum": 1, + "type": "integer" + }, + "SeedCapacity": { + "minimum": 1, + "type": "integer" + }, + "TargetTrackingScalingPolicyConfiguration": { + "$ref": "#/definitions/TargetTrackingScalingPolicyConfiguration" + } + }, + "required": [ + "MinCapacity", + "MaxCapacity", + "TargetTrackingScalingPolicyConfiguration" + ], + "type": "object" + }, + "ContributorInsightsSpecification": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "GlobalSecondaryIndex": { + "additionalProperties": false, + "properties": { + "IndexName": { + "maxLength": 255, + "minLength": 3, + "type": "string" + }, + "KeySchema": { + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 + }, + "Projection": { + "$ref": "#/definitions/Projection" + }, + "WriteProvisionedThroughputSettings": { + "$ref": "#/definitions/WriteProvisionedThroughputSettings" + } + }, + "required": [ + "IndexName", + "Projection", + "KeySchema" + ], + "type": "object" + }, + "KeySchema": { + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "KeyType": { + "enum": [ + "HASH", + "RANGE" + ], + "type": "string" + } + }, + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" + }, + "prefixItems": [ + { + "additionalProperties": false, + "properties": { + "KeyType": { + "const": "HASH", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + }, + { + "properties": { + "KeyType": { + "const": "RANGE", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + } + ], + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] + }, + "KinesisStreamSpecification": { + "additionalProperties": false, + "properties": { + "ApproximateCreationDateTimePrecision": { + "enum": [ + "MICROSECOND", + "MILLISECOND" + ], + "type": "string" + }, + "StreamArn": { + "type": "string" + } + }, + "required": [ + "StreamArn" + ], + "type": "object" + }, + "LocalSecondaryIndex": { + "additionalProperties": false, + "properties": { + "IndexName": { + "maxLength": 255, + "minLength": 3, + "type": "string" + }, + "KeySchema": { + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 2 + }, + "Projection": { + "$ref": "#/definitions/Projection" + } + }, + "required": [ + "IndexName", + "Projection", + "KeySchema" + ], + "type": "object" + }, + "PointInTimeRecoverySpecification": { + "additionalProperties": false, + "properties": { + "PointInTimeRecoveryEnabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "Projection": { + "additionalProperties": false, + "properties": { + "NonKeyAttributes": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "ProjectionType": { + "type": "string" + } + }, + "type": "object" + }, + "ReadProvisionedThroughputSettings": { + "additionalProperties": false, + "properties": { + "ReadCapacityAutoScalingSettings": { + "$ref": "#/definitions/CapacityAutoScalingSettings" + }, + "ReadCapacityUnits": { + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "ReplicaGlobalSecondaryIndexSpecification": { + "additionalProperties": false, + "properties": { + "ContributorInsightsSpecification": { + "$ref": "#/definitions/ContributorInsightsSpecification" + }, + "IndexName": { + "maxLength": 255, + "minLength": 3, + "type": "string" + }, + "ReadProvisionedThroughputSettings": { + "$ref": "#/definitions/ReadProvisionedThroughputSettings" + } + }, + "required": [ + "IndexName" + ], + "type": "object" + }, + "ReplicaSSESpecification": { + "additionalProperties": false, + "properties": { + "KMSMasterKeyId": { + "type": "string" + } + }, + "required": [ + "KMSMasterKeyId" + ], + "type": "object" + }, + "ReplicaSpecification": { + "additionalProperties": false, + "properties": { + "ContributorInsightsSpecification": { + "$ref": "#/definitions/ContributorInsightsSpecification" + }, + "DeletionProtectionEnabled": { + "type": "boolean" + }, + "GlobalSecondaryIndexes": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ReplicaGlobalSecondaryIndexSpecification" + }, + "type": "array", + "uniqueItems": true + }, + "KinesisStreamSpecification": { + "$ref": "#/definitions/KinesisStreamSpecification" + }, + "PointInTimeRecoverySpecification": { + "$ref": "#/definitions/PointInTimeRecoverySpecification" + }, + "ReadProvisionedThroughputSettings": { + "$ref": "#/definitions/ReadProvisionedThroughputSettings" + }, + "Region": { + "type": "string" + }, + "ReplicaStreamSpecification": { + "$ref": "#/definitions/ReplicaStreamSpecification" + }, + "ResourcePolicy": { + "$ref": "#/definitions/ResourcePolicy" + }, + "SSESpecification": { + "$ref": "#/definitions/ReplicaSSESpecification" + }, + "TableClass": { + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "Region" + ], + "type": "object" + }, + "ReplicaStreamSpecification": { + "additionalProperties": false, + "properties": { + "ResourcePolicy": { + "$ref": "#/definitions/ResourcePolicy" + } + }, + "required": [ + "ResourcePolicy" + ], + "type": "object" + }, + "ResourcePolicy": { + "additionalProperties": false, + "properties": { + "PolicyDocument": { + "type": "object" + } + }, + "required": [ + "PolicyDocument" + ], + "type": "object" + }, + "SSESpecification": { + "additionalProperties": false, + "properties": { + "SSEEnabled": { + "type": "boolean" + }, + "SSEType": { + "type": "string" + } + }, + "required": [ + "SSEEnabled" + ], + "type": "object" + }, + "StreamSpecification": { + "additionalProperties": false, + "properties": { + "StreamViewType": { + "type": "string" + } + }, + "required": [ + "StreamViewType" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TargetTrackingScalingPolicyConfiguration": { + "additionalProperties": false, + "properties": { + "DisableScaleIn": { + "type": "boolean" + }, + "ScaleInCooldown": { + "minimum": 0, + "type": "integer" + }, + "ScaleOutCooldown": { + "minimum": 0, + "type": "integer" + }, + "TargetValue": { + "format": "double", + "type": "number" + } + }, + "required": [ + "TargetValue" + ], + "type": "object" + }, + "TimeToLiveSpecification": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "WriteProvisionedThroughputSettings": { + "additionalProperties": false, + "properties": { + "WriteCapacityAutoScalingSettings": { + "$ref": "#/definitions/CapacityAutoScalingSettings" + } + }, + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "dynamodb:CreateTable", + "dynamodb:CreateTableReplica", + "dynamodb:Describe*", + "dynamodb:UpdateTimeToLive", + "dynamodb:UpdateContributorInsights", + "dynamodb:UpdateContinuousBackups", + "dynamodb:ListTagsOfResource", + "dynamodb:Query", + "dynamodb:Scan", + "dynamodb:UpdateItem", + "dynamodb:PutItem", + "dynamodb:GetItem", + "dynamodb:DeleteItem", + "dynamodb:BatchWriteItem", + "dynamodb:TagResource", + "dynamodb:EnableKinesisStreamingDestination", + "dynamodb:DisableKinesisStreamingDestination", + "dynamodb:UpdateTableReplicaAutoScaling", + "dynamodb:TagResource", + "dynamodb:GetResourcePolicy", + "dynamodb:PutResourcePolicy", + "application-autoscaling:DeleteScalingPolicy", + "application-autoscaling:DeleteScheduledAction", + "application-autoscaling:DeregisterScalableTarget", + "application-autoscaling:Describe*", + "application-autoscaling:PutScalingPolicy", + "application-autoscaling:PutScheduledAction", + "application-autoscaling:RegisterScalableTarget", + "kinesis:ListStreams", + "kinesis:DescribeStream", + "kinesis:PutRecords", + "kms:CreateGrant", + "kms:DescribeKey", + "kms:ListAliases", + "kms:Decrypt", + "kms:RevokeGrant", + "cloudwatch:PutMetricData", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "dynamodb:Describe*", + "dynamodb:DeleteTable", + "application-autoscaling:DeleteScalingPolicy", + "application-autoscaling:DeleteScheduledAction", + "application-autoscaling:DeregisterScalableTarget", + "application-autoscaling:Describe*", + "application-autoscaling:PutScalingPolicy", + "application-autoscaling:PutScheduledAction", + "application-autoscaling:RegisterScalableTarget" + ] + }, + "list": { + "permissions": [ + "dynamodb:ListTables", + "cloudwatch:PutMetricData" + ] + }, + "read": { + "permissions": [ + "dynamodb:Describe*", + "dynamodb:GetResourcePolicy", + "application-autoscaling:Describe*", + "cloudwatch:PutMetricData", + "dynamodb:ListTagsOfResource", + "kms:DescribeKey" + ] + }, + "update": { + "permissions": [ + "dynamodb:Describe*", + "dynamodb:CreateTableReplica", + "dynamodb:UpdateTable", + "dynamodb:UpdateTimeToLive", + "dynamodb:UpdateContinuousBackups", + "dynamodb:UpdateContributorInsights", + "dynamodb:ListTagsOfResource", + "dynamodb:Query", + "dynamodb:Scan", + "dynamodb:UpdateItem", + "dynamodb:PutItem", + "dynamodb:GetItem", + "dynamodb:DeleteItem", + "dynamodb:BatchWriteItem", + "dynamodb:DeleteTable", + "dynamodb:DeleteTableReplica", + "dynamodb:UpdateItem", + "dynamodb:TagResource", + "dynamodb:UntagResource", + "dynamodb:EnableKinesisStreamingDestination", + "dynamodb:DisableKinesisStreamingDestination", + "dynamodb:UpdateTableReplicaAutoScaling", + "dynamodb:UpdateKinesisStreamingDestination", + "dynamodb:GetResourcePolicy", + "dynamodb:PutResourcePolicy", + "dynamodb:DeleteResourcePolicy", + "application-autoscaling:DeleteScalingPolicy", + "application-autoscaling:DeleteScheduledAction", + "application-autoscaling:DeregisterScalableTarget", + "application-autoscaling:Describe*", + "application-autoscaling:PutScalingPolicy", + "application-autoscaling:PutScheduledAction", + "application-autoscaling:RegisterScalableTarget", + "kinesis:ListStreams", + "kinesis:DescribeStream", + "kinesis:PutRecords", + "kms:CreateGrant", + "kms:DescribeKey", + "kms:ListAliases", + "kms:RevokeGrant", + "cloudwatch:PutMetricData" + ], + "timeoutInMinutes": 1200 + } + }, + "primaryIdentifier": [ + "/properties/TableName" + ], + "properties": { + "Arn": { + "type": "string" + }, + "AttributeDefinitions": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AttributeDefinition" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] + }, + "BillingMode": { + "type": "string" + }, + "GlobalSecondaryIndexes": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/GlobalSecondaryIndex" + }, + "type": "array", + "uniqueItems": true + }, + "KeySchema": { + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 + }, + "LocalSecondaryIndexes": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LocalSecondaryIndex" + }, + "type": "array", + "uniqueItems": true + }, + "Replicas": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ReplicaSpecification" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "SSESpecification": { + "$ref": "#/definitions/SSESpecification" + }, + "StreamArn": { + "type": "string" + }, + "StreamSpecification": { + "$ref": "#/definitions/StreamSpecification" + }, + "TableId": { + "type": "string" + }, + "TableName": { + "type": "string" + }, + "TimeToLiveSpecification": { + "$ref": "#/definitions/TimeToLiveSpecification" + }, + "WriteProvisionedThroughputSettings": { + "$ref": "#/definitions/WriteProvisionedThroughputSettings" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/StreamArn", + "/properties/TableId" + ], + "required": [ + "KeySchema", + "AttributeDefinitions", + "Replicas" + ], + "typeName": "AWS::DynamoDB::GlobalTable", + "writeOnlyProperties": [ + "/properties/Replicas/*/ReadProvisionedThroughputSettings/ReadCapacityAutoScalingSettings/SeedCapacity", + "/properties/Replicas/*/GlobalSecondaryIndexes/*/ReadProvisionedThroughputSettings/ReadCapacityAutoScalingSettings/SeedCapacity", + "/properties/WriteProvisionedThroughputSettings/WriteCapacityAutoScalingSettings/SeedCapacity", + "/properties/GlobalSecondaryIndexes/*/WriteProvisionedThroughputSettings/WriteCapacityAutoScalingSettings/SeedCapacity" + ] +} diff --git a/src/cfnlint/data/schemas/providers/eu_west_1/aws-dynamodb-table.json b/src/cfnlint/data/schemas/providers/eu_west_1/aws-dynamodb-table.json new file mode 100644 index 0000000000..55c218dadf --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_west_1/aws-dynamodb-table.json @@ -0,0 +1,625 @@ +{ + "additionalProperties": false, + "allOf": [ + { + "if": { + "required": [ + "LocalSecondaryIndexes" + ], + "type": "object" + }, + "then": { + "properties": { + "AttributeDefinitions": { + "minItems": 2 + }, + "KeySchema": { + "minItems": 2 + } + }, + "type": "object" + } + } + ], + "cfnLint": [ + "AWS::DynamoDB::Table/Properties" + ], + "createOnlyProperties": [ + "/properties/TableName", + "/properties/ImportSourceSpecification" + ], + "definitions": { + "AttributeDefinition": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "type": "string" + }, + "AttributeType": { + "enum": [ + "S", + "N", + "B" + ], + "type": "string" + } + }, + "required": [ + "AttributeName", + "AttributeType" + ], + "type": "object" + }, + "ContributorInsightsSpecification": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "Csv": { + "additionalProperties": false, + "properties": { + "Delimiter": { + "type": "string" + }, + "HeaderList": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "DeprecatedHashKeyElement": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "type": "string" + }, + "AttributeType": { + "type": "string" + } + }, + "required": [ + "AttributeType", + "AttributeName" + ], + "type": "object" + }, + "DeprecatedKeySchema": { + "additionalProperties": false, + "properties": { + "HashKeyElement": { + "$ref": "#/definitions/DeprecatedHashKeyElement" + } + }, + "required": [ + "HashKeyElement" + ], + "type": "object" + }, + "GlobalSecondaryIndex": { + "additionalProperties": false, + "properties": { + "ContributorInsightsSpecification": { + "$ref": "#/definitions/ContributorInsightsSpecification" + }, + "IndexName": { + "type": "string" + }, + "KeySchema": { + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 + }, + "Projection": { + "$ref": "#/definitions/Projection" + }, + "ProvisionedThroughput": { + "$ref": "#/definitions/ProvisionedThroughput" + } + }, + "required": [ + "IndexName", + "Projection", + "KeySchema" + ], + "type": "object" + }, + "ImportSourceSpecification": { + "additionalProperties": false, + "properties": { + "InputCompressionType": { + "type": "string" + }, + "InputFormat": { + "type": "string" + }, + "InputFormatOptions": { + "$ref": "#/definitions/InputFormatOptions" + }, + "S3BucketSource": { + "$ref": "#/definitions/S3BucketSource" + } + }, + "required": [ + "S3BucketSource", + "InputFormat" + ], + "type": "object" + }, + "InputFormatOptions": { + "additionalProperties": false, + "properties": { + "Csv": { + "$ref": "#/definitions/Csv" + } + }, + "type": "object" + }, + "KeySchema": { + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "type": "string" + }, + "KeyType": { + "enum": [ + "HASH", + "RANGE" + ], + "type": "string" + } + }, + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" + }, + "prefixItems": [ + { + "properties": { + "KeyType": { + "const": "HASH", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + }, + { + "properties": { + "KeyType": { + "const": "RANGE", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + } + ], + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] + }, + "KinesisStreamSpecification": { + "additionalProperties": false, + "properties": { + "ApproximateCreationDateTimePrecision": { + "enum": [ + "MICROSECOND", + "MILLISECOND" + ], + "type": "string" + }, + "StreamArn": { + "type": "string" + } + }, + "required": [ + "StreamArn" + ], + "type": "object" + }, + "LocalSecondaryIndex": { + "additionalProperties": false, + "properties": { + "IndexName": { + "type": "string" + }, + "KeySchema": { + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 2 + }, + "Projection": { + "$ref": "#/definitions/Projection" + } + }, + "required": [ + "IndexName", + "Projection", + "KeySchema" + ], + "type": "object" + }, + "PointInTimeRecoverySpecification": { + "additionalProperties": false, + "properties": { + "PointInTimeRecoveryEnabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "Projection": { + "additionalProperties": false, + "properties": { + "NonKeyAttributes": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "ProjectionType": { + "enum": [ + "ALL", + "KEYS_ONLY", + "INCLUDE" + ], + "type": "string" + } + }, + "type": "object" + }, + "ProvisionedThroughput": { + "additionalProperties": false, + "properties": { + "ReadCapacityUnits": { + "type": "integer" + }, + "WriteCapacityUnits": { + "type": "integer" + } + }, + "required": [ + "WriteCapacityUnits", + "ReadCapacityUnits" + ], + "type": "object" + }, + "ResourcePolicy": { + "additionalProperties": false, + "properties": { + "PolicyDocument": { + "type": "object" + } + }, + "required": [ + "PolicyDocument" + ], + "type": "object" + }, + "S3BucketSource": { + "additionalProperties": false, + "properties": { + "S3Bucket": { + "type": "string" + }, + "S3BucketOwner": { + "type": "string" + }, + "S3KeyPrefix": { + "type": "string" + } + }, + "required": [ + "S3Bucket" + ], + "type": "object" + }, + "SSESpecification": { + "additionalProperties": false, + "cfnLint": [ + "AWS::DynamoDB::Table/Properties/SSESpecification" + ], + "properties": { + "KMSMasterKeyId": { + "type": "string" + }, + "SSEEnabled": { + "type": "boolean" + }, + "SSEType": { + "type": "string" + } + }, + "required": [ + "SSEEnabled" + ], + "type": "object" + }, + "StreamSpecification": { + "additionalProperties": false, + "properties": { + "ResourcePolicy": { + "$ref": "#/definitions/ResourcePolicy" + }, + "StreamViewType": { + "enum": [ + "NEW_IMAGE", + "OLD_IMAGE", + "NEW_AND_OLD_IMAGES", + "KEYS_ONLY" + ], + "type": "string" + } + }, + "required": [ + "StreamViewType" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TimeToLiveSpecification": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "dynamodb:CreateTable", + "dynamodb:DescribeImport", + "dynamodb:DescribeTable", + "dynamodb:DescribeTimeToLive", + "dynamodb:UpdateTimeToLive", + "dynamodb:UpdateContributorInsights", + "dynamodb:UpdateContinuousBackups", + "dynamodb:DescribeContinuousBackups", + "dynamodb:DescribeContributorInsights", + "dynamodb:EnableKinesisStreamingDestination", + "dynamodb:DisableKinesisStreamingDestination", + "dynamodb:DescribeKinesisStreamingDestination", + "dynamodb:ImportTable", + "dynamodb:ListTagsOfResource", + "dynamodb:TagResource", + "dynamodb:UpdateTable", + "dynamodb:GetResourcePolicy", + "dynamodb:PutResourcePolicy", + "kinesis:DescribeStream", + "kinesis:PutRecords", + "iam:CreateServiceLinkedRole", + "kms:CreateGrant", + "kms:Decrypt", + "kms:DescribeKey", + "kms:ListAliases", + "kms:Encrypt", + "kms:RevokeGrant", + "logs:CreateLogGroup", + "logs:CreateLogStream", + "logs:DescribeLogGroups", + "logs:DescribeLogStreams", + "logs:PutLogEvents", + "logs:PutRetentionPolicy", + "s3:GetObject", + "s3:GetObjectMetadata", + "s3:ListBucket" + ], + "timeoutInMinutes": 720 + }, + "delete": { + "permissions": [ + "dynamodb:DeleteTable", + "dynamodb:DescribeTable" + ], + "timeoutInMinutes": 720 + }, + "list": { + "permissions": [ + "dynamodb:ListTables" + ] + }, + "read": { + "permissions": [ + "dynamodb:DescribeTable", + "dynamodb:DescribeContinuousBackups", + "dynamodb:DescribeContributorInsights", + "dynamodb:DescribeKinesisStreamingDestination", + "dynamodb:ListTagsOfResource", + "dynamodb:GetResourcePolicy" + ] + }, + "update": { + "permissions": [ + "dynamodb:UpdateTable", + "dynamodb:DescribeTable", + "dynamodb:DescribeTimeToLive", + "dynamodb:UpdateTimeToLive", + "dynamodb:UpdateContinuousBackups", + "dynamodb:UpdateContributorInsights", + "dynamodb:UpdateKinesisStreamingDestination", + "dynamodb:DescribeContinuousBackups", + "dynamodb:DescribeKinesisStreamingDestination", + "dynamodb:ListTagsOfResource", + "dynamodb:TagResource", + "dynamodb:UntagResource", + "dynamodb:DescribeContributorInsights", + "dynamodb:EnableKinesisStreamingDestination", + "dynamodb:DisableKinesisStreamingDestination", + "dynamodb:GetResourcePolicy", + "dynamodb:PutResourcePolicy", + "dynamodb:DeleteResourcePolicy", + "kinesis:DescribeStream", + "kinesis:PutRecords", + "iam:CreateServiceLinkedRole", + "kms:CreateGrant", + "kms:DescribeKey", + "kms:ListAliases", + "kms:RevokeGrant" + ], + "timeoutInMinutes": 720 + } + }, + "primaryIdentifier": [ + "/properties/TableName" + ], + "properties": { + "Arn": { + "type": "string" + }, + "AttributeDefinitions": { + "items": { + "$ref": "#/definitions/AttributeDefinition" + }, + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] + }, + "BillingMode": { + "enum": [ + "PROVISIONED", + "PAY_PER_REQUEST" + ], + "type": "string" + }, + "ContributorInsightsSpecification": { + "$ref": "#/definitions/ContributorInsightsSpecification" + }, + "DeletionProtectionEnabled": { + "type": "boolean" + }, + "GlobalSecondaryIndexes": { + "items": { + "$ref": "#/definitions/GlobalSecondaryIndex" + }, + "type": "array", + "uniqueItems": false + }, + "ImportSourceSpecification": { + "$ref": "#/definitions/ImportSourceSpecification" + }, + "KeySchema": { + "oneOf": [ + { + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 + }, + { + "type": "object" + } + ] + }, + "KinesisStreamSpecification": { + "$ref": "#/definitions/KinesisStreamSpecification" + }, + "LocalSecondaryIndexes": { + "items": { + "$ref": "#/definitions/LocalSecondaryIndex" + }, + "type": "array", + "uniqueItems": false + }, + "PointInTimeRecoverySpecification": { + "$ref": "#/definitions/PointInTimeRecoverySpecification" + }, + "ProvisionedThroughput": { + "$ref": "#/definitions/ProvisionedThroughput" + }, + "ResourcePolicy": { + "$ref": "#/definitions/ResourcePolicy" + }, + "SSESpecification": { + "$ref": "#/definitions/SSESpecification" + }, + "StreamArn": { + "type": "string" + }, + "StreamSpecification": { + "$ref": "#/definitions/StreamSpecification" + }, + "TableClass": { + "type": "string" + }, + "TableName": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "TimeToLiveSpecification": { + "$ref": "#/definitions/TimeToLiveSpecification" + } + }, + "propertyTransform": { + "/properties/SSESpecification/KMSMasterKeyId": "$join([\"arn:(aws)[-]{0,1}[a-z]{0,3}[-]{0,1}[a-z]{0,3}:kms:[a-z]{2}[-]{1}[a-z]{3,10}[-]{0,1}[a-z]{0,4}[-]{1}[1-4]{1}:[0-9]{12}[:]{1}key\\/\", SSESpecification.KMSMasterKeyId]) $OR $join([\"arn:(aws)[-]{0,1}[a-z]{0,3}[-]{0,1}[a-z]{0,3}:kms:[a-z]{2}[-]{1}[a-z]{3,10}[-]{0,1}[a-z]{0,4}[-]{1}[1-4]{1}:[0-9]{12}[:]{1}key\\/\", KMSMasterKeyId])" + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/StreamArn" + ], + "required": [ + "KeySchema" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::DynamoDB::Table", + "writeOnlyProperties": [ + "/properties/ImportSourceSpecification" + ] +} diff --git a/src/cfnlint/data/schemas/providers/eu_west_1/aws-ec2-instance.json b/src/cfnlint/data/schemas/providers/eu_west_1/aws-ec2-instance.json deleted file mode 100644 index 7b3bfed595..0000000000 --- a/src/cfnlint/data/schemas/providers/eu_west_1/aws-ec2-instance.json +++ /dev/null @@ -1,571 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ElasticGpuSpecifications", - "/properties/Ipv6Addresses", - "/properties/PlacementGroupName", - "/properties/HostResourceGroupArn", - "/properties/ImageId", - "/properties/CpuOptions", - "/properties/PrivateIpAddress", - "/properties/ElasticInferenceAccelerators", - "/properties/EnclaveOptions", - "/properties/HibernationOptions", - "/properties/KeyName", - "/properties/LicenseSpecifications", - "/properties/NetworkInterfaces", - "/properties/AvailabilityZone", - "/properties/SubnetId", - "/properties/LaunchTemplate", - "/properties/SecurityGroups", - "/properties/Ipv6AddressCount" - ], - "definitions": { - "AssociationParameter": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "BlockDeviceMapping": { - "additionalProperties": false, - "properties": { - "DeviceName": { - "type": "string" - }, - "Ebs": { - "$ref": "#/definitions/Ebs" - }, - "NoDevice": { - "$ref": "#/definitions/NoDevice" - }, - "VirtualName": { - "type": "string" - } - }, - "required": [ - "DeviceName" - ], - "requiredXor": [ - "VirtualName", - "Ebs", - "NoDevice" - ], - "type": "object" - }, - "CpuOptions": { - "additionalProperties": false, - "properties": { - "CoreCount": { - "type": "integer" - }, - "ThreadsPerCore": { - "type": "integer" - } - }, - "type": "object" - }, - "CreditSpecification": { - "additionalProperties": false, - "properties": { - "CPUCredits": { - "type": "string" - } - }, - "type": "object" - }, - "Ebs": { - "additionalProperties": false, - "properties": { - "DeleteOnTermination": { - "type": "boolean" - }, - "Encrypted": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "KmsKeyId": { - "type": "string" - }, - "SnapshotId": { - "type": "string" - }, - "VolumeSize": { - "type": "integer" - }, - "VolumeType": { - "type": "string" - } - }, - "type": "object" - }, - "ElasticGpuSpecification": { - "additionalProperties": false, - "properties": { - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "ElasticInferenceAccelerator": { - "additionalProperties": false, - "properties": { - "Count": { - "type": "integer" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "EnclaveOptions": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - } - }, - "type": "object" - }, - "HibernationOptions": { - "additionalProperties": false, - "properties": { - "Configured": { - "type": "boolean" - } - }, - "type": "object" - }, - "InstanceIpv6Address": { - "additionalProperties": false, - "properties": { - "Ipv6Address": { - "type": "string" - } - }, - "required": [ - "Ipv6Address" - ], - "type": "object" - }, - "LaunchTemplateSpecification": { - "additionalProperties": false, - "properties": { - "LaunchTemplateId": { - "type": "string" - }, - "LaunchTemplateName": { - "type": "string" - }, - "Version": { - "type": "string" - } - }, - "required": [ - "Version" - ], - "type": "object" - }, - "LicenseSpecification": { - "additionalProperties": false, - "properties": { - "LicenseConfigurationArn": { - "type": "string" - } - }, - "required": [ - "LicenseConfigurationArn" - ], - "type": "object" - }, - "NetworkInterface": { - "additionalProperties": false, - "properties": { - "AssociateCarrierIpAddress": { - "type": "boolean" - }, - "AssociatePublicIpAddress": { - "type": "boolean" - }, - "DeleteOnTermination": { - "type": "boolean" - }, - "Description": { - "type": "string" - }, - "DeviceIndex": { - "type": "string" - }, - "GroupSet": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": false - }, - "NetworkInterfaceId": { - "type": "string" - }, - "PrivateIpAddress": { - "type": "string" - }, - "PrivateIpAddresses": { - "items": { - "$ref": "#/definitions/PrivateIpAddressSpecification" - }, - "type": "array", - "uniqueItems": false - }, - "SecondaryPrivateIpAddressCount": { - "type": "integer" - }, - "SubnetId": { - "type": "string" - } - }, - "required": [ - "DeviceIndex" - ], - "type": "object" - }, - "NoDevice": { - "additionalProperties": false, - "type": "object" - }, - "PrivateDnsNameOptions": { - "additionalProperties": false, - "properties": { - "EnableResourceNameDnsAAAARecord": { - "type": "boolean" - }, - "EnableResourceNameDnsARecord": { - "type": "boolean" - }, - "HostnameType": { - "type": "string" - } - }, - "type": "object" - }, - "PrivateIpAddressSpecification": { - "additionalProperties": false, - "properties": { - "Primary": { - "type": "boolean" - }, - "PrivateIpAddress": { - "type": "string" - } - }, - "required": [ - "PrivateIpAddress", - "Primary" - ], - "type": "object" - }, - "SsmAssociation": { - "additionalProperties": false, - "properties": { - "AssociationParameters": { - "items": { - "$ref": "#/definitions/AssociationParameter" - }, - "type": "array", - "uniqueItems": false - }, - "DocumentName": { - "type": "string" - } - }, - "required": [ - "DocumentName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "Volume": { - "additionalProperties": false, - "properties": { - "Device": { - "type": "string" - }, - "VolumeId": { - "type": "string" - } - }, - "required": [ - "VolumeId", - "Device" - ], - "type": "object" - } - }, - "dependentExcluded": { - "NetworkInterfaces": [ - "SubnetId" - ], - "SubnetId": [ - "NetworkInterfaces" - ] - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AdditionalInfo": { - "type": "string" - }, - "Affinity": { - "enum": [ - "default", - "host" - ], - "type": "string" - }, - "AvailabilityZone": { - "cfnLint": [ - "AWS::EC2::Instance/Properties/AvailabilityZone" - ], - "type": "string" - }, - "BlockDeviceMappings": { - "items": { - "$ref": "#/definitions/BlockDeviceMapping" - }, - "type": "array", - "uniqueItems": false - }, - "CpuOptions": { - "$ref": "#/definitions/CpuOptions" - }, - "CreditSpecification": { - "$ref": "#/definitions/CreditSpecification" - }, - "DisableApiTermination": { - "type": "boolean" - }, - "EbsOptimized": { - "type": "boolean" - }, - "ElasticGpuSpecifications": { - "items": { - "$ref": "#/definitions/ElasticGpuSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "ElasticInferenceAccelerators": { - "items": { - "$ref": "#/definitions/ElasticInferenceAccelerator" - }, - "type": "array", - "uniqueItems": true - }, - "EnclaveOptions": { - "$ref": "#/definitions/EnclaveOptions" - }, - "HibernationOptions": { - "$ref": "#/definitions/HibernationOptions" - }, - "HostId": { - "type": "string" - }, - "HostResourceGroupArn": { - "type": "string" - }, - "IamInstanceProfile": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "ImageId": { - "type": "string" - }, - "InstanceInitiatedShutdownBehavior": { - "type": "string" - }, - "InstanceType": { - "cfnLint": [ - "AWS::EC2::Instance/Properties/InstanceType" - ], - "type": "string" - }, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": false - }, - "KernelId": { - "type": "string" - }, - "KeyName": { - "type": "string" - }, - "LaunchTemplate": { - "$ref": "#/definitions/LaunchTemplateSpecification" - }, - "LicenseSpecifications": { - "items": { - "$ref": "#/definitions/LicenseSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "Monitoring": { - "type": "boolean" - }, - "NetworkInterfaces": { - "items": { - "$ref": "#/definitions/NetworkInterface" - }, - "type": "array", - "uniqueItems": false - }, - "PlacementGroupName": { - "type": "string" - }, - "PrivateDnsName": { - "type": "string" - }, - "PrivateDnsNameOptions": { - "$ref": "#/definitions/PrivateDnsNameOptions" - }, - "PrivateIp": { - "type": "string" - }, - "PrivateIpAddress": { - "type": "string" - }, - "PropagateTagsToVolumeOnCreation": { - "type": "boolean" - }, - "PublicDnsName": { - "type": "string" - }, - "PublicIp": { - "type": "string" - }, - "RamdiskId": { - "type": "string" - }, - "SecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SecurityGroups": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SourceDestCheck": { - "type": "boolean" - }, - "SsmAssociations": { - "items": { - "$ref": "#/definitions/SsmAssociation" - }, - "type": "array", - "uniqueItems": false - }, - "SubnetId": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "Tenancy": { - "enum": [ - "default", - "dedicated", - "host" - ], - "type": "string" - }, - "UserData": { - "type": "string" - }, - "Volumes": { - "items": { - "$ref": "#/definitions/Volume" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/PublicIp", - "/properties/Id", - "/properties/PublicDnsName", - "/properties/PrivateDnsName", - "/properties/PrivateIp" - ], - "requiredXor": [ - "ImageId", - "LaunchTemplate" - ], - "typeName": "AWS::EC2::Instance" -} diff --git a/src/cfnlint/data/schemas/providers/eu_west_1/aws-ec2-securitygroupegress.json b/src/cfnlint/data/schemas/providers/eu_west_1/aws-ec2-securitygroupegress.json new file mode 100644 index 0000000000..f94631dad2 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_west_1/aws-ec2-securitygroupegress.json @@ -0,0 +1,98 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::EC2::SecurityGroupEgress/Properties" + ], + "createOnlyProperties": [ + "/properties/IpProtocol", + "/properties/DestinationSecurityGroupId", + "/properties/ToPort", + "/properties/CidrIp", + "/properties/FromPort", + "/properties/GroupId", + "/properties/CidrIpv6", + "/properties/DestinationPrefixListId" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:AuthorizeSecurityGroupEgress", + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "delete": { + "permissions": [ + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "update": { + "permissions": [ + "ec2:UpdateSecurityGroupRuleDescriptionsEgress" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CidrIp": { + "type": "string" + }, + "CidrIpv6": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "DestinationPrefixListId": { + "type": "string" + }, + "DestinationSecurityGroupId": { + "type": "string" + }, + "FromPort": { + "minimum": -1, + "type": "integer" + }, + "GroupId": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "IpProtocol": { + "type": "string" + }, + "ToPort": { + "minimum": -1, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IpProtocol", + "GroupId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SecurityGroupEgress" +} diff --git a/src/cfnlint/data/schemas/providers/eu_west_1/aws-gamelift-fleet.json b/src/cfnlint/data/schemas/providers/eu_west_1/aws-gamelift-fleet.json new file mode 100644 index 0000000000..fb6db12d8b --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_west_1/aws-gamelift-fleet.json @@ -0,0 +1,523 @@ +{ + "$schema": "https://schema.cloudformation.us-east-1.amazonaws.com/provider.definition.schema.v1.json", + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplyCapacity", + "/properties/BuildId", + "/properties/CertificateConfiguration", + "/properties/EC2InstanceType", + "/properties/FleetType", + "/properties/InstanceRoleARN", + "/properties/InstanceRoleCredentialsProvider", + "/properties/LogPaths", + "/properties/PeerVpcAwsAccountId", + "/properties/PeerVpcId", + "/properties/ScriptId", + "/properties/ServerLaunchParameters", + "/properties/ServerLaunchPath", + "/properties/ComputeType" + ], + "definitions": { + "AnywhereConfiguration": { + "additionalProperties": false, + "properties": { + "Cost": { + "maxLength": 11, + "minLength": 1, + "pattern": "^\\d{1,5}(?:\\.\\d{1,5})?$", + "type": "string" + } + }, + "required": [ + "Cost" + ] + }, + "CertificateConfiguration": { + "additionalProperties": false, + "properties": { + "CertificateType": { + "enum": [ + "DISABLED", + "GENERATED" + ], + "type": "string" + } + }, + "required": [ + "CertificateType" + ], + "type": "object" + }, + "IpPermission": { + "additionalProperties": false, + "properties": { + "FromPort": { + "maximum": 60000, + "minimum": 1, + "type": "integer" + }, + "IpRange": { + "pattern": "(^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(/([0-9]|[1-2][0-9]|3[0-2]))$)", + "type": "string" + }, + "Protocol": { + "enum": [ + "TCP", + "UDP" + ], + "type": "string" + }, + "ToPort": { + "maximum": 60000, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "FromPort", + "IpRange", + "Protocol", + "ToPort" + ], + "type": "object" + }, + "Location": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[A-Za-z0-9\\-]+", + "type": "string" + }, + "LocationCapacity": { + "additionalProperties": false, + "properties": { + "DesiredEC2Instances": { + "minimum": 0, + "type": "integer" + }, + "MaxSize": { + "minimum": 0, + "type": "integer" + }, + "MinSize": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "DesiredEC2Instances", + "MinSize", + "MaxSize" + ], + "type": "object" + }, + "LocationConfiguration": { + "additionalProperties": false, + "properties": { + "Location": { + "$ref": "#/definitions/Location" + }, + "LocationCapacity": { + "$ref": "#/definitions/LocationCapacity" + } + }, + "required": [ + "Location" + ], + "type": "object" + }, + "ResourceCreationLimitPolicy": { + "additionalProperties": false, + "properties": { + "NewGameSessionsPerCreator": { + "minimum": 0, + "type": "integer" + }, + "PolicyPeriodInMinutes": { + "minimum": 0, + "type": "integer" + } + }, + "type": "object" + }, + "RuntimeConfiguration": { + "additionalProperties": false, + "properties": { + "GameSessionActivationTimeoutSeconds": { + "maximum": 600, + "minimum": 1, + "type": "integer" + }, + "MaxConcurrentGameSessionActivations": { + "maximum": 2147483647, + "minimum": 1, + "type": "integer" + }, + "ServerProcesses": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ServerProcess" + }, + "maxItems": 50, + "type": "array" + } + }, + "type": "object" + }, + "ScalingPolicy": { + "additionalProperties": false, + "properties": { + "ComparisonOperator": { + "enum": [ + "GreaterThanOrEqualToThreshold", + "GreaterThanThreshold", + "LessThanThreshold", + "LessThanOrEqualToThreshold" + ], + "type": "string" + }, + "EvaluationPeriods": { + "minimum": 1, + "type": "integer" + }, + "Location": { + "$ref": "#/definitions/Location" + }, + "MetricName": { + "enum": [ + "ActivatingGameSessions", + "ActiveGameSessions", + "ActiveInstances", + "AvailableGameSessions", + "AvailablePlayerSessions", + "CurrentPlayerSessions", + "IdleInstances", + "PercentAvailableGameSessions", + "PercentIdleInstances", + "QueueDepth", + "WaitTime", + "ConcurrentActivatableGameSessions" + ], + "type": "string" + }, + "Name": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "PolicyType": { + "enum": [ + "RuleBased", + "TargetBased" + ], + "type": "string" + }, + "ScalingAdjustment": { + "type": "integer" + }, + "ScalingAdjustmentType": { + "enum": [ + "ChangeInCapacity", + "ExactCapacity", + "PercentChangeInCapacity" + ], + "type": "string" + }, + "Status": { + "enum": [ + "ACTIVE", + "UPDATE_REQUESTED", + "UPDATING", + "DELETE_REQUESTED", + "DELETING", + "DELETED", + "ERROR" + ], + "type": "string" + }, + "TargetConfiguration": { + "$ref": "#/definitions/TargetConfiguration" + }, + "Threshold": { + "type": "number" + }, + "UpdateStatus": { + "enum": [ + "PENDING_UPDATE" + ], + "type": "string" + } + }, + "required": [ + "MetricName", + "Name" + ], + "type": "object" + }, + "ServerProcess": { + "additionalProperties": false, + "properties": { + "ConcurrentExecutions": { + "minimum": 1, + "type": "integer" + }, + "LaunchPath": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^([Cc]:\\\\game\\S+|/local/game/\\S+)", + "type": "string" + }, + "Parameters": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ConcurrentExecutions", + "LaunchPath" + ], + "type": "object" + }, + "TargetConfiguration": { + "additionalProperties": false, + "properties": { + "TargetValue": { + "type": "number" + } + }, + "required": [ + "TargetValue" + ], + "type": "object" + } + }, + "deprecatedProperties": [ + "/properties/LogPaths", + "/properties/ServerLaunchParameters", + "/properties/ServerLaunchPath" + ], + "handlers": { + "create": { + "permissions": [ + "gamelift:CreateFleet", + "gamelift:DescribeFleetAttributes", + "gamelift:DescribeFleetLocationAttributes", + "gamelift:UpdateFleetCapacity", + "gamelift:DescribeFleetLocationCapacity", + "gamelift:PutScalingPolicy", + "gamelift:DescribeScalingPolicies" + ] + }, + "delete": { + "permissions": [ + "gamelift:DeleteFleet", + "gamelift:DescribeFleetLocationCapacity", + "gamelift:DescribeScalingPolicies", + "gamelift:DeleteScalingPolicy" + ] + }, + "list": { + "permissions": [ + "gamelift:ListFleets" + ] + }, + "read": { + "permissions": [ + "gamelift:DescribeFleetAttributes", + "gamelift:DescribeFleetLocationAttributes", + "gamelift:DescribeFleetCapacity", + "gamelift:DescribeFleetPortSettings", + "gamelift:DescribeFleetUtilization", + "gamelift:DescribeRuntimeConfiguration", + "gamelift:DescribeEC2InstanceLimits", + "gamelift:DescribeFleetEvents", + "gamelift:DescribeScalingPolicies" + ] + }, + "update": { + "permissions": [ + "gamelift:UpdateFleetAttributes", + "gamelift:CreateFleetLocations", + "gamelift:DeleteFleetLocations", + "gamelift:UpdateFleetCapacity", + "gamelift:UpdateFleetPortSettings", + "gamelift:UpdateRuntimeConfiguration", + "gamelift:DescribeFleetLocationCapacity", + "gamelift:DescribeFleetPortSettings", + "gamelift:DescribeFleetLocationAttributes", + "gamelift:PutScalingPolicy", + "gamelift:DescribeScalingPolicies", + "gamelift:DeleteScalingPolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/FleetId" + ], + "properties": { + "AnywhereConfiguration": { + "$ref": "#/definitions/AnywhereConfiguration" + }, + "ApplyCapacity": { + "enum": [ + "ON_UPDATE", + "ON_CREATE_AND_UPDATE" + ], + "type": "string" + }, + "BuildId": { + "pattern": "^build-\\S+|^arn:.*:build/build-\\S+", + "type": "string" + }, + "CertificateConfiguration": { + "$ref": "#/definitions/CertificateConfiguration" + }, + "ComputeType": { + "enum": [ + "EC2", + "ANYWHERE" + ], + "type": "string" + }, + "Description": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "DesiredEC2Instances": { + "minimum": 0, + "type": "integer" + }, + "EC2InboundPermissions": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/IpPermission" + }, + "maxItems": 50, + "type": "array" + }, + "EC2InstanceType": { + "cfnLint": "AWS::GameLift::Fleet/EC2InstanceType", + "pattern": "^.*..*$", + "type": "string" + }, + "FleetId": { + "pattern": "^fleet-\\S+", + "type": "string" + }, + "FleetType": { + "enum": [ + "ON_DEMAND", + "SPOT" + ], + "type": "string" + }, + "InstanceRoleARN": { + "minLength": 1, + "pattern": "^arn:aws(-.*)?:[a-z-]+:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$", + "type": "string" + }, + "InstanceRoleCredentialsProvider": { + "enum": [ + "SHARED_CREDENTIAL_FILE" + ], + "type": "string" + }, + "Locations": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LocationConfiguration" + }, + "maxItems": 100, + "minItems": 1, + "type": "array" + }, + "LogPaths": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "MaxSize": { + "minimum": 0, + "type": "integer" + }, + "MetricGroups": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "maxItems": 1, + "type": "array" + }, + "MinSize": { + "minimum": 0, + "type": "integer" + }, + "Name": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "NewGameSessionProtectionPolicy": { + "enum": [ + "FullProtection", + "NoProtection" + ], + "type": "string" + }, + "PeerVpcAwsAccountId": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^[0-9]{12}$", + "type": "string" + }, + "PeerVpcId": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^vpc-\\S+", + "type": "string" + }, + "ResourceCreationLimitPolicy": { + "$ref": "#/definitions/ResourceCreationLimitPolicy" + }, + "RuntimeConfiguration": { + "$ref": "#/definitions/RuntimeConfiguration" + }, + "ScalingPolicies": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ScalingPolicy" + }, + "maxItems": 50, + "type": "array" + }, + "ScriptId": { + "pattern": "^script-\\S+|^arn:.*:script/script-\\S+", + "type": "string" + }, + "ServerLaunchParameters": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "ServerLaunchPath": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/FleetId" + ], + "required": [ + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-gamelift.git", + "taggable": true, + "typeName": "AWS::GameLift::Fleet", + "writeOnlyProperties": [ + "/properties/ApplyCapacity" + ] +} diff --git a/src/cfnlint/data/schemas/providers/eu_west_1/aws-iotsitewise-gateway.json b/src/cfnlint/data/schemas/providers/eu_west_1/aws-iotsitewise-gateway.json deleted file mode 100644 index 20b0ba8baa..0000000000 --- a/src/cfnlint/data/schemas/providers/eu_west_1/aws-iotsitewise-gateway.json +++ /dev/null @@ -1,179 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/GatewayPlatform" - ], - "definitions": { - "CapabilityConfiguration": { - "type": "string" - }, - "CapabilityNamespace": { - "type": "string" - }, - "GatewayCapabilitySummary": { - "additionalProperties": false, - "properties": { - "CapabilityConfiguration": { - "$ref": "#/definitions/CapabilityConfiguration" - }, - "CapabilityNamespace": { - "$ref": "#/definitions/CapabilityNamespace" - } - }, - "required": [ - "CapabilityNamespace" - ], - "type": "object" - }, - "GatewayPlatform": { - "additionalProperties": false, - "oneOf": [ - { - "required": [ - "Greengrass" - ] - }, - { - "required": [ - "GreengrassV2" - ] - } - ], - "properties": { - "Greengrass": { - "$ref": "#/definitions/Greengrass" - }, - "GreengrassV2": { - "$ref": "#/definitions/GreengrassV2" - } - }, - "type": "object" - }, - "Greengrass": { - "additionalProperties": false, - "properties": { - "GroupArn": { - "type": "string" - } - }, - "required": [ - "GroupArn" - ], - "type": "object" - }, - "GreengrassV2": { - "additionalProperties": false, - "properties": { - "CoreDeviceThingName": { - "type": "string" - } - }, - "required": [ - "CoreDeviceThingName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "iotsitewise:CreateGateway", - "iotsitewise:DescribeGateway", - "iotsitewise:DescribeGatewayCapabilityConfiguration", - "iotsitewise:UpdateGatewayCapabilityConfiguration", - "iam:PassRole", - "iam:GetRole", - "greengrass:GetCoreDevice", - "iotsitewise:ListTagsForResource", - "iotsitewise:TagResource", - "iot:DescribeThing" - ] - }, - "delete": { - "permissions": [ - "iotsitewise:DescribeGateway", - "iotsitewise:DescribeGatewayCapabilityConfiguration", - "iotsitewise:DeleteGateway" - ] - }, - "list": { - "permissions": [ - "iotsitewise:ListGateways" - ] - }, - "read": { - "permissions": [ - "iotsitewise:DescribeGateway", - "iotsitewise:DescribeGatewayCapabilityConfiguration", - "iotsitewise:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "iotsitewise:UpdateGateway", - "iotsitewise:UpdateGatewayCapabilityConfiguration", - "iotsitewise:TagResource", - "iotsitewise:UntagResource", - "iotsitewise:DescribeGateway", - "iotsitewise:DescribeGatewayCapabilityConfiguration", - "iotsitewise:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/GatewayId" - ], - "properties": { - "GatewayCapabilitySummaries": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/GatewayCapabilitySummary" - }, - "type": "array", - "uniqueItems": true - }, - "GatewayId": { - "type": "string" - }, - "GatewayName": { - "type": "string" - }, - "GatewayPlatform": { - "$ref": "#/definitions/GatewayPlatform" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/GatewayId" - ], - "required": [ - "GatewayName", - "GatewayPlatform" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-IoTSiteWise.git", - "taggable": true, - "typeName": "AWS::IoTSiteWise::Gateway" -} diff --git a/src/cfnlint/data/schemas/providers/eu_west_1/aws-sagemaker-appimageconfig.json b/src/cfnlint/data/schemas/providers/eu_west_1/aws-sagemaker-appimageconfig.json new file mode 100644 index 0000000000..01116f524b --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_west_1/aws-sagemaker-appimageconfig.json @@ -0,0 +1,238 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AppImageConfigName", + "/properties/Tags" + ], + "definitions": { + "ContainerConfig": { + "additionalProperties": false, + "properties": { + "ContainerArguments": { + "items": { + "$ref": "#/definitions/CustomImageContainerArguments" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "ContainerEntrypoint": { + "items": { + "$ref": "#/definitions/CustomImageContainerEntrypoint" + }, + "maxItems": 1, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "ContainerEnvironmentVariables": { + "items": { + "$ref": "#/definitions/CustomImageContainerEnvironmentVariable" + }, + "maxItems": 25, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "CustomImageContainerArguments": { + "maxLength": 64, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "CustomImageContainerEntrypoint": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "CustomImageContainerEnvironmentVariable": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "FileSystemConfig": { + "additionalProperties": false, + "properties": { + "DefaultGid": { + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "DefaultUid": { + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "MountPath": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^/.*", + "type": "string" + } + }, + "type": "object" + }, + "JupyterLabAppImageConfig": { + "additionalProperties": false, + "properties": { + "ContainerConfig": { + "$ref": "#/definitions/ContainerConfig" + } + }, + "type": "object" + }, + "KernelGatewayImageConfig": { + "additionalProperties": false, + "properties": { + "FileSystemConfig": { + "$ref": "#/definitions/FileSystemConfig" + }, + "KernelSpecs": { + "items": { + "$ref": "#/definitions/KernelSpec" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "KernelSpecs" + ], + "type": "object" + }, + "KernelSpec": { + "additionalProperties": false, + "properties": { + "DisplayName": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Name": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "sagemaker:CreateAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + }, + "delete": { + "permissions": [ + "sagemaker:DeleteAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + }, + "list": { + "permissions": [ + "sagemaker:ListAppImageConfigs" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeAppImageConfig" + ] + }, + "update": { + "permissions": [ + "sagemaker:UpdateAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + } + }, + "primaryIdentifier": [ + "/properties/AppImageConfigName" + ], + "properties": { + "AppImageConfigArn": { + "maxLength": 256, + "minLength": 1, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:app-image-config/.*", + "type": "string" + }, + "AppImageConfigName": { + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", + "type": "string" + }, + "JupyterLabAppImageConfig": { + "$ref": "#/definitions/JupyterLabAppImageConfig" + }, + "KernelGatewayImageConfig": { + "$ref": "#/definitions/KernelGatewayImageConfig" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/AppImageConfigArn" + ], + "required": [ + "AppImageConfigName" + ], + "typeName": "AWS::SageMaker::AppImageConfig", + "writeOnlyProperties": [ + "/properties/Tags" + ] +} diff --git a/src/cfnlint/data/schemas/providers/eu_west_1/aws-sagemaker-domain.json b/src/cfnlint/data/schemas/providers/eu_west_1/aws-sagemaker-domain.json new file mode 100644 index 0000000000..e57c036025 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_west_1/aws-sagemaker-domain.json @@ -0,0 +1,739 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AuthMode", + "/properties/DomainName", + "/properties/DomainSettings/RStudioServerProDomainSettings/DefaultResourceSpec", + "/properties/KmsKeyId", + "/properties/VpcId", + "/properties/Tags" + ], + "definitions": { + "CodeEditorAppSettings": { + "additionalProperties": false, + "properties": { + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + }, + "LifecycleConfigArns": { + "items": { + "$ref": "#/definitions/StudioLifecycleConfigArn" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "CodeRepository": { + "additionalProperties": false, + "properties": { + "RepositoryUrl": { + "maxLength": 256, + "pattern": "^https://([.\\-_a-zA-Z0-9]+/?){3,1016}$", + "type": "string" + } + }, + "required": [ + "RepositoryUrl" + ], + "type": "object" + }, + "CustomFileSystemConfig": { + "additionalProperties": false, + "properties": { + "EFSFileSystemConfig": { + "$ref": "#/definitions/EFSFileSystemConfig" + } + }, + "type": "object" + }, + "CustomImage": { + "additionalProperties": false, + "properties": { + "AppImageConfigName": { + "maxLength": 63, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", + "type": "string" + }, + "ImageName": { + "maxLength": 63, + "pattern": "^[a-zA-Z0-9]([-.]?[a-zA-Z0-9]){0,62}$", + "type": "string" + }, + "ImageVersionNumber": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "AppImageConfigName", + "ImageName" + ], + "type": "object" + }, + "CustomPosixUserConfig": { + "additionalProperties": false, + "properties": { + "Gid": { + "maximum": 4000000, + "minimum": 1001, + "type": "integer" + }, + "Uid": { + "maximum": 4000000, + "minimum": 10000, + "type": "integer" + } + }, + "required": [ + "Uid", + "Gid" + ], + "type": "object" + }, + "DefaultEbsStorageSettings": { + "additionalProperties": false, + "properties": { + "DefaultEbsVolumeSizeInGb": { + "$ref": "#/definitions/SpaceEbsVolumeSizeInGb" + }, + "MaximumEbsVolumeSizeInGb": { + "$ref": "#/definitions/SpaceEbsVolumeSizeInGb" + } + }, + "required": [ + "DefaultEbsVolumeSizeInGb", + "MaximumEbsVolumeSizeInGb" + ], + "type": "object" + }, + "DefaultSpaceSettings": { + "additionalProperties": false, + "properties": { + "ExecutionRole": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "JupyterServerAppSettings": { + "$ref": "#/definitions/JupyterServerAppSettings" + }, + "KernelGatewayAppSettings": { + "$ref": "#/definitions/KernelGatewayAppSettings" + }, + "SecurityGroups": { + "insertionOrder": false, + "items": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 5, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "ExecutionRole" + ], + "type": "object" + }, + "DefaultSpaceStorageSettings": { + "additionalProperties": false, + "properties": { + "DefaultEbsStorageSettings": { + "$ref": "#/definitions/DefaultEbsStorageSettings" + } + }, + "type": "object" + }, + "DockerSettings": { + "additionalProperties": false, + "properties": { + "EnableDockerAccess": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "VpcOnlyTrustedAccounts": { + "insertionOrder": false, + "items": { + "maxLength": 12, + "pattern": "^[0-9]$", + "type": "string" + }, + "maxItems": 10, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "DomainSettings": { + "additionalProperties": false, + "properties": { + "DockerSettings": { + "$ref": "#/definitions/DockerSettings" + }, + "RStudioServerProDomainSettings": { + "$ref": "#/definitions/RStudioServerProDomainSettings" + }, + "SecurityGroupIds": { + "insertionOrder": false, + "items": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 3, + "minItems": 1, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "EFSFileSystemConfig": { + "additionalProperties": false, + "properties": { + "FileSystemId": { + "maxLength": 21, + "minLength": 11, + "pattern": "^(fs-[0-9a-f]{8,})$", + "type": "string" + }, + "FileSystemPath": { + "maxLength": 256, + "minLength": 1, + "pattern": "^\\/\\S*$", + "type": "string" + } + }, + "required": [ + "FileSystemId" + ], + "type": "object" + }, + "JupyterLabAppSettings": { + "additionalProperties": false, + "properties": { + "CodeRepositories": { + "items": { + "$ref": "#/definitions/CodeRepository" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "CustomImages": { + "items": { + "$ref": "#/definitions/CustomImage" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + }, + "LifecycleConfigArns": { + "items": { + "$ref": "#/definitions/StudioLifecycleConfigArn" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "JupyterServerAppSettings": { + "additionalProperties": false, + "properties": { + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + } + }, + "type": "object" + }, + "KernelGatewayAppSettings": { + "additionalProperties": false, + "properties": { + "CustomImages": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/CustomImage" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + } + }, + "type": "object" + }, + "RSessionAppSettings": { + "additionalProperties": false, + "properties": { + "CustomImages": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/CustomImage" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + } + }, + "type": "object" + }, + "RStudioServerProAppSettings": { + "additionalProperties": false, + "properties": { + "AccessStatus": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "UserGroup": { + "enum": [ + "R_STUDIO_ADMIN", + "R_STUDIO_USER" + ], + "type": "string" + } + }, + "type": "object" + }, + "RStudioServerProDomainSettings": { + "additionalProperties": false, + "properties": { + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + }, + "DomainExecutionRoleArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "RStudioConnectUrl": { + "pattern": "^(https:|http:|www\\.)\\S*", + "type": "string" + }, + "RStudioPackageManagerUrl": { + "pattern": "^(https:|http:|www\\.)\\S*", + "type": "string" + } + }, + "required": [ + "DomainExecutionRoleArn" + ], + "type": "object" + }, + "ResourceSpec": { + "additionalProperties": false, + "properties": { + "InstanceType": { + "enum": [ + "system", + "ml.t3.micro", + "ml.t3.small", + "ml.t3.medium", + "ml.t3.large", + "ml.t3.xlarge", + "ml.t3.2xlarge", + "ml.m5.large", + "ml.m5.xlarge", + "ml.m5.2xlarge", + "ml.m5.4xlarge", + "ml.m5.8xlarge", + "ml.m5.12xlarge", + "ml.m5.16xlarge", + "ml.m5.24xlarge", + "ml.c5.large", + "ml.c5.xlarge", + "ml.c5.2xlarge", + "ml.c5.4xlarge", + "ml.c5.9xlarge", + "ml.c5.12xlarge", + "ml.c5.18xlarge", + "ml.c5.24xlarge", + "ml.p3.2xlarge", + "ml.p3.8xlarge", + "ml.p3.16xlarge", + "ml.g4dn.xlarge", + "ml.g4dn.2xlarge", + "ml.g4dn.4xlarge", + "ml.g4dn.8xlarge", + "ml.g4dn.12xlarge", + "ml.g4dn.16xlarge", + "ml.r5.large", + "ml.r5.xlarge", + "ml.r5.2xlarge", + "ml.r5.4xlarge", + "ml.r5.8xlarge", + "ml.r5.12xlarge", + "ml.r5.16xlarge", + "ml.r5.24xlarge", + "ml.p3dn.24xlarge", + "ml.m5d.large", + "ml.m5d.xlarge", + "ml.m5d.2xlarge", + "ml.m5d.4xlarge", + "ml.m5d.8xlarge", + "ml.m5d.12xlarge", + "ml.m5d.16xlarge", + "ml.m5d.24xlarge", + "ml.g5.xlarge", + "ml.g5.2xlarge", + "ml.g5.4xlarge", + "ml.g5.8xlarge", + "ml.g5.12xlarge", + "ml.g5.16xlarge", + "ml.g5.24xlarge", + "ml.g5.48xlarge", + "ml.p4d.24xlarge", + "ml.p4de.24xlarge", + "ml.geospatial.interactive", + "ml.trn1.2xlarge", + "ml.trn1.32xlarge", + "ml.trn1n.32xlarge" + ], + "type": "string" + }, + "LifecycleConfigArn": { + "maxLength": 256, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:studio-lifecycle-config/.*", + "type": "string" + }, + "SageMakerImageArn": { + "maxLength": 256, + "pattern": "^arn:aws(-[\\w]+)*:sagemaker:.+:[0-9]{12}:image/[a-z0-9]([-.]?[a-z0-9])*$", + "type": "string" + }, + "SageMakerImageVersionArn": { + "maxLength": 256, + "pattern": "^arn:aws(-[\\w]+)*:sagemaker:.+:[0-9]{12}:image-version/[a-z0-9]([-.]?[a-z0-9])*/[0-9]+$", + "type": "string" + } + }, + "type": "object" + }, + "SharingSettings": { + "additionalProperties": false, + "properties": { + "NotebookOutputOption": { + "enum": [ + "Allowed", + "Disabled" + ], + "type": "string" + }, + "S3KmsKeyId": { + "maxLength": 2048, + "pattern": ".*", + "type": "string" + }, + "S3OutputPath": { + "maxLength": 1024, + "pattern": "^(https|s3)://([^/]+)/?(.*)$", + "type": "string" + } + }, + "type": "object" + }, + "SpaceEbsVolumeSizeInGb": { + "maximum": 16384, + "minimum": 5, + "type": "integer" + }, + "StudioLifecycleConfigArn": { + "maxLength": 256, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:studio-lifecycle-config/.*", + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "UserSettings": { + "additionalProperties": false, + "properties": { + "CodeEditorAppSettings": { + "$ref": "#/definitions/CodeEditorAppSettings" + }, + "CustomFileSystemConfigs": { + "items": { + "$ref": "#/definitions/CustomFileSystemConfig" + }, + "maxItems": 2, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "CustomPosixUserConfig": { + "$ref": "#/definitions/CustomPosixUserConfig" + }, + "DefaultLandingUri": { + "maxLength": 1023, + "type": "string" + }, + "ExecutionRole": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "JupyterLabAppSettings": { + "$ref": "#/definitions/JupyterLabAppSettings" + }, + "JupyterServerAppSettings": { + "$ref": "#/definitions/JupyterServerAppSettings" + }, + "KernelGatewayAppSettings": { + "$ref": "#/definitions/KernelGatewayAppSettings" + }, + "RSessionAppSettings": { + "$ref": "#/definitions/RSessionAppSettings" + }, + "RStudioServerProAppSettings": { + "$ref": "#/definitions/RStudioServerProAppSettings" + }, + "SecurityGroups": { + "insertionOrder": false, + "items": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 5, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "SharingSettings": { + "$ref": "#/definitions/SharingSettings" + }, + "SpaceStorageSettings": { + "$ref": "#/definitions/DefaultSpaceStorageSettings" + }, + "StudioWebPortal": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + } + }, + "required": [ + "ExecutionRole" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "sagemaker:CreateApp", + "sagemaker:CreateDomain", + "sagemaker:DescribeDomain", + "sagemaker:DescribeImage", + "sagemaker:DescribeImageVersion", + "iam:CreateServiceLinkedRole", + "iam:PassRole", + "efs:CreateFileSystem", + "kms:CreateGrant", + "kms:Decrypt", + "kms:DescribeKey", + "kms:GenerateDataKeyWithoutPlainText" + ] + }, + "delete": { + "permissions": [ + "sagemaker:DeleteApp", + "sagemaker:DeleteDomain", + "sagemaker:DescribeDomain" + ] + }, + "list": { + "permissions": [ + "sagemaker:ListDomains" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeDomain" + ] + }, + "update": { + "permissions": [ + "sagemaker:CreateApp", + "sagemaker:UpdateDomain", + "sagemaker:DescribeDomain", + "sagemaker:DescribeImage", + "sagemaker:DescribeImageVersion", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/DomainId" + ], + "properties": { + "AppNetworkAccessType": { + "enum": [ + "PublicInternetOnly", + "VpcOnly" + ], + "type": "string" + }, + "AppSecurityGroupManagement": { + "enum": [ + "Service", + "Customer" + ], + "type": "string" + }, + "AuthMode": { + "enum": [ + "SSO", + "IAM" + ], + "type": "string" + }, + "DefaultSpaceSettings": { + "$ref": "#/definitions/DefaultSpaceSettings" + }, + "DefaultUserSettings": { + "$ref": "#/definitions/UserSettings" + }, + "DomainArn": { + "maxLength": 256, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:domain/.*", + "type": "string" + }, + "DomainId": { + "maxLength": 63, + "pattern": "^d-(-*[a-z0-9])+", + "type": "string" + }, + "DomainName": { + "maxLength": 63, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", + "type": "string" + }, + "DomainSettings": { + "$ref": "#/definitions/DomainSettings" + }, + "HomeEfsFileSystemId": { + "maxLength": 32, + "type": "string" + }, + "KmsKeyId": { + "maxLength": 2048, + "pattern": ".*", + "type": "string" + }, + "SecurityGroupIdForDomainBoundary": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "SingleSignOnApplicationArn": { + "pattern": "^arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):sso::[0-9]+:application/[a-zA-Z0-9-_.]+/apl-[a-zA-Z0-9]+$", + "type": "string" + }, + "SingleSignOnManagedApplicationInstanceId": { + "maxLength": 256, + "type": "string" + }, + "SubnetIds": { + "insertionOrder": false, + "items": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 16, + "minItems": 1, + "type": "array", + "uniqueItems": false + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "Url": { + "maxLength": 1024, + "type": "string" + }, + "VpcId": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/DomainArn", + "/properties/Url", + "/properties/DomainId", + "/properties/HomeEfsFileSystemId", + "/properties/SecurityGroupIdForDomainBoundary", + "/properties/SingleSignOnManagedApplicationInstanceId", + "/properties/SingleSignOnApplicationArn" + ], + "required": [ + "AuthMode", + "DefaultUserSettings", + "DomainName", + "SubnetIds", + "VpcId" + ], + "typeName": "AWS::SageMaker::Domain", + "writeOnlyProperties": [ + "/properties/Tags" + ] +} diff --git a/src/cfnlint/data/schemas/providers/eu_west_1/aws-sagemaker-userprofile.json b/src/cfnlint/data/schemas/providers/eu_west_1/aws-sagemaker-userprofile.json new file mode 100644 index 0000000000..d0f8848903 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_west_1/aws-sagemaker-userprofile.json @@ -0,0 +1,524 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DomainId", + "/properties/UserProfileName", + "/properties/SingleSignOnUserIdentifier", + "/properties/SingleSignOnUserValue", + "/properties/UserSettings/RStudioServerProAppSettings/AccessStatus", + "/properties/UserSettings/RStudioServerProAppSettings/UserGroup", + "/properties/Tags" + ], + "definitions": { + "CodeEditorAppSettings": { + "additionalProperties": false, + "properties": { + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + }, + "LifecycleConfigArns": { + "items": { + "$ref": "#/definitions/StudioLifecycleConfigArn" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "CodeRepository": { + "additionalProperties": false, + "properties": { + "RepositoryUrl": { + "maxLength": 256, + "pattern": "^https://([.\\-_a-zA-Z0-9]+/?){3,1016}$", + "type": "string" + } + }, + "required": [ + "RepositoryUrl" + ], + "type": "object" + }, + "CustomFileSystemConfig": { + "additionalProperties": false, + "properties": { + "EFSFileSystemConfig": { + "$ref": "#/definitions/EFSFileSystemConfig" + } + }, + "type": "object" + }, + "CustomImage": { + "additionalProperties": false, + "properties": { + "AppImageConfigName": { + "maxLength": 63, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", + "type": "string" + }, + "ImageName": { + "maxLength": 63, + "pattern": "^[a-zA-Z0-9]([-.]?[a-zA-Z0-9]){0,62}$", + "type": "string" + }, + "ImageVersionNumber": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "AppImageConfigName", + "ImageName" + ], + "type": "object" + }, + "CustomPosixUserConfig": { + "additionalProperties": false, + "properties": { + "Gid": { + "maximum": 4000000, + "minimum": 1001, + "type": "integer" + }, + "Uid": { + "maximum": 4000000, + "minimum": 10000, + "type": "integer" + } + }, + "required": [ + "Uid", + "Gid" + ], + "type": "object" + }, + "DefaultEbsStorageSettings": { + "additionalProperties": false, + "properties": { + "DefaultEbsVolumeSizeInGb": { + "$ref": "#/definitions/SpaceEbsVolumeSizeInGb" + }, + "MaximumEbsVolumeSizeInGb": { + "$ref": "#/definitions/SpaceEbsVolumeSizeInGb" + } + }, + "required": [ + "DefaultEbsVolumeSizeInGb", + "MaximumEbsVolumeSizeInGb" + ], + "type": "object" + }, + "DefaultSpaceStorageSettings": { + "additionalProperties": false, + "properties": { + "DefaultEbsStorageSettings": { + "$ref": "#/definitions/DefaultEbsStorageSettings" + } + }, + "type": "object" + }, + "EFSFileSystemConfig": { + "additionalProperties": false, + "properties": { + "FileSystemId": { + "maxLength": 21, + "minLength": 11, + "pattern": "^(fs-[0-9a-f]{8,})$", + "type": "string" + }, + "FileSystemPath": { + "maxLength": 256, + "minLength": 1, + "pattern": "^\\/\\S*$", + "type": "string" + } + }, + "required": [ + "FileSystemId" + ], + "type": "object" + }, + "JupyterLabAppSettings": { + "additionalProperties": false, + "properties": { + "CodeRepositories": { + "items": { + "$ref": "#/definitions/CodeRepository" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "CustomImages": { + "items": { + "$ref": "#/definitions/CustomImage" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + }, + "LifecycleConfigArns": { + "items": { + "$ref": "#/definitions/StudioLifecycleConfigArn" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "JupyterServerAppSettings": { + "additionalProperties": false, + "properties": { + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + } + }, + "type": "object" + }, + "KernelGatewayAppSettings": { + "additionalProperties": false, + "properties": { + "CustomImages": { + "items": { + "$ref": "#/definitions/CustomImage" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + } + }, + "type": "object" + }, + "RStudioServerProAppSettings": { + "additionalProperties": false, + "properties": { + "AccessStatus": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "UserGroup": { + "enum": [ + "R_STUDIO_ADMIN", + "R_STUDIO_USER" + ], + "type": "string" + } + }, + "type": "object" + }, + "ResourceSpec": { + "additionalProperties": false, + "properties": { + "InstanceType": { + "enum": [ + "system", + "ml.t3.micro", + "ml.t3.small", + "ml.t3.medium", + "ml.t3.large", + "ml.t3.xlarge", + "ml.t3.2xlarge", + "ml.m5.large", + "ml.m5.xlarge", + "ml.m5.2xlarge", + "ml.m5.4xlarge", + "ml.m5.8xlarge", + "ml.m5.12xlarge", + "ml.m5.16xlarge", + "ml.m5.24xlarge", + "ml.c5.large", + "ml.c5.xlarge", + "ml.c5.2xlarge", + "ml.c5.4xlarge", + "ml.c5.9xlarge", + "ml.c5.12xlarge", + "ml.c5.18xlarge", + "ml.c5.24xlarge", + "ml.p3.2xlarge", + "ml.p3.8xlarge", + "ml.p3.16xlarge", + "ml.g4dn.xlarge", + "ml.g4dn.2xlarge", + "ml.g4dn.4xlarge", + "ml.g4dn.8xlarge", + "ml.g4dn.12xlarge", + "ml.g4dn.16xlarge", + "ml.r5.large", + "ml.r5.xlarge", + "ml.r5.2xlarge", + "ml.r5.4xlarge", + "ml.r5.8xlarge", + "ml.r5.12xlarge", + "ml.r5.16xlarge", + "ml.r5.24xlarge", + "ml.p3dn.24xlarge", + "ml.m5d.large", + "ml.m5d.xlarge", + "ml.m5d.2xlarge", + "ml.m5d.4xlarge", + "ml.m5d.8xlarge", + "ml.m5d.12xlarge", + "ml.m5d.16xlarge", + "ml.m5d.24xlarge", + "ml.g5.xlarge", + "ml.g5.2xlarge", + "ml.g5.4xlarge", + "ml.g5.8xlarge", + "ml.g5.12xlarge", + "ml.g5.16xlarge", + "ml.g5.24xlarge", + "ml.g5.48xlarge", + "ml.p4d.24xlarge", + "ml.p4de.24xlarge", + "ml.geospatial.interactive", + "ml.trn1.2xlarge", + "ml.trn1.32xlarge", + "ml.trn1n.32xlarge" + ], + "type": "string" + }, + "SageMakerImageArn": { + "maxLength": 256, + "pattern": "^arn:aws(-[\\w]+)*:sagemaker:.+:[0-9]{12}:image/[a-z0-9]([-.]?[a-z0-9])*$", + "type": "string" + }, + "SageMakerImageVersionArn": { + "maxLength": 256, + "pattern": "^arn:aws(-[\\w]+)*:sagemaker:.+:[0-9]{12}:image-version/[a-z0-9]([-.]?[a-z0-9])*/[0-9]+$", + "type": "string" + } + }, + "type": "object" + }, + "SharingSettings": { + "additionalProperties": false, + "properties": { + "NotebookOutputOption": { + "enum": [ + "Allowed", + "Disabled" + ], + "type": "string" + }, + "S3KmsKeyId": { + "maxLength": 2048, + "pattern": ".*", + "type": "string" + }, + "S3OutputPath": { + "maxLength": 1024, + "pattern": "^(https|s3)://([^/]+)/?(.*)$", + "type": "string" + } + }, + "type": "object" + }, + "SpaceEbsVolumeSizeInGb": { + "maximum": 16384, + "minimum": 5, + "type": "integer" + }, + "StudioLifecycleConfigArn": { + "maxLength": 256, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:studio-lifecycle-config/.*", + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "UserSettings": { + "additionalProperties": false, + "properties": { + "CodeEditorAppSettings": { + "$ref": "#/definitions/CodeEditorAppSettings" + }, + "CustomFileSystemConfigs": { + "items": { + "$ref": "#/definitions/CustomFileSystemConfig" + }, + "maxItems": 2, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "CustomPosixUserConfig": { + "$ref": "#/definitions/CustomPosixUserConfig" + }, + "DefaultLandingUri": { + "maxLength": 1023, + "type": "string" + }, + "ExecutionRole": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "JupyterLabAppSettings": { + "$ref": "#/definitions/JupyterLabAppSettings" + }, + "JupyterServerAppSettings": { + "$ref": "#/definitions/JupyterServerAppSettings" + }, + "KernelGatewayAppSettings": { + "$ref": "#/definitions/KernelGatewayAppSettings" + }, + "RStudioServerProAppSettings": { + "$ref": "#/definitions/RStudioServerProAppSettings" + }, + "SecurityGroups": { + "items": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 5, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "SharingSettings": { + "$ref": "#/definitions/SharingSettings" + }, + "SpaceStorageSettings": { + "$ref": "#/definitions/DefaultSpaceStorageSettings" + }, + "StudioWebPortal": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + } + }, + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "sagemaker:CreateUserProfile", + "sagemaker:DescribeUserProfile", + "sagemaker:DescribeImage", + "sagemaker:DescribeImageVersion", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "sagemaker:DeleteUserProfile", + "sagemaker:DescribeUserProfile" + ] + }, + "list": { + "permissions": [ + "sagemaker:ListUserProfiles" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeUserProfile" + ] + }, + "update": { + "permissions": [ + "sagemaker:UpdateUserProfile", + "sagemaker:DescribeUserProfile", + "sagemaker:DescribeImage", + "sagemaker:DescribeImageVersion", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/UserProfileName", + "/properties/DomainId" + ], + "properties": { + "DomainId": { + "maxLength": 63, + "minLength": 1, + "type": "string" + }, + "SingleSignOnUserIdentifier": { + "pattern": "UserName", + "type": "string" + }, + "SingleSignOnUserValue": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "UserProfileArn": { + "maxLength": 256, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:user-profile/.*", + "type": "string" + }, + "UserProfileName": { + "maxLength": 63, + "minLength": 1, + "type": "string" + }, + "UserSettings": { + "$ref": "#/definitions/UserSettings", + "maxItems": 50, + "minItems": 0, + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/UserProfileArn" + ], + "required": [ + "DomainId", + "UserProfileName" + ], + "typeName": "AWS::SageMaker::UserProfile", + "writeOnlyProperties": [ + "/properties/Tags" + ] +} diff --git a/src/cfnlint/data/schemas/providers/eu_west_1/aws-verifiedpermissions-identitysource.json b/src/cfnlint/data/schemas/providers/eu_west_1/aws-verifiedpermissions-identitysource.json new file mode 100644 index 0000000000..46a0ad88f1 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_west_1/aws-verifiedpermissions-identitysource.json @@ -0,0 +1,221 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PolicyStoreId" + ], + "definitions": { + "CognitoGroupConfiguration": { + "additionalProperties": false, + "properties": { + "GroupEntityType": { + "maxLength": 200, + "minLength": 1, + "pattern": "^([_a-zA-Z][_a-zA-Z0-9]*::)*[_a-zA-Z][_a-zA-Z0-9]*$", + "type": "string" + } + }, + "required": [ + "GroupEntityType" + ], + "type": "object" + }, + "CognitoUserPoolConfiguration": { + "additionalProperties": false, + "properties": { + "ClientIds": { + "insertionOrder": false, + "items": { + "maxLength": 255, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "maxItems": 1000, + "minItems": 0, + "type": "array" + }, + "GroupConfiguration": { + "$ref": "#/definitions/CognitoGroupConfiguration" + }, + "UserPoolArn": { + "maxLength": 255, + "minLength": 1, + "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", + "type": "string" + } + }, + "required": [ + "UserPoolArn" + ], + "type": "object" + }, + "IdentitySourceConfiguration": { + "additionalProperties": false, + "properties": { + "CognitoUserPoolConfiguration": { + "$ref": "#/definitions/CognitoUserPoolConfiguration" + } + }, + "required": [ + "CognitoUserPoolConfiguration" + ], + "title": "CognitoUserPoolConfiguration", + "type": "object" + }, + "IdentitySourceDetails": { + "additionalProperties": false, + "properties": { + "ClientIds": { + "insertionOrder": false, + "items": { + "maxLength": 255, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "maxItems": 1000, + "minItems": 0, + "type": "array" + }, + "DiscoveryUrl": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^https://.*$", + "type": "string" + }, + "OpenIdIssuer": { + "$ref": "#/definitions/OpenIdIssuer" + }, + "UserPoolArn": { + "maxLength": 255, + "minLength": 1, + "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", + "type": "string" + } + }, + "type": "object" + }, + "OpenIdIssuer": { + "enum": [ + "COGNITO" + ], + "type": "string" + } + }, + "deprecatedProperties": [ + "/properties/Details" + ], + "handlers": { + "create": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "delete": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "PolicyStoreId": { + "$ref": "resource-schema.json#/properties/PolicyStoreId" + } + }, + "required": [ + "PolicyStoreId" + ] + }, + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "read": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "update": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + } + }, + "primaryIdentifier": [ + "/properties/IdentitySourceId", + "/properties/PolicyStoreId" + ], + "properties": { + "Configuration": { + "$ref": "#/definitions/IdentitySourceConfiguration" + }, + "Details": { + "$ref": "#/definitions/IdentitySourceDetails" + }, + "IdentitySourceId": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]*$", + "type": "string" + }, + "PolicyStoreId": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]*$", + "type": "string" + }, + "PrincipalEntityType": { + "maxLength": 200, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Details", + "/properties/IdentitySourceId" + ], + "required": [ + "Configuration", + "PolicyStoreId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-avp", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::VerifiedPermissions::IdentitySource" +} diff --git a/src/cfnlint/data/schemas/providers/eu_west_2/__init__.py b/src/cfnlint/data/schemas/providers/eu_west_2/__init__.py index 373d07e11f..e878796cae 100644 --- a/src/cfnlint/data/schemas/providers/eu_west_2/__init__.py +++ b/src/cfnlint/data/schemas/providers/eu_west_2/__init__.py @@ -40,6 +40,7 @@ "AWS::EC2::NetworkPerformanceMetricSubscription", "AWS::MediaLive::Channel", "AWS::Greengrass::DeviceDefinition", + "AWS::CleanRoomsML::TrainingDataset", "AWS::CloudFront::ContinuousDeploymentPolicy", "AWS::QuickSight::Analysis", "AWS::Kendra::Faq", @@ -211,6 +212,7 @@ "AWS::CodeGuruReviewer::RepositoryAssociation", "AWS::NetworkManager::TransitGatewayRegistration", "AWS::Amplify::App", + "AWS::EntityResolution::PolicyStatement", "AWS::InspectorV2::Filter", "AWS::ElastiCache::ReplicationGroup", "AWS::StepFunctions::StateMachineAlias", @@ -390,6 +392,7 @@ "AWS::IAM::ServerCertificate", "AWS::CodeStarConnections::Connection", "AWS::IoT::SecurityProfile", + "AWS::GlobalAccelerator::CrossAccountAttachment", "AWS::Events::EventBus", "AWS::DocDB::EventSubscription", "AWS::SQS::QueueInlinePolicy", @@ -459,6 +462,7 @@ "AWS::Cognito::UserPoolUICustomizationAttachment", "AWS::SageMaker::NotebookInstanceLifecycleConfig", "AWS::ImageBuilder::ContainerRecipe", + "AWS::CodeConnections::Connection", "AWS::Connect::Rule", "AWS::EFS::AccessPoint", "AWS::Omics::ReferenceStore", @@ -489,6 +493,7 @@ "AWS::ImageBuilder::Workflow", "AWS::ECS::TaskSet", "AWS::Omics::VariantStore", + "AWS::SecurityLake::AwsLogSource", "AWS::AppSync::ApiKey", "AWS::CloudFormation::TypeActivation", "AWS::Location::Map", @@ -641,6 +646,7 @@ "AWS::CodeBuild::SourceCredential", "AWS::EMR::InstanceFleetConfig", "AWS::EMR::Cluster", + "AWS::SecurityLake::DataLake", "AWS::CodePipeline::Webhook", "AWS::ApiGatewayV2::DomainName", "AWS::CustomerProfiles::EventStream", @@ -725,6 +731,7 @@ "AWS::WorkSpacesWeb::TrustStore", "AWS::CustomerProfiles::Domain", "AWS::IoT::Policy", + "AWS::APS::Scraper", "AWS::EC2::TransitGatewayRoute", "AWS::SSM::MaintenanceWindow", "AWS::DataZone::Domain", @@ -746,6 +753,7 @@ "AWS::DevOpsGuru::LogAnomalyDetectionIntegration", "AWS::NetworkManager::Link", "AWS::QLDB::Stream", + "AWS::SecurityLake::Subscriber", "AWS::SageMaker::NotebookInstance", "AWS::Pinpoint::APNSVoipChannel", "AWS::SSO::InstanceAccessControlAttributeConfiguration", @@ -898,6 +906,7 @@ "AWS::CleanRooms::Collaboration", "AWS::SSM::Association", "AWS::EC2::ClientVpnEndpoint", + "AWS::EntityResolution::IdNamespace", "AWS::CloudFront::ResponseHeadersPolicy", "AWS::SecurityHub::AutomationRule", "AWS::MSK::ClusterPolicy", @@ -1108,7 +1117,6 @@ "aws-wafregional-ipset.json", "aws-redshiftserverless-namespace.json", "aws-apprunner-observabilityconfiguration.json", - "aws-ec2-securitygroupegress.json", "aws-ec2-localgatewayroutetablevpcassociation.json", "aws-config-organizationconfigrule.json", "aws-glue-dataqualityruleset.json", @@ -1119,6 +1127,7 @@ "aws-ec2-networkperformancemetricsubscription.json", "aws-medialive-channel.json", "aws-greengrass-devicedefinition.json", + "aws-cleanroomsml-trainingdataset.json", "aws-cloudfront-continuousdeploymentpolicy.json", "aws-quicksight-analysis.json", "aws-kendra-faq.json", @@ -1139,7 +1148,6 @@ "aws-apigatewayv2-integrationresponse.json", "aws-iotevents-input.json", "aws-ec2-networkacl.json", - "aws-lambda-eventsourcemapping.json", "aws-budgets-budgetsaction.json", "aws-logs-resourcepolicy.json", "aws-lex-botversion.json", @@ -1157,7 +1165,6 @@ "aws-appconfig-application.json", "aws-opsworks-stack.json", "aws-lambda-url.json", - "aws-gamelift-fleet.json", "aws-datasync-locationfsxwindows.json", "aws-gamelift-build.json", "aws-apigateway-requestvalidator.json", @@ -1237,6 +1244,7 @@ "aws-datasync-locationhdfs.json", "aws-events-archive.json", "aws-msk-cluster.json", + "aws-securityhub-delegatedadmin.json", "aws-controltower-enabledbaseline.json", "aws-appstream-appblockbuilder.json", "aws-ec2-vpcendpointconnectionnotification.json", @@ -1287,6 +1295,7 @@ "aws-codegurureviewer-repositoryassociation.json", "aws-networkmanager-transitgatewayregistration.json", "aws-amplify-app.json", + "aws-entityresolution-policystatement.json", "aws-inspectorv2-filter.json", "aws-elasticache-replicationgroup.json", "aws-stepfunctions-statemachinealias.json", @@ -1462,6 +1471,7 @@ "aws-iam-servercertificate.json", "aws-codestarconnections-connection.json", "aws-iot-securityprofile.json", + "aws-globalaccelerator-crossaccountattachment.json", "aws-events-eventbus.json", "aws-docdb-eventsubscription.json", "aws-sqs-queueinlinepolicy.json", @@ -1511,6 +1521,7 @@ "aws-config-organizationconformancepack.json", "aws-connect-quickconnect.json", "aws-logs-querydefinition.json", + "aws-securityhub-productsubscription.json", "aws-iam-instanceprofile.json", "aws-iot-billinggroup.json", "aws-appstream-application.json", @@ -1527,6 +1538,7 @@ "aws-cognito-userpooluicustomizationattachment.json", "aws-sagemaker-notebookinstancelifecycleconfig.json", "aws-imagebuilder-containerrecipe.json", + "aws-codeconnections-connection.json", "aws-connect-rule.json", "aws-efs-accesspoint.json", "aws-omics-referencestore.json", @@ -1557,6 +1569,7 @@ "aws-imagebuilder-workflow.json", "aws-ecs-taskset.json", "aws-omics-variantstore.json", + "aws-securitylake-awslogsource.json", "aws-appsync-apikey.json", "aws-cloudformation-typeactivation.json", "aws-location-map.json", @@ -1705,6 +1718,7 @@ "aws-codebuild-sourcecredential.json", "aws-emr-instancefleetconfig.json", "aws-emr-cluster.json", + "aws-securitylake-datalake.json", "aws-codepipeline-webhook.json", "aws-apigatewayv2-domainname.json", "aws-customerprofiles-eventstream.json", @@ -1737,7 +1751,6 @@ "aws-ec2-localgatewayroutetable.json", "aws-apigateway-resource.json", "aws-sagemaker-appimageconfig.json", - "aws-verifiedpermissions-identitysource.json", "aws-macie-session.json", "aws-elasticloadbalancingv2-targetgroup.json", "aws-applicationautoscaling-scalingpolicy.json", @@ -1788,6 +1801,7 @@ "aws-workspacesweb-truststore.json", "aws-customerprofiles-domain.json", "aws-iot-policy.json", + "aws-aps-scraper.json", "aws-ec2-transitgatewayroute.json", "aws-ssm-maintenancewindow.json", "aws-datazone-domain.json", @@ -1809,6 +1823,7 @@ "aws-devopsguru-loganomalydetectionintegration.json", "aws-networkmanager-link.json", "aws-qldb-stream.json", + "aws-securitylake-subscriber.json", "aws-sagemaker-notebookinstance.json", "aws-pinpoint-apnsvoipchannel.json", "aws-sso-instanceaccesscontrolattributeconfiguration.json", @@ -1840,6 +1855,7 @@ "aws-appsync-graphqlapi.json", "aws-gamelift-matchmakingruleset.json", "aws-ec2-egressonlyinternetgateway.json", + "aws-securityhub-insight.json", "aws-config-conformancepack.json", "aws-ec2-vpccidrblock.json", "aws-aps-workspace.json", @@ -1848,7 +1864,6 @@ "aws-iam-virtualmfadevice.json", "aws-ec2-networkinsightspath.json", "aws-neptune-dbparametergroup.json", - "aws-acmpca-certificateauthority.json", "aws-athena-preparedstatement.json", "aws-autoscaling-scheduledaction.json", "aws-omics-sequencestore.json", @@ -1937,6 +1952,7 @@ "aws-sagemaker-userprofile.json", "aws-iot1click-placement.json", "aws-ec2-prefixlist.json", + "aws-ec2-instance.json", "aws-networkmanager-device.json", "aws-proton-environmentaccountconnection.json", "aws-ec2-subnetcidrblock.json", @@ -1954,6 +1970,7 @@ "aws-cleanrooms-collaboration.json", "aws-ssm-association.json", "aws-ec2-clientvpnendpoint.json", + "aws-entityresolution-idnamespace.json", "aws-cloudfront-responseheaderspolicy.json", "aws-securityhub-automationrule.json", "aws-msk-clusterpolicy.json", diff --git a/src/cfnlint/data/schemas/providers/eu_west_2/aws-acmpca-certificateauthority.json b/src/cfnlint/data/schemas/providers/eu_west_2/aws-acmpca-certificateauthority.json new file mode 100644 index 0000000000..08ec85e5fa --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_west_2/aws-acmpca-certificateauthority.json @@ -0,0 +1,429 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Type", + "/properties/KeyAlgorithm", + "/properties/SigningAlgorithm", + "/properties/Subject", + "/properties/CsrExtensions", + "/properties/KeyStorageSecurityStandard", + "/properties/UsageMode" + ], + "definitions": { + "AccessDescription": { + "additionalProperties": false, + "properties": { + "AccessLocation": { + "$ref": "#/definitions/GeneralName" + }, + "AccessMethod": { + "$ref": "#/definitions/AccessMethod" + } + }, + "required": [ + "AccessMethod", + "AccessLocation" + ], + "type": "object" + }, + "AccessMethod": { + "additionalProperties": false, + "properties": { + "AccessMethodType": { + "$ref": "#/definitions/AccessMethodType" + }, + "CustomObjectIdentifier": { + "$ref": "#/definitions/CustomObjectIdentifier" + } + }, + "type": "object" + }, + "AccessMethodType": { + "type": "string" + }, + "Arn": { + "type": "string" + }, + "CrlConfiguration": { + "additionalProperties": false, + "properties": { + "CrlDistributionPointExtensionConfiguration": { + "$ref": "#/definitions/CrlDistributionPointExtensionConfiguration" + }, + "CustomCname": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + }, + "ExpirationInDays": { + "type": "integer" + }, + "S3BucketName": { + "type": "string" + }, + "S3ObjectAcl": { + "type": "string" + } + }, + "type": "object" + }, + "CrlDistributionPointExtensionConfiguration": { + "additionalProperties": false, + "properties": { + "OmitExtension": { + "type": "boolean" + } + }, + "required": [ + "OmitExtension" + ], + "type": "object" + }, + "CsrExtensions": { + "additionalProperties": false, + "properties": { + "KeyUsage": { + "$ref": "#/definitions/KeyUsage" + }, + "SubjectInformationAccess": { + "$ref": "#/definitions/SubjectInformationAccess" + } + }, + "type": "object" + }, + "CustomAttribute": { + "additionalProperties": false, + "properties": { + "ObjectIdentifier": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "ObjectIdentifier", + "Value" + ], + "type": "object" + }, + "CustomAttributeList": { + "items": { + "$ref": "#/definitions/CustomAttribute" + }, + "type": "array" + }, + "CustomObjectIdentifier": { + "type": "string" + }, + "DnsName": { + "type": "string" + }, + "EdiPartyName": { + "additionalProperties": false, + "properties": { + "NameAssigner": { + "type": "string" + }, + "PartyName": { + "type": "string" + } + }, + "required": [ + "PartyName", + "NameAssigner" + ], + "type": "object" + }, + "GeneralName": { + "additionalProperties": false, + "properties": { + "DirectoryName": { + "$ref": "#/definitions/Subject" + }, + "DnsName": { + "$ref": "#/definitions/DnsName" + }, + "EdiPartyName": { + "$ref": "#/definitions/EdiPartyName" + }, + "IpAddress": { + "$ref": "#/definitions/IpAddress" + }, + "OtherName": { + "$ref": "#/definitions/OtherName" + }, + "RegisteredId": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Rfc822Name": { + "$ref": "#/definitions/Rfc822Name" + }, + "UniformResourceIdentifier": { + "$ref": "#/definitions/UniformResourceIdentifier" + } + }, + "type": "object" + }, + "IpAddress": { + "type": "string" + }, + "KeyUsage": { + "additionalProperties": false, + "properties": { + "CRLSign": { + "default": false, + "type": "boolean" + }, + "DataEncipherment": { + "default": false, + "type": "boolean" + }, + "DecipherOnly": { + "default": false, + "type": "boolean" + }, + "DigitalSignature": { + "default": false, + "type": "boolean" + }, + "EncipherOnly": { + "default": false, + "type": "boolean" + }, + "KeyAgreement": { + "default": false, + "type": "boolean" + }, + "KeyCertSign": { + "default": false, + "type": "boolean" + }, + "KeyEncipherment": { + "default": false, + "type": "boolean" + }, + "NonRepudiation": { + "default": false, + "type": "boolean" + } + }, + "type": "object" + }, + "OcspConfiguration": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + }, + "OcspCustomCname": { + "type": "string" + } + }, + "type": "object" + }, + "OtherName": { + "additionalProperties": false, + "properties": { + "TypeId": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "TypeId", + "Value" + ], + "type": "object" + }, + "RevocationConfiguration": { + "additionalProperties": false, + "properties": { + "CrlConfiguration": { + "$ref": "#/definitions/CrlConfiguration" + }, + "OcspConfiguration": { + "$ref": "#/definitions/OcspConfiguration" + } + }, + "type": "object" + }, + "Rfc822Name": { + "type": "string" + }, + "Subject": { + "additionalProperties": false, + "properties": { + "CommonName": { + "type": "string" + }, + "Country": { + "type": "string" + }, + "CustomAttributes": { + "$ref": "#/definitions/CustomAttributeList" + }, + "DistinguishedNameQualifier": { + "type": "string" + }, + "GenerationQualifier": { + "type": "string" + }, + "GivenName": { + "type": "string" + }, + "Initials": { + "type": "string" + }, + "Locality": { + "type": "string" + }, + "Organization": { + "type": "string" + }, + "OrganizationalUnit": { + "type": "string" + }, + "Pseudonym": { + "type": "string" + }, + "SerialNumber": { + "type": "string" + }, + "State": { + "type": "string" + }, + "Surname": { + "type": "string" + }, + "Title": { + "type": "string" + } + }, + "type": "object" + }, + "SubjectInformationAccess": { + "items": { + "$ref": "#/definitions/AccessDescription" + }, + "type": "array" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "UniformResourceIdentifier": { + "type": "string" + } + }, + "handlers": { + "create": { + "permissions": [ + "acm-pca:CreateCertificateAuthority", + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr" + ] + }, + "delete": { + "permissions": [ + "acm-pca:DeleteCertificateAuthority", + "acm-pca:DescribeCertificateAuthority" + ] + }, + "list": { + "permissions": [ + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr", + "acm-pca:ListCertificateAuthorities", + "acm-pca:ListTags" + ] + }, + "read": { + "permissions": [ + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr", + "acm-pca:ListTags" + ] + }, + "update": { + "permissions": [ + "acm-pca:ListTags", + "acm-pca:TagCertificateAuthority", + "acm-pca:UntagCertificateAuthority", + "acm-pca:UpdateCertificateAuthority" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "$ref": "#/definitions/Arn" + }, + "CertificateSigningRequest": { + "type": "string" + }, + "CsrExtensions": { + "$ref": "#/definitions/CsrExtensions" + }, + "KeyAlgorithm": { + "type": "string" + }, + "KeyStorageSecurityStandard": { + "type": "string" + }, + "RevocationConfiguration": { + "$ref": "#/definitions/RevocationConfiguration" + }, + "SigningAlgorithm": { + "type": "string" + }, + "Subject": { + "$ref": "#/definitions/Subject" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "Type": { + "type": "string" + }, + "UsageMode": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CertificateSigningRequest" + ], + "required": [ + "Type", + "KeyAlgorithm", + "SigningAlgorithm", + "Subject" + ], + "sourceUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_ACMPCA.html", + "typeName": "AWS::ACMPCA::CertificateAuthority", + "writeOnlyProperties": [ + "/properties/Subject", + "/properties/Subject", + "/properties/CsrExtensions", + "/properties/Tags", + "/properties/RevocationConfiguration", + "/properties/KeyStorageSecurityStandard" + ] +} diff --git a/src/cfnlint/data/schemas/providers/eu_west_2/aws-dynamodb-globaltable.json b/src/cfnlint/data/schemas/providers/eu_west_2/aws-dynamodb-globaltable.json index 4e5ba995cb..ae37e9142b 100644 --- a/src/cfnlint/data/schemas/providers/eu_west_2/aws-dynamodb-globaltable.json +++ b/src/cfnlint/data/schemas/providers/eu_west_2/aws-dynamodb-globaltable.json @@ -8,6 +8,27 @@ ] ], "additionalProperties": false, + "allOf": [ + { + "if": { + "required": [ + "LocalSecondaryIndexes" + ], + "type": "object" + }, + "then": { + "properties": { + "AttributeDefinitions": { + "minItems": 2 + }, + "KeySchema": { + "minItems": 2 + } + }, + "type": "object" + } + } + ], "createOnlyProperties": [ "/properties/LocalSecondaryIndexes", "/properties/TableName", @@ -79,13 +100,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "minItems": 1, - "type": "array", - "uniqueItems": true + "minItems": 1 }, "Projection": { "$ref": "#/definitions/Projection" @@ -102,22 +119,60 @@ "type": "object" }, "KeySchema": { - "additionalProperties": false, - "properties": { - "AttributeName": { - "maxLength": 255, - "minLength": 1, - "type": "string" + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "KeyType": { + "enum": [ + "HASH", + "RANGE" + ], + "type": "string" + } }, - "KeyType": { - "type": "string" - } + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" }, - "required": [ - "KeyType", - "AttributeName" + "prefixItems": [ + { + "additionalProperties": false, + "properties": { + "KeyType": { + "const": "HASH", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + }, + { + "properties": { + "KeyType": { + "const": "RANGE", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + } ], - "type": "object" + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "KinesisStreamSpecification": { "additionalProperties": false, @@ -147,12 +202,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "type": "array", - "uniqueItems": true + "minItems": 2 }, "Projection": { "$ref": "#/definitions/Projection" @@ -511,7 +563,10 @@ }, "minItems": 1, "type": "array", - "uniqueItems": true + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "BillingMode": { "type": "string" @@ -525,13 +580,9 @@ "uniqueItems": true }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "minItems": 1, - "type": "array", - "uniqueItems": true + "minItems": 1 }, "LocalSecondaryIndexes": { "insertionOrder": false, diff --git a/src/cfnlint/data/schemas/providers/eu_west_2/aws-dynamodb-table.json b/src/cfnlint/data/schemas/providers/eu_west_2/aws-dynamodb-table.json index efc82f1d70..f21d084b10 100644 --- a/src/cfnlint/data/schemas/providers/eu_west_2/aws-dynamodb-table.json +++ b/src/cfnlint/data/schemas/providers/eu_west_2/aws-dynamodb-table.json @@ -1,5 +1,26 @@ { "additionalProperties": false, + "allOf": [ + { + "if": { + "required": [ + "LocalSecondaryIndexes" + ], + "type": "object" + }, + "then": { + "properties": { + "AttributeDefinitions": { + "minItems": 2 + }, + "KeySchema": { + "minItems": 2 + } + }, + "type": "object" + } + } + ], "cfnLint": [ "AWS::DynamoDB::Table/Properties" ], @@ -95,11 +116,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 }, "Projection": { "$ref": "#/definitions/Projection" @@ -147,24 +166,57 @@ "type": "object" }, "KeySchema": { - "additionalProperties": false, - "properties": { - "AttributeName": { - "type": "string" + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "type": "string" + }, + "KeyType": { + "enum": [ + "HASH", + "RANGE" + ], + "type": "string" + } }, - "KeyType": { - "enum": [ - "HASH", - "RANGE" + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" + }, + "prefixItems": [ + { + "properties": { + "KeyType": { + "const": "HASH", + "type": "string" + } + }, + "required": [ + "KeyType" ], - "type": "string" + "type": "object" + }, + { + "properties": { + "KeyType": { + "const": "RANGE", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" } - }, - "required": [ - "KeyType", - "AttributeName" ], - "type": "object" + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "KinesisStreamSpecification": { "additionalProperties": false, @@ -192,11 +244,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 2 }, "Projection": { "$ref": "#/definitions/Projection" @@ -451,7 +501,10 @@ "$ref": "#/definitions/AttributeDefinition" }, "type": "array", - "uniqueItems": true + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "BillingMode": { "enum": [ @@ -479,11 +532,9 @@ "KeySchema": { "oneOf": [ { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 }, { "type": "object" diff --git a/src/cfnlint/data/schemas/providers/eu_west_2/aws-ec2-instance.json b/src/cfnlint/data/schemas/providers/eu_west_2/aws-ec2-instance.json deleted file mode 100644 index 7b3bfed595..0000000000 --- a/src/cfnlint/data/schemas/providers/eu_west_2/aws-ec2-instance.json +++ /dev/null @@ -1,571 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ElasticGpuSpecifications", - "/properties/Ipv6Addresses", - "/properties/PlacementGroupName", - "/properties/HostResourceGroupArn", - "/properties/ImageId", - "/properties/CpuOptions", - "/properties/PrivateIpAddress", - "/properties/ElasticInferenceAccelerators", - "/properties/EnclaveOptions", - "/properties/HibernationOptions", - "/properties/KeyName", - "/properties/LicenseSpecifications", - "/properties/NetworkInterfaces", - "/properties/AvailabilityZone", - "/properties/SubnetId", - "/properties/LaunchTemplate", - "/properties/SecurityGroups", - "/properties/Ipv6AddressCount" - ], - "definitions": { - "AssociationParameter": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "BlockDeviceMapping": { - "additionalProperties": false, - "properties": { - "DeviceName": { - "type": "string" - }, - "Ebs": { - "$ref": "#/definitions/Ebs" - }, - "NoDevice": { - "$ref": "#/definitions/NoDevice" - }, - "VirtualName": { - "type": "string" - } - }, - "required": [ - "DeviceName" - ], - "requiredXor": [ - "VirtualName", - "Ebs", - "NoDevice" - ], - "type": "object" - }, - "CpuOptions": { - "additionalProperties": false, - "properties": { - "CoreCount": { - "type": "integer" - }, - "ThreadsPerCore": { - "type": "integer" - } - }, - "type": "object" - }, - "CreditSpecification": { - "additionalProperties": false, - "properties": { - "CPUCredits": { - "type": "string" - } - }, - "type": "object" - }, - "Ebs": { - "additionalProperties": false, - "properties": { - "DeleteOnTermination": { - "type": "boolean" - }, - "Encrypted": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "KmsKeyId": { - "type": "string" - }, - "SnapshotId": { - "type": "string" - }, - "VolumeSize": { - "type": "integer" - }, - "VolumeType": { - "type": "string" - } - }, - "type": "object" - }, - "ElasticGpuSpecification": { - "additionalProperties": false, - "properties": { - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "ElasticInferenceAccelerator": { - "additionalProperties": false, - "properties": { - "Count": { - "type": "integer" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "EnclaveOptions": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - } - }, - "type": "object" - }, - "HibernationOptions": { - "additionalProperties": false, - "properties": { - "Configured": { - "type": "boolean" - } - }, - "type": "object" - }, - "InstanceIpv6Address": { - "additionalProperties": false, - "properties": { - "Ipv6Address": { - "type": "string" - } - }, - "required": [ - "Ipv6Address" - ], - "type": "object" - }, - "LaunchTemplateSpecification": { - "additionalProperties": false, - "properties": { - "LaunchTemplateId": { - "type": "string" - }, - "LaunchTemplateName": { - "type": "string" - }, - "Version": { - "type": "string" - } - }, - "required": [ - "Version" - ], - "type": "object" - }, - "LicenseSpecification": { - "additionalProperties": false, - "properties": { - "LicenseConfigurationArn": { - "type": "string" - } - }, - "required": [ - "LicenseConfigurationArn" - ], - "type": "object" - }, - "NetworkInterface": { - "additionalProperties": false, - "properties": { - "AssociateCarrierIpAddress": { - "type": "boolean" - }, - "AssociatePublicIpAddress": { - "type": "boolean" - }, - "DeleteOnTermination": { - "type": "boolean" - }, - "Description": { - "type": "string" - }, - "DeviceIndex": { - "type": "string" - }, - "GroupSet": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": false - }, - "NetworkInterfaceId": { - "type": "string" - }, - "PrivateIpAddress": { - "type": "string" - }, - "PrivateIpAddresses": { - "items": { - "$ref": "#/definitions/PrivateIpAddressSpecification" - }, - "type": "array", - "uniqueItems": false - }, - "SecondaryPrivateIpAddressCount": { - "type": "integer" - }, - "SubnetId": { - "type": "string" - } - }, - "required": [ - "DeviceIndex" - ], - "type": "object" - }, - "NoDevice": { - "additionalProperties": false, - "type": "object" - }, - "PrivateDnsNameOptions": { - "additionalProperties": false, - "properties": { - "EnableResourceNameDnsAAAARecord": { - "type": "boolean" - }, - "EnableResourceNameDnsARecord": { - "type": "boolean" - }, - "HostnameType": { - "type": "string" - } - }, - "type": "object" - }, - "PrivateIpAddressSpecification": { - "additionalProperties": false, - "properties": { - "Primary": { - "type": "boolean" - }, - "PrivateIpAddress": { - "type": "string" - } - }, - "required": [ - "PrivateIpAddress", - "Primary" - ], - "type": "object" - }, - "SsmAssociation": { - "additionalProperties": false, - "properties": { - "AssociationParameters": { - "items": { - "$ref": "#/definitions/AssociationParameter" - }, - "type": "array", - "uniqueItems": false - }, - "DocumentName": { - "type": "string" - } - }, - "required": [ - "DocumentName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "Volume": { - "additionalProperties": false, - "properties": { - "Device": { - "type": "string" - }, - "VolumeId": { - "type": "string" - } - }, - "required": [ - "VolumeId", - "Device" - ], - "type": "object" - } - }, - "dependentExcluded": { - "NetworkInterfaces": [ - "SubnetId" - ], - "SubnetId": [ - "NetworkInterfaces" - ] - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AdditionalInfo": { - "type": "string" - }, - "Affinity": { - "enum": [ - "default", - "host" - ], - "type": "string" - }, - "AvailabilityZone": { - "cfnLint": [ - "AWS::EC2::Instance/Properties/AvailabilityZone" - ], - "type": "string" - }, - "BlockDeviceMappings": { - "items": { - "$ref": "#/definitions/BlockDeviceMapping" - }, - "type": "array", - "uniqueItems": false - }, - "CpuOptions": { - "$ref": "#/definitions/CpuOptions" - }, - "CreditSpecification": { - "$ref": "#/definitions/CreditSpecification" - }, - "DisableApiTermination": { - "type": "boolean" - }, - "EbsOptimized": { - "type": "boolean" - }, - "ElasticGpuSpecifications": { - "items": { - "$ref": "#/definitions/ElasticGpuSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "ElasticInferenceAccelerators": { - "items": { - "$ref": "#/definitions/ElasticInferenceAccelerator" - }, - "type": "array", - "uniqueItems": true - }, - "EnclaveOptions": { - "$ref": "#/definitions/EnclaveOptions" - }, - "HibernationOptions": { - "$ref": "#/definitions/HibernationOptions" - }, - "HostId": { - "type": "string" - }, - "HostResourceGroupArn": { - "type": "string" - }, - "IamInstanceProfile": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "ImageId": { - "type": "string" - }, - "InstanceInitiatedShutdownBehavior": { - "type": "string" - }, - "InstanceType": { - "cfnLint": [ - "AWS::EC2::Instance/Properties/InstanceType" - ], - "type": "string" - }, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": false - }, - "KernelId": { - "type": "string" - }, - "KeyName": { - "type": "string" - }, - "LaunchTemplate": { - "$ref": "#/definitions/LaunchTemplateSpecification" - }, - "LicenseSpecifications": { - "items": { - "$ref": "#/definitions/LicenseSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "Monitoring": { - "type": "boolean" - }, - "NetworkInterfaces": { - "items": { - "$ref": "#/definitions/NetworkInterface" - }, - "type": "array", - "uniqueItems": false - }, - "PlacementGroupName": { - "type": "string" - }, - "PrivateDnsName": { - "type": "string" - }, - "PrivateDnsNameOptions": { - "$ref": "#/definitions/PrivateDnsNameOptions" - }, - "PrivateIp": { - "type": "string" - }, - "PrivateIpAddress": { - "type": "string" - }, - "PropagateTagsToVolumeOnCreation": { - "type": "boolean" - }, - "PublicDnsName": { - "type": "string" - }, - "PublicIp": { - "type": "string" - }, - "RamdiskId": { - "type": "string" - }, - "SecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SecurityGroups": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SourceDestCheck": { - "type": "boolean" - }, - "SsmAssociations": { - "items": { - "$ref": "#/definitions/SsmAssociation" - }, - "type": "array", - "uniqueItems": false - }, - "SubnetId": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "Tenancy": { - "enum": [ - "default", - "dedicated", - "host" - ], - "type": "string" - }, - "UserData": { - "type": "string" - }, - "Volumes": { - "items": { - "$ref": "#/definitions/Volume" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/PublicIp", - "/properties/Id", - "/properties/PublicDnsName", - "/properties/PrivateDnsName", - "/properties/PrivateIp" - ], - "requiredXor": [ - "ImageId", - "LaunchTemplate" - ], - "typeName": "AWS::EC2::Instance" -} diff --git a/src/cfnlint/data/schemas/providers/eu_west_2/aws-ec2-securitygroupegress.json b/src/cfnlint/data/schemas/providers/eu_west_2/aws-ec2-securitygroupegress.json new file mode 100644 index 0000000000..f94631dad2 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_west_2/aws-ec2-securitygroupegress.json @@ -0,0 +1,98 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::EC2::SecurityGroupEgress/Properties" + ], + "createOnlyProperties": [ + "/properties/IpProtocol", + "/properties/DestinationSecurityGroupId", + "/properties/ToPort", + "/properties/CidrIp", + "/properties/FromPort", + "/properties/GroupId", + "/properties/CidrIpv6", + "/properties/DestinationPrefixListId" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:AuthorizeSecurityGroupEgress", + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "delete": { + "permissions": [ + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "update": { + "permissions": [ + "ec2:UpdateSecurityGroupRuleDescriptionsEgress" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CidrIp": { + "type": "string" + }, + "CidrIpv6": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "DestinationPrefixListId": { + "type": "string" + }, + "DestinationSecurityGroupId": { + "type": "string" + }, + "FromPort": { + "minimum": -1, + "type": "integer" + }, + "GroupId": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "IpProtocol": { + "type": "string" + }, + "ToPort": { + "minimum": -1, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IpProtocol", + "GroupId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SecurityGroupEgress" +} diff --git a/src/cfnlint/data/schemas/providers/eu_west_2/aws-gamelift-fleet.json b/src/cfnlint/data/schemas/providers/eu_west_2/aws-gamelift-fleet.json new file mode 100644 index 0000000000..fb6db12d8b --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_west_2/aws-gamelift-fleet.json @@ -0,0 +1,523 @@ +{ + "$schema": "https://schema.cloudformation.us-east-1.amazonaws.com/provider.definition.schema.v1.json", + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplyCapacity", + "/properties/BuildId", + "/properties/CertificateConfiguration", + "/properties/EC2InstanceType", + "/properties/FleetType", + "/properties/InstanceRoleARN", + "/properties/InstanceRoleCredentialsProvider", + "/properties/LogPaths", + "/properties/PeerVpcAwsAccountId", + "/properties/PeerVpcId", + "/properties/ScriptId", + "/properties/ServerLaunchParameters", + "/properties/ServerLaunchPath", + "/properties/ComputeType" + ], + "definitions": { + "AnywhereConfiguration": { + "additionalProperties": false, + "properties": { + "Cost": { + "maxLength": 11, + "minLength": 1, + "pattern": "^\\d{1,5}(?:\\.\\d{1,5})?$", + "type": "string" + } + }, + "required": [ + "Cost" + ] + }, + "CertificateConfiguration": { + "additionalProperties": false, + "properties": { + "CertificateType": { + "enum": [ + "DISABLED", + "GENERATED" + ], + "type": "string" + } + }, + "required": [ + "CertificateType" + ], + "type": "object" + }, + "IpPermission": { + "additionalProperties": false, + "properties": { + "FromPort": { + "maximum": 60000, + "minimum": 1, + "type": "integer" + }, + "IpRange": { + "pattern": "(^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(/([0-9]|[1-2][0-9]|3[0-2]))$)", + "type": "string" + }, + "Protocol": { + "enum": [ + "TCP", + "UDP" + ], + "type": "string" + }, + "ToPort": { + "maximum": 60000, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "FromPort", + "IpRange", + "Protocol", + "ToPort" + ], + "type": "object" + }, + "Location": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[A-Za-z0-9\\-]+", + "type": "string" + }, + "LocationCapacity": { + "additionalProperties": false, + "properties": { + "DesiredEC2Instances": { + "minimum": 0, + "type": "integer" + }, + "MaxSize": { + "minimum": 0, + "type": "integer" + }, + "MinSize": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "DesiredEC2Instances", + "MinSize", + "MaxSize" + ], + "type": "object" + }, + "LocationConfiguration": { + "additionalProperties": false, + "properties": { + "Location": { + "$ref": "#/definitions/Location" + }, + "LocationCapacity": { + "$ref": "#/definitions/LocationCapacity" + } + }, + "required": [ + "Location" + ], + "type": "object" + }, + "ResourceCreationLimitPolicy": { + "additionalProperties": false, + "properties": { + "NewGameSessionsPerCreator": { + "minimum": 0, + "type": "integer" + }, + "PolicyPeriodInMinutes": { + "minimum": 0, + "type": "integer" + } + }, + "type": "object" + }, + "RuntimeConfiguration": { + "additionalProperties": false, + "properties": { + "GameSessionActivationTimeoutSeconds": { + "maximum": 600, + "minimum": 1, + "type": "integer" + }, + "MaxConcurrentGameSessionActivations": { + "maximum": 2147483647, + "minimum": 1, + "type": "integer" + }, + "ServerProcesses": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ServerProcess" + }, + "maxItems": 50, + "type": "array" + } + }, + "type": "object" + }, + "ScalingPolicy": { + "additionalProperties": false, + "properties": { + "ComparisonOperator": { + "enum": [ + "GreaterThanOrEqualToThreshold", + "GreaterThanThreshold", + "LessThanThreshold", + "LessThanOrEqualToThreshold" + ], + "type": "string" + }, + "EvaluationPeriods": { + "minimum": 1, + "type": "integer" + }, + "Location": { + "$ref": "#/definitions/Location" + }, + "MetricName": { + "enum": [ + "ActivatingGameSessions", + "ActiveGameSessions", + "ActiveInstances", + "AvailableGameSessions", + "AvailablePlayerSessions", + "CurrentPlayerSessions", + "IdleInstances", + "PercentAvailableGameSessions", + "PercentIdleInstances", + "QueueDepth", + "WaitTime", + "ConcurrentActivatableGameSessions" + ], + "type": "string" + }, + "Name": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "PolicyType": { + "enum": [ + "RuleBased", + "TargetBased" + ], + "type": "string" + }, + "ScalingAdjustment": { + "type": "integer" + }, + "ScalingAdjustmentType": { + "enum": [ + "ChangeInCapacity", + "ExactCapacity", + "PercentChangeInCapacity" + ], + "type": "string" + }, + "Status": { + "enum": [ + "ACTIVE", + "UPDATE_REQUESTED", + "UPDATING", + "DELETE_REQUESTED", + "DELETING", + "DELETED", + "ERROR" + ], + "type": "string" + }, + "TargetConfiguration": { + "$ref": "#/definitions/TargetConfiguration" + }, + "Threshold": { + "type": "number" + }, + "UpdateStatus": { + "enum": [ + "PENDING_UPDATE" + ], + "type": "string" + } + }, + "required": [ + "MetricName", + "Name" + ], + "type": "object" + }, + "ServerProcess": { + "additionalProperties": false, + "properties": { + "ConcurrentExecutions": { + "minimum": 1, + "type": "integer" + }, + "LaunchPath": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^([Cc]:\\\\game\\S+|/local/game/\\S+)", + "type": "string" + }, + "Parameters": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ConcurrentExecutions", + "LaunchPath" + ], + "type": "object" + }, + "TargetConfiguration": { + "additionalProperties": false, + "properties": { + "TargetValue": { + "type": "number" + } + }, + "required": [ + "TargetValue" + ], + "type": "object" + } + }, + "deprecatedProperties": [ + "/properties/LogPaths", + "/properties/ServerLaunchParameters", + "/properties/ServerLaunchPath" + ], + "handlers": { + "create": { + "permissions": [ + "gamelift:CreateFleet", + "gamelift:DescribeFleetAttributes", + "gamelift:DescribeFleetLocationAttributes", + "gamelift:UpdateFleetCapacity", + "gamelift:DescribeFleetLocationCapacity", + "gamelift:PutScalingPolicy", + "gamelift:DescribeScalingPolicies" + ] + }, + "delete": { + "permissions": [ + "gamelift:DeleteFleet", + "gamelift:DescribeFleetLocationCapacity", + "gamelift:DescribeScalingPolicies", + "gamelift:DeleteScalingPolicy" + ] + }, + "list": { + "permissions": [ + "gamelift:ListFleets" + ] + }, + "read": { + "permissions": [ + "gamelift:DescribeFleetAttributes", + "gamelift:DescribeFleetLocationAttributes", + "gamelift:DescribeFleetCapacity", + "gamelift:DescribeFleetPortSettings", + "gamelift:DescribeFleetUtilization", + "gamelift:DescribeRuntimeConfiguration", + "gamelift:DescribeEC2InstanceLimits", + "gamelift:DescribeFleetEvents", + "gamelift:DescribeScalingPolicies" + ] + }, + "update": { + "permissions": [ + "gamelift:UpdateFleetAttributes", + "gamelift:CreateFleetLocations", + "gamelift:DeleteFleetLocations", + "gamelift:UpdateFleetCapacity", + "gamelift:UpdateFleetPortSettings", + "gamelift:UpdateRuntimeConfiguration", + "gamelift:DescribeFleetLocationCapacity", + "gamelift:DescribeFleetPortSettings", + "gamelift:DescribeFleetLocationAttributes", + "gamelift:PutScalingPolicy", + "gamelift:DescribeScalingPolicies", + "gamelift:DeleteScalingPolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/FleetId" + ], + "properties": { + "AnywhereConfiguration": { + "$ref": "#/definitions/AnywhereConfiguration" + }, + "ApplyCapacity": { + "enum": [ + "ON_UPDATE", + "ON_CREATE_AND_UPDATE" + ], + "type": "string" + }, + "BuildId": { + "pattern": "^build-\\S+|^arn:.*:build/build-\\S+", + "type": "string" + }, + "CertificateConfiguration": { + "$ref": "#/definitions/CertificateConfiguration" + }, + "ComputeType": { + "enum": [ + "EC2", + "ANYWHERE" + ], + "type": "string" + }, + "Description": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "DesiredEC2Instances": { + "minimum": 0, + "type": "integer" + }, + "EC2InboundPermissions": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/IpPermission" + }, + "maxItems": 50, + "type": "array" + }, + "EC2InstanceType": { + "cfnLint": "AWS::GameLift::Fleet/EC2InstanceType", + "pattern": "^.*..*$", + "type": "string" + }, + "FleetId": { + "pattern": "^fleet-\\S+", + "type": "string" + }, + "FleetType": { + "enum": [ + "ON_DEMAND", + "SPOT" + ], + "type": "string" + }, + "InstanceRoleARN": { + "minLength": 1, + "pattern": "^arn:aws(-.*)?:[a-z-]+:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$", + "type": "string" + }, + "InstanceRoleCredentialsProvider": { + "enum": [ + "SHARED_CREDENTIAL_FILE" + ], + "type": "string" + }, + "Locations": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LocationConfiguration" + }, + "maxItems": 100, + "minItems": 1, + "type": "array" + }, + "LogPaths": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "MaxSize": { + "minimum": 0, + "type": "integer" + }, + "MetricGroups": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "maxItems": 1, + "type": "array" + }, + "MinSize": { + "minimum": 0, + "type": "integer" + }, + "Name": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "NewGameSessionProtectionPolicy": { + "enum": [ + "FullProtection", + "NoProtection" + ], + "type": "string" + }, + "PeerVpcAwsAccountId": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^[0-9]{12}$", + "type": "string" + }, + "PeerVpcId": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^vpc-\\S+", + "type": "string" + }, + "ResourceCreationLimitPolicy": { + "$ref": "#/definitions/ResourceCreationLimitPolicy" + }, + "RuntimeConfiguration": { + "$ref": "#/definitions/RuntimeConfiguration" + }, + "ScalingPolicies": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ScalingPolicy" + }, + "maxItems": 50, + "type": "array" + }, + "ScriptId": { + "pattern": "^script-\\S+|^arn:.*:script/script-\\S+", + "type": "string" + }, + "ServerLaunchParameters": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "ServerLaunchPath": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/FleetId" + ], + "required": [ + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-gamelift.git", + "taggable": true, + "typeName": "AWS::GameLift::Fleet", + "writeOnlyProperties": [ + "/properties/ApplyCapacity" + ] +} diff --git a/src/cfnlint/data/schemas/providers/eu_west_2/aws-lambda-eventsourcemapping.json b/src/cfnlint/data/schemas/providers/eu_west_2/aws-lambda-eventsourcemapping.json new file mode 100644 index 0000000000..cb7599c139 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_west_2/aws-lambda-eventsourcemapping.json @@ -0,0 +1,353 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::Lambda::EventSourceMapping/Properties" + ], + "createOnlyProperties": [ + "/properties/EventSourceArn", + "/properties/StartingPosition", + "/properties/StartingPositionTimestamp", + "/properties/SelfManagedEventSource", + "/properties/AmazonManagedKafkaEventSourceConfig", + "/properties/SelfManagedKafkaEventSourceConfig" + ], + "definitions": { + "AmazonManagedKafkaEventSourceConfig": { + "additionalProperties": false, + "properties": { + "ConsumerGroupId": { + "$ref": "#/definitions/ConsumerGroupId" + } + }, + "type": "object" + }, + "ConsumerGroupId": { + "maxLength": 200, + "minLength": 1, + "pattern": "[a-zA-Z0-9-\\/*:_+=.@-]*", + "type": "string" + }, + "DestinationConfig": { + "additionalProperties": false, + "properties": { + "OnFailure": { + "$ref": "#/definitions/OnFailure" + } + }, + "type": "object" + }, + "DocumentDBEventSourceConfig": { + "additionalProperties": false, + "properties": { + "CollectionName": { + "maxLength": 57, + "minLength": 1, + "type": "string" + }, + "DatabaseName": { + "maxLength": 63, + "minLength": 1, + "type": "string" + }, + "FullDocument": { + "enum": [ + "UpdateLookup", + "Default" + ], + "type": "string" + } + }, + "type": "object" + }, + "Endpoints": { + "additionalProperties": false, + "properties": { + "KafkaBootstrapServers": { + "items": { + "maxLength": 300, + "minLength": 1, + "pattern": "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9]):[0-9]{1,5}", + "type": "string" + }, + "maxItems": 10, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "Filter": { + "additionalProperties": false, + "properties": { + "Pattern": { + "maxLength": 4096, + "minLength": 0, + "pattern": ".*", + "type": "string" + } + }, + "type": "object" + }, + "FilterCriteria": { + "additionalProperties": false, + "properties": { + "Filters": { + "items": { + "$ref": "#/definitions/Filter" + }, + "maxItems": 20, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "MaximumConcurrency": { + "maximum": 1000, + "minimum": 2, + "type": "integer" + }, + "OnFailure": { + "additionalProperties": false, + "properties": { + "Destination": { + "maxLength": 1024, + "minLength": 12, + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "type": "string" + } + }, + "type": "object" + }, + "ScalingConfig": { + "additionalProperties": false, + "properties": { + "MaximumConcurrency": { + "$ref": "#/definitions/MaximumConcurrency" + } + }, + "type": "object" + }, + "SelfManagedEventSource": { + "additionalProperties": false, + "properties": { + "Endpoints": { + "$ref": "#/definitions/Endpoints" + } + }, + "type": "object" + }, + "SelfManagedKafkaEventSourceConfig": { + "additionalProperties": false, + "properties": { + "ConsumerGroupId": { + "$ref": "#/definitions/ConsumerGroupId" + } + }, + "type": "object" + }, + "SourceAccessConfiguration": { + "additionalProperties": false, + "properties": { + "Type": { + "enum": [ + "BASIC_AUTH", + "VPC_SUBNET", + "VPC_SECURITY_GROUP", + "SASL_SCRAM_512_AUTH", + "SASL_SCRAM_256_AUTH", + "VIRTUAL_HOST", + "CLIENT_CERTIFICATE_TLS_AUTH", + "SERVER_ROOT_CA_CERTIFICATE" + ], + "type": "string" + }, + "URI": { + "maxLength": 200, + "minLength": 1, + "pattern": "[a-zA-Z0-9-\\/*:_+=.@-]*", + "type": "string" + } + }, + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "lambda:CreateEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + }, + "delete": { + "permissions": [ + "lambda:DeleteEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + }, + "list": { + "permissions": [ + "lambda:ListEventSourceMappings" + ] + }, + "read": { + "permissions": [ + "lambda:GetEventSourceMapping" + ] + }, + "update": { + "permissions": [ + "lambda:UpdateEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AmazonManagedKafkaEventSourceConfig": { + "$ref": "#/definitions/AmazonManagedKafkaEventSourceConfig" + }, + "BatchSize": { + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "BisectBatchOnFunctionError": { + "type": "boolean" + }, + "DestinationConfig": { + "$ref": "#/definitions/DestinationConfig" + }, + "DocumentDBEventSourceConfig": { + "$ref": "#/definitions/DocumentDBEventSourceConfig" + }, + "Enabled": { + "type": "boolean" + }, + "EventSourceArn": { + "maxLength": 1024, + "minLength": 12, + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "type": "string" + }, + "FilterCriteria": { + "$ref": "#/definitions/FilterCriteria" + }, + "FunctionName": { + "maxLength": 140, + "minLength": 1, + "pattern": "(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?", + "type": "string" + }, + "FunctionResponseTypes": { + "items": { + "enum": [ + "ReportBatchItemFailures" + ], + "type": "string" + }, + "maxLength": 1, + "minLength": 0, + "type": "array", + "uniqueItems": true + }, + "Id": { + "maxLength": 36, + "minLength": 36, + "pattern": "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + "type": "string" + }, + "MaximumBatchingWindowInSeconds": { + "maximum": 300, + "minimum": 0, + "type": "integer" + }, + "MaximumRecordAgeInSeconds": { + "maximum": 604800, + "minimum": -1, + "type": "integer" + }, + "MaximumRetryAttempts": { + "maximum": 10000, + "minimum": -1, + "type": "integer" + }, + "ParallelizationFactor": { + "maximum": 10, + "minimum": 1, + "type": "integer" + }, + "Queues": { + "items": { + "maxLength": 1000, + "minLength": 1, + "pattern": "[\\s\\S]*", + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "ScalingConfig": { + "$ref": "#/definitions/ScalingConfig" + }, + "SelfManagedEventSource": { + "$ref": "#/definitions/SelfManagedEventSource" + }, + "SelfManagedKafkaEventSourceConfig": { + "$ref": "#/definitions/SelfManagedKafkaEventSourceConfig" + }, + "SourceAccessConfigurations": { + "items": { + "$ref": "#/definitions/SourceAccessConfiguration" + }, + "maxItems": 22, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "StartingPosition": { + "enum": [ + "TRIM_HORIZON", + "LATEST", + "AT_TIMESTAMP" + ], + "maxLength": 12, + "minLength": 6, + "pattern": "(LATEST|TRIM_HORIZON|AT_TIMESTAMP)+", + "type": "string" + }, + "StartingPositionTimestamp": { + "type": "number" + }, + "Topics": { + "items": { + "maxLength": 249, + "minLength": 1, + "pattern": "^[^.]([a-zA-Z0-9\\-_.]+)", + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "TumblingWindowInSeconds": { + "maximum": 900, + "minimum": 0, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "FunctionName" + ], + "typeName": "AWS::Lambda::EventSourceMapping" +} diff --git a/src/cfnlint/data/schemas/providers/eu_west_2/aws-securityhub-delegatedadmin.json b/src/cfnlint/data/schemas/providers/eu_west_2/aws-securityhub-delegatedadmin.json deleted file mode 100644 index 12b73dd551..0000000000 --- a/src/cfnlint/data/schemas/providers/eu_west_2/aws-securityhub-delegatedadmin.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AdminAccountId" - ], - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AdminAccountId": { - "type": "string" - }, - "DelegatedAdminIdentifier": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "Status": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/DelegatedAdminIdentifier", - "/properties/Status" - ], - "required": [ - "AdminAccountId" - ], - "typeName": "AWS::SecurityHub::DelegatedAdmin" -} diff --git a/src/cfnlint/data/schemas/providers/eu_west_2/aws-securityhub-insight.json b/src/cfnlint/data/schemas/providers/eu_west_2/aws-securityhub-insight.json deleted file mode 100644 index 3fc396909f..0000000000 --- a/src/cfnlint/data/schemas/providers/eu_west_2/aws-securityhub-insight.json +++ /dev/null @@ -1,844 +0,0 @@ -{ - "additionalProperties": false, - "definitions": { - "AwsSecurityFindingFilters": { - "additionalProperties": false, - "properties": { - "AwsAccountId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "AwsAccountName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "CompanyName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ComplianceAssociatedStandardsId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ComplianceSecurityControlId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ComplianceSecurityControlParametersName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ComplianceSecurityControlParametersValue": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ComplianceStatus": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "Confidence": { - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "type": "array", - "uniqueItems": true - }, - "CreatedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "Criticality": { - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "type": "array", - "uniqueItems": true - }, - "Description": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "FindingProviderFieldsConfidence": { - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "type": "array", - "uniqueItems": true - }, - "FindingProviderFieldsCriticality": { - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "type": "array", - "uniqueItems": true - }, - "FindingProviderFieldsRelatedFindingsId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "FindingProviderFieldsRelatedFindingsProductArn": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "FindingProviderFieldsSeverityLabel": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "FindingProviderFieldsSeverityOriginal": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "FindingProviderFieldsTypes": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "FirstObservedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "GeneratorId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "Id": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "LastObservedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "MalwareName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "MalwarePath": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "MalwareState": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "MalwareType": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkDestinationDomain": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkDestinationIpV4": { - "items": { - "$ref": "#/definitions/IpFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkDestinationIpV6": { - "items": { - "$ref": "#/definitions/IpFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkDestinationPort": { - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkDirection": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkProtocol": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkSourceDomain": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkSourceIpV4": { - "items": { - "$ref": "#/definitions/IpFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkSourceIpV6": { - "items": { - "$ref": "#/definitions/IpFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkSourceMac": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkSourcePort": { - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NoteText": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NoteUpdatedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NoteUpdatedBy": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ProcessLaunchedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ProcessName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ProcessParentPid": { - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ProcessPath": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ProcessPid": { - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ProcessTerminatedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ProductArn": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ProductFields": { - "items": { - "$ref": "#/definitions/MapFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ProductName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "RecommendationText": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "RecordState": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "Region": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "RelatedFindingsId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "RelatedFindingsProductArn": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceApplicationArn": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceApplicationName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceIamInstanceProfileArn": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceImageId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceIpV4Addresses": { - "items": { - "$ref": "#/definitions/IpFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceIpV6Addresses": { - "items": { - "$ref": "#/definitions/IpFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceKeyName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceLaunchedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceSubnetId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceType": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceVpcId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsIamAccessKeyCreatedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsIamAccessKeyPrincipalName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsIamAccessKeyStatus": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsIamUserUserName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsS3BucketOwnerId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsS3BucketOwnerName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceContainerImageId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceContainerImageName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceContainerLaunchedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceContainerName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceDetailsOther": { - "items": { - "$ref": "#/definitions/MapFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourcePartition": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceRegion": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceTags": { - "items": { - "$ref": "#/definitions/MapFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceType": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "Sample": { - "items": { - "$ref": "#/definitions/BooleanFilter" - }, - "type": "array", - "uniqueItems": true - }, - "SeverityLabel": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "SourceUrl": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ThreatIntelIndicatorCategory": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ThreatIntelIndicatorLastObservedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ThreatIntelIndicatorSource": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ThreatIntelIndicatorSourceUrl": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ThreatIntelIndicatorType": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ThreatIntelIndicatorValue": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "Title": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "Type": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "UpdatedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "UserDefinedFields": { - "items": { - "$ref": "#/definitions/MapFilter" - }, - "type": "array", - "uniqueItems": true - }, - "VerificationState": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "VulnerabilitiesExploitAvailable": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "VulnerabilitiesFixAvailable": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "WorkflowState": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "WorkflowStatus": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "BooleanFilter": { - "additionalProperties": false, - "properties": { - "Value": { - "type": "boolean" - } - }, - "required": [ - "Value" - ], - "type": "object" - }, - "DateFilter": { - "additionalProperties": false, - "properties": { - "DateRange": { - "$ref": "#/definitions/DateRange" - }, - "End": { - "type": "string" - }, - "Start": { - "type": "string" - } - }, - "type": "object" - }, - "DateRange": { - "additionalProperties": false, - "properties": { - "Unit": { - "type": "string" - }, - "Value": { - "type": "number" - } - }, - "required": [ - "Value", - "Unit" - ], - "type": "object" - }, - "IpFilter": { - "additionalProperties": false, - "properties": { - "Cidr": { - "type": "string" - } - }, - "type": "object" - }, - "MapFilter": { - "additionalProperties": false, - "properties": { - "Comparison": { - "type": "string" - }, - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Comparison", - "Value", - "Key" - ], - "type": "object" - }, - "NumberFilter": { - "additionalProperties": false, - "properties": { - "Eq": { - "type": "number" - }, - "Gte": { - "type": "number" - }, - "Lte": { - "type": "number" - } - }, - "type": "object" - }, - "StringFilter": { - "additionalProperties": false, - "properties": { - "Comparison": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Comparison", - "Value" - ], - "type": "object" - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Filters": { - "$ref": "#/definitions/AwsSecurityFindingFilters" - }, - "GroupByAttribute": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "InsightArn": { - "type": "string" - }, - "Name": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/InsightArn" - ], - "required": [ - "Filters", - "GroupByAttribute", - "Name" - ], - "typeName": "AWS::SecurityHub::Insight" -} diff --git a/src/cfnlint/data/schemas/providers/eu_west_2/aws-securityhub-productsubscription.json b/src/cfnlint/data/schemas/providers/eu_west_2/aws-securityhub-productsubscription.json deleted file mode 100644 index 4001045463..0000000000 --- a/src/cfnlint/data/schemas/providers/eu_west_2/aws-securityhub-productsubscription.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ProductArn" - ], - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Id": { - "type": "string" - }, - "ProductArn": { - "type": "string" - }, - "ProductSubscriptionArn": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/ProductSubscriptionArn" - ], - "required": [ - "ProductArn" - ], - "typeName": "AWS::SecurityHub::ProductSubscription" -} diff --git a/src/cfnlint/data/schemas/providers/eu_west_2/aws-verifiedpermissions-identitysource.json b/src/cfnlint/data/schemas/providers/eu_west_2/aws-verifiedpermissions-identitysource.json new file mode 100644 index 0000000000..46a0ad88f1 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_west_2/aws-verifiedpermissions-identitysource.json @@ -0,0 +1,221 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PolicyStoreId" + ], + "definitions": { + "CognitoGroupConfiguration": { + "additionalProperties": false, + "properties": { + "GroupEntityType": { + "maxLength": 200, + "minLength": 1, + "pattern": "^([_a-zA-Z][_a-zA-Z0-9]*::)*[_a-zA-Z][_a-zA-Z0-9]*$", + "type": "string" + } + }, + "required": [ + "GroupEntityType" + ], + "type": "object" + }, + "CognitoUserPoolConfiguration": { + "additionalProperties": false, + "properties": { + "ClientIds": { + "insertionOrder": false, + "items": { + "maxLength": 255, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "maxItems": 1000, + "minItems": 0, + "type": "array" + }, + "GroupConfiguration": { + "$ref": "#/definitions/CognitoGroupConfiguration" + }, + "UserPoolArn": { + "maxLength": 255, + "minLength": 1, + "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", + "type": "string" + } + }, + "required": [ + "UserPoolArn" + ], + "type": "object" + }, + "IdentitySourceConfiguration": { + "additionalProperties": false, + "properties": { + "CognitoUserPoolConfiguration": { + "$ref": "#/definitions/CognitoUserPoolConfiguration" + } + }, + "required": [ + "CognitoUserPoolConfiguration" + ], + "title": "CognitoUserPoolConfiguration", + "type": "object" + }, + "IdentitySourceDetails": { + "additionalProperties": false, + "properties": { + "ClientIds": { + "insertionOrder": false, + "items": { + "maxLength": 255, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "maxItems": 1000, + "minItems": 0, + "type": "array" + }, + "DiscoveryUrl": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^https://.*$", + "type": "string" + }, + "OpenIdIssuer": { + "$ref": "#/definitions/OpenIdIssuer" + }, + "UserPoolArn": { + "maxLength": 255, + "minLength": 1, + "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", + "type": "string" + } + }, + "type": "object" + }, + "OpenIdIssuer": { + "enum": [ + "COGNITO" + ], + "type": "string" + } + }, + "deprecatedProperties": [ + "/properties/Details" + ], + "handlers": { + "create": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "delete": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "PolicyStoreId": { + "$ref": "resource-schema.json#/properties/PolicyStoreId" + } + }, + "required": [ + "PolicyStoreId" + ] + }, + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "read": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "update": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + } + }, + "primaryIdentifier": [ + "/properties/IdentitySourceId", + "/properties/PolicyStoreId" + ], + "properties": { + "Configuration": { + "$ref": "#/definitions/IdentitySourceConfiguration" + }, + "Details": { + "$ref": "#/definitions/IdentitySourceDetails" + }, + "IdentitySourceId": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]*$", + "type": "string" + }, + "PolicyStoreId": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]*$", + "type": "string" + }, + "PrincipalEntityType": { + "maxLength": 200, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Details", + "/properties/IdentitySourceId" + ], + "required": [ + "Configuration", + "PolicyStoreId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-avp", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::VerifiedPermissions::IdentitySource" +} diff --git a/src/cfnlint/data/schemas/providers/eu_west_3/__init__.py b/src/cfnlint/data/schemas/providers/eu_west_3/__init__.py index a4ba4b34dc..e1865ea8df 100644 --- a/src/cfnlint/data/schemas/providers/eu_west_3/__init__.py +++ b/src/cfnlint/data/schemas/providers/eu_west_3/__init__.py @@ -140,6 +140,7 @@ "AWS::DataSync::LocationHDFS", "AWS::Events::Archive", "AWS::MSK::Cluster", + "AWS::SecurityHub::DelegatedAdmin", "AWS::ControlTower::EnabledBaseline", "AWS::EC2::VPCEndpointConnectionNotification", "AWS::CodePipeline::Pipeline", @@ -318,6 +319,7 @@ "AWS::IAM::ServerCertificate", "AWS::CodeStarConnections::Connection", "AWS::IoT::SecurityProfile", + "AWS::GlobalAccelerator::CrossAccountAttachment", "AWS::Events::EventBus", "AWS::DocDB::EventSubscription", "AWS::SQS::QueueInlinePolicy", @@ -355,6 +357,7 @@ "AWS::EFS::FileSystem", "AWS::Config::OrganizationConformancePack", "AWS::Logs::QueryDefinition", + "AWS::SecurityHub::ProductSubscription", "AWS::IAM::InstanceProfile", "AWS::IoT::BillingGroup", "AWS::DataSync::LocationNFS", @@ -370,6 +373,7 @@ "AWS::Cognito::UserPoolUICustomizationAttachment", "AWS::SageMaker::NotebookInstanceLifecycleConfig", "AWS::ImageBuilder::ContainerRecipe", + "AWS::CodeConnections::Connection", "AWS::EFS::AccessPoint", "AWS::Redshift::ClusterSecurityGroupIngress", "AWS::ServiceCatalogAppRegistry::AttributeGroupAssociation", @@ -396,6 +400,7 @@ "AWS::EC2::ClientVpnRoute", "AWS::ImageBuilder::Workflow", "AWS::ECS::TaskSet", + "AWS::SecurityLake::AwsLogSource", "AWS::AppSync::ApiKey", "AWS::CloudFormation::TypeActivation", "AWS::ACMPCA::CertificateAuthorityActivation", @@ -530,6 +535,7 @@ "AWS::CodeBuild::SourceCredential", "AWS::EMR::InstanceFleetConfig", "AWS::EMR::Cluster", + "AWS::SecurityLake::DataLake", "AWS::CodePipeline::Webhook", "AWS::ApiGatewayV2::DomainName", "AWS::RDS::DBCluster", @@ -605,6 +611,7 @@ "AWS::Logs::Delivery", "AWS::ServiceCatalog::Portfolio", "AWS::IoT::Policy", + "AWS::APS::Scraper", "AWS::EC2::TransitGatewayRoute", "AWS::SSM::MaintenanceWindow", "AWS::LakeFormation::TagAssociation", @@ -619,6 +626,7 @@ "AWS::IoT::ScheduledAudit", "AWS::DevOpsGuru::LogAnomalyDetectionIntegration", "AWS::NetworkManager::Link", + "AWS::SecurityLake::Subscriber", "AWS::SageMaker::NotebookInstance", "AWS::SSO::InstanceAccessControlAttributeConfiguration", "AWS::WAFRegional::ByteMatchSet", @@ -642,6 +650,7 @@ "AWS::MediaPackageV2::OriginEndpoint", "AWS::AppSync::GraphQLApi", "AWS::EC2::EgressOnlyInternetGateway", + "AWS::SecurityHub::Insight", "AWS::Config::ConformancePack", "AWS::EC2::VPCCidrBlock", "AWS::APS::Workspace", @@ -905,7 +914,6 @@ "aws-amazonmq-configurationassociation.json", "aws-redshiftserverless-namespace.json", "aws-apprunner-observabilityconfiguration.json", - "aws-ec2-securitygroupegress.json", "aws-ec2-localgatewayroutetablevpcassociation.json", "aws-config-organizationconfigrule.json", "aws-glue-dataqualityruleset.json", @@ -932,7 +940,6 @@ "aws-apigateway-model.json", "aws-apigatewayv2-integrationresponse.json", "aws-ec2-networkacl.json", - "aws-lambda-eventsourcemapping.json", "aws-budgets-budgetsaction.json", "aws-logs-resourcepolicy.json", "aws-servicecatalog-launchnotificationconstraint.json", @@ -1016,6 +1023,7 @@ "aws-datasync-locationhdfs.json", "aws-events-archive.json", "aws-msk-cluster.json", + "aws-securityhub-delegatedadmin.json", "aws-controltower-enabledbaseline.json", "aws-ec2-vpcendpointconnectionnotification.json", "aws-codepipeline-pipeline.json", @@ -1102,7 +1110,6 @@ "aws-ec2-transitgatewaymulticastdomainassociation.json", "aws-s3outposts-endpoint.json", "aws-waf-sizeconstraintset.json", - "aws-ec2-transitgatewayroutetableassociation.json", "aws-appconfig-environment.json", "aws-imagebuilder-image.json", "aws-elasticache-securitygroupingress.json", @@ -1188,6 +1195,7 @@ "aws-iam-servercertificate.json", "aws-codestarconnections-connection.json", "aws-iot-securityprofile.json", + "aws-globalaccelerator-crossaccountattachment.json", "aws-events-eventbus.json", "aws-docdb-eventsubscription.json", "aws-sqs-queueinlinepolicy.json", @@ -1223,12 +1231,12 @@ "aws-efs-filesystem.json", "aws-config-organizationconformancepack.json", "aws-logs-querydefinition.json", + "aws-securityhub-productsubscription.json", "aws-iam-instanceprofile.json", "aws-iot-billinggroup.json", "aws-datasync-locationnfs.json", "aws-amplify-domain.json", "aws-kinesisanalyticsv2-applicationoutput.json", - "aws-sagemaker-domain.json", "aws-certificatemanager-certificate.json", "aws-glue-schemaversionmetadata.json", "aws-sdb-domain.json", @@ -1236,6 +1244,7 @@ "aws-servicecatalog-serviceactionassociation.json", "aws-sagemaker-notebookinstancelifecycleconfig.json", "aws-imagebuilder-containerrecipe.json", + "aws-codeconnections-connection.json", "aws-efs-accesspoint.json", "aws-redshift-clustersecuritygroupingress.json", "aws-servicecatalogappregistry-attributegroupassociation.json", @@ -1261,6 +1270,7 @@ "aws-ec2-clientvpnroute.json", "aws-imagebuilder-workflow.json", "aws-ecs-taskset.json", + "aws-securitylake-awslogsource.json", "aws-appsync-apikey.json", "aws-cloudformation-typeactivation.json", "aws-acmpca-certificateauthorityactivation.json", @@ -1390,6 +1400,7 @@ "aws-codebuild-sourcecredential.json", "aws-emr-instancefleetconfig.json", "aws-emr-cluster.json", + "aws-securitylake-datalake.json", "aws-codepipeline-webhook.json", "aws-apigatewayv2-domainname.json", "aws-rds-dbcluster.json", @@ -1419,8 +1430,6 @@ "aws-datasync-locationefs.json", "aws-ec2-localgatewayroutetable.json", "aws-apigateway-resource.json", - "aws-sagemaker-appimageconfig.json", - "aws-verifiedpermissions-identitysource.json", "aws-macie-session.json", "aws-elasticloadbalancingv2-targetgroup.json", "aws-applicationautoscaling-scalingpolicy.json", @@ -1463,6 +1472,7 @@ "aws-logs-delivery.json", "aws-servicecatalog-portfolio.json", "aws-iot-policy.json", + "aws-aps-scraper.json", "aws-ec2-transitgatewayroute.json", "aws-ssm-maintenancewindow.json", "aws-lakeformation-tagassociation.json", @@ -1477,6 +1487,7 @@ "aws-iot-scheduledaudit.json", "aws-devopsguru-loganomalydetectionintegration.json", "aws-networkmanager-link.json", + "aws-securitylake-subscriber.json", "aws-sagemaker-notebookinstance.json", "aws-sso-instanceaccesscontrolattributeconfiguration.json", "aws-wafregional-bytematchset.json", @@ -1500,13 +1511,13 @@ "aws-mediapackagev2-originendpoint.json", "aws-appsync-graphqlapi.json", "aws-ec2-egressonlyinternetgateway.json", + "aws-securityhub-insight.json", "aws-config-conformancepack.json", "aws-ec2-vpccidrblock.json", "aws-aps-workspace.json", "aws-iam-virtualmfadevice.json", "aws-ec2-networkinsightspath.json", "aws-mediatailor-vodsource.json", - "aws-acmpca-certificateauthority.json", "aws-athena-preparedstatement.json", "aws-autoscaling-scheduledaction.json", "aws-cognito-identitypoolprincipaltag.json", @@ -1573,8 +1584,8 @@ "aws-glue-workflow.json", "aws-apigatewayv2-authorizer.json", "aws-iot-accountauditconfiguration.json", - "aws-sagemaker-userprofile.json", "aws-ec2-prefixlist.json", + "aws-ec2-instance.json", "aws-networkmanager-device.json", "aws-ec2-subnetcidrblock.json", "aws-mediapackage-asset.json", diff --git a/src/cfnlint/data/schemas/providers/eu_west_3/aws-acmpca-certificateauthority.json b/src/cfnlint/data/schemas/providers/eu_west_3/aws-acmpca-certificateauthority.json new file mode 100644 index 0000000000..08ec85e5fa --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_west_3/aws-acmpca-certificateauthority.json @@ -0,0 +1,429 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Type", + "/properties/KeyAlgorithm", + "/properties/SigningAlgorithm", + "/properties/Subject", + "/properties/CsrExtensions", + "/properties/KeyStorageSecurityStandard", + "/properties/UsageMode" + ], + "definitions": { + "AccessDescription": { + "additionalProperties": false, + "properties": { + "AccessLocation": { + "$ref": "#/definitions/GeneralName" + }, + "AccessMethod": { + "$ref": "#/definitions/AccessMethod" + } + }, + "required": [ + "AccessMethod", + "AccessLocation" + ], + "type": "object" + }, + "AccessMethod": { + "additionalProperties": false, + "properties": { + "AccessMethodType": { + "$ref": "#/definitions/AccessMethodType" + }, + "CustomObjectIdentifier": { + "$ref": "#/definitions/CustomObjectIdentifier" + } + }, + "type": "object" + }, + "AccessMethodType": { + "type": "string" + }, + "Arn": { + "type": "string" + }, + "CrlConfiguration": { + "additionalProperties": false, + "properties": { + "CrlDistributionPointExtensionConfiguration": { + "$ref": "#/definitions/CrlDistributionPointExtensionConfiguration" + }, + "CustomCname": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + }, + "ExpirationInDays": { + "type": "integer" + }, + "S3BucketName": { + "type": "string" + }, + "S3ObjectAcl": { + "type": "string" + } + }, + "type": "object" + }, + "CrlDistributionPointExtensionConfiguration": { + "additionalProperties": false, + "properties": { + "OmitExtension": { + "type": "boolean" + } + }, + "required": [ + "OmitExtension" + ], + "type": "object" + }, + "CsrExtensions": { + "additionalProperties": false, + "properties": { + "KeyUsage": { + "$ref": "#/definitions/KeyUsage" + }, + "SubjectInformationAccess": { + "$ref": "#/definitions/SubjectInformationAccess" + } + }, + "type": "object" + }, + "CustomAttribute": { + "additionalProperties": false, + "properties": { + "ObjectIdentifier": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "ObjectIdentifier", + "Value" + ], + "type": "object" + }, + "CustomAttributeList": { + "items": { + "$ref": "#/definitions/CustomAttribute" + }, + "type": "array" + }, + "CustomObjectIdentifier": { + "type": "string" + }, + "DnsName": { + "type": "string" + }, + "EdiPartyName": { + "additionalProperties": false, + "properties": { + "NameAssigner": { + "type": "string" + }, + "PartyName": { + "type": "string" + } + }, + "required": [ + "PartyName", + "NameAssigner" + ], + "type": "object" + }, + "GeneralName": { + "additionalProperties": false, + "properties": { + "DirectoryName": { + "$ref": "#/definitions/Subject" + }, + "DnsName": { + "$ref": "#/definitions/DnsName" + }, + "EdiPartyName": { + "$ref": "#/definitions/EdiPartyName" + }, + "IpAddress": { + "$ref": "#/definitions/IpAddress" + }, + "OtherName": { + "$ref": "#/definitions/OtherName" + }, + "RegisteredId": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Rfc822Name": { + "$ref": "#/definitions/Rfc822Name" + }, + "UniformResourceIdentifier": { + "$ref": "#/definitions/UniformResourceIdentifier" + } + }, + "type": "object" + }, + "IpAddress": { + "type": "string" + }, + "KeyUsage": { + "additionalProperties": false, + "properties": { + "CRLSign": { + "default": false, + "type": "boolean" + }, + "DataEncipherment": { + "default": false, + "type": "boolean" + }, + "DecipherOnly": { + "default": false, + "type": "boolean" + }, + "DigitalSignature": { + "default": false, + "type": "boolean" + }, + "EncipherOnly": { + "default": false, + "type": "boolean" + }, + "KeyAgreement": { + "default": false, + "type": "boolean" + }, + "KeyCertSign": { + "default": false, + "type": "boolean" + }, + "KeyEncipherment": { + "default": false, + "type": "boolean" + }, + "NonRepudiation": { + "default": false, + "type": "boolean" + } + }, + "type": "object" + }, + "OcspConfiguration": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + }, + "OcspCustomCname": { + "type": "string" + } + }, + "type": "object" + }, + "OtherName": { + "additionalProperties": false, + "properties": { + "TypeId": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "TypeId", + "Value" + ], + "type": "object" + }, + "RevocationConfiguration": { + "additionalProperties": false, + "properties": { + "CrlConfiguration": { + "$ref": "#/definitions/CrlConfiguration" + }, + "OcspConfiguration": { + "$ref": "#/definitions/OcspConfiguration" + } + }, + "type": "object" + }, + "Rfc822Name": { + "type": "string" + }, + "Subject": { + "additionalProperties": false, + "properties": { + "CommonName": { + "type": "string" + }, + "Country": { + "type": "string" + }, + "CustomAttributes": { + "$ref": "#/definitions/CustomAttributeList" + }, + "DistinguishedNameQualifier": { + "type": "string" + }, + "GenerationQualifier": { + "type": "string" + }, + "GivenName": { + "type": "string" + }, + "Initials": { + "type": "string" + }, + "Locality": { + "type": "string" + }, + "Organization": { + "type": "string" + }, + "OrganizationalUnit": { + "type": "string" + }, + "Pseudonym": { + "type": "string" + }, + "SerialNumber": { + "type": "string" + }, + "State": { + "type": "string" + }, + "Surname": { + "type": "string" + }, + "Title": { + "type": "string" + } + }, + "type": "object" + }, + "SubjectInformationAccess": { + "items": { + "$ref": "#/definitions/AccessDescription" + }, + "type": "array" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "UniformResourceIdentifier": { + "type": "string" + } + }, + "handlers": { + "create": { + "permissions": [ + "acm-pca:CreateCertificateAuthority", + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr" + ] + }, + "delete": { + "permissions": [ + "acm-pca:DeleteCertificateAuthority", + "acm-pca:DescribeCertificateAuthority" + ] + }, + "list": { + "permissions": [ + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr", + "acm-pca:ListCertificateAuthorities", + "acm-pca:ListTags" + ] + }, + "read": { + "permissions": [ + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr", + "acm-pca:ListTags" + ] + }, + "update": { + "permissions": [ + "acm-pca:ListTags", + "acm-pca:TagCertificateAuthority", + "acm-pca:UntagCertificateAuthority", + "acm-pca:UpdateCertificateAuthority" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "$ref": "#/definitions/Arn" + }, + "CertificateSigningRequest": { + "type": "string" + }, + "CsrExtensions": { + "$ref": "#/definitions/CsrExtensions" + }, + "KeyAlgorithm": { + "type": "string" + }, + "KeyStorageSecurityStandard": { + "type": "string" + }, + "RevocationConfiguration": { + "$ref": "#/definitions/RevocationConfiguration" + }, + "SigningAlgorithm": { + "type": "string" + }, + "Subject": { + "$ref": "#/definitions/Subject" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "Type": { + "type": "string" + }, + "UsageMode": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CertificateSigningRequest" + ], + "required": [ + "Type", + "KeyAlgorithm", + "SigningAlgorithm", + "Subject" + ], + "sourceUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_ACMPCA.html", + "typeName": "AWS::ACMPCA::CertificateAuthority", + "writeOnlyProperties": [ + "/properties/Subject", + "/properties/Subject", + "/properties/CsrExtensions", + "/properties/Tags", + "/properties/RevocationConfiguration", + "/properties/KeyStorageSecurityStandard" + ] +} diff --git a/src/cfnlint/data/schemas/providers/eu_west_3/aws-dynamodb-globaltable.json b/src/cfnlint/data/schemas/providers/eu_west_3/aws-dynamodb-globaltable.json index 4e5ba995cb..ae37e9142b 100644 --- a/src/cfnlint/data/schemas/providers/eu_west_3/aws-dynamodb-globaltable.json +++ b/src/cfnlint/data/schemas/providers/eu_west_3/aws-dynamodb-globaltable.json @@ -8,6 +8,27 @@ ] ], "additionalProperties": false, + "allOf": [ + { + "if": { + "required": [ + "LocalSecondaryIndexes" + ], + "type": "object" + }, + "then": { + "properties": { + "AttributeDefinitions": { + "minItems": 2 + }, + "KeySchema": { + "minItems": 2 + } + }, + "type": "object" + } + } + ], "createOnlyProperties": [ "/properties/LocalSecondaryIndexes", "/properties/TableName", @@ -79,13 +100,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "minItems": 1, - "type": "array", - "uniqueItems": true + "minItems": 1 }, "Projection": { "$ref": "#/definitions/Projection" @@ -102,22 +119,60 @@ "type": "object" }, "KeySchema": { - "additionalProperties": false, - "properties": { - "AttributeName": { - "maxLength": 255, - "minLength": 1, - "type": "string" + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "KeyType": { + "enum": [ + "HASH", + "RANGE" + ], + "type": "string" + } }, - "KeyType": { - "type": "string" - } + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" }, - "required": [ - "KeyType", - "AttributeName" + "prefixItems": [ + { + "additionalProperties": false, + "properties": { + "KeyType": { + "const": "HASH", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + }, + { + "properties": { + "KeyType": { + "const": "RANGE", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + } ], - "type": "object" + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "KinesisStreamSpecification": { "additionalProperties": false, @@ -147,12 +202,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "type": "array", - "uniqueItems": true + "minItems": 2 }, "Projection": { "$ref": "#/definitions/Projection" @@ -511,7 +563,10 @@ }, "minItems": 1, "type": "array", - "uniqueItems": true + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "BillingMode": { "type": "string" @@ -525,13 +580,9 @@ "uniqueItems": true }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "minItems": 1, - "type": "array", - "uniqueItems": true + "minItems": 1 }, "LocalSecondaryIndexes": { "insertionOrder": false, diff --git a/src/cfnlint/data/schemas/providers/eu_west_3/aws-dynamodb-table.json b/src/cfnlint/data/schemas/providers/eu_west_3/aws-dynamodb-table.json index efc82f1d70..f21d084b10 100644 --- a/src/cfnlint/data/schemas/providers/eu_west_3/aws-dynamodb-table.json +++ b/src/cfnlint/data/schemas/providers/eu_west_3/aws-dynamodb-table.json @@ -1,5 +1,26 @@ { "additionalProperties": false, + "allOf": [ + { + "if": { + "required": [ + "LocalSecondaryIndexes" + ], + "type": "object" + }, + "then": { + "properties": { + "AttributeDefinitions": { + "minItems": 2 + }, + "KeySchema": { + "minItems": 2 + } + }, + "type": "object" + } + } + ], "cfnLint": [ "AWS::DynamoDB::Table/Properties" ], @@ -95,11 +116,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 }, "Projection": { "$ref": "#/definitions/Projection" @@ -147,24 +166,57 @@ "type": "object" }, "KeySchema": { - "additionalProperties": false, - "properties": { - "AttributeName": { - "type": "string" + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "type": "string" + }, + "KeyType": { + "enum": [ + "HASH", + "RANGE" + ], + "type": "string" + } }, - "KeyType": { - "enum": [ - "HASH", - "RANGE" + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" + }, + "prefixItems": [ + { + "properties": { + "KeyType": { + "const": "HASH", + "type": "string" + } + }, + "required": [ + "KeyType" ], - "type": "string" + "type": "object" + }, + { + "properties": { + "KeyType": { + "const": "RANGE", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" } - }, - "required": [ - "KeyType", - "AttributeName" ], - "type": "object" + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "KinesisStreamSpecification": { "additionalProperties": false, @@ -192,11 +244,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 2 }, "Projection": { "$ref": "#/definitions/Projection" @@ -451,7 +501,10 @@ "$ref": "#/definitions/AttributeDefinition" }, "type": "array", - "uniqueItems": true + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "BillingMode": { "enum": [ @@ -479,11 +532,9 @@ "KeySchema": { "oneOf": [ { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 }, { "type": "object" diff --git a/src/cfnlint/data/schemas/providers/eu_west_3/aws-ec2-instance.json b/src/cfnlint/data/schemas/providers/eu_west_3/aws-ec2-instance.json deleted file mode 100644 index 7b3bfed595..0000000000 --- a/src/cfnlint/data/schemas/providers/eu_west_3/aws-ec2-instance.json +++ /dev/null @@ -1,571 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ElasticGpuSpecifications", - "/properties/Ipv6Addresses", - "/properties/PlacementGroupName", - "/properties/HostResourceGroupArn", - "/properties/ImageId", - "/properties/CpuOptions", - "/properties/PrivateIpAddress", - "/properties/ElasticInferenceAccelerators", - "/properties/EnclaveOptions", - "/properties/HibernationOptions", - "/properties/KeyName", - "/properties/LicenseSpecifications", - "/properties/NetworkInterfaces", - "/properties/AvailabilityZone", - "/properties/SubnetId", - "/properties/LaunchTemplate", - "/properties/SecurityGroups", - "/properties/Ipv6AddressCount" - ], - "definitions": { - "AssociationParameter": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "BlockDeviceMapping": { - "additionalProperties": false, - "properties": { - "DeviceName": { - "type": "string" - }, - "Ebs": { - "$ref": "#/definitions/Ebs" - }, - "NoDevice": { - "$ref": "#/definitions/NoDevice" - }, - "VirtualName": { - "type": "string" - } - }, - "required": [ - "DeviceName" - ], - "requiredXor": [ - "VirtualName", - "Ebs", - "NoDevice" - ], - "type": "object" - }, - "CpuOptions": { - "additionalProperties": false, - "properties": { - "CoreCount": { - "type": "integer" - }, - "ThreadsPerCore": { - "type": "integer" - } - }, - "type": "object" - }, - "CreditSpecification": { - "additionalProperties": false, - "properties": { - "CPUCredits": { - "type": "string" - } - }, - "type": "object" - }, - "Ebs": { - "additionalProperties": false, - "properties": { - "DeleteOnTermination": { - "type": "boolean" - }, - "Encrypted": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "KmsKeyId": { - "type": "string" - }, - "SnapshotId": { - "type": "string" - }, - "VolumeSize": { - "type": "integer" - }, - "VolumeType": { - "type": "string" - } - }, - "type": "object" - }, - "ElasticGpuSpecification": { - "additionalProperties": false, - "properties": { - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "ElasticInferenceAccelerator": { - "additionalProperties": false, - "properties": { - "Count": { - "type": "integer" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "EnclaveOptions": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - } - }, - "type": "object" - }, - "HibernationOptions": { - "additionalProperties": false, - "properties": { - "Configured": { - "type": "boolean" - } - }, - "type": "object" - }, - "InstanceIpv6Address": { - "additionalProperties": false, - "properties": { - "Ipv6Address": { - "type": "string" - } - }, - "required": [ - "Ipv6Address" - ], - "type": "object" - }, - "LaunchTemplateSpecification": { - "additionalProperties": false, - "properties": { - "LaunchTemplateId": { - "type": "string" - }, - "LaunchTemplateName": { - "type": "string" - }, - "Version": { - "type": "string" - } - }, - "required": [ - "Version" - ], - "type": "object" - }, - "LicenseSpecification": { - "additionalProperties": false, - "properties": { - "LicenseConfigurationArn": { - "type": "string" - } - }, - "required": [ - "LicenseConfigurationArn" - ], - "type": "object" - }, - "NetworkInterface": { - "additionalProperties": false, - "properties": { - "AssociateCarrierIpAddress": { - "type": "boolean" - }, - "AssociatePublicIpAddress": { - "type": "boolean" - }, - "DeleteOnTermination": { - "type": "boolean" - }, - "Description": { - "type": "string" - }, - "DeviceIndex": { - "type": "string" - }, - "GroupSet": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": false - }, - "NetworkInterfaceId": { - "type": "string" - }, - "PrivateIpAddress": { - "type": "string" - }, - "PrivateIpAddresses": { - "items": { - "$ref": "#/definitions/PrivateIpAddressSpecification" - }, - "type": "array", - "uniqueItems": false - }, - "SecondaryPrivateIpAddressCount": { - "type": "integer" - }, - "SubnetId": { - "type": "string" - } - }, - "required": [ - "DeviceIndex" - ], - "type": "object" - }, - "NoDevice": { - "additionalProperties": false, - "type": "object" - }, - "PrivateDnsNameOptions": { - "additionalProperties": false, - "properties": { - "EnableResourceNameDnsAAAARecord": { - "type": "boolean" - }, - "EnableResourceNameDnsARecord": { - "type": "boolean" - }, - "HostnameType": { - "type": "string" - } - }, - "type": "object" - }, - "PrivateIpAddressSpecification": { - "additionalProperties": false, - "properties": { - "Primary": { - "type": "boolean" - }, - "PrivateIpAddress": { - "type": "string" - } - }, - "required": [ - "PrivateIpAddress", - "Primary" - ], - "type": "object" - }, - "SsmAssociation": { - "additionalProperties": false, - "properties": { - "AssociationParameters": { - "items": { - "$ref": "#/definitions/AssociationParameter" - }, - "type": "array", - "uniqueItems": false - }, - "DocumentName": { - "type": "string" - } - }, - "required": [ - "DocumentName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "Volume": { - "additionalProperties": false, - "properties": { - "Device": { - "type": "string" - }, - "VolumeId": { - "type": "string" - } - }, - "required": [ - "VolumeId", - "Device" - ], - "type": "object" - } - }, - "dependentExcluded": { - "NetworkInterfaces": [ - "SubnetId" - ], - "SubnetId": [ - "NetworkInterfaces" - ] - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AdditionalInfo": { - "type": "string" - }, - "Affinity": { - "enum": [ - "default", - "host" - ], - "type": "string" - }, - "AvailabilityZone": { - "cfnLint": [ - "AWS::EC2::Instance/Properties/AvailabilityZone" - ], - "type": "string" - }, - "BlockDeviceMappings": { - "items": { - "$ref": "#/definitions/BlockDeviceMapping" - }, - "type": "array", - "uniqueItems": false - }, - "CpuOptions": { - "$ref": "#/definitions/CpuOptions" - }, - "CreditSpecification": { - "$ref": "#/definitions/CreditSpecification" - }, - "DisableApiTermination": { - "type": "boolean" - }, - "EbsOptimized": { - "type": "boolean" - }, - "ElasticGpuSpecifications": { - "items": { - "$ref": "#/definitions/ElasticGpuSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "ElasticInferenceAccelerators": { - "items": { - "$ref": "#/definitions/ElasticInferenceAccelerator" - }, - "type": "array", - "uniqueItems": true - }, - "EnclaveOptions": { - "$ref": "#/definitions/EnclaveOptions" - }, - "HibernationOptions": { - "$ref": "#/definitions/HibernationOptions" - }, - "HostId": { - "type": "string" - }, - "HostResourceGroupArn": { - "type": "string" - }, - "IamInstanceProfile": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "ImageId": { - "type": "string" - }, - "InstanceInitiatedShutdownBehavior": { - "type": "string" - }, - "InstanceType": { - "cfnLint": [ - "AWS::EC2::Instance/Properties/InstanceType" - ], - "type": "string" - }, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": false - }, - "KernelId": { - "type": "string" - }, - "KeyName": { - "type": "string" - }, - "LaunchTemplate": { - "$ref": "#/definitions/LaunchTemplateSpecification" - }, - "LicenseSpecifications": { - "items": { - "$ref": "#/definitions/LicenseSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "Monitoring": { - "type": "boolean" - }, - "NetworkInterfaces": { - "items": { - "$ref": "#/definitions/NetworkInterface" - }, - "type": "array", - "uniqueItems": false - }, - "PlacementGroupName": { - "type": "string" - }, - "PrivateDnsName": { - "type": "string" - }, - "PrivateDnsNameOptions": { - "$ref": "#/definitions/PrivateDnsNameOptions" - }, - "PrivateIp": { - "type": "string" - }, - "PrivateIpAddress": { - "type": "string" - }, - "PropagateTagsToVolumeOnCreation": { - "type": "boolean" - }, - "PublicDnsName": { - "type": "string" - }, - "PublicIp": { - "type": "string" - }, - "RamdiskId": { - "type": "string" - }, - "SecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SecurityGroups": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SourceDestCheck": { - "type": "boolean" - }, - "SsmAssociations": { - "items": { - "$ref": "#/definitions/SsmAssociation" - }, - "type": "array", - "uniqueItems": false - }, - "SubnetId": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "Tenancy": { - "enum": [ - "default", - "dedicated", - "host" - ], - "type": "string" - }, - "UserData": { - "type": "string" - }, - "Volumes": { - "items": { - "$ref": "#/definitions/Volume" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/PublicIp", - "/properties/Id", - "/properties/PublicDnsName", - "/properties/PrivateDnsName", - "/properties/PrivateIp" - ], - "requiredXor": [ - "ImageId", - "LaunchTemplate" - ], - "typeName": "AWS::EC2::Instance" -} diff --git a/src/cfnlint/data/schemas/providers/eu_west_3/aws-ec2-securitygroupegress.json b/src/cfnlint/data/schemas/providers/eu_west_3/aws-ec2-securitygroupegress.json new file mode 100644 index 0000000000..f94631dad2 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_west_3/aws-ec2-securitygroupegress.json @@ -0,0 +1,98 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::EC2::SecurityGroupEgress/Properties" + ], + "createOnlyProperties": [ + "/properties/IpProtocol", + "/properties/DestinationSecurityGroupId", + "/properties/ToPort", + "/properties/CidrIp", + "/properties/FromPort", + "/properties/GroupId", + "/properties/CidrIpv6", + "/properties/DestinationPrefixListId" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:AuthorizeSecurityGroupEgress", + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "delete": { + "permissions": [ + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "update": { + "permissions": [ + "ec2:UpdateSecurityGroupRuleDescriptionsEgress" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CidrIp": { + "type": "string" + }, + "CidrIpv6": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "DestinationPrefixListId": { + "type": "string" + }, + "DestinationSecurityGroupId": { + "type": "string" + }, + "FromPort": { + "minimum": -1, + "type": "integer" + }, + "GroupId": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "IpProtocol": { + "type": "string" + }, + "ToPort": { + "minimum": -1, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IpProtocol", + "GroupId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SecurityGroupEgress" +} diff --git a/src/cfnlint/data/schemas/providers/eu_west_3/aws-ec2-transitgatewayroutetableassociation.json b/src/cfnlint/data/schemas/providers/eu_west_3/aws-ec2-transitgatewayroutetableassociation.json new file mode 100644 index 0000000000..890b2c4be2 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_west_3/aws-ec2-transitgatewayroutetableassociation.json @@ -0,0 +1,29 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TransitGatewayRouteTableId", + "/properties/TransitGatewayAttachmentId" + ], + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "type": "string" + }, + "TransitGatewayAttachmentId": { + "type": "string" + }, + "TransitGatewayRouteTableId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "TransitGatewayRouteTableId", + "TransitGatewayAttachmentId" + ], + "typeName": "AWS::EC2::TransitGatewayRouteTableAssociation" +} diff --git a/src/cfnlint/data/schemas/providers/eu_west_3/aws-lambda-eventsourcemapping.json b/src/cfnlint/data/schemas/providers/eu_west_3/aws-lambda-eventsourcemapping.json new file mode 100644 index 0000000000..cb7599c139 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_west_3/aws-lambda-eventsourcemapping.json @@ -0,0 +1,353 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::Lambda::EventSourceMapping/Properties" + ], + "createOnlyProperties": [ + "/properties/EventSourceArn", + "/properties/StartingPosition", + "/properties/StartingPositionTimestamp", + "/properties/SelfManagedEventSource", + "/properties/AmazonManagedKafkaEventSourceConfig", + "/properties/SelfManagedKafkaEventSourceConfig" + ], + "definitions": { + "AmazonManagedKafkaEventSourceConfig": { + "additionalProperties": false, + "properties": { + "ConsumerGroupId": { + "$ref": "#/definitions/ConsumerGroupId" + } + }, + "type": "object" + }, + "ConsumerGroupId": { + "maxLength": 200, + "minLength": 1, + "pattern": "[a-zA-Z0-9-\\/*:_+=.@-]*", + "type": "string" + }, + "DestinationConfig": { + "additionalProperties": false, + "properties": { + "OnFailure": { + "$ref": "#/definitions/OnFailure" + } + }, + "type": "object" + }, + "DocumentDBEventSourceConfig": { + "additionalProperties": false, + "properties": { + "CollectionName": { + "maxLength": 57, + "minLength": 1, + "type": "string" + }, + "DatabaseName": { + "maxLength": 63, + "minLength": 1, + "type": "string" + }, + "FullDocument": { + "enum": [ + "UpdateLookup", + "Default" + ], + "type": "string" + } + }, + "type": "object" + }, + "Endpoints": { + "additionalProperties": false, + "properties": { + "KafkaBootstrapServers": { + "items": { + "maxLength": 300, + "minLength": 1, + "pattern": "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9]):[0-9]{1,5}", + "type": "string" + }, + "maxItems": 10, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "Filter": { + "additionalProperties": false, + "properties": { + "Pattern": { + "maxLength": 4096, + "minLength": 0, + "pattern": ".*", + "type": "string" + } + }, + "type": "object" + }, + "FilterCriteria": { + "additionalProperties": false, + "properties": { + "Filters": { + "items": { + "$ref": "#/definitions/Filter" + }, + "maxItems": 20, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "MaximumConcurrency": { + "maximum": 1000, + "minimum": 2, + "type": "integer" + }, + "OnFailure": { + "additionalProperties": false, + "properties": { + "Destination": { + "maxLength": 1024, + "minLength": 12, + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "type": "string" + } + }, + "type": "object" + }, + "ScalingConfig": { + "additionalProperties": false, + "properties": { + "MaximumConcurrency": { + "$ref": "#/definitions/MaximumConcurrency" + } + }, + "type": "object" + }, + "SelfManagedEventSource": { + "additionalProperties": false, + "properties": { + "Endpoints": { + "$ref": "#/definitions/Endpoints" + } + }, + "type": "object" + }, + "SelfManagedKafkaEventSourceConfig": { + "additionalProperties": false, + "properties": { + "ConsumerGroupId": { + "$ref": "#/definitions/ConsumerGroupId" + } + }, + "type": "object" + }, + "SourceAccessConfiguration": { + "additionalProperties": false, + "properties": { + "Type": { + "enum": [ + "BASIC_AUTH", + "VPC_SUBNET", + "VPC_SECURITY_GROUP", + "SASL_SCRAM_512_AUTH", + "SASL_SCRAM_256_AUTH", + "VIRTUAL_HOST", + "CLIENT_CERTIFICATE_TLS_AUTH", + "SERVER_ROOT_CA_CERTIFICATE" + ], + "type": "string" + }, + "URI": { + "maxLength": 200, + "minLength": 1, + "pattern": "[a-zA-Z0-9-\\/*:_+=.@-]*", + "type": "string" + } + }, + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "lambda:CreateEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + }, + "delete": { + "permissions": [ + "lambda:DeleteEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + }, + "list": { + "permissions": [ + "lambda:ListEventSourceMappings" + ] + }, + "read": { + "permissions": [ + "lambda:GetEventSourceMapping" + ] + }, + "update": { + "permissions": [ + "lambda:UpdateEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AmazonManagedKafkaEventSourceConfig": { + "$ref": "#/definitions/AmazonManagedKafkaEventSourceConfig" + }, + "BatchSize": { + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "BisectBatchOnFunctionError": { + "type": "boolean" + }, + "DestinationConfig": { + "$ref": "#/definitions/DestinationConfig" + }, + "DocumentDBEventSourceConfig": { + "$ref": "#/definitions/DocumentDBEventSourceConfig" + }, + "Enabled": { + "type": "boolean" + }, + "EventSourceArn": { + "maxLength": 1024, + "minLength": 12, + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "type": "string" + }, + "FilterCriteria": { + "$ref": "#/definitions/FilterCriteria" + }, + "FunctionName": { + "maxLength": 140, + "minLength": 1, + "pattern": "(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?", + "type": "string" + }, + "FunctionResponseTypes": { + "items": { + "enum": [ + "ReportBatchItemFailures" + ], + "type": "string" + }, + "maxLength": 1, + "minLength": 0, + "type": "array", + "uniqueItems": true + }, + "Id": { + "maxLength": 36, + "minLength": 36, + "pattern": "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + "type": "string" + }, + "MaximumBatchingWindowInSeconds": { + "maximum": 300, + "minimum": 0, + "type": "integer" + }, + "MaximumRecordAgeInSeconds": { + "maximum": 604800, + "minimum": -1, + "type": "integer" + }, + "MaximumRetryAttempts": { + "maximum": 10000, + "minimum": -1, + "type": "integer" + }, + "ParallelizationFactor": { + "maximum": 10, + "minimum": 1, + "type": "integer" + }, + "Queues": { + "items": { + "maxLength": 1000, + "minLength": 1, + "pattern": "[\\s\\S]*", + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "ScalingConfig": { + "$ref": "#/definitions/ScalingConfig" + }, + "SelfManagedEventSource": { + "$ref": "#/definitions/SelfManagedEventSource" + }, + "SelfManagedKafkaEventSourceConfig": { + "$ref": "#/definitions/SelfManagedKafkaEventSourceConfig" + }, + "SourceAccessConfigurations": { + "items": { + "$ref": "#/definitions/SourceAccessConfiguration" + }, + "maxItems": 22, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "StartingPosition": { + "enum": [ + "TRIM_HORIZON", + "LATEST", + "AT_TIMESTAMP" + ], + "maxLength": 12, + "minLength": 6, + "pattern": "(LATEST|TRIM_HORIZON|AT_TIMESTAMP)+", + "type": "string" + }, + "StartingPositionTimestamp": { + "type": "number" + }, + "Topics": { + "items": { + "maxLength": 249, + "minLength": 1, + "pattern": "^[^.]([a-zA-Z0-9\\-_.]+)", + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "TumblingWindowInSeconds": { + "maximum": 900, + "minimum": 0, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "FunctionName" + ], + "typeName": "AWS::Lambda::EventSourceMapping" +} diff --git a/src/cfnlint/data/schemas/providers/eu_west_3/aws-sagemaker-appimageconfig.json b/src/cfnlint/data/schemas/providers/eu_west_3/aws-sagemaker-appimageconfig.json new file mode 100644 index 0000000000..01116f524b --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_west_3/aws-sagemaker-appimageconfig.json @@ -0,0 +1,238 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AppImageConfigName", + "/properties/Tags" + ], + "definitions": { + "ContainerConfig": { + "additionalProperties": false, + "properties": { + "ContainerArguments": { + "items": { + "$ref": "#/definitions/CustomImageContainerArguments" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "ContainerEntrypoint": { + "items": { + "$ref": "#/definitions/CustomImageContainerEntrypoint" + }, + "maxItems": 1, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "ContainerEnvironmentVariables": { + "items": { + "$ref": "#/definitions/CustomImageContainerEnvironmentVariable" + }, + "maxItems": 25, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "CustomImageContainerArguments": { + "maxLength": 64, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "CustomImageContainerEntrypoint": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "CustomImageContainerEnvironmentVariable": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "FileSystemConfig": { + "additionalProperties": false, + "properties": { + "DefaultGid": { + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "DefaultUid": { + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "MountPath": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^/.*", + "type": "string" + } + }, + "type": "object" + }, + "JupyterLabAppImageConfig": { + "additionalProperties": false, + "properties": { + "ContainerConfig": { + "$ref": "#/definitions/ContainerConfig" + } + }, + "type": "object" + }, + "KernelGatewayImageConfig": { + "additionalProperties": false, + "properties": { + "FileSystemConfig": { + "$ref": "#/definitions/FileSystemConfig" + }, + "KernelSpecs": { + "items": { + "$ref": "#/definitions/KernelSpec" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "KernelSpecs" + ], + "type": "object" + }, + "KernelSpec": { + "additionalProperties": false, + "properties": { + "DisplayName": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Name": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "sagemaker:CreateAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + }, + "delete": { + "permissions": [ + "sagemaker:DeleteAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + }, + "list": { + "permissions": [ + "sagemaker:ListAppImageConfigs" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeAppImageConfig" + ] + }, + "update": { + "permissions": [ + "sagemaker:UpdateAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + } + }, + "primaryIdentifier": [ + "/properties/AppImageConfigName" + ], + "properties": { + "AppImageConfigArn": { + "maxLength": 256, + "minLength": 1, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:app-image-config/.*", + "type": "string" + }, + "AppImageConfigName": { + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", + "type": "string" + }, + "JupyterLabAppImageConfig": { + "$ref": "#/definitions/JupyterLabAppImageConfig" + }, + "KernelGatewayImageConfig": { + "$ref": "#/definitions/KernelGatewayImageConfig" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/AppImageConfigArn" + ], + "required": [ + "AppImageConfigName" + ], + "typeName": "AWS::SageMaker::AppImageConfig", + "writeOnlyProperties": [ + "/properties/Tags" + ] +} diff --git a/src/cfnlint/data/schemas/providers/eu_west_3/aws-sagemaker-domain.json b/src/cfnlint/data/schemas/providers/eu_west_3/aws-sagemaker-domain.json new file mode 100644 index 0000000000..e57c036025 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_west_3/aws-sagemaker-domain.json @@ -0,0 +1,739 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AuthMode", + "/properties/DomainName", + "/properties/DomainSettings/RStudioServerProDomainSettings/DefaultResourceSpec", + "/properties/KmsKeyId", + "/properties/VpcId", + "/properties/Tags" + ], + "definitions": { + "CodeEditorAppSettings": { + "additionalProperties": false, + "properties": { + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + }, + "LifecycleConfigArns": { + "items": { + "$ref": "#/definitions/StudioLifecycleConfigArn" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "CodeRepository": { + "additionalProperties": false, + "properties": { + "RepositoryUrl": { + "maxLength": 256, + "pattern": "^https://([.\\-_a-zA-Z0-9]+/?){3,1016}$", + "type": "string" + } + }, + "required": [ + "RepositoryUrl" + ], + "type": "object" + }, + "CustomFileSystemConfig": { + "additionalProperties": false, + "properties": { + "EFSFileSystemConfig": { + "$ref": "#/definitions/EFSFileSystemConfig" + } + }, + "type": "object" + }, + "CustomImage": { + "additionalProperties": false, + "properties": { + "AppImageConfigName": { + "maxLength": 63, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", + "type": "string" + }, + "ImageName": { + "maxLength": 63, + "pattern": "^[a-zA-Z0-9]([-.]?[a-zA-Z0-9]){0,62}$", + "type": "string" + }, + "ImageVersionNumber": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "AppImageConfigName", + "ImageName" + ], + "type": "object" + }, + "CustomPosixUserConfig": { + "additionalProperties": false, + "properties": { + "Gid": { + "maximum": 4000000, + "minimum": 1001, + "type": "integer" + }, + "Uid": { + "maximum": 4000000, + "minimum": 10000, + "type": "integer" + } + }, + "required": [ + "Uid", + "Gid" + ], + "type": "object" + }, + "DefaultEbsStorageSettings": { + "additionalProperties": false, + "properties": { + "DefaultEbsVolumeSizeInGb": { + "$ref": "#/definitions/SpaceEbsVolumeSizeInGb" + }, + "MaximumEbsVolumeSizeInGb": { + "$ref": "#/definitions/SpaceEbsVolumeSizeInGb" + } + }, + "required": [ + "DefaultEbsVolumeSizeInGb", + "MaximumEbsVolumeSizeInGb" + ], + "type": "object" + }, + "DefaultSpaceSettings": { + "additionalProperties": false, + "properties": { + "ExecutionRole": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "JupyterServerAppSettings": { + "$ref": "#/definitions/JupyterServerAppSettings" + }, + "KernelGatewayAppSettings": { + "$ref": "#/definitions/KernelGatewayAppSettings" + }, + "SecurityGroups": { + "insertionOrder": false, + "items": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 5, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "ExecutionRole" + ], + "type": "object" + }, + "DefaultSpaceStorageSettings": { + "additionalProperties": false, + "properties": { + "DefaultEbsStorageSettings": { + "$ref": "#/definitions/DefaultEbsStorageSettings" + } + }, + "type": "object" + }, + "DockerSettings": { + "additionalProperties": false, + "properties": { + "EnableDockerAccess": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "VpcOnlyTrustedAccounts": { + "insertionOrder": false, + "items": { + "maxLength": 12, + "pattern": "^[0-9]$", + "type": "string" + }, + "maxItems": 10, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "DomainSettings": { + "additionalProperties": false, + "properties": { + "DockerSettings": { + "$ref": "#/definitions/DockerSettings" + }, + "RStudioServerProDomainSettings": { + "$ref": "#/definitions/RStudioServerProDomainSettings" + }, + "SecurityGroupIds": { + "insertionOrder": false, + "items": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 3, + "minItems": 1, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "EFSFileSystemConfig": { + "additionalProperties": false, + "properties": { + "FileSystemId": { + "maxLength": 21, + "minLength": 11, + "pattern": "^(fs-[0-9a-f]{8,})$", + "type": "string" + }, + "FileSystemPath": { + "maxLength": 256, + "minLength": 1, + "pattern": "^\\/\\S*$", + "type": "string" + } + }, + "required": [ + "FileSystemId" + ], + "type": "object" + }, + "JupyterLabAppSettings": { + "additionalProperties": false, + "properties": { + "CodeRepositories": { + "items": { + "$ref": "#/definitions/CodeRepository" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "CustomImages": { + "items": { + "$ref": "#/definitions/CustomImage" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + }, + "LifecycleConfigArns": { + "items": { + "$ref": "#/definitions/StudioLifecycleConfigArn" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "JupyterServerAppSettings": { + "additionalProperties": false, + "properties": { + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + } + }, + "type": "object" + }, + "KernelGatewayAppSettings": { + "additionalProperties": false, + "properties": { + "CustomImages": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/CustomImage" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + } + }, + "type": "object" + }, + "RSessionAppSettings": { + "additionalProperties": false, + "properties": { + "CustomImages": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/CustomImage" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + } + }, + "type": "object" + }, + "RStudioServerProAppSettings": { + "additionalProperties": false, + "properties": { + "AccessStatus": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "UserGroup": { + "enum": [ + "R_STUDIO_ADMIN", + "R_STUDIO_USER" + ], + "type": "string" + } + }, + "type": "object" + }, + "RStudioServerProDomainSettings": { + "additionalProperties": false, + "properties": { + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + }, + "DomainExecutionRoleArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "RStudioConnectUrl": { + "pattern": "^(https:|http:|www\\.)\\S*", + "type": "string" + }, + "RStudioPackageManagerUrl": { + "pattern": "^(https:|http:|www\\.)\\S*", + "type": "string" + } + }, + "required": [ + "DomainExecutionRoleArn" + ], + "type": "object" + }, + "ResourceSpec": { + "additionalProperties": false, + "properties": { + "InstanceType": { + "enum": [ + "system", + "ml.t3.micro", + "ml.t3.small", + "ml.t3.medium", + "ml.t3.large", + "ml.t3.xlarge", + "ml.t3.2xlarge", + "ml.m5.large", + "ml.m5.xlarge", + "ml.m5.2xlarge", + "ml.m5.4xlarge", + "ml.m5.8xlarge", + "ml.m5.12xlarge", + "ml.m5.16xlarge", + "ml.m5.24xlarge", + "ml.c5.large", + "ml.c5.xlarge", + "ml.c5.2xlarge", + "ml.c5.4xlarge", + "ml.c5.9xlarge", + "ml.c5.12xlarge", + "ml.c5.18xlarge", + "ml.c5.24xlarge", + "ml.p3.2xlarge", + "ml.p3.8xlarge", + "ml.p3.16xlarge", + "ml.g4dn.xlarge", + "ml.g4dn.2xlarge", + "ml.g4dn.4xlarge", + "ml.g4dn.8xlarge", + "ml.g4dn.12xlarge", + "ml.g4dn.16xlarge", + "ml.r5.large", + "ml.r5.xlarge", + "ml.r5.2xlarge", + "ml.r5.4xlarge", + "ml.r5.8xlarge", + "ml.r5.12xlarge", + "ml.r5.16xlarge", + "ml.r5.24xlarge", + "ml.p3dn.24xlarge", + "ml.m5d.large", + "ml.m5d.xlarge", + "ml.m5d.2xlarge", + "ml.m5d.4xlarge", + "ml.m5d.8xlarge", + "ml.m5d.12xlarge", + "ml.m5d.16xlarge", + "ml.m5d.24xlarge", + "ml.g5.xlarge", + "ml.g5.2xlarge", + "ml.g5.4xlarge", + "ml.g5.8xlarge", + "ml.g5.12xlarge", + "ml.g5.16xlarge", + "ml.g5.24xlarge", + "ml.g5.48xlarge", + "ml.p4d.24xlarge", + "ml.p4de.24xlarge", + "ml.geospatial.interactive", + "ml.trn1.2xlarge", + "ml.trn1.32xlarge", + "ml.trn1n.32xlarge" + ], + "type": "string" + }, + "LifecycleConfigArn": { + "maxLength": 256, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:studio-lifecycle-config/.*", + "type": "string" + }, + "SageMakerImageArn": { + "maxLength": 256, + "pattern": "^arn:aws(-[\\w]+)*:sagemaker:.+:[0-9]{12}:image/[a-z0-9]([-.]?[a-z0-9])*$", + "type": "string" + }, + "SageMakerImageVersionArn": { + "maxLength": 256, + "pattern": "^arn:aws(-[\\w]+)*:sagemaker:.+:[0-9]{12}:image-version/[a-z0-9]([-.]?[a-z0-9])*/[0-9]+$", + "type": "string" + } + }, + "type": "object" + }, + "SharingSettings": { + "additionalProperties": false, + "properties": { + "NotebookOutputOption": { + "enum": [ + "Allowed", + "Disabled" + ], + "type": "string" + }, + "S3KmsKeyId": { + "maxLength": 2048, + "pattern": ".*", + "type": "string" + }, + "S3OutputPath": { + "maxLength": 1024, + "pattern": "^(https|s3)://([^/]+)/?(.*)$", + "type": "string" + } + }, + "type": "object" + }, + "SpaceEbsVolumeSizeInGb": { + "maximum": 16384, + "minimum": 5, + "type": "integer" + }, + "StudioLifecycleConfigArn": { + "maxLength": 256, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:studio-lifecycle-config/.*", + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "UserSettings": { + "additionalProperties": false, + "properties": { + "CodeEditorAppSettings": { + "$ref": "#/definitions/CodeEditorAppSettings" + }, + "CustomFileSystemConfigs": { + "items": { + "$ref": "#/definitions/CustomFileSystemConfig" + }, + "maxItems": 2, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "CustomPosixUserConfig": { + "$ref": "#/definitions/CustomPosixUserConfig" + }, + "DefaultLandingUri": { + "maxLength": 1023, + "type": "string" + }, + "ExecutionRole": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "JupyterLabAppSettings": { + "$ref": "#/definitions/JupyterLabAppSettings" + }, + "JupyterServerAppSettings": { + "$ref": "#/definitions/JupyterServerAppSettings" + }, + "KernelGatewayAppSettings": { + "$ref": "#/definitions/KernelGatewayAppSettings" + }, + "RSessionAppSettings": { + "$ref": "#/definitions/RSessionAppSettings" + }, + "RStudioServerProAppSettings": { + "$ref": "#/definitions/RStudioServerProAppSettings" + }, + "SecurityGroups": { + "insertionOrder": false, + "items": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 5, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "SharingSettings": { + "$ref": "#/definitions/SharingSettings" + }, + "SpaceStorageSettings": { + "$ref": "#/definitions/DefaultSpaceStorageSettings" + }, + "StudioWebPortal": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + } + }, + "required": [ + "ExecutionRole" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "sagemaker:CreateApp", + "sagemaker:CreateDomain", + "sagemaker:DescribeDomain", + "sagemaker:DescribeImage", + "sagemaker:DescribeImageVersion", + "iam:CreateServiceLinkedRole", + "iam:PassRole", + "efs:CreateFileSystem", + "kms:CreateGrant", + "kms:Decrypt", + "kms:DescribeKey", + "kms:GenerateDataKeyWithoutPlainText" + ] + }, + "delete": { + "permissions": [ + "sagemaker:DeleteApp", + "sagemaker:DeleteDomain", + "sagemaker:DescribeDomain" + ] + }, + "list": { + "permissions": [ + "sagemaker:ListDomains" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeDomain" + ] + }, + "update": { + "permissions": [ + "sagemaker:CreateApp", + "sagemaker:UpdateDomain", + "sagemaker:DescribeDomain", + "sagemaker:DescribeImage", + "sagemaker:DescribeImageVersion", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/DomainId" + ], + "properties": { + "AppNetworkAccessType": { + "enum": [ + "PublicInternetOnly", + "VpcOnly" + ], + "type": "string" + }, + "AppSecurityGroupManagement": { + "enum": [ + "Service", + "Customer" + ], + "type": "string" + }, + "AuthMode": { + "enum": [ + "SSO", + "IAM" + ], + "type": "string" + }, + "DefaultSpaceSettings": { + "$ref": "#/definitions/DefaultSpaceSettings" + }, + "DefaultUserSettings": { + "$ref": "#/definitions/UserSettings" + }, + "DomainArn": { + "maxLength": 256, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:domain/.*", + "type": "string" + }, + "DomainId": { + "maxLength": 63, + "pattern": "^d-(-*[a-z0-9])+", + "type": "string" + }, + "DomainName": { + "maxLength": 63, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", + "type": "string" + }, + "DomainSettings": { + "$ref": "#/definitions/DomainSettings" + }, + "HomeEfsFileSystemId": { + "maxLength": 32, + "type": "string" + }, + "KmsKeyId": { + "maxLength": 2048, + "pattern": ".*", + "type": "string" + }, + "SecurityGroupIdForDomainBoundary": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "SingleSignOnApplicationArn": { + "pattern": "^arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):sso::[0-9]+:application/[a-zA-Z0-9-_.]+/apl-[a-zA-Z0-9]+$", + "type": "string" + }, + "SingleSignOnManagedApplicationInstanceId": { + "maxLength": 256, + "type": "string" + }, + "SubnetIds": { + "insertionOrder": false, + "items": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 16, + "minItems": 1, + "type": "array", + "uniqueItems": false + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "Url": { + "maxLength": 1024, + "type": "string" + }, + "VpcId": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/DomainArn", + "/properties/Url", + "/properties/DomainId", + "/properties/HomeEfsFileSystemId", + "/properties/SecurityGroupIdForDomainBoundary", + "/properties/SingleSignOnManagedApplicationInstanceId", + "/properties/SingleSignOnApplicationArn" + ], + "required": [ + "AuthMode", + "DefaultUserSettings", + "DomainName", + "SubnetIds", + "VpcId" + ], + "typeName": "AWS::SageMaker::Domain", + "writeOnlyProperties": [ + "/properties/Tags" + ] +} diff --git a/src/cfnlint/data/schemas/providers/eu_west_3/aws-sagemaker-userprofile.json b/src/cfnlint/data/schemas/providers/eu_west_3/aws-sagemaker-userprofile.json new file mode 100644 index 0000000000..d0f8848903 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_west_3/aws-sagemaker-userprofile.json @@ -0,0 +1,524 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DomainId", + "/properties/UserProfileName", + "/properties/SingleSignOnUserIdentifier", + "/properties/SingleSignOnUserValue", + "/properties/UserSettings/RStudioServerProAppSettings/AccessStatus", + "/properties/UserSettings/RStudioServerProAppSettings/UserGroup", + "/properties/Tags" + ], + "definitions": { + "CodeEditorAppSettings": { + "additionalProperties": false, + "properties": { + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + }, + "LifecycleConfigArns": { + "items": { + "$ref": "#/definitions/StudioLifecycleConfigArn" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "CodeRepository": { + "additionalProperties": false, + "properties": { + "RepositoryUrl": { + "maxLength": 256, + "pattern": "^https://([.\\-_a-zA-Z0-9]+/?){3,1016}$", + "type": "string" + } + }, + "required": [ + "RepositoryUrl" + ], + "type": "object" + }, + "CustomFileSystemConfig": { + "additionalProperties": false, + "properties": { + "EFSFileSystemConfig": { + "$ref": "#/definitions/EFSFileSystemConfig" + } + }, + "type": "object" + }, + "CustomImage": { + "additionalProperties": false, + "properties": { + "AppImageConfigName": { + "maxLength": 63, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", + "type": "string" + }, + "ImageName": { + "maxLength": 63, + "pattern": "^[a-zA-Z0-9]([-.]?[a-zA-Z0-9]){0,62}$", + "type": "string" + }, + "ImageVersionNumber": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "AppImageConfigName", + "ImageName" + ], + "type": "object" + }, + "CustomPosixUserConfig": { + "additionalProperties": false, + "properties": { + "Gid": { + "maximum": 4000000, + "minimum": 1001, + "type": "integer" + }, + "Uid": { + "maximum": 4000000, + "minimum": 10000, + "type": "integer" + } + }, + "required": [ + "Uid", + "Gid" + ], + "type": "object" + }, + "DefaultEbsStorageSettings": { + "additionalProperties": false, + "properties": { + "DefaultEbsVolumeSizeInGb": { + "$ref": "#/definitions/SpaceEbsVolumeSizeInGb" + }, + "MaximumEbsVolumeSizeInGb": { + "$ref": "#/definitions/SpaceEbsVolumeSizeInGb" + } + }, + "required": [ + "DefaultEbsVolumeSizeInGb", + "MaximumEbsVolumeSizeInGb" + ], + "type": "object" + }, + "DefaultSpaceStorageSettings": { + "additionalProperties": false, + "properties": { + "DefaultEbsStorageSettings": { + "$ref": "#/definitions/DefaultEbsStorageSettings" + } + }, + "type": "object" + }, + "EFSFileSystemConfig": { + "additionalProperties": false, + "properties": { + "FileSystemId": { + "maxLength": 21, + "minLength": 11, + "pattern": "^(fs-[0-9a-f]{8,})$", + "type": "string" + }, + "FileSystemPath": { + "maxLength": 256, + "minLength": 1, + "pattern": "^\\/\\S*$", + "type": "string" + } + }, + "required": [ + "FileSystemId" + ], + "type": "object" + }, + "JupyterLabAppSettings": { + "additionalProperties": false, + "properties": { + "CodeRepositories": { + "items": { + "$ref": "#/definitions/CodeRepository" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "CustomImages": { + "items": { + "$ref": "#/definitions/CustomImage" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + }, + "LifecycleConfigArns": { + "items": { + "$ref": "#/definitions/StudioLifecycleConfigArn" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "JupyterServerAppSettings": { + "additionalProperties": false, + "properties": { + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + } + }, + "type": "object" + }, + "KernelGatewayAppSettings": { + "additionalProperties": false, + "properties": { + "CustomImages": { + "items": { + "$ref": "#/definitions/CustomImage" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + } + }, + "type": "object" + }, + "RStudioServerProAppSettings": { + "additionalProperties": false, + "properties": { + "AccessStatus": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "UserGroup": { + "enum": [ + "R_STUDIO_ADMIN", + "R_STUDIO_USER" + ], + "type": "string" + } + }, + "type": "object" + }, + "ResourceSpec": { + "additionalProperties": false, + "properties": { + "InstanceType": { + "enum": [ + "system", + "ml.t3.micro", + "ml.t3.small", + "ml.t3.medium", + "ml.t3.large", + "ml.t3.xlarge", + "ml.t3.2xlarge", + "ml.m5.large", + "ml.m5.xlarge", + "ml.m5.2xlarge", + "ml.m5.4xlarge", + "ml.m5.8xlarge", + "ml.m5.12xlarge", + "ml.m5.16xlarge", + "ml.m5.24xlarge", + "ml.c5.large", + "ml.c5.xlarge", + "ml.c5.2xlarge", + "ml.c5.4xlarge", + "ml.c5.9xlarge", + "ml.c5.12xlarge", + "ml.c5.18xlarge", + "ml.c5.24xlarge", + "ml.p3.2xlarge", + "ml.p3.8xlarge", + "ml.p3.16xlarge", + "ml.g4dn.xlarge", + "ml.g4dn.2xlarge", + "ml.g4dn.4xlarge", + "ml.g4dn.8xlarge", + "ml.g4dn.12xlarge", + "ml.g4dn.16xlarge", + "ml.r5.large", + "ml.r5.xlarge", + "ml.r5.2xlarge", + "ml.r5.4xlarge", + "ml.r5.8xlarge", + "ml.r5.12xlarge", + "ml.r5.16xlarge", + "ml.r5.24xlarge", + "ml.p3dn.24xlarge", + "ml.m5d.large", + "ml.m5d.xlarge", + "ml.m5d.2xlarge", + "ml.m5d.4xlarge", + "ml.m5d.8xlarge", + "ml.m5d.12xlarge", + "ml.m5d.16xlarge", + "ml.m5d.24xlarge", + "ml.g5.xlarge", + "ml.g5.2xlarge", + "ml.g5.4xlarge", + "ml.g5.8xlarge", + "ml.g5.12xlarge", + "ml.g5.16xlarge", + "ml.g5.24xlarge", + "ml.g5.48xlarge", + "ml.p4d.24xlarge", + "ml.p4de.24xlarge", + "ml.geospatial.interactive", + "ml.trn1.2xlarge", + "ml.trn1.32xlarge", + "ml.trn1n.32xlarge" + ], + "type": "string" + }, + "SageMakerImageArn": { + "maxLength": 256, + "pattern": "^arn:aws(-[\\w]+)*:sagemaker:.+:[0-9]{12}:image/[a-z0-9]([-.]?[a-z0-9])*$", + "type": "string" + }, + "SageMakerImageVersionArn": { + "maxLength": 256, + "pattern": "^arn:aws(-[\\w]+)*:sagemaker:.+:[0-9]{12}:image-version/[a-z0-9]([-.]?[a-z0-9])*/[0-9]+$", + "type": "string" + } + }, + "type": "object" + }, + "SharingSettings": { + "additionalProperties": false, + "properties": { + "NotebookOutputOption": { + "enum": [ + "Allowed", + "Disabled" + ], + "type": "string" + }, + "S3KmsKeyId": { + "maxLength": 2048, + "pattern": ".*", + "type": "string" + }, + "S3OutputPath": { + "maxLength": 1024, + "pattern": "^(https|s3)://([^/]+)/?(.*)$", + "type": "string" + } + }, + "type": "object" + }, + "SpaceEbsVolumeSizeInGb": { + "maximum": 16384, + "minimum": 5, + "type": "integer" + }, + "StudioLifecycleConfigArn": { + "maxLength": 256, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:studio-lifecycle-config/.*", + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "UserSettings": { + "additionalProperties": false, + "properties": { + "CodeEditorAppSettings": { + "$ref": "#/definitions/CodeEditorAppSettings" + }, + "CustomFileSystemConfigs": { + "items": { + "$ref": "#/definitions/CustomFileSystemConfig" + }, + "maxItems": 2, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "CustomPosixUserConfig": { + "$ref": "#/definitions/CustomPosixUserConfig" + }, + "DefaultLandingUri": { + "maxLength": 1023, + "type": "string" + }, + "ExecutionRole": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "JupyterLabAppSettings": { + "$ref": "#/definitions/JupyterLabAppSettings" + }, + "JupyterServerAppSettings": { + "$ref": "#/definitions/JupyterServerAppSettings" + }, + "KernelGatewayAppSettings": { + "$ref": "#/definitions/KernelGatewayAppSettings" + }, + "RStudioServerProAppSettings": { + "$ref": "#/definitions/RStudioServerProAppSettings" + }, + "SecurityGroups": { + "items": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 5, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "SharingSettings": { + "$ref": "#/definitions/SharingSettings" + }, + "SpaceStorageSettings": { + "$ref": "#/definitions/DefaultSpaceStorageSettings" + }, + "StudioWebPortal": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + } + }, + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "sagemaker:CreateUserProfile", + "sagemaker:DescribeUserProfile", + "sagemaker:DescribeImage", + "sagemaker:DescribeImageVersion", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "sagemaker:DeleteUserProfile", + "sagemaker:DescribeUserProfile" + ] + }, + "list": { + "permissions": [ + "sagemaker:ListUserProfiles" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeUserProfile" + ] + }, + "update": { + "permissions": [ + "sagemaker:UpdateUserProfile", + "sagemaker:DescribeUserProfile", + "sagemaker:DescribeImage", + "sagemaker:DescribeImageVersion", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/UserProfileName", + "/properties/DomainId" + ], + "properties": { + "DomainId": { + "maxLength": 63, + "minLength": 1, + "type": "string" + }, + "SingleSignOnUserIdentifier": { + "pattern": "UserName", + "type": "string" + }, + "SingleSignOnUserValue": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "UserProfileArn": { + "maxLength": 256, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:user-profile/.*", + "type": "string" + }, + "UserProfileName": { + "maxLength": 63, + "minLength": 1, + "type": "string" + }, + "UserSettings": { + "$ref": "#/definitions/UserSettings", + "maxItems": 50, + "minItems": 0, + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/UserProfileArn" + ], + "required": [ + "DomainId", + "UserProfileName" + ], + "typeName": "AWS::SageMaker::UserProfile", + "writeOnlyProperties": [ + "/properties/Tags" + ] +} diff --git a/src/cfnlint/data/schemas/providers/eu_west_3/aws-verifiedpermissions-identitysource.json b/src/cfnlint/data/schemas/providers/eu_west_3/aws-verifiedpermissions-identitysource.json new file mode 100644 index 0000000000..46a0ad88f1 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_west_3/aws-verifiedpermissions-identitysource.json @@ -0,0 +1,221 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PolicyStoreId" + ], + "definitions": { + "CognitoGroupConfiguration": { + "additionalProperties": false, + "properties": { + "GroupEntityType": { + "maxLength": 200, + "minLength": 1, + "pattern": "^([_a-zA-Z][_a-zA-Z0-9]*::)*[_a-zA-Z][_a-zA-Z0-9]*$", + "type": "string" + } + }, + "required": [ + "GroupEntityType" + ], + "type": "object" + }, + "CognitoUserPoolConfiguration": { + "additionalProperties": false, + "properties": { + "ClientIds": { + "insertionOrder": false, + "items": { + "maxLength": 255, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "maxItems": 1000, + "minItems": 0, + "type": "array" + }, + "GroupConfiguration": { + "$ref": "#/definitions/CognitoGroupConfiguration" + }, + "UserPoolArn": { + "maxLength": 255, + "minLength": 1, + "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", + "type": "string" + } + }, + "required": [ + "UserPoolArn" + ], + "type": "object" + }, + "IdentitySourceConfiguration": { + "additionalProperties": false, + "properties": { + "CognitoUserPoolConfiguration": { + "$ref": "#/definitions/CognitoUserPoolConfiguration" + } + }, + "required": [ + "CognitoUserPoolConfiguration" + ], + "title": "CognitoUserPoolConfiguration", + "type": "object" + }, + "IdentitySourceDetails": { + "additionalProperties": false, + "properties": { + "ClientIds": { + "insertionOrder": false, + "items": { + "maxLength": 255, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "maxItems": 1000, + "minItems": 0, + "type": "array" + }, + "DiscoveryUrl": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^https://.*$", + "type": "string" + }, + "OpenIdIssuer": { + "$ref": "#/definitions/OpenIdIssuer" + }, + "UserPoolArn": { + "maxLength": 255, + "minLength": 1, + "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", + "type": "string" + } + }, + "type": "object" + }, + "OpenIdIssuer": { + "enum": [ + "COGNITO" + ], + "type": "string" + } + }, + "deprecatedProperties": [ + "/properties/Details" + ], + "handlers": { + "create": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "delete": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "PolicyStoreId": { + "$ref": "resource-schema.json#/properties/PolicyStoreId" + } + }, + "required": [ + "PolicyStoreId" + ] + }, + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "read": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "update": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + } + }, + "primaryIdentifier": [ + "/properties/IdentitySourceId", + "/properties/PolicyStoreId" + ], + "properties": { + "Configuration": { + "$ref": "#/definitions/IdentitySourceConfiguration" + }, + "Details": { + "$ref": "#/definitions/IdentitySourceDetails" + }, + "IdentitySourceId": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]*$", + "type": "string" + }, + "PolicyStoreId": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]*$", + "type": "string" + }, + "PrincipalEntityType": { + "maxLength": 200, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Details", + "/properties/IdentitySourceId" + ], + "required": [ + "Configuration", + "PolicyStoreId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-avp", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::VerifiedPermissions::IdentitySource" +} 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 3a97f2d27e..8864f5ba40 100644 --- a/src/cfnlint/data/schemas/providers/me_central_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/me_central_1/__init__.py @@ -40,8 +40,11 @@ "AWS::ApiGateway::DocumentationPart", "AWS::CloudWatch::CompositeAlarm", "AWS::Route53Resolver::FirewallDomainList", + "AWS::Redshift::EndpointAccess", "AWS::AppConfig::Application", "AWS::OpsWorks::Stack", + "AWS::MediaTailor::Channel", + "AWS::MediaTailor::ChannelPolicy", "AWS::GameLift::Fleet", "AWS::DataSync::LocationFSxWindows", "AWS::GameLift::Build", @@ -57,6 +60,7 @@ "AWS::WAFv2::RegexPatternSet", "AWS::EKS::FargateProfile", "AWS::Route53::DNSSEC", + "AWS::Redshift::EndpointAuthorization", "AWS::EC2::TransitGatewayRouteTable", "AWS::ControlTower::EnabledControl", "AWS::Route53::RecordSet", @@ -65,6 +69,7 @@ "AWS::OpsWorks::Layer", "AWS::CloudTrail::EventDataStore", "AWS::KinesisFirehose::DeliveryStream", + "AWS::Cognito::UserPoolUserToGroupAttachment", "AWS::PCAConnectorAD::DirectoryRegistration", "AWS::ImageBuilder::Component", "AWS::MediaConnect::FlowEntitlement", @@ -83,6 +88,7 @@ "AWS::DataSync::LocationHDFS", "AWS::Events::Archive", "AWS::MSK::Cluster", + "AWS::SecurityHub::DelegatedAdmin", "AWS::ControlTower::EnabledBaseline", "AWS::EC2::VPCEndpointConnectionNotification", "AWS::CodePipeline::Pipeline", @@ -134,6 +140,7 @@ "AWS::SSM::Document", "AWS::IAM::Role", "AWS::Events::ApiDestination", + "AWS::MediaLive::Multiplexprogram", "AWS::ElastiCache::ServerlessCache", "AWS::CloudFront::CloudFrontOriginAccessIdentity", "AWS::ApiGateway::ApiKey", @@ -201,6 +208,7 @@ "AWS::ApiGateway::VpcLink", "AWS::IAM::ServerCertificate", "AWS::IoT::SecurityProfile", + "AWS::GlobalAccelerator::CrossAccountAttachment", "AWS::Events::EventBus", "AWS::SQS::QueueInlinePolicy", "AWS::Organizations::Organization", @@ -218,6 +226,7 @@ "AWS::Route53Resolver::FirewallRuleGroup", "AWS::MSK::Configuration", "AWS::EC2::TransitGateway", + "AWS::Cognito::UserPoolGroup", "AWS::EC2::VPCEndpointServicePermissions", "AWS::SSM::MaintenanceWindowTask", "AWS::EC2::TransitGatewayMulticastDomain", @@ -225,6 +234,7 @@ "AWS::EKS::Cluster", "AWS::EFS::FileSystem", "AWS::Logs::QueryDefinition", + "AWS::SecurityHub::ProductSubscription", "AWS::IAM::InstanceProfile", "AWS::IoT::BillingGroup", "AWS::DataSync::LocationNFS", @@ -271,6 +281,7 @@ "AWS::CloudFront::KeyGroup", "AWS::EC2::NetworkInterfaceAttachment", "AWS::EC2::TransitGatewayAttachment", + "AWS::Cognito::UserPoolUser", "AWS::CodeDeploy::DeploymentConfig", "AWS::StepFunctions::StateMachineVersion", "AWS::ServiceCatalogAppRegistry::Application", @@ -412,6 +423,7 @@ "AWS::IAM::UserPolicy", "AWS::CloudFront::OriginAccessControl", "AWS::IoT::MitigationAction", + "AWS::Cognito::UserPool", "AWS::SecretsManager::RotationSchedule", "AWS::Lambda::Permission", "AWS::NetworkFirewall::FirewallPolicy", @@ -420,7 +432,9 @@ "AWS::ServiceCatalogAppRegistry::AttributeGroup", "AWS::AppSync::GraphQLApi", "AWS::EC2::EgressOnlyInternetGateway", + "AWS::SecurityHub::Insight", "AWS::EC2::VPCCidrBlock", + "AWS::MediaTailor::VodSource", "AWS::ACMPCA::CertificateAuthority", "AWS::Athena::PreparedStatement", "AWS::AutoScaling::ScheduledAction", @@ -445,6 +459,7 @@ "AWS::ElasticLoadBalancingV2::TrustStore", "AWS::EC2::KeyPair", "AWS::FSx::FileSystem", + "AWS::MediaTailor::LiveSource", "AWS::EC2::EIPAssociation", "AWS::ElasticBeanstalk::Application", "AWS::IoT::ThingPrincipalAttachment", @@ -455,6 +470,7 @@ "AWS::RDS::DBClusterParameterGroup", "AWS::WAF::XssMatchSet", "AWS::IoT::CertificateProvider", + "AWS::MediaLive::Multiplex", "AWS::Scheduler::ScheduleGroup", "AWS::EventSchemas::RegistryPolicy", "AWS::Route53::KeySigningKey", @@ -478,6 +494,7 @@ "AWS::CloudFront::ResponseHeadersPolicy", "AWS::SecurityHub::AutomationRule", "AWS::MSK::ClusterPolicy", + "AWS::MediaTailor::SourceLocation", "AWS::GuardDuty::Master", "AWS::KMS::Alias", "AWS::XRay::SamplingRule", @@ -517,6 +534,7 @@ "AWS::LakeFormation::DataLakeSettings", "AWS::AutoScaling::ScalingPolicy", "AWS::ECR::RegistryPolicy", + "AWS::Redshift::ScheduledAction", "AWS::RDS::DBSecurityGroup", "AWS::CloudWatch::MetricStream", "AWS::SSM::Parameter", @@ -548,8 +566,11 @@ "AWS::EC2::LaunchTemplate", "AWS::CloudFront::OriginRequestPolicy", "AWS::DataSync::LocationFSxONTAP", + "AWS::Cognito::UserPoolRiskConfigurationAttachment", + "AWS::MediaTailor::PlaybackConfiguration", "AWS::PCAConnectorAD::ServicePrincipalName", "AWS::ElasticBeanstalk::Environment", + "AWS::Cognito::UserPoolClient", "AWS::Lambda::Version", "AWS::EC2::DHCPOptions", "AWS::EC2::IPAMPool", @@ -561,12 +582,14 @@ "AWS::EC2::EIP", "AWS::VerifiedPermissions::Policy", "AWS::CloudFormation::ResourceVersion", + "AWS::Cognito::LogDeliveryConfiguration", "AWS::Chatbot::MicrosoftTeamsChannelConfiguration", "AWS::RDS::DBParameterGroup", "AWS::SecurityHub::Hub", "AWS::S3::AccessPoint", "AWS::Batch::JobQueue", "AWS::ElasticLoadBalancingV2::Listener", + "AWS::Redshift::EventSubscription", "AWS::CloudFormation::WaitConditionHandle", "AWS::GlobalAccelerator::Accelerator", "AWS::EKS::Addon", @@ -583,7 +606,6 @@ "aws-guardduty-filter.json", "aws-ecs-service.json", "aws-dms-replicationconfig.json", - "aws-ec2-securitygroupegress.json", "aws-ec2-localgatewayroutetablevpcassociation.json", "aws-glue-dataqualityruleset.json", "aws-config-configurationrecorder.json", @@ -593,17 +615,20 @@ "aws-appconfig-extensionassociation.json", "aws-ec2-ipampoolcidr.json", "aws-iot-topicruledestination.json", + "aws-redshift-clustersubnetgroup.json", "aws-rds-dbinstance.json", "aws-ec2-vpcdhcpoptionsassociation.json", "aws-ec2-networkacl.json", - "aws-lambda-eventsourcemapping.json", "aws-logs-resourcepolicy.json", "aws-servicecatalog-launchnotificationconstraint.json", "aws-iot-cacertificate.json", "aws-transfer-certificate.json", "aws-cloudwatch-compositealarm.json", "aws-route53resolver-firewalldomainlist.json", + "aws-redshift-endpointaccess.json", "aws-appconfig-application.json", + "aws-mediatailor-channel.json", + "aws-mediatailor-channelpolicy.json", "aws-datasync-locationfsxwindows.json", "aws-autoscaling-warmpool.json", "aws-applicationautoscaling-scalabletarget.json", @@ -615,12 +640,14 @@ "aws-wafv2-regexpatternset.json", "aws-eks-fargateprofile.json", "aws-route53-dnssec.json", + "aws-redshift-endpointauthorization.json", "aws-ec2-transitgatewayroutetable.json", "aws-controltower-enabledcontrol.json", "aws-route53-recordset.json", "aws-eks-accessentry.json", "aws-elasticache-securitygroup.json", "aws-kinesisfirehose-deliverystream.json", + "aws-cognito-userpoolusertogroupattachment.json", "aws-pcaconnectorad-directoryregistration.json", "aws-imagebuilder-component.json", "aws-mediaconnect-flowentitlement.json", @@ -637,6 +664,7 @@ "aws-datasync-locationhdfs.json", "aws-events-archive.json", "aws-msk-cluster.json", + "aws-securityhub-delegatedadmin.json", "aws-controltower-enabledbaseline.json", "aws-ec2-vpcendpointconnectionnotification.json", "aws-codepipeline-pipeline.json", @@ -683,13 +711,13 @@ "aws-wafv2-ipset.json", "aws-iam-role.json", "aws-events-apidestination.json", + "aws-medialive-multiplexprogram.json", "aws-elasticache-serverlesscache.json", "aws-cloudfront-cloudfrontoriginaccessidentity.json", "aws-autoscaling-launchconfiguration.json", "aws-lambda-alias.json", "aws-logs-loganomalydetector.json", "aws-ec2-transitgatewaymulticastdomainassociation.json", - "aws-ec2-transitgatewayroutetableassociation.json", "aws-appconfig-environment.json", "aws-imagebuilder-image.json", "aws-elasticache-securitygroupingress.json", @@ -740,6 +768,7 @@ "aws-servicecatalog-portfolioshare.json", "aws-iam-servercertificate.json", "aws-iot-securityprofile.json", + "aws-globalaccelerator-crossaccountattachment.json", "aws-events-eventbus.json", "aws-sqs-queueinlinepolicy.json", "aws-organizations-organization.json", @@ -756,6 +785,7 @@ "aws-route53resolver-firewallrulegroup.json", "aws-msk-configuration.json", "aws-ec2-transitgateway.json", + "aws-cognito-userpoolgroup.json", "aws-ec2-vpcendpointservicepermissions.json", "aws-ssm-maintenancewindowtask.json", "aws-ec2-transitgatewaymulticastdomain.json", @@ -763,10 +793,10 @@ "aws-eks-cluster.json", "aws-efs-filesystem.json", "aws-logs-querydefinition.json", + "aws-securityhub-productsubscription.json", "aws-iam-instanceprofile.json", "aws-iot-billinggroup.json", "aws-datasync-locationnfs.json", - "aws-sagemaker-domain.json", "aws-certificatemanager-certificate.json", "aws-sdb-domain.json", "aws-ec2-subnetroutetableassociation.json", @@ -807,6 +837,7 @@ "aws-iam-samlprovider.json", "aws-cloudfront-keygroup.json", "aws-ec2-networkinterfaceattachment.json", + "aws-cognito-userpooluser.json", "aws-codedeploy-deploymentconfig.json", "aws-stepfunctions-statemachineversion.json", "aws-servicecatalogappregistry-application.json", @@ -821,12 +852,14 @@ "aws-datasync-locationsmb.json", "aws-securityhub-standard.json", "aws-sns-topicinlinepolicy.json", + "aws-redshift-clusterparametergroup.json", "aws-organizations-policy.json", "aws-glue-trigger.json", "aws-globalaccelerator-listener.json", "aws-verifiedpermissions-policystore.json", "aws-ec2-vpcpeeringconnection.json", "aws-sns-topicpolicy.json", + "aws-networkfirewall-rulegroup.json", "aws-kms-key.json", "aws-route53resolver-resolverdnssecconfig.json", "aws-route53resolver-firewallrulegroupassociation.json", @@ -866,6 +899,7 @@ "aws-s3-bucketpolicy.json", "aws-appsync-graphqlschema.json", "aws-iot-custommetric.json", + "aws-redshift-cluster.json", "aws-emr-instancefleetconfig.json", "aws-emr-cluster.json", "aws-rds-dbcluster.json", @@ -887,7 +921,6 @@ "aws-appconfig-hostedconfigurationversion.json", "aws-datasync-locationefs.json", "aws-ec2-localgatewayroutetable.json", - "aws-sagemaker-appimageconfig.json", "aws-elasticloadbalancingv2-targetgroup.json", "aws-applicationautoscaling-scalingpolicy.json", "aws-pipes-pipe.json", @@ -931,6 +964,7 @@ "aws-iam-userpolicy.json", "aws-cloudfront-originaccesscontrol.json", "aws-iot-mitigationaction.json", + "aws-cognito-userpool.json", "aws-secretsmanager-rotationschedule.json", "aws-lambda-permission.json", "aws-networkfirewall-firewallpolicy.json", @@ -939,7 +973,8 @@ "aws-servicecatalogappregistry-attributegroup.json", "aws-appsync-graphqlapi.json", "aws-ec2-egressonlyinternetgateway.json", - "aws-acmpca-certificateauthority.json", + "aws-securityhub-insight.json", + "aws-mediatailor-vodsource.json", "aws-athena-preparedstatement.json", "aws-autoscaling-scheduledaction.json", "aws-lakeformation-resource.json", @@ -962,6 +997,7 @@ "aws-elasticloadbalancingv2-truststore.json", "aws-ec2-keypair.json", "aws-fsx-filesystem.json", + "aws-mediatailor-livesource.json", "aws-ec2-eipassociation.json", "aws-ec2-capacityreservation.json", "aws-elasticloadbalancing-loadbalancer.json", @@ -969,6 +1005,7 @@ "aws-stepfunctions-statemachine.json", "aws-rds-dbclusterparametergroup.json", "aws-iot-certificateprovider.json", + "aws-medialive-multiplex.json", "aws-scheduler-schedulegroup.json", "aws-eventschemas-registrypolicy.json", "aws-route53-keysigningkey.json", @@ -978,8 +1015,8 @@ "aws-mediaconnect-flowvpcinterface.json", "aws-glue-workflow.json", "aws-iot-accountauditconfiguration.json", - "aws-sagemaker-userprofile.json", "aws-ec2-prefixlist.json", + "aws-ec2-instance.json", "aws-ec2-subnetcidrblock.json", "aws-waf-sqlinjectionmatchset.json", "aws-ec2-transitgatewayvpcattachment.json", @@ -990,6 +1027,7 @@ "aws-cloudfront-responseheaderspolicy.json", "aws-securityhub-automationrule.json", "aws-msk-clusterpolicy.json", + "aws-mediatailor-sourcelocation.json", "aws-guardduty-master.json", "aws-xray-samplingrule.json", "aws-route53resolver-resolverrule.json", @@ -1000,6 +1038,7 @@ "aws-acmpca-certificate.json", "aws-ec2-ipamallocation.json", "aws-workspaces-workspace.json", + "aws-emr-studio.json", "aws-ec2-instanceconnectendpoint.json", "aws-appsync-sourceapiassociation.json", "aws-datasync-locationobjectstorage.json", @@ -1020,6 +1059,7 @@ "aws-lakeformation-datalakesettings.json", "aws-autoscaling-scalingpolicy.json", "aws-ecr-registrypolicy.json", + "aws-redshift-scheduledaction.json", "aws-rds-dbsecuritygroup.json", "aws-cloudwatch-metricstream.json", "aws-ssm-parameter.json", @@ -1045,7 +1085,10 @@ "aws-ec2-launchtemplate.json", "aws-cloudfront-originrequestpolicy.json", "aws-datasync-locationfsxontap.json", + "aws-cognito-userpoolriskconfigurationattachment.json", + "aws-mediatailor-playbackconfiguration.json", "aws-pcaconnectorad-serviceprincipalname.json", + "aws-cognito-userpoolclient.json", "aws-lambda-version.json", "aws-ec2-dhcpoptions.json", "aws-ec2-ipampool.json", @@ -1056,12 +1099,14 @@ "aws-ec2-eip.json", "aws-verifiedpermissions-policy.json", "aws-cloudformation-resourceversion.json", + "aws-cognito-logdeliveryconfiguration.json", "aws-chatbot-microsoftteamschannelconfiguration.json", "aws-rds-dbparametergroup.json", "aws-securityhub-hub.json", "aws-s3-accesspoint.json", "aws-batch-jobqueue.json", "aws-elasticloadbalancingv2-listener.json", + "aws-redshift-eventsubscription.json", "aws-cloudformation-waitconditionhandle.json", "aws-globalaccelerator-accelerator.json", "aws-eks-addon.json", diff --git a/src/cfnlint/data/schemas/providers/me_central_1/aws-acmpca-certificateauthority.json b/src/cfnlint/data/schemas/providers/me_central_1/aws-acmpca-certificateauthority.json new file mode 100644 index 0000000000..08ec85e5fa --- /dev/null +++ b/src/cfnlint/data/schemas/providers/me_central_1/aws-acmpca-certificateauthority.json @@ -0,0 +1,429 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Type", + "/properties/KeyAlgorithm", + "/properties/SigningAlgorithm", + "/properties/Subject", + "/properties/CsrExtensions", + "/properties/KeyStorageSecurityStandard", + "/properties/UsageMode" + ], + "definitions": { + "AccessDescription": { + "additionalProperties": false, + "properties": { + "AccessLocation": { + "$ref": "#/definitions/GeneralName" + }, + "AccessMethod": { + "$ref": "#/definitions/AccessMethod" + } + }, + "required": [ + "AccessMethod", + "AccessLocation" + ], + "type": "object" + }, + "AccessMethod": { + "additionalProperties": false, + "properties": { + "AccessMethodType": { + "$ref": "#/definitions/AccessMethodType" + }, + "CustomObjectIdentifier": { + "$ref": "#/definitions/CustomObjectIdentifier" + } + }, + "type": "object" + }, + "AccessMethodType": { + "type": "string" + }, + "Arn": { + "type": "string" + }, + "CrlConfiguration": { + "additionalProperties": false, + "properties": { + "CrlDistributionPointExtensionConfiguration": { + "$ref": "#/definitions/CrlDistributionPointExtensionConfiguration" + }, + "CustomCname": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + }, + "ExpirationInDays": { + "type": "integer" + }, + "S3BucketName": { + "type": "string" + }, + "S3ObjectAcl": { + "type": "string" + } + }, + "type": "object" + }, + "CrlDistributionPointExtensionConfiguration": { + "additionalProperties": false, + "properties": { + "OmitExtension": { + "type": "boolean" + } + }, + "required": [ + "OmitExtension" + ], + "type": "object" + }, + "CsrExtensions": { + "additionalProperties": false, + "properties": { + "KeyUsage": { + "$ref": "#/definitions/KeyUsage" + }, + "SubjectInformationAccess": { + "$ref": "#/definitions/SubjectInformationAccess" + } + }, + "type": "object" + }, + "CustomAttribute": { + "additionalProperties": false, + "properties": { + "ObjectIdentifier": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "ObjectIdentifier", + "Value" + ], + "type": "object" + }, + "CustomAttributeList": { + "items": { + "$ref": "#/definitions/CustomAttribute" + }, + "type": "array" + }, + "CustomObjectIdentifier": { + "type": "string" + }, + "DnsName": { + "type": "string" + }, + "EdiPartyName": { + "additionalProperties": false, + "properties": { + "NameAssigner": { + "type": "string" + }, + "PartyName": { + "type": "string" + } + }, + "required": [ + "PartyName", + "NameAssigner" + ], + "type": "object" + }, + "GeneralName": { + "additionalProperties": false, + "properties": { + "DirectoryName": { + "$ref": "#/definitions/Subject" + }, + "DnsName": { + "$ref": "#/definitions/DnsName" + }, + "EdiPartyName": { + "$ref": "#/definitions/EdiPartyName" + }, + "IpAddress": { + "$ref": "#/definitions/IpAddress" + }, + "OtherName": { + "$ref": "#/definitions/OtherName" + }, + "RegisteredId": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Rfc822Name": { + "$ref": "#/definitions/Rfc822Name" + }, + "UniformResourceIdentifier": { + "$ref": "#/definitions/UniformResourceIdentifier" + } + }, + "type": "object" + }, + "IpAddress": { + "type": "string" + }, + "KeyUsage": { + "additionalProperties": false, + "properties": { + "CRLSign": { + "default": false, + "type": "boolean" + }, + "DataEncipherment": { + "default": false, + "type": "boolean" + }, + "DecipherOnly": { + "default": false, + "type": "boolean" + }, + "DigitalSignature": { + "default": false, + "type": "boolean" + }, + "EncipherOnly": { + "default": false, + "type": "boolean" + }, + "KeyAgreement": { + "default": false, + "type": "boolean" + }, + "KeyCertSign": { + "default": false, + "type": "boolean" + }, + "KeyEncipherment": { + "default": false, + "type": "boolean" + }, + "NonRepudiation": { + "default": false, + "type": "boolean" + } + }, + "type": "object" + }, + "OcspConfiguration": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + }, + "OcspCustomCname": { + "type": "string" + } + }, + "type": "object" + }, + "OtherName": { + "additionalProperties": false, + "properties": { + "TypeId": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "TypeId", + "Value" + ], + "type": "object" + }, + "RevocationConfiguration": { + "additionalProperties": false, + "properties": { + "CrlConfiguration": { + "$ref": "#/definitions/CrlConfiguration" + }, + "OcspConfiguration": { + "$ref": "#/definitions/OcspConfiguration" + } + }, + "type": "object" + }, + "Rfc822Name": { + "type": "string" + }, + "Subject": { + "additionalProperties": false, + "properties": { + "CommonName": { + "type": "string" + }, + "Country": { + "type": "string" + }, + "CustomAttributes": { + "$ref": "#/definitions/CustomAttributeList" + }, + "DistinguishedNameQualifier": { + "type": "string" + }, + "GenerationQualifier": { + "type": "string" + }, + "GivenName": { + "type": "string" + }, + "Initials": { + "type": "string" + }, + "Locality": { + "type": "string" + }, + "Organization": { + "type": "string" + }, + "OrganizationalUnit": { + "type": "string" + }, + "Pseudonym": { + "type": "string" + }, + "SerialNumber": { + "type": "string" + }, + "State": { + "type": "string" + }, + "Surname": { + "type": "string" + }, + "Title": { + "type": "string" + } + }, + "type": "object" + }, + "SubjectInformationAccess": { + "items": { + "$ref": "#/definitions/AccessDescription" + }, + "type": "array" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "UniformResourceIdentifier": { + "type": "string" + } + }, + "handlers": { + "create": { + "permissions": [ + "acm-pca:CreateCertificateAuthority", + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr" + ] + }, + "delete": { + "permissions": [ + "acm-pca:DeleteCertificateAuthority", + "acm-pca:DescribeCertificateAuthority" + ] + }, + "list": { + "permissions": [ + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr", + "acm-pca:ListCertificateAuthorities", + "acm-pca:ListTags" + ] + }, + "read": { + "permissions": [ + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr", + "acm-pca:ListTags" + ] + }, + "update": { + "permissions": [ + "acm-pca:ListTags", + "acm-pca:TagCertificateAuthority", + "acm-pca:UntagCertificateAuthority", + "acm-pca:UpdateCertificateAuthority" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "$ref": "#/definitions/Arn" + }, + "CertificateSigningRequest": { + "type": "string" + }, + "CsrExtensions": { + "$ref": "#/definitions/CsrExtensions" + }, + "KeyAlgorithm": { + "type": "string" + }, + "KeyStorageSecurityStandard": { + "type": "string" + }, + "RevocationConfiguration": { + "$ref": "#/definitions/RevocationConfiguration" + }, + "SigningAlgorithm": { + "type": "string" + }, + "Subject": { + "$ref": "#/definitions/Subject" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "Type": { + "type": "string" + }, + "UsageMode": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CertificateSigningRequest" + ], + "required": [ + "Type", + "KeyAlgorithm", + "SigningAlgorithm", + "Subject" + ], + "sourceUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_ACMPCA.html", + "typeName": "AWS::ACMPCA::CertificateAuthority", + "writeOnlyProperties": [ + "/properties/Subject", + "/properties/Subject", + "/properties/CsrExtensions", + "/properties/Tags", + "/properties/RevocationConfiguration", + "/properties/KeyStorageSecurityStandard" + ] +} diff --git a/src/cfnlint/data/schemas/providers/me_central_1/aws-dynamodb-globaltable.json b/src/cfnlint/data/schemas/providers/me_central_1/aws-dynamodb-globaltable.json index 4e5ba995cb..ae37e9142b 100644 --- a/src/cfnlint/data/schemas/providers/me_central_1/aws-dynamodb-globaltable.json +++ b/src/cfnlint/data/schemas/providers/me_central_1/aws-dynamodb-globaltable.json @@ -8,6 +8,27 @@ ] ], "additionalProperties": false, + "allOf": [ + { + "if": { + "required": [ + "LocalSecondaryIndexes" + ], + "type": "object" + }, + "then": { + "properties": { + "AttributeDefinitions": { + "minItems": 2 + }, + "KeySchema": { + "minItems": 2 + } + }, + "type": "object" + } + } + ], "createOnlyProperties": [ "/properties/LocalSecondaryIndexes", "/properties/TableName", @@ -79,13 +100,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "minItems": 1, - "type": "array", - "uniqueItems": true + "minItems": 1 }, "Projection": { "$ref": "#/definitions/Projection" @@ -102,22 +119,60 @@ "type": "object" }, "KeySchema": { - "additionalProperties": false, - "properties": { - "AttributeName": { - "maxLength": 255, - "minLength": 1, - "type": "string" + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "KeyType": { + "enum": [ + "HASH", + "RANGE" + ], + "type": "string" + } }, - "KeyType": { - "type": "string" - } + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" }, - "required": [ - "KeyType", - "AttributeName" + "prefixItems": [ + { + "additionalProperties": false, + "properties": { + "KeyType": { + "const": "HASH", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + }, + { + "properties": { + "KeyType": { + "const": "RANGE", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + } ], - "type": "object" + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "KinesisStreamSpecification": { "additionalProperties": false, @@ -147,12 +202,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "type": "array", - "uniqueItems": true + "minItems": 2 }, "Projection": { "$ref": "#/definitions/Projection" @@ -511,7 +563,10 @@ }, "minItems": 1, "type": "array", - "uniqueItems": true + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "BillingMode": { "type": "string" @@ -525,13 +580,9 @@ "uniqueItems": true }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "minItems": 1, - "type": "array", - "uniqueItems": true + "minItems": 1 }, "LocalSecondaryIndexes": { "insertionOrder": false, diff --git a/src/cfnlint/data/schemas/providers/me_central_1/aws-dynamodb-table.json b/src/cfnlint/data/schemas/providers/me_central_1/aws-dynamodb-table.json index efc82f1d70..f21d084b10 100644 --- a/src/cfnlint/data/schemas/providers/me_central_1/aws-dynamodb-table.json +++ b/src/cfnlint/data/schemas/providers/me_central_1/aws-dynamodb-table.json @@ -1,5 +1,26 @@ { "additionalProperties": false, + "allOf": [ + { + "if": { + "required": [ + "LocalSecondaryIndexes" + ], + "type": "object" + }, + "then": { + "properties": { + "AttributeDefinitions": { + "minItems": 2 + }, + "KeySchema": { + "minItems": 2 + } + }, + "type": "object" + } + } + ], "cfnLint": [ "AWS::DynamoDB::Table/Properties" ], @@ -95,11 +116,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 }, "Projection": { "$ref": "#/definitions/Projection" @@ -147,24 +166,57 @@ "type": "object" }, "KeySchema": { - "additionalProperties": false, - "properties": { - "AttributeName": { - "type": "string" + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "type": "string" + }, + "KeyType": { + "enum": [ + "HASH", + "RANGE" + ], + "type": "string" + } }, - "KeyType": { - "enum": [ - "HASH", - "RANGE" + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" + }, + "prefixItems": [ + { + "properties": { + "KeyType": { + "const": "HASH", + "type": "string" + } + }, + "required": [ + "KeyType" ], - "type": "string" + "type": "object" + }, + { + "properties": { + "KeyType": { + "const": "RANGE", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" } - }, - "required": [ - "KeyType", - "AttributeName" ], - "type": "object" + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "KinesisStreamSpecification": { "additionalProperties": false, @@ -192,11 +244,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 2 }, "Projection": { "$ref": "#/definitions/Projection" @@ -451,7 +501,10 @@ "$ref": "#/definitions/AttributeDefinition" }, "type": "array", - "uniqueItems": true + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "BillingMode": { "enum": [ @@ -479,11 +532,9 @@ "KeySchema": { "oneOf": [ { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 }, { "type": "object" diff --git a/src/cfnlint/data/schemas/providers/me_central_1/aws-ec2-instance.json b/src/cfnlint/data/schemas/providers/me_central_1/aws-ec2-instance.json deleted file mode 100644 index 7b3bfed595..0000000000 --- a/src/cfnlint/data/schemas/providers/me_central_1/aws-ec2-instance.json +++ /dev/null @@ -1,571 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ElasticGpuSpecifications", - "/properties/Ipv6Addresses", - "/properties/PlacementGroupName", - "/properties/HostResourceGroupArn", - "/properties/ImageId", - "/properties/CpuOptions", - "/properties/PrivateIpAddress", - "/properties/ElasticInferenceAccelerators", - "/properties/EnclaveOptions", - "/properties/HibernationOptions", - "/properties/KeyName", - "/properties/LicenseSpecifications", - "/properties/NetworkInterfaces", - "/properties/AvailabilityZone", - "/properties/SubnetId", - "/properties/LaunchTemplate", - "/properties/SecurityGroups", - "/properties/Ipv6AddressCount" - ], - "definitions": { - "AssociationParameter": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "BlockDeviceMapping": { - "additionalProperties": false, - "properties": { - "DeviceName": { - "type": "string" - }, - "Ebs": { - "$ref": "#/definitions/Ebs" - }, - "NoDevice": { - "$ref": "#/definitions/NoDevice" - }, - "VirtualName": { - "type": "string" - } - }, - "required": [ - "DeviceName" - ], - "requiredXor": [ - "VirtualName", - "Ebs", - "NoDevice" - ], - "type": "object" - }, - "CpuOptions": { - "additionalProperties": false, - "properties": { - "CoreCount": { - "type": "integer" - }, - "ThreadsPerCore": { - "type": "integer" - } - }, - "type": "object" - }, - "CreditSpecification": { - "additionalProperties": false, - "properties": { - "CPUCredits": { - "type": "string" - } - }, - "type": "object" - }, - "Ebs": { - "additionalProperties": false, - "properties": { - "DeleteOnTermination": { - "type": "boolean" - }, - "Encrypted": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "KmsKeyId": { - "type": "string" - }, - "SnapshotId": { - "type": "string" - }, - "VolumeSize": { - "type": "integer" - }, - "VolumeType": { - "type": "string" - } - }, - "type": "object" - }, - "ElasticGpuSpecification": { - "additionalProperties": false, - "properties": { - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "ElasticInferenceAccelerator": { - "additionalProperties": false, - "properties": { - "Count": { - "type": "integer" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "EnclaveOptions": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - } - }, - "type": "object" - }, - "HibernationOptions": { - "additionalProperties": false, - "properties": { - "Configured": { - "type": "boolean" - } - }, - "type": "object" - }, - "InstanceIpv6Address": { - "additionalProperties": false, - "properties": { - "Ipv6Address": { - "type": "string" - } - }, - "required": [ - "Ipv6Address" - ], - "type": "object" - }, - "LaunchTemplateSpecification": { - "additionalProperties": false, - "properties": { - "LaunchTemplateId": { - "type": "string" - }, - "LaunchTemplateName": { - "type": "string" - }, - "Version": { - "type": "string" - } - }, - "required": [ - "Version" - ], - "type": "object" - }, - "LicenseSpecification": { - "additionalProperties": false, - "properties": { - "LicenseConfigurationArn": { - "type": "string" - } - }, - "required": [ - "LicenseConfigurationArn" - ], - "type": "object" - }, - "NetworkInterface": { - "additionalProperties": false, - "properties": { - "AssociateCarrierIpAddress": { - "type": "boolean" - }, - "AssociatePublicIpAddress": { - "type": "boolean" - }, - "DeleteOnTermination": { - "type": "boolean" - }, - "Description": { - "type": "string" - }, - "DeviceIndex": { - "type": "string" - }, - "GroupSet": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": false - }, - "NetworkInterfaceId": { - "type": "string" - }, - "PrivateIpAddress": { - "type": "string" - }, - "PrivateIpAddresses": { - "items": { - "$ref": "#/definitions/PrivateIpAddressSpecification" - }, - "type": "array", - "uniqueItems": false - }, - "SecondaryPrivateIpAddressCount": { - "type": "integer" - }, - "SubnetId": { - "type": "string" - } - }, - "required": [ - "DeviceIndex" - ], - "type": "object" - }, - "NoDevice": { - "additionalProperties": false, - "type": "object" - }, - "PrivateDnsNameOptions": { - "additionalProperties": false, - "properties": { - "EnableResourceNameDnsAAAARecord": { - "type": "boolean" - }, - "EnableResourceNameDnsARecord": { - "type": "boolean" - }, - "HostnameType": { - "type": "string" - } - }, - "type": "object" - }, - "PrivateIpAddressSpecification": { - "additionalProperties": false, - "properties": { - "Primary": { - "type": "boolean" - }, - "PrivateIpAddress": { - "type": "string" - } - }, - "required": [ - "PrivateIpAddress", - "Primary" - ], - "type": "object" - }, - "SsmAssociation": { - "additionalProperties": false, - "properties": { - "AssociationParameters": { - "items": { - "$ref": "#/definitions/AssociationParameter" - }, - "type": "array", - "uniqueItems": false - }, - "DocumentName": { - "type": "string" - } - }, - "required": [ - "DocumentName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "Volume": { - "additionalProperties": false, - "properties": { - "Device": { - "type": "string" - }, - "VolumeId": { - "type": "string" - } - }, - "required": [ - "VolumeId", - "Device" - ], - "type": "object" - } - }, - "dependentExcluded": { - "NetworkInterfaces": [ - "SubnetId" - ], - "SubnetId": [ - "NetworkInterfaces" - ] - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AdditionalInfo": { - "type": "string" - }, - "Affinity": { - "enum": [ - "default", - "host" - ], - "type": "string" - }, - "AvailabilityZone": { - "cfnLint": [ - "AWS::EC2::Instance/Properties/AvailabilityZone" - ], - "type": "string" - }, - "BlockDeviceMappings": { - "items": { - "$ref": "#/definitions/BlockDeviceMapping" - }, - "type": "array", - "uniqueItems": false - }, - "CpuOptions": { - "$ref": "#/definitions/CpuOptions" - }, - "CreditSpecification": { - "$ref": "#/definitions/CreditSpecification" - }, - "DisableApiTermination": { - "type": "boolean" - }, - "EbsOptimized": { - "type": "boolean" - }, - "ElasticGpuSpecifications": { - "items": { - "$ref": "#/definitions/ElasticGpuSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "ElasticInferenceAccelerators": { - "items": { - "$ref": "#/definitions/ElasticInferenceAccelerator" - }, - "type": "array", - "uniqueItems": true - }, - "EnclaveOptions": { - "$ref": "#/definitions/EnclaveOptions" - }, - "HibernationOptions": { - "$ref": "#/definitions/HibernationOptions" - }, - "HostId": { - "type": "string" - }, - "HostResourceGroupArn": { - "type": "string" - }, - "IamInstanceProfile": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "ImageId": { - "type": "string" - }, - "InstanceInitiatedShutdownBehavior": { - "type": "string" - }, - "InstanceType": { - "cfnLint": [ - "AWS::EC2::Instance/Properties/InstanceType" - ], - "type": "string" - }, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": false - }, - "KernelId": { - "type": "string" - }, - "KeyName": { - "type": "string" - }, - "LaunchTemplate": { - "$ref": "#/definitions/LaunchTemplateSpecification" - }, - "LicenseSpecifications": { - "items": { - "$ref": "#/definitions/LicenseSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "Monitoring": { - "type": "boolean" - }, - "NetworkInterfaces": { - "items": { - "$ref": "#/definitions/NetworkInterface" - }, - "type": "array", - "uniqueItems": false - }, - "PlacementGroupName": { - "type": "string" - }, - "PrivateDnsName": { - "type": "string" - }, - "PrivateDnsNameOptions": { - "$ref": "#/definitions/PrivateDnsNameOptions" - }, - "PrivateIp": { - "type": "string" - }, - "PrivateIpAddress": { - "type": "string" - }, - "PropagateTagsToVolumeOnCreation": { - "type": "boolean" - }, - "PublicDnsName": { - "type": "string" - }, - "PublicIp": { - "type": "string" - }, - "RamdiskId": { - "type": "string" - }, - "SecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SecurityGroups": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SourceDestCheck": { - "type": "boolean" - }, - "SsmAssociations": { - "items": { - "$ref": "#/definitions/SsmAssociation" - }, - "type": "array", - "uniqueItems": false - }, - "SubnetId": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "Tenancy": { - "enum": [ - "default", - "dedicated", - "host" - ], - "type": "string" - }, - "UserData": { - "type": "string" - }, - "Volumes": { - "items": { - "$ref": "#/definitions/Volume" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/PublicIp", - "/properties/Id", - "/properties/PublicDnsName", - "/properties/PrivateDnsName", - "/properties/PrivateIp" - ], - "requiredXor": [ - "ImageId", - "LaunchTemplate" - ], - "typeName": "AWS::EC2::Instance" -} diff --git a/src/cfnlint/data/schemas/providers/me_central_1/aws-ec2-securitygroupegress.json b/src/cfnlint/data/schemas/providers/me_central_1/aws-ec2-securitygroupegress.json new file mode 100644 index 0000000000..f94631dad2 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/me_central_1/aws-ec2-securitygroupegress.json @@ -0,0 +1,98 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::EC2::SecurityGroupEgress/Properties" + ], + "createOnlyProperties": [ + "/properties/IpProtocol", + "/properties/DestinationSecurityGroupId", + "/properties/ToPort", + "/properties/CidrIp", + "/properties/FromPort", + "/properties/GroupId", + "/properties/CidrIpv6", + "/properties/DestinationPrefixListId" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:AuthorizeSecurityGroupEgress", + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "delete": { + "permissions": [ + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "update": { + "permissions": [ + "ec2:UpdateSecurityGroupRuleDescriptionsEgress" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CidrIp": { + "type": "string" + }, + "CidrIpv6": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "DestinationPrefixListId": { + "type": "string" + }, + "DestinationSecurityGroupId": { + "type": "string" + }, + "FromPort": { + "minimum": -1, + "type": "integer" + }, + "GroupId": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "IpProtocol": { + "type": "string" + }, + "ToPort": { + "minimum": -1, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IpProtocol", + "GroupId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SecurityGroupEgress" +} diff --git a/src/cfnlint/data/schemas/providers/me_central_1/aws-ec2-transitgatewayroutetableassociation.json b/src/cfnlint/data/schemas/providers/me_central_1/aws-ec2-transitgatewayroutetableassociation.json new file mode 100644 index 0000000000..890b2c4be2 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/me_central_1/aws-ec2-transitgatewayroutetableassociation.json @@ -0,0 +1,29 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TransitGatewayRouteTableId", + "/properties/TransitGatewayAttachmentId" + ], + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "type": "string" + }, + "TransitGatewayAttachmentId": { + "type": "string" + }, + "TransitGatewayRouteTableId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "TransitGatewayRouteTableId", + "TransitGatewayAttachmentId" + ], + "typeName": "AWS::EC2::TransitGatewayRouteTableAssociation" +} diff --git a/src/cfnlint/data/schemas/providers/me_central_1/aws-emr-studio.json b/src/cfnlint/data/schemas/providers/me_central_1/aws-emr-studio.json deleted file mode 100644 index fc841c6b49..0000000000 --- a/src/cfnlint/data/schemas/providers/me_central_1/aws-emr-studio.json +++ /dev/null @@ -1,189 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AuthMode", - "/properties/EngineSecurityGroupId", - "/properties/ServiceRole", - "/properties/UserRole", - "/properties/VpcId", - "/properties/WorkspaceSecurityGroupId" - ], - "definitions": { - "Arn": { - "pattern": "^arn:aws(-(cn|us-gov))?:[a-z-]+:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$", - "type": "string" - }, - "SubnetId": { - "pattern": "^(subnet-[a-f0-9]{13})|(subnet-[a-f0-9]{8})\\Z", - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "pattern": "[a-zA-Z+-=._:/]+$", - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "documentationUrl": "https://docs.aws.amazon.com/emr/latest/APIReference/API_CreateStudio.html", - "handlers": { - "create": { - "permissions": [ - "elasticmapreduce:CreateStudio", - "elasticmapreduce:DescribeStudio", - "elasticmapreduce:AddTags", - "sso:CreateManagedApplicationInstance", - "sso:DeleteManagedApplicationInstance", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "elasticmapreduce:DeleteStudio", - "elasticmapreduce:DescribeStudio", - "sso:DeleteManagedApplicationInstance" - ] - }, - "list": { - "permissions": [ - "elasticmapreduce:ListStudios" - ] - }, - "read": { - "permissions": [ - "elasticmapreduce:DescribeStudio", - "sso:GetManagedApplicationInstance" - ] - }, - "update": { - "permissions": [ - "elasticmapreduce:UpdateStudio", - "elasticmapreduce:DescribeStudio", - "elasticmapreduce:AddTags", - "elasticmapreduce:RemoveTags" - ] - } - }, - "primaryIdentifier": [ - "/properties/StudioId" - ], - "properties": { - "Arn": { - "$ref": "#/definitions/Arn" - }, - "AuthMode": { - "enum": [ - "SSO", - "IAM" - ], - "type": "string" - }, - "DefaultS3Location": { - "maxLength": 10280, - "minLength": 6, - "pattern": "^s3://.*", - "type": "string" - }, - "Description": { - "maxLength": 256, - "minLength": 0, - "type": "string" - }, - "EngineSecurityGroupId": { - "maxLength": 256, - "minLength": 4, - "pattern": "^sg-[a-zA-Z0-9\\-._]+$", - "type": "string" - }, - "IdpAuthUrl": { - "maxLength": 4096, - "pattern": "^https://[0-9a-zA-Z]([-.\\w]*[0-9a-zA-Z])(:[0-9]*)*([?/#].*)?$", - "type": "string" - }, - "IdpRelayStateParameterName": { - "maxLength": 256, - "minLength": 0, - "type": "string" - }, - "Name": { - "maxLength": 256, - "minLength": 1, - "pattern": "[a-zA-Z0-9_-]+", - "type": "string" - }, - "ServiceRole": { - "$ref": "#/definitions/Arn" - }, - "StudioId": { - "maxLength": 256, - "minLength": 4, - "pattern": "^es-[0-9A-Z]+", - "type": "string" - }, - "SubnetIds": { - "items": { - "$ref": "#/definitions/SubnetId" - }, - "minItems": 1, - "type": "array" - }, - "Tags": { - "$ref": "#/definitions/Tags" - }, - "Url": { - "maxLength": 4096, - "pattern": "^https://[0-9a-zA-Z]([-.\\w]*[0-9a-zA-Z])(:[0-9]*)*([?/#].*)?$", - "type": "string" - }, - "UserRole": { - "$ref": "#/definitions/Arn" - }, - "VpcId": { - "pattern": "^(vpc-[0-9a-f]{8}|vpc-[0-9a-f]{17})$", - "type": "string" - }, - "WorkspaceSecurityGroupId": { - "pattern": "^sg-[a-zA-Z0-9\\-._]+$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/StudioId", - "/properties/Arn", - "/properties/Url" - ], - "required": [ - "AuthMode", - "EngineSecurityGroupId", - "Name", - "ServiceRole", - "SubnetIds", - "VpcId", - "WorkspaceSecurityGroupId", - "DefaultS3Location" - ], - "typeName": "AWS::EMR::Studio" -} diff --git a/src/cfnlint/data/schemas/providers/me_central_1/aws-lambda-eventsourcemapping.json b/src/cfnlint/data/schemas/providers/me_central_1/aws-lambda-eventsourcemapping.json new file mode 100644 index 0000000000..cb7599c139 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/me_central_1/aws-lambda-eventsourcemapping.json @@ -0,0 +1,353 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::Lambda::EventSourceMapping/Properties" + ], + "createOnlyProperties": [ + "/properties/EventSourceArn", + "/properties/StartingPosition", + "/properties/StartingPositionTimestamp", + "/properties/SelfManagedEventSource", + "/properties/AmazonManagedKafkaEventSourceConfig", + "/properties/SelfManagedKafkaEventSourceConfig" + ], + "definitions": { + "AmazonManagedKafkaEventSourceConfig": { + "additionalProperties": false, + "properties": { + "ConsumerGroupId": { + "$ref": "#/definitions/ConsumerGroupId" + } + }, + "type": "object" + }, + "ConsumerGroupId": { + "maxLength": 200, + "minLength": 1, + "pattern": "[a-zA-Z0-9-\\/*:_+=.@-]*", + "type": "string" + }, + "DestinationConfig": { + "additionalProperties": false, + "properties": { + "OnFailure": { + "$ref": "#/definitions/OnFailure" + } + }, + "type": "object" + }, + "DocumentDBEventSourceConfig": { + "additionalProperties": false, + "properties": { + "CollectionName": { + "maxLength": 57, + "minLength": 1, + "type": "string" + }, + "DatabaseName": { + "maxLength": 63, + "minLength": 1, + "type": "string" + }, + "FullDocument": { + "enum": [ + "UpdateLookup", + "Default" + ], + "type": "string" + } + }, + "type": "object" + }, + "Endpoints": { + "additionalProperties": false, + "properties": { + "KafkaBootstrapServers": { + "items": { + "maxLength": 300, + "minLength": 1, + "pattern": "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9]):[0-9]{1,5}", + "type": "string" + }, + "maxItems": 10, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "Filter": { + "additionalProperties": false, + "properties": { + "Pattern": { + "maxLength": 4096, + "minLength": 0, + "pattern": ".*", + "type": "string" + } + }, + "type": "object" + }, + "FilterCriteria": { + "additionalProperties": false, + "properties": { + "Filters": { + "items": { + "$ref": "#/definitions/Filter" + }, + "maxItems": 20, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "MaximumConcurrency": { + "maximum": 1000, + "minimum": 2, + "type": "integer" + }, + "OnFailure": { + "additionalProperties": false, + "properties": { + "Destination": { + "maxLength": 1024, + "minLength": 12, + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "type": "string" + } + }, + "type": "object" + }, + "ScalingConfig": { + "additionalProperties": false, + "properties": { + "MaximumConcurrency": { + "$ref": "#/definitions/MaximumConcurrency" + } + }, + "type": "object" + }, + "SelfManagedEventSource": { + "additionalProperties": false, + "properties": { + "Endpoints": { + "$ref": "#/definitions/Endpoints" + } + }, + "type": "object" + }, + "SelfManagedKafkaEventSourceConfig": { + "additionalProperties": false, + "properties": { + "ConsumerGroupId": { + "$ref": "#/definitions/ConsumerGroupId" + } + }, + "type": "object" + }, + "SourceAccessConfiguration": { + "additionalProperties": false, + "properties": { + "Type": { + "enum": [ + "BASIC_AUTH", + "VPC_SUBNET", + "VPC_SECURITY_GROUP", + "SASL_SCRAM_512_AUTH", + "SASL_SCRAM_256_AUTH", + "VIRTUAL_HOST", + "CLIENT_CERTIFICATE_TLS_AUTH", + "SERVER_ROOT_CA_CERTIFICATE" + ], + "type": "string" + }, + "URI": { + "maxLength": 200, + "minLength": 1, + "pattern": "[a-zA-Z0-9-\\/*:_+=.@-]*", + "type": "string" + } + }, + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "lambda:CreateEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + }, + "delete": { + "permissions": [ + "lambda:DeleteEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + }, + "list": { + "permissions": [ + "lambda:ListEventSourceMappings" + ] + }, + "read": { + "permissions": [ + "lambda:GetEventSourceMapping" + ] + }, + "update": { + "permissions": [ + "lambda:UpdateEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AmazonManagedKafkaEventSourceConfig": { + "$ref": "#/definitions/AmazonManagedKafkaEventSourceConfig" + }, + "BatchSize": { + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "BisectBatchOnFunctionError": { + "type": "boolean" + }, + "DestinationConfig": { + "$ref": "#/definitions/DestinationConfig" + }, + "DocumentDBEventSourceConfig": { + "$ref": "#/definitions/DocumentDBEventSourceConfig" + }, + "Enabled": { + "type": "boolean" + }, + "EventSourceArn": { + "maxLength": 1024, + "minLength": 12, + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "type": "string" + }, + "FilterCriteria": { + "$ref": "#/definitions/FilterCriteria" + }, + "FunctionName": { + "maxLength": 140, + "minLength": 1, + "pattern": "(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?", + "type": "string" + }, + "FunctionResponseTypes": { + "items": { + "enum": [ + "ReportBatchItemFailures" + ], + "type": "string" + }, + "maxLength": 1, + "minLength": 0, + "type": "array", + "uniqueItems": true + }, + "Id": { + "maxLength": 36, + "minLength": 36, + "pattern": "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + "type": "string" + }, + "MaximumBatchingWindowInSeconds": { + "maximum": 300, + "minimum": 0, + "type": "integer" + }, + "MaximumRecordAgeInSeconds": { + "maximum": 604800, + "minimum": -1, + "type": "integer" + }, + "MaximumRetryAttempts": { + "maximum": 10000, + "minimum": -1, + "type": "integer" + }, + "ParallelizationFactor": { + "maximum": 10, + "minimum": 1, + "type": "integer" + }, + "Queues": { + "items": { + "maxLength": 1000, + "minLength": 1, + "pattern": "[\\s\\S]*", + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "ScalingConfig": { + "$ref": "#/definitions/ScalingConfig" + }, + "SelfManagedEventSource": { + "$ref": "#/definitions/SelfManagedEventSource" + }, + "SelfManagedKafkaEventSourceConfig": { + "$ref": "#/definitions/SelfManagedKafkaEventSourceConfig" + }, + "SourceAccessConfigurations": { + "items": { + "$ref": "#/definitions/SourceAccessConfiguration" + }, + "maxItems": 22, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "StartingPosition": { + "enum": [ + "TRIM_HORIZON", + "LATEST", + "AT_TIMESTAMP" + ], + "maxLength": 12, + "minLength": 6, + "pattern": "(LATEST|TRIM_HORIZON|AT_TIMESTAMP)+", + "type": "string" + }, + "StartingPositionTimestamp": { + "type": "number" + }, + "Topics": { + "items": { + "maxLength": 249, + "minLength": 1, + "pattern": "^[^.]([a-zA-Z0-9\\-_.]+)", + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "TumblingWindowInSeconds": { + "maximum": 900, + "minimum": 0, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "FunctionName" + ], + "typeName": "AWS::Lambda::EventSourceMapping" +} diff --git a/src/cfnlint/data/schemas/providers/me_central_1/aws-networkfirewall-rulegroup.json b/src/cfnlint/data/schemas/providers/me_central_1/aws-networkfirewall-rulegroup.json deleted file mode 100644 index 2c01a6c946..0000000000 --- a/src/cfnlint/data/schemas/providers/me_central_1/aws-networkfirewall-rulegroup.json +++ /dev/null @@ -1,707 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/RuleGroupName", - "/properties/Capacity", - "/properties/Type" - ], - "definitions": { - "ActionDefinition": { - "additionalProperties": false, - "properties": { - "PublishMetricAction": { - "$ref": "#/definitions/PublishMetricAction" - } - }, - "type": "object" - }, - "Address": { - "additionalProperties": false, - "properties": { - "AddressDefinition": { - "maxLength": 255, - "minLength": 1, - "pattern": "^([a-fA-F\\d:\\.]+/\\d{1,3})$", - "type": "string" - } - }, - "required": [ - "AddressDefinition" - ], - "type": "object" - }, - "CustomAction": { - "additionalProperties": false, - "properties": { - "ActionDefinition": { - "$ref": "#/definitions/ActionDefinition" - }, - "ActionName": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]+$", - "type": "string" - } - }, - "required": [ - "ActionName", - "ActionDefinition" - ], - "type": "object" - }, - "Dimension": { - "additionalProperties": false, - "properties": { - "Value": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-_ ]+$", - "type": "string" - } - }, - "required": [ - "Value" - ], - "type": "object" - }, - "GeneratedRulesType": { - "enum": [ - "ALLOWLIST", - "DENYLIST" - ], - "type": "string" - }, - "Header": { - "additionalProperties": false, - "properties": { - "Destination": { - "maxLength": 1024, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "DestinationPort": { - "$ref": "#/definitions/Port" - }, - "Direction": { - "enum": [ - "FORWARD", - "ANY" - ], - "type": "string" - }, - "Protocol": { - "enum": [ - "IP", - "TCP", - "UDP", - "ICMP", - "HTTP", - "FTP", - "TLS", - "SMB", - "DNS", - "DCERPC", - "SSH", - "SMTP", - "IMAP", - "MSN", - "KRB5", - "IKEV2", - "TFTP", - "NTP", - "DHCP" - ], - "type": "string" - }, - "Source": { - "maxLength": 1024, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "SourcePort": { - "$ref": "#/definitions/Port" - } - }, - "required": [ - "Protocol", - "Source", - "SourcePort", - "Direction", - "Destination", - "DestinationPort" - ], - "type": "object" - }, - "IPSet": { - "additionalProperties": false, - "properties": { - "Definition": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/VariableDefinition" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "IPSetReference": { - "additionalProperties": false, - "properties": { - "ReferenceArn": { - "$ref": "#/definitions/ResourceArn" - } - }, - "type": "object" - }, - "MatchAttributes": { - "additionalProperties": false, - "properties": { - "DestinationPorts": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/PortRange" - }, - "type": "array", - "uniqueItems": false - }, - "Destinations": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Address" - }, - "type": "array", - "uniqueItems": false - }, - "Protocols": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/ProtocolNumber" - }, - "type": "array", - "uniqueItems": false - }, - "SourcePorts": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/PortRange" - }, - "type": "array", - "uniqueItems": false - }, - "Sources": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Address" - }, - "type": "array", - "uniqueItems": false - }, - "TCPFlags": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/TCPFlagField" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "Port": { - "maxLength": 1024, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "PortRange": { - "additionalProperties": false, - "properties": { - "FromPort": { - "$ref": "#/definitions/PortRangeBound" - }, - "ToPort": { - "$ref": "#/definitions/PortRangeBound" - } - }, - "required": [ - "FromPort", - "ToPort" - ], - "type": "object" - }, - "PortRangeBound": { - "maximum": 65535, - "minimum": 0, - "type": "integer" - }, - "PortSet": { - "additionalProperties": false, - "properties": { - "Definition": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/VariableDefinition" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "ProtocolNumber": { - "maximum": 255, - "minimum": 0, - "type": "integer" - }, - "PublishMetricAction": { - "additionalProperties": false, - "properties": { - "Dimensions": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Dimension" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Dimensions" - ], - "type": "object" - }, - "ReferenceSets": { - "additionalProperties": false, - "properties": { - "IPSetReferences": { - "additionalProperties": false, - "patternProperties": { - "^[A-Za-z0-9_]{1,32}$": { - "$ref": "#/definitions/IPSetReference" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "ResourceArn": { - "maxLength": 256, - "minLength": 1, - "pattern": "^(arn:aws.*)$", - "type": "string" - }, - "RuleDefinition": { - "additionalProperties": false, - "properties": { - "Actions": { - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "MatchAttributes": { - "$ref": "#/definitions/MatchAttributes" - } - }, - "required": [ - "MatchAttributes", - "Actions" - ], - "type": "object" - }, - "RuleGroup": { - "additionalProperties": false, - "properties": { - "ReferenceSets": { - "$ref": "#/definitions/ReferenceSets" - }, - "RuleVariables": { - "$ref": "#/definitions/RuleVariables" - }, - "RulesSource": { - "$ref": "#/definitions/RulesSource" - }, - "StatefulRuleOptions": { - "$ref": "#/definitions/StatefulRuleOptions" - } - }, - "required": [ - "RulesSource" - ], - "type": "object" - }, - "RuleOption": { - "additionalProperties": false, - "properties": { - "Keyword": { - "maxLength": 128, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "Settings": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Setting" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Keyword" - ], - "type": "object" - }, - "RuleOrder": { - "enum": [ - "DEFAULT_ACTION_ORDER", - "STRICT_ORDER" - ], - "type": "string" - }, - "RuleVariables": { - "additionalProperties": false, - "properties": { - "IPSets": { - "additionalProperties": false, - "patternProperties": { - "^[A-Za-z0-9_]{1,32}$": { - "$ref": "#/definitions/IPSet" - } - }, - "type": "object" - }, - "PortSets": { - "additionalProperties": false, - "patternProperties": { - "^[A-Za-z0-9_]{1,32}$": { - "$ref": "#/definitions/PortSet" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "RulesSource": { - "additionalProperties": false, - "properties": { - "RulesSourceList": { - "$ref": "#/definitions/RulesSourceList" - }, - "RulesString": { - "$ref": "#/definitions/RulesString" - }, - "StatefulRules": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StatefulRule" - }, - "type": "array", - "uniqueItems": false - }, - "StatelessRulesAndCustomActions": { - "$ref": "#/definitions/StatelessRulesAndCustomActions" - } - }, - "type": "object" - }, - "RulesSourceList": { - "additionalProperties": false, - "properties": { - "GeneratedRulesType": { - "$ref": "#/definitions/GeneratedRulesType" - }, - "TargetTypes": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/TargetType" - }, - "type": "array", - "uniqueItems": false - }, - "Targets": { - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Targets", - "TargetTypes", - "GeneratedRulesType" - ], - "type": "object" - }, - "RulesString": { - "maxLength": 1000000, - "minLength": 0, - "type": "string" - }, - "Setting": { - "maxLength": 8192, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "StatefulRule": { - "additionalProperties": false, - "properties": { - "Action": { - "enum": [ - "PASS", - "DROP", - "ALERT", - "REJECT" - ], - "type": "string" - }, - "Header": { - "$ref": "#/definitions/Header" - }, - "RuleOptions": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/RuleOption" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Action", - "Header", - "RuleOptions" - ], - "type": "object" - }, - "StatefulRuleOptions": { - "additionalProperties": false, - "properties": { - "RuleOrder": { - "$ref": "#/definitions/RuleOrder" - } - }, - "type": "object" - }, - "StatelessRule": { - "additionalProperties": false, - "properties": { - "Priority": { - "maximum": 65535, - "minimum": 1, - "type": "integer" - }, - "RuleDefinition": { - "$ref": "#/definitions/RuleDefinition" - } - }, - "required": [ - "RuleDefinition", - "Priority" - ], - "type": "object" - }, - "StatelessRulesAndCustomActions": { - "additionalProperties": false, - "properties": { - "CustomActions": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/CustomAction" - }, - "type": "array", - "uniqueItems": false - }, - "StatelessRules": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/StatelessRule" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "StatelessRules" - ], - "type": "object" - }, - "TCPFlag": { - "enum": [ - "FIN", - "SYN", - "RST", - "PSH", - "ACK", - "URG", - "ECE", - "CWR" - ], - "type": "string" - }, - "TCPFlagField": { - "additionalProperties": false, - "properties": { - "Flags": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/TCPFlag" - }, - "type": "array", - "uniqueItems": false - }, - "Masks": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/TCPFlag" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Flags" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "Value": { - "maxLength": 255, - "minLength": 0, - "pattern": "^.*$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "TargetType": { - "enum": [ - "TLS_SNI", - "HTTP_HOST" - ], - "type": "string" - }, - "VariableDefinition": { - "minLength": 1, - "pattern": "^.*$", - "type": "string" - } - }, - "handlers": { - "create": { - "permissions": [ - "network-firewall:CreateRuleGroup", - "network-firewall:DescribeRuleGroup", - "network-firewall:TagResource" - ] - }, - "delete": { - "permissions": [ - "network-firewall:DeleteRuleGroup", - "network-firewall:DescribeRuleGroup", - "network-firewall:UntagResource" - ] - }, - "list": { - "permissions": [ - "network-firewall:ListRuleGroups" - ] - }, - "read": { - "permissions": [ - "network-firewall:DescribeRuleGroup", - "network-firewall:ListTagsForResources" - ] - }, - "update": { - "permissions": [ - "network-firewall:UpdateRuleGroup", - "network-firewall:DescribeRuleGroup", - "network-firewall:TagResource", - "network-firewall:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/RuleGroupArn" - ], - "properties": { - "Capacity": { - "type": "integer" - }, - "Description": { - "maxLength": 512, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "RuleGroup": { - "$ref": "#/definitions/RuleGroup" - }, - "RuleGroupArn": { - "$ref": "#/definitions/ResourceArn" - }, - "RuleGroupId": { - "maxLength": 36, - "minLength": 36, - "pattern": "^([0-9a-f]{8})-([0-9a-f]{4}-){3}([0-9a-f]{12})$", - "type": "string" - }, - "RuleGroupName": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]+$", - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - }, - "Type": { - "enum": [ - "STATELESS", - "STATEFUL" - ], - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/RuleGroupArn", - "/properties/RuleGroupId" - ], - "required": [ - "Type", - "Capacity", - "RuleGroupName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkfirewall.git", - "typeName": "AWS::NetworkFirewall::RuleGroup" -} diff --git a/src/cfnlint/data/schemas/providers/me_central_1/aws-redshift-cluster.json b/src/cfnlint/data/schemas/providers/me_central_1/aws-redshift-cluster.json deleted file mode 100644 index a354cb134c..0000000000 --- a/src/cfnlint/data/schemas/providers/me_central_1/aws-redshift-cluster.json +++ /dev/null @@ -1,184 +0,0 @@ -{ - "additionalProperties": false, - "cfnLint": "AWS::Redshift::Cluster/Properties", - "createOnlyProperties": [ - "/properties/KmsKeyId", - "/properties/MasterUsername", - "/properties/OwnerAccount", - "/properties/SnapshotIdentifier", - "/properties/Encrypted", - "/properties/Port", - "/properties/DBName", - "/properties/SnapshotClusterIdentifier", - "/properties/AvailabilityZone", - "/properties/ClusterSubnetGroupName", - "/properties/ClusterIdentifier", - "/properties/ElasticIp" - ], - "definitions": { - "LoggingProperties": { - "additionalProperties": false, - "properties": { - "BucketName": { - "type": "string" - }, - "S3KeyPrefix": { - "type": "string" - } - }, - "required": [ - "BucketName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AllowVersionUpgrade": { - "type": "boolean" - }, - "AutomatedSnapshotRetentionPeriod": { - "type": "integer" - }, - "AvailabilityZone": { - "type": "string" - }, - "ClusterIdentifier": { - "type": "string" - }, - "ClusterParameterGroupName": { - "type": "string" - }, - "ClusterSecurityGroups": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "ClusterSubnetGroupName": { - "type": "string" - }, - "ClusterType": { - "type": "string" - }, - "ClusterVersion": { - "type": "string" - }, - "DBName": { - "type": "string" - }, - "ElasticIp": { - "type": "string" - }, - "Encrypted": { - "type": "boolean" - }, - "EndpointAddress": { - "type": "string" - }, - "EndpointPort": { - "type": "string" - }, - "HsmClientCertificateIdentifier": { - "type": "string" - }, - "HsmConfigurationIdentifier": { - "type": "string" - }, - "IamRoles": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "Id": { - "type": "string" - }, - "KmsKeyId": { - "type": "string" - }, - "LoggingProperties": { - "$ref": "#/definitions/LoggingProperties" - }, - "MasterUserPassword": { - "type": "string" - }, - "MasterUsername": { - "type": "string" - }, - "NodeType": { - "cfnLint": "AWS::Redshift::Cluster/Properties/NodeType", - "type": "string" - }, - "NumberOfNodes": { - "maximum": 100, - "minimum": 1, - "type": "integer" - }, - "OwnerAccount": { - "type": "string" - }, - "Port": { - "type": "integer" - }, - "PreferredMaintenanceWindow": { - "type": "string" - }, - "PubliclyAccessible": { - "type": "boolean" - }, - "SnapshotClusterIdentifier": { - "type": "string" - }, - "SnapshotIdentifier": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "VpcSecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/EndpointPort", - "/properties/EndpointAddress" - ], - "required": [ - "MasterUserPassword", - "NodeType", - "MasterUsername", - "DBName", - "ClusterType" - ], - "typeName": "AWS::Redshift::Cluster" -} diff --git a/src/cfnlint/data/schemas/providers/me_central_1/aws-redshift-clusterparametergroup.json b/src/cfnlint/data/schemas/providers/me_central_1/aws-redshift-clusterparametergroup.json deleted file mode 100644 index da0d11f5b9..0000000000 --- a/src/cfnlint/data/schemas/providers/me_central_1/aws-redshift-clusterparametergroup.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ParameterGroupFamily", - "/properties/Description" - ], - "definitions": { - "Parameter": { - "additionalProperties": false, - "properties": { - "ParameterName": { - "type": "string" - }, - "ParameterValue": { - "type": "string" - } - }, - "required": [ - "ParameterValue", - "ParameterName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Description": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "ParameterGroupFamily": { - "type": "string" - }, - "Parameters": { - "items": { - "$ref": "#/definitions/Parameter" - }, - "type": "array", - "uniqueItems": false - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Description", - "ParameterGroupFamily" - ], - "typeName": "AWS::Redshift::ClusterParameterGroup" -} diff --git a/src/cfnlint/data/schemas/providers/me_central_1/aws-redshift-clustersubnetgroup.json b/src/cfnlint/data/schemas/providers/me_central_1/aws-redshift-clustersubnetgroup.json deleted file mode 100644 index 96ded934d4..0000000000 --- a/src/cfnlint/data/schemas/providers/me_central_1/aws-redshift-clustersubnetgroup.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "additionalProperties": false, - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Description": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "SubnetIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Description", - "SubnetIds" - ], - "typeName": "AWS::Redshift::ClusterSubnetGroup" -} diff --git a/src/cfnlint/data/schemas/providers/me_central_1/aws-sagemaker-appimageconfig.json b/src/cfnlint/data/schemas/providers/me_central_1/aws-sagemaker-appimageconfig.json new file mode 100644 index 0000000000..01116f524b --- /dev/null +++ b/src/cfnlint/data/schemas/providers/me_central_1/aws-sagemaker-appimageconfig.json @@ -0,0 +1,238 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AppImageConfigName", + "/properties/Tags" + ], + "definitions": { + "ContainerConfig": { + "additionalProperties": false, + "properties": { + "ContainerArguments": { + "items": { + "$ref": "#/definitions/CustomImageContainerArguments" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "ContainerEntrypoint": { + "items": { + "$ref": "#/definitions/CustomImageContainerEntrypoint" + }, + "maxItems": 1, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "ContainerEnvironmentVariables": { + "items": { + "$ref": "#/definitions/CustomImageContainerEnvironmentVariable" + }, + "maxItems": 25, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "CustomImageContainerArguments": { + "maxLength": 64, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "CustomImageContainerEntrypoint": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "CustomImageContainerEnvironmentVariable": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "FileSystemConfig": { + "additionalProperties": false, + "properties": { + "DefaultGid": { + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "DefaultUid": { + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "MountPath": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^/.*", + "type": "string" + } + }, + "type": "object" + }, + "JupyterLabAppImageConfig": { + "additionalProperties": false, + "properties": { + "ContainerConfig": { + "$ref": "#/definitions/ContainerConfig" + } + }, + "type": "object" + }, + "KernelGatewayImageConfig": { + "additionalProperties": false, + "properties": { + "FileSystemConfig": { + "$ref": "#/definitions/FileSystemConfig" + }, + "KernelSpecs": { + "items": { + "$ref": "#/definitions/KernelSpec" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "KernelSpecs" + ], + "type": "object" + }, + "KernelSpec": { + "additionalProperties": false, + "properties": { + "DisplayName": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Name": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "sagemaker:CreateAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + }, + "delete": { + "permissions": [ + "sagemaker:DeleteAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + }, + "list": { + "permissions": [ + "sagemaker:ListAppImageConfigs" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeAppImageConfig" + ] + }, + "update": { + "permissions": [ + "sagemaker:UpdateAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + } + }, + "primaryIdentifier": [ + "/properties/AppImageConfigName" + ], + "properties": { + "AppImageConfigArn": { + "maxLength": 256, + "minLength": 1, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:app-image-config/.*", + "type": "string" + }, + "AppImageConfigName": { + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", + "type": "string" + }, + "JupyterLabAppImageConfig": { + "$ref": "#/definitions/JupyterLabAppImageConfig" + }, + "KernelGatewayImageConfig": { + "$ref": "#/definitions/KernelGatewayImageConfig" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/AppImageConfigArn" + ], + "required": [ + "AppImageConfigName" + ], + "typeName": "AWS::SageMaker::AppImageConfig", + "writeOnlyProperties": [ + "/properties/Tags" + ] +} diff --git a/src/cfnlint/data/schemas/providers/me_central_1/aws-sagemaker-domain.json b/src/cfnlint/data/schemas/providers/me_central_1/aws-sagemaker-domain.json new file mode 100644 index 0000000000..e57c036025 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/me_central_1/aws-sagemaker-domain.json @@ -0,0 +1,739 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AuthMode", + "/properties/DomainName", + "/properties/DomainSettings/RStudioServerProDomainSettings/DefaultResourceSpec", + "/properties/KmsKeyId", + "/properties/VpcId", + "/properties/Tags" + ], + "definitions": { + "CodeEditorAppSettings": { + "additionalProperties": false, + "properties": { + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + }, + "LifecycleConfigArns": { + "items": { + "$ref": "#/definitions/StudioLifecycleConfigArn" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "CodeRepository": { + "additionalProperties": false, + "properties": { + "RepositoryUrl": { + "maxLength": 256, + "pattern": "^https://([.\\-_a-zA-Z0-9]+/?){3,1016}$", + "type": "string" + } + }, + "required": [ + "RepositoryUrl" + ], + "type": "object" + }, + "CustomFileSystemConfig": { + "additionalProperties": false, + "properties": { + "EFSFileSystemConfig": { + "$ref": "#/definitions/EFSFileSystemConfig" + } + }, + "type": "object" + }, + "CustomImage": { + "additionalProperties": false, + "properties": { + "AppImageConfigName": { + "maxLength": 63, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", + "type": "string" + }, + "ImageName": { + "maxLength": 63, + "pattern": "^[a-zA-Z0-9]([-.]?[a-zA-Z0-9]){0,62}$", + "type": "string" + }, + "ImageVersionNumber": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "AppImageConfigName", + "ImageName" + ], + "type": "object" + }, + "CustomPosixUserConfig": { + "additionalProperties": false, + "properties": { + "Gid": { + "maximum": 4000000, + "minimum": 1001, + "type": "integer" + }, + "Uid": { + "maximum": 4000000, + "minimum": 10000, + "type": "integer" + } + }, + "required": [ + "Uid", + "Gid" + ], + "type": "object" + }, + "DefaultEbsStorageSettings": { + "additionalProperties": false, + "properties": { + "DefaultEbsVolumeSizeInGb": { + "$ref": "#/definitions/SpaceEbsVolumeSizeInGb" + }, + "MaximumEbsVolumeSizeInGb": { + "$ref": "#/definitions/SpaceEbsVolumeSizeInGb" + } + }, + "required": [ + "DefaultEbsVolumeSizeInGb", + "MaximumEbsVolumeSizeInGb" + ], + "type": "object" + }, + "DefaultSpaceSettings": { + "additionalProperties": false, + "properties": { + "ExecutionRole": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "JupyterServerAppSettings": { + "$ref": "#/definitions/JupyterServerAppSettings" + }, + "KernelGatewayAppSettings": { + "$ref": "#/definitions/KernelGatewayAppSettings" + }, + "SecurityGroups": { + "insertionOrder": false, + "items": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 5, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "ExecutionRole" + ], + "type": "object" + }, + "DefaultSpaceStorageSettings": { + "additionalProperties": false, + "properties": { + "DefaultEbsStorageSettings": { + "$ref": "#/definitions/DefaultEbsStorageSettings" + } + }, + "type": "object" + }, + "DockerSettings": { + "additionalProperties": false, + "properties": { + "EnableDockerAccess": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "VpcOnlyTrustedAccounts": { + "insertionOrder": false, + "items": { + "maxLength": 12, + "pattern": "^[0-9]$", + "type": "string" + }, + "maxItems": 10, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "DomainSettings": { + "additionalProperties": false, + "properties": { + "DockerSettings": { + "$ref": "#/definitions/DockerSettings" + }, + "RStudioServerProDomainSettings": { + "$ref": "#/definitions/RStudioServerProDomainSettings" + }, + "SecurityGroupIds": { + "insertionOrder": false, + "items": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 3, + "minItems": 1, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "EFSFileSystemConfig": { + "additionalProperties": false, + "properties": { + "FileSystemId": { + "maxLength": 21, + "minLength": 11, + "pattern": "^(fs-[0-9a-f]{8,})$", + "type": "string" + }, + "FileSystemPath": { + "maxLength": 256, + "minLength": 1, + "pattern": "^\\/\\S*$", + "type": "string" + } + }, + "required": [ + "FileSystemId" + ], + "type": "object" + }, + "JupyterLabAppSettings": { + "additionalProperties": false, + "properties": { + "CodeRepositories": { + "items": { + "$ref": "#/definitions/CodeRepository" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "CustomImages": { + "items": { + "$ref": "#/definitions/CustomImage" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + }, + "LifecycleConfigArns": { + "items": { + "$ref": "#/definitions/StudioLifecycleConfigArn" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "JupyterServerAppSettings": { + "additionalProperties": false, + "properties": { + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + } + }, + "type": "object" + }, + "KernelGatewayAppSettings": { + "additionalProperties": false, + "properties": { + "CustomImages": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/CustomImage" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + } + }, + "type": "object" + }, + "RSessionAppSettings": { + "additionalProperties": false, + "properties": { + "CustomImages": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/CustomImage" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + } + }, + "type": "object" + }, + "RStudioServerProAppSettings": { + "additionalProperties": false, + "properties": { + "AccessStatus": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "UserGroup": { + "enum": [ + "R_STUDIO_ADMIN", + "R_STUDIO_USER" + ], + "type": "string" + } + }, + "type": "object" + }, + "RStudioServerProDomainSettings": { + "additionalProperties": false, + "properties": { + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + }, + "DomainExecutionRoleArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "RStudioConnectUrl": { + "pattern": "^(https:|http:|www\\.)\\S*", + "type": "string" + }, + "RStudioPackageManagerUrl": { + "pattern": "^(https:|http:|www\\.)\\S*", + "type": "string" + } + }, + "required": [ + "DomainExecutionRoleArn" + ], + "type": "object" + }, + "ResourceSpec": { + "additionalProperties": false, + "properties": { + "InstanceType": { + "enum": [ + "system", + "ml.t3.micro", + "ml.t3.small", + "ml.t3.medium", + "ml.t3.large", + "ml.t3.xlarge", + "ml.t3.2xlarge", + "ml.m5.large", + "ml.m5.xlarge", + "ml.m5.2xlarge", + "ml.m5.4xlarge", + "ml.m5.8xlarge", + "ml.m5.12xlarge", + "ml.m5.16xlarge", + "ml.m5.24xlarge", + "ml.c5.large", + "ml.c5.xlarge", + "ml.c5.2xlarge", + "ml.c5.4xlarge", + "ml.c5.9xlarge", + "ml.c5.12xlarge", + "ml.c5.18xlarge", + "ml.c5.24xlarge", + "ml.p3.2xlarge", + "ml.p3.8xlarge", + "ml.p3.16xlarge", + "ml.g4dn.xlarge", + "ml.g4dn.2xlarge", + "ml.g4dn.4xlarge", + "ml.g4dn.8xlarge", + "ml.g4dn.12xlarge", + "ml.g4dn.16xlarge", + "ml.r5.large", + "ml.r5.xlarge", + "ml.r5.2xlarge", + "ml.r5.4xlarge", + "ml.r5.8xlarge", + "ml.r5.12xlarge", + "ml.r5.16xlarge", + "ml.r5.24xlarge", + "ml.p3dn.24xlarge", + "ml.m5d.large", + "ml.m5d.xlarge", + "ml.m5d.2xlarge", + "ml.m5d.4xlarge", + "ml.m5d.8xlarge", + "ml.m5d.12xlarge", + "ml.m5d.16xlarge", + "ml.m5d.24xlarge", + "ml.g5.xlarge", + "ml.g5.2xlarge", + "ml.g5.4xlarge", + "ml.g5.8xlarge", + "ml.g5.12xlarge", + "ml.g5.16xlarge", + "ml.g5.24xlarge", + "ml.g5.48xlarge", + "ml.p4d.24xlarge", + "ml.p4de.24xlarge", + "ml.geospatial.interactive", + "ml.trn1.2xlarge", + "ml.trn1.32xlarge", + "ml.trn1n.32xlarge" + ], + "type": "string" + }, + "LifecycleConfigArn": { + "maxLength": 256, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:studio-lifecycle-config/.*", + "type": "string" + }, + "SageMakerImageArn": { + "maxLength": 256, + "pattern": "^arn:aws(-[\\w]+)*:sagemaker:.+:[0-9]{12}:image/[a-z0-9]([-.]?[a-z0-9])*$", + "type": "string" + }, + "SageMakerImageVersionArn": { + "maxLength": 256, + "pattern": "^arn:aws(-[\\w]+)*:sagemaker:.+:[0-9]{12}:image-version/[a-z0-9]([-.]?[a-z0-9])*/[0-9]+$", + "type": "string" + } + }, + "type": "object" + }, + "SharingSettings": { + "additionalProperties": false, + "properties": { + "NotebookOutputOption": { + "enum": [ + "Allowed", + "Disabled" + ], + "type": "string" + }, + "S3KmsKeyId": { + "maxLength": 2048, + "pattern": ".*", + "type": "string" + }, + "S3OutputPath": { + "maxLength": 1024, + "pattern": "^(https|s3)://([^/]+)/?(.*)$", + "type": "string" + } + }, + "type": "object" + }, + "SpaceEbsVolumeSizeInGb": { + "maximum": 16384, + "minimum": 5, + "type": "integer" + }, + "StudioLifecycleConfigArn": { + "maxLength": 256, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:studio-lifecycle-config/.*", + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "UserSettings": { + "additionalProperties": false, + "properties": { + "CodeEditorAppSettings": { + "$ref": "#/definitions/CodeEditorAppSettings" + }, + "CustomFileSystemConfigs": { + "items": { + "$ref": "#/definitions/CustomFileSystemConfig" + }, + "maxItems": 2, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "CustomPosixUserConfig": { + "$ref": "#/definitions/CustomPosixUserConfig" + }, + "DefaultLandingUri": { + "maxLength": 1023, + "type": "string" + }, + "ExecutionRole": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "JupyterLabAppSettings": { + "$ref": "#/definitions/JupyterLabAppSettings" + }, + "JupyterServerAppSettings": { + "$ref": "#/definitions/JupyterServerAppSettings" + }, + "KernelGatewayAppSettings": { + "$ref": "#/definitions/KernelGatewayAppSettings" + }, + "RSessionAppSettings": { + "$ref": "#/definitions/RSessionAppSettings" + }, + "RStudioServerProAppSettings": { + "$ref": "#/definitions/RStudioServerProAppSettings" + }, + "SecurityGroups": { + "insertionOrder": false, + "items": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 5, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "SharingSettings": { + "$ref": "#/definitions/SharingSettings" + }, + "SpaceStorageSettings": { + "$ref": "#/definitions/DefaultSpaceStorageSettings" + }, + "StudioWebPortal": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + } + }, + "required": [ + "ExecutionRole" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "sagemaker:CreateApp", + "sagemaker:CreateDomain", + "sagemaker:DescribeDomain", + "sagemaker:DescribeImage", + "sagemaker:DescribeImageVersion", + "iam:CreateServiceLinkedRole", + "iam:PassRole", + "efs:CreateFileSystem", + "kms:CreateGrant", + "kms:Decrypt", + "kms:DescribeKey", + "kms:GenerateDataKeyWithoutPlainText" + ] + }, + "delete": { + "permissions": [ + "sagemaker:DeleteApp", + "sagemaker:DeleteDomain", + "sagemaker:DescribeDomain" + ] + }, + "list": { + "permissions": [ + "sagemaker:ListDomains" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeDomain" + ] + }, + "update": { + "permissions": [ + "sagemaker:CreateApp", + "sagemaker:UpdateDomain", + "sagemaker:DescribeDomain", + "sagemaker:DescribeImage", + "sagemaker:DescribeImageVersion", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/DomainId" + ], + "properties": { + "AppNetworkAccessType": { + "enum": [ + "PublicInternetOnly", + "VpcOnly" + ], + "type": "string" + }, + "AppSecurityGroupManagement": { + "enum": [ + "Service", + "Customer" + ], + "type": "string" + }, + "AuthMode": { + "enum": [ + "SSO", + "IAM" + ], + "type": "string" + }, + "DefaultSpaceSettings": { + "$ref": "#/definitions/DefaultSpaceSettings" + }, + "DefaultUserSettings": { + "$ref": "#/definitions/UserSettings" + }, + "DomainArn": { + "maxLength": 256, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:domain/.*", + "type": "string" + }, + "DomainId": { + "maxLength": 63, + "pattern": "^d-(-*[a-z0-9])+", + "type": "string" + }, + "DomainName": { + "maxLength": 63, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", + "type": "string" + }, + "DomainSettings": { + "$ref": "#/definitions/DomainSettings" + }, + "HomeEfsFileSystemId": { + "maxLength": 32, + "type": "string" + }, + "KmsKeyId": { + "maxLength": 2048, + "pattern": ".*", + "type": "string" + }, + "SecurityGroupIdForDomainBoundary": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "SingleSignOnApplicationArn": { + "pattern": "^arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):sso::[0-9]+:application/[a-zA-Z0-9-_.]+/apl-[a-zA-Z0-9]+$", + "type": "string" + }, + "SingleSignOnManagedApplicationInstanceId": { + "maxLength": 256, + "type": "string" + }, + "SubnetIds": { + "insertionOrder": false, + "items": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 16, + "minItems": 1, + "type": "array", + "uniqueItems": false + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "Url": { + "maxLength": 1024, + "type": "string" + }, + "VpcId": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/DomainArn", + "/properties/Url", + "/properties/DomainId", + "/properties/HomeEfsFileSystemId", + "/properties/SecurityGroupIdForDomainBoundary", + "/properties/SingleSignOnManagedApplicationInstanceId", + "/properties/SingleSignOnApplicationArn" + ], + "required": [ + "AuthMode", + "DefaultUserSettings", + "DomainName", + "SubnetIds", + "VpcId" + ], + "typeName": "AWS::SageMaker::Domain", + "writeOnlyProperties": [ + "/properties/Tags" + ] +} diff --git a/src/cfnlint/data/schemas/providers/me_central_1/aws-sagemaker-userprofile.json b/src/cfnlint/data/schemas/providers/me_central_1/aws-sagemaker-userprofile.json new file mode 100644 index 0000000000..d0f8848903 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/me_central_1/aws-sagemaker-userprofile.json @@ -0,0 +1,524 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DomainId", + "/properties/UserProfileName", + "/properties/SingleSignOnUserIdentifier", + "/properties/SingleSignOnUserValue", + "/properties/UserSettings/RStudioServerProAppSettings/AccessStatus", + "/properties/UserSettings/RStudioServerProAppSettings/UserGroup", + "/properties/Tags" + ], + "definitions": { + "CodeEditorAppSettings": { + "additionalProperties": false, + "properties": { + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + }, + "LifecycleConfigArns": { + "items": { + "$ref": "#/definitions/StudioLifecycleConfigArn" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "CodeRepository": { + "additionalProperties": false, + "properties": { + "RepositoryUrl": { + "maxLength": 256, + "pattern": "^https://([.\\-_a-zA-Z0-9]+/?){3,1016}$", + "type": "string" + } + }, + "required": [ + "RepositoryUrl" + ], + "type": "object" + }, + "CustomFileSystemConfig": { + "additionalProperties": false, + "properties": { + "EFSFileSystemConfig": { + "$ref": "#/definitions/EFSFileSystemConfig" + } + }, + "type": "object" + }, + "CustomImage": { + "additionalProperties": false, + "properties": { + "AppImageConfigName": { + "maxLength": 63, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", + "type": "string" + }, + "ImageName": { + "maxLength": 63, + "pattern": "^[a-zA-Z0-9]([-.]?[a-zA-Z0-9]){0,62}$", + "type": "string" + }, + "ImageVersionNumber": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "AppImageConfigName", + "ImageName" + ], + "type": "object" + }, + "CustomPosixUserConfig": { + "additionalProperties": false, + "properties": { + "Gid": { + "maximum": 4000000, + "minimum": 1001, + "type": "integer" + }, + "Uid": { + "maximum": 4000000, + "minimum": 10000, + "type": "integer" + } + }, + "required": [ + "Uid", + "Gid" + ], + "type": "object" + }, + "DefaultEbsStorageSettings": { + "additionalProperties": false, + "properties": { + "DefaultEbsVolumeSizeInGb": { + "$ref": "#/definitions/SpaceEbsVolumeSizeInGb" + }, + "MaximumEbsVolumeSizeInGb": { + "$ref": "#/definitions/SpaceEbsVolumeSizeInGb" + } + }, + "required": [ + "DefaultEbsVolumeSizeInGb", + "MaximumEbsVolumeSizeInGb" + ], + "type": "object" + }, + "DefaultSpaceStorageSettings": { + "additionalProperties": false, + "properties": { + "DefaultEbsStorageSettings": { + "$ref": "#/definitions/DefaultEbsStorageSettings" + } + }, + "type": "object" + }, + "EFSFileSystemConfig": { + "additionalProperties": false, + "properties": { + "FileSystemId": { + "maxLength": 21, + "minLength": 11, + "pattern": "^(fs-[0-9a-f]{8,})$", + "type": "string" + }, + "FileSystemPath": { + "maxLength": 256, + "minLength": 1, + "pattern": "^\\/\\S*$", + "type": "string" + } + }, + "required": [ + "FileSystemId" + ], + "type": "object" + }, + "JupyterLabAppSettings": { + "additionalProperties": false, + "properties": { + "CodeRepositories": { + "items": { + "$ref": "#/definitions/CodeRepository" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "CustomImages": { + "items": { + "$ref": "#/definitions/CustomImage" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + }, + "LifecycleConfigArns": { + "items": { + "$ref": "#/definitions/StudioLifecycleConfigArn" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "JupyterServerAppSettings": { + "additionalProperties": false, + "properties": { + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + } + }, + "type": "object" + }, + "KernelGatewayAppSettings": { + "additionalProperties": false, + "properties": { + "CustomImages": { + "items": { + "$ref": "#/definitions/CustomImage" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + } + }, + "type": "object" + }, + "RStudioServerProAppSettings": { + "additionalProperties": false, + "properties": { + "AccessStatus": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "UserGroup": { + "enum": [ + "R_STUDIO_ADMIN", + "R_STUDIO_USER" + ], + "type": "string" + } + }, + "type": "object" + }, + "ResourceSpec": { + "additionalProperties": false, + "properties": { + "InstanceType": { + "enum": [ + "system", + "ml.t3.micro", + "ml.t3.small", + "ml.t3.medium", + "ml.t3.large", + "ml.t3.xlarge", + "ml.t3.2xlarge", + "ml.m5.large", + "ml.m5.xlarge", + "ml.m5.2xlarge", + "ml.m5.4xlarge", + "ml.m5.8xlarge", + "ml.m5.12xlarge", + "ml.m5.16xlarge", + "ml.m5.24xlarge", + "ml.c5.large", + "ml.c5.xlarge", + "ml.c5.2xlarge", + "ml.c5.4xlarge", + "ml.c5.9xlarge", + "ml.c5.12xlarge", + "ml.c5.18xlarge", + "ml.c5.24xlarge", + "ml.p3.2xlarge", + "ml.p3.8xlarge", + "ml.p3.16xlarge", + "ml.g4dn.xlarge", + "ml.g4dn.2xlarge", + "ml.g4dn.4xlarge", + "ml.g4dn.8xlarge", + "ml.g4dn.12xlarge", + "ml.g4dn.16xlarge", + "ml.r5.large", + "ml.r5.xlarge", + "ml.r5.2xlarge", + "ml.r5.4xlarge", + "ml.r5.8xlarge", + "ml.r5.12xlarge", + "ml.r5.16xlarge", + "ml.r5.24xlarge", + "ml.p3dn.24xlarge", + "ml.m5d.large", + "ml.m5d.xlarge", + "ml.m5d.2xlarge", + "ml.m5d.4xlarge", + "ml.m5d.8xlarge", + "ml.m5d.12xlarge", + "ml.m5d.16xlarge", + "ml.m5d.24xlarge", + "ml.g5.xlarge", + "ml.g5.2xlarge", + "ml.g5.4xlarge", + "ml.g5.8xlarge", + "ml.g5.12xlarge", + "ml.g5.16xlarge", + "ml.g5.24xlarge", + "ml.g5.48xlarge", + "ml.p4d.24xlarge", + "ml.p4de.24xlarge", + "ml.geospatial.interactive", + "ml.trn1.2xlarge", + "ml.trn1.32xlarge", + "ml.trn1n.32xlarge" + ], + "type": "string" + }, + "SageMakerImageArn": { + "maxLength": 256, + "pattern": "^arn:aws(-[\\w]+)*:sagemaker:.+:[0-9]{12}:image/[a-z0-9]([-.]?[a-z0-9])*$", + "type": "string" + }, + "SageMakerImageVersionArn": { + "maxLength": 256, + "pattern": "^arn:aws(-[\\w]+)*:sagemaker:.+:[0-9]{12}:image-version/[a-z0-9]([-.]?[a-z0-9])*/[0-9]+$", + "type": "string" + } + }, + "type": "object" + }, + "SharingSettings": { + "additionalProperties": false, + "properties": { + "NotebookOutputOption": { + "enum": [ + "Allowed", + "Disabled" + ], + "type": "string" + }, + "S3KmsKeyId": { + "maxLength": 2048, + "pattern": ".*", + "type": "string" + }, + "S3OutputPath": { + "maxLength": 1024, + "pattern": "^(https|s3)://([^/]+)/?(.*)$", + "type": "string" + } + }, + "type": "object" + }, + "SpaceEbsVolumeSizeInGb": { + "maximum": 16384, + "minimum": 5, + "type": "integer" + }, + "StudioLifecycleConfigArn": { + "maxLength": 256, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:studio-lifecycle-config/.*", + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "UserSettings": { + "additionalProperties": false, + "properties": { + "CodeEditorAppSettings": { + "$ref": "#/definitions/CodeEditorAppSettings" + }, + "CustomFileSystemConfigs": { + "items": { + "$ref": "#/definitions/CustomFileSystemConfig" + }, + "maxItems": 2, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "CustomPosixUserConfig": { + "$ref": "#/definitions/CustomPosixUserConfig" + }, + "DefaultLandingUri": { + "maxLength": 1023, + "type": "string" + }, + "ExecutionRole": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "JupyterLabAppSettings": { + "$ref": "#/definitions/JupyterLabAppSettings" + }, + "JupyterServerAppSettings": { + "$ref": "#/definitions/JupyterServerAppSettings" + }, + "KernelGatewayAppSettings": { + "$ref": "#/definitions/KernelGatewayAppSettings" + }, + "RStudioServerProAppSettings": { + "$ref": "#/definitions/RStudioServerProAppSettings" + }, + "SecurityGroups": { + "items": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 5, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "SharingSettings": { + "$ref": "#/definitions/SharingSettings" + }, + "SpaceStorageSettings": { + "$ref": "#/definitions/DefaultSpaceStorageSettings" + }, + "StudioWebPortal": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + } + }, + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "sagemaker:CreateUserProfile", + "sagemaker:DescribeUserProfile", + "sagemaker:DescribeImage", + "sagemaker:DescribeImageVersion", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "sagemaker:DeleteUserProfile", + "sagemaker:DescribeUserProfile" + ] + }, + "list": { + "permissions": [ + "sagemaker:ListUserProfiles" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeUserProfile" + ] + }, + "update": { + "permissions": [ + "sagemaker:UpdateUserProfile", + "sagemaker:DescribeUserProfile", + "sagemaker:DescribeImage", + "sagemaker:DescribeImageVersion", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/UserProfileName", + "/properties/DomainId" + ], + "properties": { + "DomainId": { + "maxLength": 63, + "minLength": 1, + "type": "string" + }, + "SingleSignOnUserIdentifier": { + "pattern": "UserName", + "type": "string" + }, + "SingleSignOnUserValue": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "UserProfileArn": { + "maxLength": 256, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:user-profile/.*", + "type": "string" + }, + "UserProfileName": { + "maxLength": 63, + "minLength": 1, + "type": "string" + }, + "UserSettings": { + "$ref": "#/definitions/UserSettings", + "maxItems": 50, + "minItems": 0, + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/UserProfileArn" + ], + "required": [ + "DomainId", + "UserProfileName" + ], + "typeName": "AWS::SageMaker::UserProfile", + "writeOnlyProperties": [ + "/properties/Tags" + ] +} 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 2ae9b3a91c..8726b225a6 100644 --- a/src/cfnlint/data/schemas/providers/me_south_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/me_south_1/__init__.py @@ -112,6 +112,7 @@ "AWS::DataSync::LocationHDFS", "AWS::Events::Archive", "AWS::MSK::Cluster", + "AWS::SecurityHub::DelegatedAdmin", "AWS::ControlTower::EnabledBaseline", "AWS::EC2::VPCEndpointConnectionNotification", "AWS::CodePipeline::Pipeline", @@ -275,6 +276,7 @@ "AWS::NetworkManager::CustomerGatewayAssociation", "AWS::IAM::ServerCertificate", "AWS::IoT::SecurityProfile", + "AWS::GlobalAccelerator::CrossAccountAttachment", "AWS::Events::EventBus", "AWS::SQS::QueueInlinePolicy", "AWS::Organizations::Organization", @@ -305,6 +307,7 @@ "AWS::CodeBuild::Project", "AWS::EFS::FileSystem", "AWS::Logs::QueryDefinition", + "AWS::SecurityHub::ProductSubscription", "AWS::IAM::InstanceProfile", "AWS::IoT::BillingGroup", "AWS::DataSync::LocationNFS", @@ -553,6 +556,7 @@ "AWS::EC2::ClientVpnTargetNetworkAssociation", "AWS::AppSync::GraphQLApi", "AWS::EC2::EgressOnlyInternetGateway", + "AWS::SecurityHub::Insight", "AWS::Config::ConformancePack", "AWS::EC2::VPCCidrBlock", "AWS::IAM::VirtualMFADevice", @@ -776,7 +780,6 @@ "aws-ecs-service.json", "aws-ram-resourceshare.json", "aws-dms-replicationconfig.json", - "aws-ec2-securitygroupegress.json", "aws-ec2-localgatewayroutetablevpcassociation.json", "aws-config-organizationconfigrule.json", "aws-glue-dataqualityruleset.json", @@ -796,7 +799,6 @@ "aws-apigateway-model.json", "aws-apigatewayv2-integrationresponse.json", "aws-ec2-networkacl.json", - "aws-lambda-eventsourcemapping.json", "aws-logs-resourcepolicy.json", "aws-servicecatalog-launchnotificationconstraint.json", "aws-iot-cacertificate.json", @@ -861,6 +863,7 @@ "aws-datasync-locationhdfs.json", "aws-events-archive.json", "aws-msk-cluster.json", + "aws-securityhub-delegatedadmin.json", "aws-controltower-enabledbaseline.json", "aws-ec2-vpcendpointconnectionnotification.json", "aws-codepipeline-pipeline.json", @@ -944,7 +947,6 @@ "aws-ec2-transitgatewaymulticastdomainassociation.json", "aws-s3outposts-endpoint.json", "aws-waf-sizeconstraintset.json", - "aws-ec2-transitgatewayroutetableassociation.json", "aws-appconfig-environment.json", "aws-imagebuilder-image.json", "aws-elasticache-securitygroupingress.json", @@ -1016,6 +1018,7 @@ "aws-networkmanager-customergatewayassociation.json", "aws-iam-servercertificate.json", "aws-iot-securityprofile.json", + "aws-globalaccelerator-crossaccountattachment.json", "aws-events-eventbus.json", "aws-sqs-queueinlinepolicy.json", "aws-organizations-organization.json", @@ -1045,6 +1048,7 @@ "aws-codebuild-project.json", "aws-efs-filesystem.json", "aws-logs-querydefinition.json", + "aws-securityhub-productsubscription.json", "aws-iam-instanceprofile.json", "aws-iot-billinggroup.json", "aws-datasync-locationnfs.json", @@ -1131,6 +1135,7 @@ "aws-securityhub-standard.json", "aws-rolesanywhere-crl.json", "aws-sns-topicinlinepolicy.json", + "aws-redshift-clusterparametergroup.json", "aws-organizations-policy.json", "aws-glue-trigger.json", "aws-globalaccelerator-listener.json", @@ -1187,6 +1192,7 @@ "aws-s3-bucketpolicy.json", "aws-appsync-graphqlschema.json", "aws-iot-custommetric.json", + "aws-redshift-cluster.json", "aws-codebuild-sourcecredential.json", "aws-emr-instancefleetconfig.json", "aws-emr-cluster.json", @@ -1215,7 +1221,6 @@ "aws-ec2-localgatewayroutetable.json", "aws-apigateway-resource.json", "aws-sagemaker-appimageconfig.json", - "aws-verifiedpermissions-identitysource.json", "aws-macie-session.json", "aws-elasticloadbalancingv2-targetgroup.json", "aws-applicationautoscaling-scalingpolicy.json", @@ -1268,7 +1273,6 @@ "aws-ec2-subnetnetworkaclassociation.json", "aws-servicecatalog-serviceaction.json", "aws-iam-userpolicy.json", - "aws-cloudfront-originaccesscontrol.json", "aws-inspectorv2-cisscanconfiguration.json", "aws-iot-mitigationaction.json", "aws-cognito-userpool.json", @@ -1281,11 +1285,12 @@ "aws-ec2-clientvpntargetnetworkassociation.json", "aws-appsync-graphqlapi.json", "aws-ec2-egressonlyinternetgateway.json", + "aws-securityhub-insight.json", + "aws-config-conformancepack.json", "aws-ec2-vpccidrblock.json", "aws-iam-virtualmfadevice.json", "aws-ec2-networkinsightspath.json", "aws-neptune-dbparametergroup.json", - "aws-acmpca-certificateauthority.json", "aws-athena-preparedstatement.json", "aws-autoscaling-scheduledaction.json", "aws-cognito-identitypoolprincipaltag.json", @@ -1344,6 +1349,7 @@ "aws-iot-accountauditconfiguration.json", "aws-sagemaker-userprofile.json", "aws-ec2-prefixlist.json", + "aws-ec2-instance.json", "aws-networkmanager-device.json", "aws-ec2-subnetcidrblock.json", "aws-elasticbeanstalk-applicationversion.json", diff --git a/src/cfnlint/data/schemas/providers/me_south_1/aws-acmpca-certificateauthority.json b/src/cfnlint/data/schemas/providers/me_south_1/aws-acmpca-certificateauthority.json new file mode 100644 index 0000000000..08ec85e5fa --- /dev/null +++ b/src/cfnlint/data/schemas/providers/me_south_1/aws-acmpca-certificateauthority.json @@ -0,0 +1,429 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Type", + "/properties/KeyAlgorithm", + "/properties/SigningAlgorithm", + "/properties/Subject", + "/properties/CsrExtensions", + "/properties/KeyStorageSecurityStandard", + "/properties/UsageMode" + ], + "definitions": { + "AccessDescription": { + "additionalProperties": false, + "properties": { + "AccessLocation": { + "$ref": "#/definitions/GeneralName" + }, + "AccessMethod": { + "$ref": "#/definitions/AccessMethod" + } + }, + "required": [ + "AccessMethod", + "AccessLocation" + ], + "type": "object" + }, + "AccessMethod": { + "additionalProperties": false, + "properties": { + "AccessMethodType": { + "$ref": "#/definitions/AccessMethodType" + }, + "CustomObjectIdentifier": { + "$ref": "#/definitions/CustomObjectIdentifier" + } + }, + "type": "object" + }, + "AccessMethodType": { + "type": "string" + }, + "Arn": { + "type": "string" + }, + "CrlConfiguration": { + "additionalProperties": false, + "properties": { + "CrlDistributionPointExtensionConfiguration": { + "$ref": "#/definitions/CrlDistributionPointExtensionConfiguration" + }, + "CustomCname": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + }, + "ExpirationInDays": { + "type": "integer" + }, + "S3BucketName": { + "type": "string" + }, + "S3ObjectAcl": { + "type": "string" + } + }, + "type": "object" + }, + "CrlDistributionPointExtensionConfiguration": { + "additionalProperties": false, + "properties": { + "OmitExtension": { + "type": "boolean" + } + }, + "required": [ + "OmitExtension" + ], + "type": "object" + }, + "CsrExtensions": { + "additionalProperties": false, + "properties": { + "KeyUsage": { + "$ref": "#/definitions/KeyUsage" + }, + "SubjectInformationAccess": { + "$ref": "#/definitions/SubjectInformationAccess" + } + }, + "type": "object" + }, + "CustomAttribute": { + "additionalProperties": false, + "properties": { + "ObjectIdentifier": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "ObjectIdentifier", + "Value" + ], + "type": "object" + }, + "CustomAttributeList": { + "items": { + "$ref": "#/definitions/CustomAttribute" + }, + "type": "array" + }, + "CustomObjectIdentifier": { + "type": "string" + }, + "DnsName": { + "type": "string" + }, + "EdiPartyName": { + "additionalProperties": false, + "properties": { + "NameAssigner": { + "type": "string" + }, + "PartyName": { + "type": "string" + } + }, + "required": [ + "PartyName", + "NameAssigner" + ], + "type": "object" + }, + "GeneralName": { + "additionalProperties": false, + "properties": { + "DirectoryName": { + "$ref": "#/definitions/Subject" + }, + "DnsName": { + "$ref": "#/definitions/DnsName" + }, + "EdiPartyName": { + "$ref": "#/definitions/EdiPartyName" + }, + "IpAddress": { + "$ref": "#/definitions/IpAddress" + }, + "OtherName": { + "$ref": "#/definitions/OtherName" + }, + "RegisteredId": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Rfc822Name": { + "$ref": "#/definitions/Rfc822Name" + }, + "UniformResourceIdentifier": { + "$ref": "#/definitions/UniformResourceIdentifier" + } + }, + "type": "object" + }, + "IpAddress": { + "type": "string" + }, + "KeyUsage": { + "additionalProperties": false, + "properties": { + "CRLSign": { + "default": false, + "type": "boolean" + }, + "DataEncipherment": { + "default": false, + "type": "boolean" + }, + "DecipherOnly": { + "default": false, + "type": "boolean" + }, + "DigitalSignature": { + "default": false, + "type": "boolean" + }, + "EncipherOnly": { + "default": false, + "type": "boolean" + }, + "KeyAgreement": { + "default": false, + "type": "boolean" + }, + "KeyCertSign": { + "default": false, + "type": "boolean" + }, + "KeyEncipherment": { + "default": false, + "type": "boolean" + }, + "NonRepudiation": { + "default": false, + "type": "boolean" + } + }, + "type": "object" + }, + "OcspConfiguration": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + }, + "OcspCustomCname": { + "type": "string" + } + }, + "type": "object" + }, + "OtherName": { + "additionalProperties": false, + "properties": { + "TypeId": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "TypeId", + "Value" + ], + "type": "object" + }, + "RevocationConfiguration": { + "additionalProperties": false, + "properties": { + "CrlConfiguration": { + "$ref": "#/definitions/CrlConfiguration" + }, + "OcspConfiguration": { + "$ref": "#/definitions/OcspConfiguration" + } + }, + "type": "object" + }, + "Rfc822Name": { + "type": "string" + }, + "Subject": { + "additionalProperties": false, + "properties": { + "CommonName": { + "type": "string" + }, + "Country": { + "type": "string" + }, + "CustomAttributes": { + "$ref": "#/definitions/CustomAttributeList" + }, + "DistinguishedNameQualifier": { + "type": "string" + }, + "GenerationQualifier": { + "type": "string" + }, + "GivenName": { + "type": "string" + }, + "Initials": { + "type": "string" + }, + "Locality": { + "type": "string" + }, + "Organization": { + "type": "string" + }, + "OrganizationalUnit": { + "type": "string" + }, + "Pseudonym": { + "type": "string" + }, + "SerialNumber": { + "type": "string" + }, + "State": { + "type": "string" + }, + "Surname": { + "type": "string" + }, + "Title": { + "type": "string" + } + }, + "type": "object" + }, + "SubjectInformationAccess": { + "items": { + "$ref": "#/definitions/AccessDescription" + }, + "type": "array" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "UniformResourceIdentifier": { + "type": "string" + } + }, + "handlers": { + "create": { + "permissions": [ + "acm-pca:CreateCertificateAuthority", + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr" + ] + }, + "delete": { + "permissions": [ + "acm-pca:DeleteCertificateAuthority", + "acm-pca:DescribeCertificateAuthority" + ] + }, + "list": { + "permissions": [ + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr", + "acm-pca:ListCertificateAuthorities", + "acm-pca:ListTags" + ] + }, + "read": { + "permissions": [ + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr", + "acm-pca:ListTags" + ] + }, + "update": { + "permissions": [ + "acm-pca:ListTags", + "acm-pca:TagCertificateAuthority", + "acm-pca:UntagCertificateAuthority", + "acm-pca:UpdateCertificateAuthority" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "$ref": "#/definitions/Arn" + }, + "CertificateSigningRequest": { + "type": "string" + }, + "CsrExtensions": { + "$ref": "#/definitions/CsrExtensions" + }, + "KeyAlgorithm": { + "type": "string" + }, + "KeyStorageSecurityStandard": { + "type": "string" + }, + "RevocationConfiguration": { + "$ref": "#/definitions/RevocationConfiguration" + }, + "SigningAlgorithm": { + "type": "string" + }, + "Subject": { + "$ref": "#/definitions/Subject" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "Type": { + "type": "string" + }, + "UsageMode": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CertificateSigningRequest" + ], + "required": [ + "Type", + "KeyAlgorithm", + "SigningAlgorithm", + "Subject" + ], + "sourceUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_ACMPCA.html", + "typeName": "AWS::ACMPCA::CertificateAuthority", + "writeOnlyProperties": [ + "/properties/Subject", + "/properties/Subject", + "/properties/CsrExtensions", + "/properties/Tags", + "/properties/RevocationConfiguration", + "/properties/KeyStorageSecurityStandard" + ] +} diff --git a/src/cfnlint/data/schemas/providers/me_south_1/aws-cloudfront-originaccesscontrol.json b/src/cfnlint/data/schemas/providers/me_south_1/aws-cloudfront-originaccesscontrol.json new file mode 100644 index 0000000000..2da12fdee1 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/me_south_1/aws-cloudfront-originaccesscontrol.json @@ -0,0 +1,88 @@ +{ + "additionalProperties": false, + "definitions": { + "OriginAccessControlConfig": { + "additionalProperties": false, + "properties": { + "Description": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "OriginAccessControlOriginType": { + "pattern": "^(s3|mediastore)$", + "type": "string" + }, + "SigningBehavior": { + "pattern": "^(never|no-override|always)$", + "type": "string" + }, + "SigningProtocol": { + "pattern": "^(sigv4)$", + "type": "string" + } + }, + "required": [ + "Name", + "SigningProtocol", + "SigningBehavior", + "OriginAccessControlOriginType" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "cloudfront:CreateOriginAccessControl" + ] + }, + "delete": { + "permissions": [ + "cloudfront:DeleteOriginAccessControl", + "cloudfront:GetOriginAccessControl" + ] + }, + "list": { + "permissions": [ + "cloudfront:ListOriginAccessControls" + ] + }, + "read": { + "permissions": [ + "cloudfront:GetOriginAccessControl" + ] + }, + "update": { + "permissions": [ + "cloudfront:UpdateOriginAccessControl", + "cloudfront:GetOriginAccessControl" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "type": "string" + }, + "OriginAccessControlConfig": { + "$ref": "#/definitions/OriginAccessControlConfig" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "OriginAccessControlConfig" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::CloudFront::OriginAccessControl" +} diff --git a/src/cfnlint/data/schemas/providers/me_south_1/aws-config-conformancepack.json b/src/cfnlint/data/schemas/providers/me_south_1/aws-config-conformancepack.json deleted file mode 100644 index cc35e80876..0000000000 --- a/src/cfnlint/data/schemas/providers/me_south_1/aws-config-conformancepack.json +++ /dev/null @@ -1,140 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ConformancePackName" - ], - "definitions": { - "ConformancePackInputParameter": { - "additionalProperties": false, - "properties": { - "ParameterName": { - "$ref": "#/definitions/ParameterName" - }, - "ParameterValue": { - "$ref": "#/definitions/ParameterValue" - } - }, - "required": [ - "ParameterName", - "ParameterValue" - ], - "type": "object" - }, - "ParameterName": { - "maxLength": 255, - "minLength": 0, - "type": "string" - }, - "ParameterValue": { - "maxLength": 4096, - "minLength": 0, - "type": "string" - } - }, - "documentationUrl": "https://docs.aws.amazon.com/config/latest/developerguide/conformance-packs.html", - "handlers": { - "create": { - "permissions": [ - "config:PutConformancePack", - "config:DescribeConformancePackStatus", - "config:DescribeConformancePacks", - "s3:GetObject", - "s3:GetBucketAcl", - "iam:CreateServiceLinkedRole", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "config:DeleteConformancePack", - "config:DescribeConformancePackStatus" - ] - }, - "list": { - "permissions": [ - "config:DescribeConformancePacks" - ] - }, - "read": { - "permissions": [ - "config:DescribeConformancePacks" - ] - }, - "update": { - "permissions": [ - "config:PutConformancePack", - "config:DescribeConformancePackStatus", - "s3:GetObject", - "s3:GetBucketAcl", - "iam:CreateServiceLinkedRole", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/ConformancePackName" - ], - "properties": { - "ConformancePackInputParameters": { - "items": { - "$ref": "#/definitions/ConformancePackInputParameter" - }, - "maxItems": 60, - "minItems": 0, - "type": "array" - }, - "ConformancePackName": { - "maxLength": 256, - "minLength": 1, - "pattern": "[a-zA-Z][-a-zA-Z0-9]*", - "type": "string" - }, - "DeliveryS3Bucket": { - "maxLength": 63, - "minLength": 0, - "type": "string" - }, - "DeliveryS3KeyPrefix": { - "maxLength": 1024, - "minLength": 0, - "type": "string" - }, - "TemplateBody": { - "maxLength": 51200, - "minLength": 1, - "type": "string" - }, - "TemplateS3Uri": { - "maxLength": 1024, - "minLength": 1, - "pattern": "s3://.*", - "type": "string" - }, - "TemplateSSMDocumentDetails": { - "additionalProperties": false, - "properties": { - "DocumentName": { - "maxLength": 128, - "minLength": 3, - "type": "string" - }, - "DocumentVersion": { - "maxLength": 128, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - } - }, - "required": [ - "ConformancePackName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-config.git", - "typeName": "AWS::Config::ConformancePack", - "writeOnlyProperties": [ - "/properties/TemplateBody", - "/properties/TemplateS3Uri", - "/properties/TemplateSSMDocumentDetails" - ] -} diff --git a/src/cfnlint/data/schemas/providers/me_south_1/aws-dynamodb-globaltable.json b/src/cfnlint/data/schemas/providers/me_south_1/aws-dynamodb-globaltable.json index 4e5ba995cb..ae37e9142b 100644 --- a/src/cfnlint/data/schemas/providers/me_south_1/aws-dynamodb-globaltable.json +++ b/src/cfnlint/data/schemas/providers/me_south_1/aws-dynamodb-globaltable.json @@ -8,6 +8,27 @@ ] ], "additionalProperties": false, + "allOf": [ + { + "if": { + "required": [ + "LocalSecondaryIndexes" + ], + "type": "object" + }, + "then": { + "properties": { + "AttributeDefinitions": { + "minItems": 2 + }, + "KeySchema": { + "minItems": 2 + } + }, + "type": "object" + } + } + ], "createOnlyProperties": [ "/properties/LocalSecondaryIndexes", "/properties/TableName", @@ -79,13 +100,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "minItems": 1, - "type": "array", - "uniqueItems": true + "minItems": 1 }, "Projection": { "$ref": "#/definitions/Projection" @@ -102,22 +119,60 @@ "type": "object" }, "KeySchema": { - "additionalProperties": false, - "properties": { - "AttributeName": { - "maxLength": 255, - "minLength": 1, - "type": "string" + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "KeyType": { + "enum": [ + "HASH", + "RANGE" + ], + "type": "string" + } }, - "KeyType": { - "type": "string" - } + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" }, - "required": [ - "KeyType", - "AttributeName" + "prefixItems": [ + { + "additionalProperties": false, + "properties": { + "KeyType": { + "const": "HASH", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + }, + { + "properties": { + "KeyType": { + "const": "RANGE", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + } ], - "type": "object" + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "KinesisStreamSpecification": { "additionalProperties": false, @@ -147,12 +202,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "type": "array", - "uniqueItems": true + "minItems": 2 }, "Projection": { "$ref": "#/definitions/Projection" @@ -511,7 +563,10 @@ }, "minItems": 1, "type": "array", - "uniqueItems": true + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "BillingMode": { "type": "string" @@ -525,13 +580,9 @@ "uniqueItems": true }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "minItems": 1, - "type": "array", - "uniqueItems": true + "minItems": 1 }, "LocalSecondaryIndexes": { "insertionOrder": false, diff --git a/src/cfnlint/data/schemas/providers/me_south_1/aws-dynamodb-table.json b/src/cfnlint/data/schemas/providers/me_south_1/aws-dynamodb-table.json index efc82f1d70..f21d084b10 100644 --- a/src/cfnlint/data/schemas/providers/me_south_1/aws-dynamodb-table.json +++ b/src/cfnlint/data/schemas/providers/me_south_1/aws-dynamodb-table.json @@ -1,5 +1,26 @@ { "additionalProperties": false, + "allOf": [ + { + "if": { + "required": [ + "LocalSecondaryIndexes" + ], + "type": "object" + }, + "then": { + "properties": { + "AttributeDefinitions": { + "minItems": 2 + }, + "KeySchema": { + "minItems": 2 + } + }, + "type": "object" + } + } + ], "cfnLint": [ "AWS::DynamoDB::Table/Properties" ], @@ -95,11 +116,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 }, "Projection": { "$ref": "#/definitions/Projection" @@ -147,24 +166,57 @@ "type": "object" }, "KeySchema": { - "additionalProperties": false, - "properties": { - "AttributeName": { - "type": "string" + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "type": "string" + }, + "KeyType": { + "enum": [ + "HASH", + "RANGE" + ], + "type": "string" + } }, - "KeyType": { - "enum": [ - "HASH", - "RANGE" + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" + }, + "prefixItems": [ + { + "properties": { + "KeyType": { + "const": "HASH", + "type": "string" + } + }, + "required": [ + "KeyType" ], - "type": "string" + "type": "object" + }, + { + "properties": { + "KeyType": { + "const": "RANGE", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" } - }, - "required": [ - "KeyType", - "AttributeName" ], - "type": "object" + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "KinesisStreamSpecification": { "additionalProperties": false, @@ -192,11 +244,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 2 }, "Projection": { "$ref": "#/definitions/Projection" @@ -451,7 +501,10 @@ "$ref": "#/definitions/AttributeDefinition" }, "type": "array", - "uniqueItems": true + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "BillingMode": { "enum": [ @@ -479,11 +532,9 @@ "KeySchema": { "oneOf": [ { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 }, { "type": "object" diff --git a/src/cfnlint/data/schemas/providers/me_south_1/aws-ec2-instance.json b/src/cfnlint/data/schemas/providers/me_south_1/aws-ec2-instance.json deleted file mode 100644 index 7b3bfed595..0000000000 --- a/src/cfnlint/data/schemas/providers/me_south_1/aws-ec2-instance.json +++ /dev/null @@ -1,571 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ElasticGpuSpecifications", - "/properties/Ipv6Addresses", - "/properties/PlacementGroupName", - "/properties/HostResourceGroupArn", - "/properties/ImageId", - "/properties/CpuOptions", - "/properties/PrivateIpAddress", - "/properties/ElasticInferenceAccelerators", - "/properties/EnclaveOptions", - "/properties/HibernationOptions", - "/properties/KeyName", - "/properties/LicenseSpecifications", - "/properties/NetworkInterfaces", - "/properties/AvailabilityZone", - "/properties/SubnetId", - "/properties/LaunchTemplate", - "/properties/SecurityGroups", - "/properties/Ipv6AddressCount" - ], - "definitions": { - "AssociationParameter": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "BlockDeviceMapping": { - "additionalProperties": false, - "properties": { - "DeviceName": { - "type": "string" - }, - "Ebs": { - "$ref": "#/definitions/Ebs" - }, - "NoDevice": { - "$ref": "#/definitions/NoDevice" - }, - "VirtualName": { - "type": "string" - } - }, - "required": [ - "DeviceName" - ], - "requiredXor": [ - "VirtualName", - "Ebs", - "NoDevice" - ], - "type": "object" - }, - "CpuOptions": { - "additionalProperties": false, - "properties": { - "CoreCount": { - "type": "integer" - }, - "ThreadsPerCore": { - "type": "integer" - } - }, - "type": "object" - }, - "CreditSpecification": { - "additionalProperties": false, - "properties": { - "CPUCredits": { - "type": "string" - } - }, - "type": "object" - }, - "Ebs": { - "additionalProperties": false, - "properties": { - "DeleteOnTermination": { - "type": "boolean" - }, - "Encrypted": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "KmsKeyId": { - "type": "string" - }, - "SnapshotId": { - "type": "string" - }, - "VolumeSize": { - "type": "integer" - }, - "VolumeType": { - "type": "string" - } - }, - "type": "object" - }, - "ElasticGpuSpecification": { - "additionalProperties": false, - "properties": { - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "ElasticInferenceAccelerator": { - "additionalProperties": false, - "properties": { - "Count": { - "type": "integer" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "EnclaveOptions": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - } - }, - "type": "object" - }, - "HibernationOptions": { - "additionalProperties": false, - "properties": { - "Configured": { - "type": "boolean" - } - }, - "type": "object" - }, - "InstanceIpv6Address": { - "additionalProperties": false, - "properties": { - "Ipv6Address": { - "type": "string" - } - }, - "required": [ - "Ipv6Address" - ], - "type": "object" - }, - "LaunchTemplateSpecification": { - "additionalProperties": false, - "properties": { - "LaunchTemplateId": { - "type": "string" - }, - "LaunchTemplateName": { - "type": "string" - }, - "Version": { - "type": "string" - } - }, - "required": [ - "Version" - ], - "type": "object" - }, - "LicenseSpecification": { - "additionalProperties": false, - "properties": { - "LicenseConfigurationArn": { - "type": "string" - } - }, - "required": [ - "LicenseConfigurationArn" - ], - "type": "object" - }, - "NetworkInterface": { - "additionalProperties": false, - "properties": { - "AssociateCarrierIpAddress": { - "type": "boolean" - }, - "AssociatePublicIpAddress": { - "type": "boolean" - }, - "DeleteOnTermination": { - "type": "boolean" - }, - "Description": { - "type": "string" - }, - "DeviceIndex": { - "type": "string" - }, - "GroupSet": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": false - }, - "NetworkInterfaceId": { - "type": "string" - }, - "PrivateIpAddress": { - "type": "string" - }, - "PrivateIpAddresses": { - "items": { - "$ref": "#/definitions/PrivateIpAddressSpecification" - }, - "type": "array", - "uniqueItems": false - }, - "SecondaryPrivateIpAddressCount": { - "type": "integer" - }, - "SubnetId": { - "type": "string" - } - }, - "required": [ - "DeviceIndex" - ], - "type": "object" - }, - "NoDevice": { - "additionalProperties": false, - "type": "object" - }, - "PrivateDnsNameOptions": { - "additionalProperties": false, - "properties": { - "EnableResourceNameDnsAAAARecord": { - "type": "boolean" - }, - "EnableResourceNameDnsARecord": { - "type": "boolean" - }, - "HostnameType": { - "type": "string" - } - }, - "type": "object" - }, - "PrivateIpAddressSpecification": { - "additionalProperties": false, - "properties": { - "Primary": { - "type": "boolean" - }, - "PrivateIpAddress": { - "type": "string" - } - }, - "required": [ - "PrivateIpAddress", - "Primary" - ], - "type": "object" - }, - "SsmAssociation": { - "additionalProperties": false, - "properties": { - "AssociationParameters": { - "items": { - "$ref": "#/definitions/AssociationParameter" - }, - "type": "array", - "uniqueItems": false - }, - "DocumentName": { - "type": "string" - } - }, - "required": [ - "DocumentName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "Volume": { - "additionalProperties": false, - "properties": { - "Device": { - "type": "string" - }, - "VolumeId": { - "type": "string" - } - }, - "required": [ - "VolumeId", - "Device" - ], - "type": "object" - } - }, - "dependentExcluded": { - "NetworkInterfaces": [ - "SubnetId" - ], - "SubnetId": [ - "NetworkInterfaces" - ] - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AdditionalInfo": { - "type": "string" - }, - "Affinity": { - "enum": [ - "default", - "host" - ], - "type": "string" - }, - "AvailabilityZone": { - "cfnLint": [ - "AWS::EC2::Instance/Properties/AvailabilityZone" - ], - "type": "string" - }, - "BlockDeviceMappings": { - "items": { - "$ref": "#/definitions/BlockDeviceMapping" - }, - "type": "array", - "uniqueItems": false - }, - "CpuOptions": { - "$ref": "#/definitions/CpuOptions" - }, - "CreditSpecification": { - "$ref": "#/definitions/CreditSpecification" - }, - "DisableApiTermination": { - "type": "boolean" - }, - "EbsOptimized": { - "type": "boolean" - }, - "ElasticGpuSpecifications": { - "items": { - "$ref": "#/definitions/ElasticGpuSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "ElasticInferenceAccelerators": { - "items": { - "$ref": "#/definitions/ElasticInferenceAccelerator" - }, - "type": "array", - "uniqueItems": true - }, - "EnclaveOptions": { - "$ref": "#/definitions/EnclaveOptions" - }, - "HibernationOptions": { - "$ref": "#/definitions/HibernationOptions" - }, - "HostId": { - "type": "string" - }, - "HostResourceGroupArn": { - "type": "string" - }, - "IamInstanceProfile": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "ImageId": { - "type": "string" - }, - "InstanceInitiatedShutdownBehavior": { - "type": "string" - }, - "InstanceType": { - "cfnLint": [ - "AWS::EC2::Instance/Properties/InstanceType" - ], - "type": "string" - }, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": false - }, - "KernelId": { - "type": "string" - }, - "KeyName": { - "type": "string" - }, - "LaunchTemplate": { - "$ref": "#/definitions/LaunchTemplateSpecification" - }, - "LicenseSpecifications": { - "items": { - "$ref": "#/definitions/LicenseSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "Monitoring": { - "type": "boolean" - }, - "NetworkInterfaces": { - "items": { - "$ref": "#/definitions/NetworkInterface" - }, - "type": "array", - "uniqueItems": false - }, - "PlacementGroupName": { - "type": "string" - }, - "PrivateDnsName": { - "type": "string" - }, - "PrivateDnsNameOptions": { - "$ref": "#/definitions/PrivateDnsNameOptions" - }, - "PrivateIp": { - "type": "string" - }, - "PrivateIpAddress": { - "type": "string" - }, - "PropagateTagsToVolumeOnCreation": { - "type": "boolean" - }, - "PublicDnsName": { - "type": "string" - }, - "PublicIp": { - "type": "string" - }, - "RamdiskId": { - "type": "string" - }, - "SecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SecurityGroups": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SourceDestCheck": { - "type": "boolean" - }, - "SsmAssociations": { - "items": { - "$ref": "#/definitions/SsmAssociation" - }, - "type": "array", - "uniqueItems": false - }, - "SubnetId": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "Tenancy": { - "enum": [ - "default", - "dedicated", - "host" - ], - "type": "string" - }, - "UserData": { - "type": "string" - }, - "Volumes": { - "items": { - "$ref": "#/definitions/Volume" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/PublicIp", - "/properties/Id", - "/properties/PublicDnsName", - "/properties/PrivateDnsName", - "/properties/PrivateIp" - ], - "requiredXor": [ - "ImageId", - "LaunchTemplate" - ], - "typeName": "AWS::EC2::Instance" -} diff --git a/src/cfnlint/data/schemas/providers/me_south_1/aws-ec2-securitygroupegress.json b/src/cfnlint/data/schemas/providers/me_south_1/aws-ec2-securitygroupegress.json new file mode 100644 index 0000000000..f94631dad2 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/me_south_1/aws-ec2-securitygroupegress.json @@ -0,0 +1,98 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::EC2::SecurityGroupEgress/Properties" + ], + "createOnlyProperties": [ + "/properties/IpProtocol", + "/properties/DestinationSecurityGroupId", + "/properties/ToPort", + "/properties/CidrIp", + "/properties/FromPort", + "/properties/GroupId", + "/properties/CidrIpv6", + "/properties/DestinationPrefixListId" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:AuthorizeSecurityGroupEgress", + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "delete": { + "permissions": [ + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "update": { + "permissions": [ + "ec2:UpdateSecurityGroupRuleDescriptionsEgress" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CidrIp": { + "type": "string" + }, + "CidrIpv6": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "DestinationPrefixListId": { + "type": "string" + }, + "DestinationSecurityGroupId": { + "type": "string" + }, + "FromPort": { + "minimum": -1, + "type": "integer" + }, + "GroupId": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "IpProtocol": { + "type": "string" + }, + "ToPort": { + "minimum": -1, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IpProtocol", + "GroupId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SecurityGroupEgress" +} diff --git a/src/cfnlint/data/schemas/providers/me_south_1/aws-ec2-transitgatewayroutetableassociation.json b/src/cfnlint/data/schemas/providers/me_south_1/aws-ec2-transitgatewayroutetableassociation.json new file mode 100644 index 0000000000..890b2c4be2 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/me_south_1/aws-ec2-transitgatewayroutetableassociation.json @@ -0,0 +1,29 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TransitGatewayRouteTableId", + "/properties/TransitGatewayAttachmentId" + ], + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "type": "string" + }, + "TransitGatewayAttachmentId": { + "type": "string" + }, + "TransitGatewayRouteTableId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "TransitGatewayRouteTableId", + "TransitGatewayAttachmentId" + ], + "typeName": "AWS::EC2::TransitGatewayRouteTableAssociation" +} diff --git a/src/cfnlint/data/schemas/providers/me_south_1/aws-lambda-eventsourcemapping.json b/src/cfnlint/data/schemas/providers/me_south_1/aws-lambda-eventsourcemapping.json new file mode 100644 index 0000000000..cb7599c139 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/me_south_1/aws-lambda-eventsourcemapping.json @@ -0,0 +1,353 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::Lambda::EventSourceMapping/Properties" + ], + "createOnlyProperties": [ + "/properties/EventSourceArn", + "/properties/StartingPosition", + "/properties/StartingPositionTimestamp", + "/properties/SelfManagedEventSource", + "/properties/AmazonManagedKafkaEventSourceConfig", + "/properties/SelfManagedKafkaEventSourceConfig" + ], + "definitions": { + "AmazonManagedKafkaEventSourceConfig": { + "additionalProperties": false, + "properties": { + "ConsumerGroupId": { + "$ref": "#/definitions/ConsumerGroupId" + } + }, + "type": "object" + }, + "ConsumerGroupId": { + "maxLength": 200, + "minLength": 1, + "pattern": "[a-zA-Z0-9-\\/*:_+=.@-]*", + "type": "string" + }, + "DestinationConfig": { + "additionalProperties": false, + "properties": { + "OnFailure": { + "$ref": "#/definitions/OnFailure" + } + }, + "type": "object" + }, + "DocumentDBEventSourceConfig": { + "additionalProperties": false, + "properties": { + "CollectionName": { + "maxLength": 57, + "minLength": 1, + "type": "string" + }, + "DatabaseName": { + "maxLength": 63, + "minLength": 1, + "type": "string" + }, + "FullDocument": { + "enum": [ + "UpdateLookup", + "Default" + ], + "type": "string" + } + }, + "type": "object" + }, + "Endpoints": { + "additionalProperties": false, + "properties": { + "KafkaBootstrapServers": { + "items": { + "maxLength": 300, + "minLength": 1, + "pattern": "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9]):[0-9]{1,5}", + "type": "string" + }, + "maxItems": 10, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "Filter": { + "additionalProperties": false, + "properties": { + "Pattern": { + "maxLength": 4096, + "minLength": 0, + "pattern": ".*", + "type": "string" + } + }, + "type": "object" + }, + "FilterCriteria": { + "additionalProperties": false, + "properties": { + "Filters": { + "items": { + "$ref": "#/definitions/Filter" + }, + "maxItems": 20, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "MaximumConcurrency": { + "maximum": 1000, + "minimum": 2, + "type": "integer" + }, + "OnFailure": { + "additionalProperties": false, + "properties": { + "Destination": { + "maxLength": 1024, + "minLength": 12, + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "type": "string" + } + }, + "type": "object" + }, + "ScalingConfig": { + "additionalProperties": false, + "properties": { + "MaximumConcurrency": { + "$ref": "#/definitions/MaximumConcurrency" + } + }, + "type": "object" + }, + "SelfManagedEventSource": { + "additionalProperties": false, + "properties": { + "Endpoints": { + "$ref": "#/definitions/Endpoints" + } + }, + "type": "object" + }, + "SelfManagedKafkaEventSourceConfig": { + "additionalProperties": false, + "properties": { + "ConsumerGroupId": { + "$ref": "#/definitions/ConsumerGroupId" + } + }, + "type": "object" + }, + "SourceAccessConfiguration": { + "additionalProperties": false, + "properties": { + "Type": { + "enum": [ + "BASIC_AUTH", + "VPC_SUBNET", + "VPC_SECURITY_GROUP", + "SASL_SCRAM_512_AUTH", + "SASL_SCRAM_256_AUTH", + "VIRTUAL_HOST", + "CLIENT_CERTIFICATE_TLS_AUTH", + "SERVER_ROOT_CA_CERTIFICATE" + ], + "type": "string" + }, + "URI": { + "maxLength": 200, + "minLength": 1, + "pattern": "[a-zA-Z0-9-\\/*:_+=.@-]*", + "type": "string" + } + }, + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "lambda:CreateEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + }, + "delete": { + "permissions": [ + "lambda:DeleteEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + }, + "list": { + "permissions": [ + "lambda:ListEventSourceMappings" + ] + }, + "read": { + "permissions": [ + "lambda:GetEventSourceMapping" + ] + }, + "update": { + "permissions": [ + "lambda:UpdateEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AmazonManagedKafkaEventSourceConfig": { + "$ref": "#/definitions/AmazonManagedKafkaEventSourceConfig" + }, + "BatchSize": { + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "BisectBatchOnFunctionError": { + "type": "boolean" + }, + "DestinationConfig": { + "$ref": "#/definitions/DestinationConfig" + }, + "DocumentDBEventSourceConfig": { + "$ref": "#/definitions/DocumentDBEventSourceConfig" + }, + "Enabled": { + "type": "boolean" + }, + "EventSourceArn": { + "maxLength": 1024, + "minLength": 12, + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "type": "string" + }, + "FilterCriteria": { + "$ref": "#/definitions/FilterCriteria" + }, + "FunctionName": { + "maxLength": 140, + "minLength": 1, + "pattern": "(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?", + "type": "string" + }, + "FunctionResponseTypes": { + "items": { + "enum": [ + "ReportBatchItemFailures" + ], + "type": "string" + }, + "maxLength": 1, + "minLength": 0, + "type": "array", + "uniqueItems": true + }, + "Id": { + "maxLength": 36, + "minLength": 36, + "pattern": "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + "type": "string" + }, + "MaximumBatchingWindowInSeconds": { + "maximum": 300, + "minimum": 0, + "type": "integer" + }, + "MaximumRecordAgeInSeconds": { + "maximum": 604800, + "minimum": -1, + "type": "integer" + }, + "MaximumRetryAttempts": { + "maximum": 10000, + "minimum": -1, + "type": "integer" + }, + "ParallelizationFactor": { + "maximum": 10, + "minimum": 1, + "type": "integer" + }, + "Queues": { + "items": { + "maxLength": 1000, + "minLength": 1, + "pattern": "[\\s\\S]*", + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "ScalingConfig": { + "$ref": "#/definitions/ScalingConfig" + }, + "SelfManagedEventSource": { + "$ref": "#/definitions/SelfManagedEventSource" + }, + "SelfManagedKafkaEventSourceConfig": { + "$ref": "#/definitions/SelfManagedKafkaEventSourceConfig" + }, + "SourceAccessConfigurations": { + "items": { + "$ref": "#/definitions/SourceAccessConfiguration" + }, + "maxItems": 22, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "StartingPosition": { + "enum": [ + "TRIM_HORIZON", + "LATEST", + "AT_TIMESTAMP" + ], + "maxLength": 12, + "minLength": 6, + "pattern": "(LATEST|TRIM_HORIZON|AT_TIMESTAMP)+", + "type": "string" + }, + "StartingPositionTimestamp": { + "type": "number" + }, + "Topics": { + "items": { + "maxLength": 249, + "minLength": 1, + "pattern": "^[^.]([a-zA-Z0-9\\-_.]+)", + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "TumblingWindowInSeconds": { + "maximum": 900, + "minimum": 0, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "FunctionName" + ], + "typeName": "AWS::Lambda::EventSourceMapping" +} diff --git a/src/cfnlint/data/schemas/providers/me_south_1/aws-redshift-cluster.json b/src/cfnlint/data/schemas/providers/me_south_1/aws-redshift-cluster.json deleted file mode 100644 index bdd4d92992..0000000000 --- a/src/cfnlint/data/schemas/providers/me_south_1/aws-redshift-cluster.json +++ /dev/null @@ -1,332 +0,0 @@ -{ - "additionalProperties": false, - "cfnLint": "AWS::Redshift::Cluster/Properties", - "createOnlyProperties": [ - "/properties/ClusterIdentifier", - "/properties/OwnerAccount", - "/properties/SnapshotIdentifier", - "/properties/DBName", - "/properties/SnapshotClusterIdentifier", - "/properties/ClusterSubnetGroupName", - "/properties/MasterUsername" - ], - "definitions": { - "Endpoint": { - "additionalProperties": false, - "properties": { - "Address": { - "type": "string" - }, - "Port": { - "type": "string" - } - }, - "type": "object" - }, - "LoggingProperties": { - "additionalProperties": false, - "properties": { - "BucketName": { - "type": "string" - }, - "S3KeyPrefix": { - "type": "string" - } - }, - "required": [ - "BucketName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 127, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 255, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "redshift:DescribeClusters", - "redshift:CreateCluster", - "redshift:RestoreFromClusterSnapshot", - "redshift:EnableLogging", - "redshift:DescribeTags" - ], - "timeoutInMinutes": 2160 - }, - "delete": { - "permissions": [ - "redshift:DescribeTags", - "redshift:DescribeClusters", - "redshift:DeleteCluster" - ], - "timeoutInMinutes": 2160 - }, - "list": { - "permissions": [ - "redshift:DescribeTags", - "redshift:DescribeClusters" - ] - }, - "read": { - "permissions": [ - "redshift:DescribeClusters", - "redshift:DescribeLoggingStatus", - "redshift:DescribeSnapshotCopyGrant", - "redshift:DescribeClusterDbRevisions", - "redshift:DescribeTags" - ] - }, - "update": { - "permissions": [ - "redshift:DescribeClusters", - "redshift:ModifyCluster", - "redshift:ModifyClusterIamRoles", - "redshift:EnableLogging", - "redshift:CreateTags", - "redshift:DeleteTags", - "redshift:DescribeTags", - "redshift:DisableLogging", - "redshift:RebootCluster", - "redshift:EnableSnapshotCopy", - "redshift:DisableSnapshotCopy", - "redshift:ModifySnapshotCopyRetentionPeriod", - "redshift:ModifyAquaConfiguration", - "redshift:ResizeCluster", - "redshift:ModifyClusterMaintenance", - "redshift:DescribeClusterDbRevisions", - "redshift:ModifyClusterDbRevisions", - "redshift:PauseCluster", - "redshift:ResumeCluster", - "redshift:RotateEncryptionKey", - "redshift:FailoverPrimaryCompute" - ], - "timeoutInMinutes": 2160 - } - }, - "primaryIdentifier": [ - "/properties/ClusterIdentifier" - ], - "properties": { - "AllowVersionUpgrade": { - "type": "boolean" - }, - "AquaConfigurationStatus": { - "type": "string" - }, - "AutomatedSnapshotRetentionPeriod": { - "type": "integer" - }, - "AvailabilityZone": { - "type": "string" - }, - "AvailabilityZoneRelocation": { - "type": "boolean" - }, - "AvailabilityZoneRelocationStatus": { - "type": "string" - }, - "Classic": { - "type": "boolean" - }, - "ClusterIdentifier": { - "maxLength": 63, - "type": "string" - }, - "ClusterParameterGroupName": { - "maxLength": 255, - "type": "string" - }, - "ClusterSecurityGroups": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "ClusterSubnetGroupName": { - "type": "string" - }, - "ClusterType": { - "type": "string" - }, - "ClusterVersion": { - "type": "string" - }, - "DBName": { - "type": "string" - }, - "DeferMaintenance": { - "type": "boolean" - }, - "DeferMaintenanceDuration": { - "type": "integer" - }, - "DeferMaintenanceEndTime": { - "type": "string" - }, - "DeferMaintenanceIdentifier": { - "type": "string" - }, - "DeferMaintenanceStartTime": { - "type": "string" - }, - "DestinationRegion": { - "type": "string" - }, - "ElasticIp": { - "type": "string" - }, - "Encrypted": { - "type": "boolean" - }, - "Endpoint": { - "$ref": "#/definitions/Endpoint" - }, - "EnhancedVpcRouting": { - "type": "boolean" - }, - "HsmClientCertificateIdentifier": { - "type": "string" - }, - "HsmConfigurationIdentifier": { - "type": "string" - }, - "IamRoles": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "maxItems": 50, - "type": "array" - }, - "Id": { - "type": "string" - }, - "KmsKeyId": { - "type": "string" - }, - "LoggingProperties": { - "$ref": "#/definitions/LoggingProperties" - }, - "MaintenanceTrackName": { - "type": "string" - }, - "ManualSnapshotRetentionPeriod": { - "type": "integer" - }, - "MasterUserPassword": { - "maxLength": 64, - "type": "string" - }, - "MasterUsername": { - "maxLength": 128, - "type": "string" - }, - "MultiAZ": { - "type": "boolean" - }, - "NodeType": { - "cfnLint": "AWS::Redshift::Cluster/Properties/NodeType", - "type": "string" - }, - "NumberOfNodes": { - "maximum": 100, - "minimum": 1, - "type": "integer" - }, - "OwnerAccount": { - "type": "string" - }, - "Port": { - "type": "integer" - }, - "PreferredMaintenanceWindow": { - "type": "string" - }, - "PubliclyAccessible": { - "type": "boolean" - }, - "ResourceAction": { - "type": "string" - }, - "RevisionTarget": { - "type": "string" - }, - "RotateEncryptionKey": { - "type": "boolean" - }, - "SnapshotClusterIdentifier": { - "type": "string" - }, - "SnapshotCopyGrantName": { - "type": "string" - }, - "SnapshotCopyManual": { - "type": "boolean" - }, - "SnapshotCopyRetentionPeriod": { - "type": "integer" - }, - "SnapshotIdentifier": { - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": false - }, - "VpcSecurityGroupIds": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/DeferMaintenanceIdentifier", - "/properties/Endpoint/Port", - "/properties/Endpoint/Address" - ], - "required": [ - "MasterUserPassword", - "NodeType", - "MasterUsername", - "DBName", - "ClusterType" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "taggable": true - }, - "typeName": "AWS::Redshift::Cluster", - "writeOnlyProperties": [ - "/properties/MasterUserPassword", - "/properties/Classic", - "/properties/SnapshotIdentifier" - ] -} diff --git a/src/cfnlint/data/schemas/providers/me_south_1/aws-redshift-clusterparametergroup.json b/src/cfnlint/data/schemas/providers/me_south_1/aws-redshift-clusterparametergroup.json deleted file mode 100644 index 6e830dea20..0000000000 --- a/src/cfnlint/data/schemas/providers/me_south_1/aws-redshift-clusterparametergroup.json +++ /dev/null @@ -1,136 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ParameterGroupName", - "/properties/ParameterGroupFamily", - "/properties/Description" - ], - "definitions": { - "Parameter": { - "additionalProperties": false, - "properties": { - "ParameterName": { - "type": "string" - }, - "ParameterValue": { - "type": "string" - } - }, - "required": [ - "ParameterValue", - "ParameterName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "redshift:CreateClusterParameterGroup", - "redshift:ModifyClusterParameterGroup", - "redshift:DescribeClusterParameterGroups", - "redshift:CreateTags", - "ec2:AllocateAddress", - "ec2:AssociateAddress", - "ec2:AttachNetworkInterface", - "ec2:DescribeAccountAttributes", - "ec2:DescribeAddresses", - "ec2:DescribeAvailabilityZones", - "ec2:DescribeInternetGateways", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:DescribeVpcs" - ] - }, - "delete": { - "permissions": [ - "redshift:DeleteClusterParameterGroup", - "initech:DeleteReport" - ] - }, - "list": { - "permissions": [ - "redshift:DescribeClusterParameterGroups", - "initech:ListReports" - ] - }, - "read": { - "permissions": [ - "redshift:DescribeClusterParameterGroups", - "initech:DescribeReport" - ] - }, - "update": { - "permissions": [ - "redshift:ResetClusterParameterGroup", - "redshift:ModifyClusterParameterGroup", - "redshift:DescribeTags", - "redshift:CreateTags", - "redshift:DeleteTags", - "initech:UpdateReport" - ] - } - }, - "primaryIdentifier": [ - "/properties/ParameterGroupName" - ], - "properties": { - "Description": { - "type": "string" - }, - "ParameterGroupFamily": { - "type": "string" - }, - "ParameterGroupName": { - "maxLength": 255, - "type": "string" - }, - "Parameters": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Parameter" - }, - "type": "array" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "required": [ - "Description", - "ParameterGroupFamily" - ], - "tagging": { - "taggable": true - }, - "typeName": "AWS::Redshift::ClusterParameterGroup", - "writeOnlyProperties": [ - "/properties/Tags", - "/properties/Tags/*/Key", - "/properties/Tags/*/Value" - ] -} diff --git a/src/cfnlint/data/schemas/providers/me_south_1/aws-verifiedpermissions-identitysource.json b/src/cfnlint/data/schemas/providers/me_south_1/aws-verifiedpermissions-identitysource.json new file mode 100644 index 0000000000..46a0ad88f1 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/me_south_1/aws-verifiedpermissions-identitysource.json @@ -0,0 +1,221 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PolicyStoreId" + ], + "definitions": { + "CognitoGroupConfiguration": { + "additionalProperties": false, + "properties": { + "GroupEntityType": { + "maxLength": 200, + "minLength": 1, + "pattern": "^([_a-zA-Z][_a-zA-Z0-9]*::)*[_a-zA-Z][_a-zA-Z0-9]*$", + "type": "string" + } + }, + "required": [ + "GroupEntityType" + ], + "type": "object" + }, + "CognitoUserPoolConfiguration": { + "additionalProperties": false, + "properties": { + "ClientIds": { + "insertionOrder": false, + "items": { + "maxLength": 255, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "maxItems": 1000, + "minItems": 0, + "type": "array" + }, + "GroupConfiguration": { + "$ref": "#/definitions/CognitoGroupConfiguration" + }, + "UserPoolArn": { + "maxLength": 255, + "minLength": 1, + "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", + "type": "string" + } + }, + "required": [ + "UserPoolArn" + ], + "type": "object" + }, + "IdentitySourceConfiguration": { + "additionalProperties": false, + "properties": { + "CognitoUserPoolConfiguration": { + "$ref": "#/definitions/CognitoUserPoolConfiguration" + } + }, + "required": [ + "CognitoUserPoolConfiguration" + ], + "title": "CognitoUserPoolConfiguration", + "type": "object" + }, + "IdentitySourceDetails": { + "additionalProperties": false, + "properties": { + "ClientIds": { + "insertionOrder": false, + "items": { + "maxLength": 255, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "maxItems": 1000, + "minItems": 0, + "type": "array" + }, + "DiscoveryUrl": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^https://.*$", + "type": "string" + }, + "OpenIdIssuer": { + "$ref": "#/definitions/OpenIdIssuer" + }, + "UserPoolArn": { + "maxLength": 255, + "minLength": 1, + "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", + "type": "string" + } + }, + "type": "object" + }, + "OpenIdIssuer": { + "enum": [ + "COGNITO" + ], + "type": "string" + } + }, + "deprecatedProperties": [ + "/properties/Details" + ], + "handlers": { + "create": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "delete": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "PolicyStoreId": { + "$ref": "resource-schema.json#/properties/PolicyStoreId" + } + }, + "required": [ + "PolicyStoreId" + ] + }, + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "read": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "update": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + } + }, + "primaryIdentifier": [ + "/properties/IdentitySourceId", + "/properties/PolicyStoreId" + ], + "properties": { + "Configuration": { + "$ref": "#/definitions/IdentitySourceConfiguration" + }, + "Details": { + "$ref": "#/definitions/IdentitySourceDetails" + }, + "IdentitySourceId": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]*$", + "type": "string" + }, + "PolicyStoreId": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]*$", + "type": "string" + }, + "PrincipalEntityType": { + "maxLength": 200, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Details", + "/properties/IdentitySourceId" + ], + "required": [ + "Configuration", + "PolicyStoreId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-avp", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::VerifiedPermissions::IdentitySource" +} 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 ac4a353b5f..21d14f5df1 100644 --- a/src/cfnlint/data/schemas/providers/sa_east_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/sa_east_1/__init__.py @@ -326,6 +326,7 @@ "AWS::NetworkManager::CustomerGatewayAssociation", "AWS::IAM::ServerCertificate", "AWS::CodeStarConnections::Connection", + "AWS::GlobalAccelerator::CrossAccountAttachment", "AWS::Events::EventBus", "AWS::DocDB::EventSubscription", "AWS::SQS::QueueInlinePolicy", @@ -381,6 +382,7 @@ "AWS::Cognito::UserPoolUICustomizationAttachment", "AWS::SageMaker::NotebookInstanceLifecycleConfig", "AWS::ImageBuilder::ContainerRecipe", + "AWS::CodeConnections::Connection", "AWS::EFS::AccessPoint", "AWS::Redshift::ClusterSecurityGroupIngress", "AWS::ServiceCatalogAppRegistry::AttributeGroupAssociation", @@ -408,6 +410,7 @@ "AWS::EC2::ClientVpnRoute", "AWS::ImageBuilder::Workflow", "AWS::ECS::TaskSet", + "AWS::SecurityLake::AwsLogSource", "AWS::AppSync::ApiKey", "AWS::CloudFormation::TypeActivation", "AWS::GroundStation::DataflowEndpointGroup", @@ -542,6 +545,7 @@ "AWS::CodeBuild::SourceCredential", "AWS::EMR::InstanceFleetConfig", "AWS::EMR::Cluster", + "AWS::SecurityLake::DataLake", "AWS::CodePipeline::Webhook", "AWS::ApiGatewayV2::DomainName", "AWS::RDS::DBCluster", @@ -617,6 +621,7 @@ "AWS::Logs::Delivery", "AWS::ServiceCatalog::Portfolio", "AWS::IoT::Policy", + "AWS::APS::Scraper", "AWS::EC2::TransitGatewayRoute", "AWS::SSM::MaintenanceWindow", "AWS::DataZone::Domain", @@ -632,6 +637,7 @@ "AWS::Route53Resolver::ResolverEndpoint", "AWS::DevOpsGuru::LogAnomalyDetectionIntegration", "AWS::NetworkManager::Link", + "AWS::SecurityLake::Subscriber", "AWS::SageMaker::NotebookInstance", "AWS::SSO::InstanceAccessControlAttributeConfiguration", "AWS::WAFRegional::ByteMatchSet", @@ -930,8 +936,6 @@ "aws-servicecatalog-portfolioprincipalassociation.json", "aws-ram-resourceshare.json", "aws-dms-replicationconfig.json", - "aws-dynamodb-table.json", - "aws-ec2-securitygroupegress.json", "aws-ec2-localgatewayroutetablevpcassociation.json", "aws-config-organizationconfigrule.json", "aws-glue-dataqualityruleset.json", @@ -956,7 +960,6 @@ "aws-apigateway-model.json", "aws-apigatewayv2-integrationresponse.json", "aws-ec2-networkacl.json", - "aws-lambda-eventsourcemapping.json", "aws-budgets-budgetsaction.json", "aws-logs-resourcepolicy.json", "aws-servicecatalog-launchnotificationconstraint.json", @@ -975,7 +978,6 @@ "aws-mediatailor-channel.json", "aws-lambda-url.json", "aws-mediatailor-channelpolicy.json", - "aws-gamelift-fleet.json", "aws-datasync-locationfsxwindows.json", "aws-gamelift-build.json", "aws-apigateway-requestvalidator.json", @@ -1042,6 +1044,7 @@ "aws-datasync-locationhdfs.json", "aws-events-archive.json", "aws-msk-cluster.json", + "aws-securityhub-delegatedadmin.json", "aws-controltower-enabledbaseline.json", "aws-appstream-appblockbuilder.json", "aws-ec2-vpcendpointconnectionnotification.json", @@ -1169,7 +1172,6 @@ "aws-servicecatalog-launchtemplateconstraint.json", "aws-devopsguru-resourcecollection.json", "aws-wafv2-loggingconfiguration.json", - "aws-dynamodb-globaltable.json", "alexa-ask-skill.json", "aws-backup-backupplan.json", "aws-imagebuilder-distributionconfiguration.json", @@ -1226,6 +1228,7 @@ "aws-networkmanager-customergatewayassociation.json", "aws-iam-servercertificate.json", "aws-codestarconnections-connection.json", + "aws-globalaccelerator-crossaccountattachment.json", "aws-events-eventbus.json", "aws-docdb-eventsubscription.json", "aws-sqs-queueinlinepolicy.json", @@ -1249,6 +1252,7 @@ "aws-ecs-clustercapacityproviderassociations.json", "aws-appconfig-configurationprofile.json", "aws-route53resolver-firewallrulegroup.json", + "aws-docdbelastic-cluster.json", "aws-msk-configuration.json", "aws-ec2-transitgateway.json", "aws-cognito-userpoolgroup.json", @@ -1261,6 +1265,7 @@ "aws-efs-filesystem.json", "aws-config-organizationconformancepack.json", "aws-logs-querydefinition.json", + "aws-securityhub-productsubscription.json", "aws-iam-instanceprofile.json", "aws-iot-billinggroup.json", "aws-appstream-application.json", @@ -1268,7 +1273,6 @@ "aws-amplify-domain.json", "aws-kinesisanalyticsv2-applicationoutput.json", "aws-medialive-inputsecuritygroup.json", - "aws-sagemaker-domain.json", "aws-codebuild-fleet.json", "aws-certificatemanager-certificate.json", "aws-glue-schemaversionmetadata.json", @@ -1277,6 +1281,7 @@ "aws-servicecatalog-serviceactionassociation.json", "aws-sagemaker-notebookinstancelifecycleconfig.json", "aws-imagebuilder-containerrecipe.json", + "aws-codeconnections-connection.json", "aws-efs-accesspoint.json", "aws-redshift-clustersecuritygroupingress.json", "aws-servicecatalogappregistry-attributegroupassociation.json", @@ -1303,6 +1308,7 @@ "aws-ec2-clientvpnroute.json", "aws-imagebuilder-workflow.json", "aws-ecs-taskset.json", + "aws-securitylake-awslogsource.json", "aws-appsync-apikey.json", "aws-cloudformation-typeactivation.json", "aws-groundstation-dataflowendpointgroup.json", @@ -1431,6 +1437,7 @@ "aws-codebuild-sourcecredential.json", "aws-emr-instancefleetconfig.json", "aws-emr-cluster.json", + "aws-securitylake-datalake.json", "aws-codepipeline-webhook.json", "aws-apigatewayv2-domainname.json", "aws-rds-dbcluster.json", @@ -1459,8 +1466,6 @@ "aws-datasync-locationefs.json", "aws-ec2-localgatewayroutetable.json", "aws-apigateway-resource.json", - "aws-sagemaker-appimageconfig.json", - "aws-verifiedpermissions-identitysource.json", "aws-macie-session.json", "aws-elasticloadbalancingv2-targetgroup.json", "aws-applicationautoscaling-scalingpolicy.json", @@ -1504,6 +1509,7 @@ "aws-logs-delivery.json", "aws-servicecatalog-portfolio.json", "aws-iot-policy.json", + "aws-aps-scraper.json", "aws-ec2-transitgatewayroute.json", "aws-ssm-maintenancewindow.json", "aws-datazone-domain.json", @@ -1519,6 +1525,7 @@ "aws-route53resolver-resolverendpoint.json", "aws-devopsguru-loganomalydetectionintegration.json", "aws-networkmanager-link.json", + "aws-securitylake-subscriber.json", "aws-sagemaker-notebookinstance.json", "aws-sso-instanceaccesscontrolattributeconfiguration.json", "aws-wafregional-bytematchset.json", @@ -1545,6 +1552,7 @@ "aws-appsync-graphqlapi.json", "aws-gamelift-matchmakingruleset.json", "aws-ec2-egressonlyinternetgateway.json", + "aws-securityhub-insight.json", "aws-config-conformancepack.json", "aws-ec2-vpccidrblock.json", "aws-aps-workspace.json", @@ -1552,7 +1560,6 @@ "aws-iam-virtualmfadevice.json", "aws-ec2-networkinsightspath.json", "aws-mediatailor-vodsource.json", - "aws-acmpca-certificateauthority.json", "aws-athena-preparedstatement.json", "aws-autoscaling-scheduledaction.json", "aws-cognito-identitypoolprincipaltag.json", @@ -1624,8 +1631,8 @@ "aws-mediaconnect-flowvpcinterface.json", "aws-glue-workflow.json", "aws-apigatewayv2-authorizer.json", - "aws-sagemaker-userprofile.json", "aws-ec2-prefixlist.json", + "aws-ec2-instance.json", "aws-networkmanager-device.json", "aws-ec2-subnetcidrblock.json", "aws-mediapackage-asset.json", diff --git a/src/cfnlint/data/schemas/providers/sa_east_1/aws-acmpca-certificateauthority.json b/src/cfnlint/data/schemas/providers/sa_east_1/aws-acmpca-certificateauthority.json new file mode 100644 index 0000000000..08ec85e5fa --- /dev/null +++ b/src/cfnlint/data/schemas/providers/sa_east_1/aws-acmpca-certificateauthority.json @@ -0,0 +1,429 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Type", + "/properties/KeyAlgorithm", + "/properties/SigningAlgorithm", + "/properties/Subject", + "/properties/CsrExtensions", + "/properties/KeyStorageSecurityStandard", + "/properties/UsageMode" + ], + "definitions": { + "AccessDescription": { + "additionalProperties": false, + "properties": { + "AccessLocation": { + "$ref": "#/definitions/GeneralName" + }, + "AccessMethod": { + "$ref": "#/definitions/AccessMethod" + } + }, + "required": [ + "AccessMethod", + "AccessLocation" + ], + "type": "object" + }, + "AccessMethod": { + "additionalProperties": false, + "properties": { + "AccessMethodType": { + "$ref": "#/definitions/AccessMethodType" + }, + "CustomObjectIdentifier": { + "$ref": "#/definitions/CustomObjectIdentifier" + } + }, + "type": "object" + }, + "AccessMethodType": { + "type": "string" + }, + "Arn": { + "type": "string" + }, + "CrlConfiguration": { + "additionalProperties": false, + "properties": { + "CrlDistributionPointExtensionConfiguration": { + "$ref": "#/definitions/CrlDistributionPointExtensionConfiguration" + }, + "CustomCname": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + }, + "ExpirationInDays": { + "type": "integer" + }, + "S3BucketName": { + "type": "string" + }, + "S3ObjectAcl": { + "type": "string" + } + }, + "type": "object" + }, + "CrlDistributionPointExtensionConfiguration": { + "additionalProperties": false, + "properties": { + "OmitExtension": { + "type": "boolean" + } + }, + "required": [ + "OmitExtension" + ], + "type": "object" + }, + "CsrExtensions": { + "additionalProperties": false, + "properties": { + "KeyUsage": { + "$ref": "#/definitions/KeyUsage" + }, + "SubjectInformationAccess": { + "$ref": "#/definitions/SubjectInformationAccess" + } + }, + "type": "object" + }, + "CustomAttribute": { + "additionalProperties": false, + "properties": { + "ObjectIdentifier": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "ObjectIdentifier", + "Value" + ], + "type": "object" + }, + "CustomAttributeList": { + "items": { + "$ref": "#/definitions/CustomAttribute" + }, + "type": "array" + }, + "CustomObjectIdentifier": { + "type": "string" + }, + "DnsName": { + "type": "string" + }, + "EdiPartyName": { + "additionalProperties": false, + "properties": { + "NameAssigner": { + "type": "string" + }, + "PartyName": { + "type": "string" + } + }, + "required": [ + "PartyName", + "NameAssigner" + ], + "type": "object" + }, + "GeneralName": { + "additionalProperties": false, + "properties": { + "DirectoryName": { + "$ref": "#/definitions/Subject" + }, + "DnsName": { + "$ref": "#/definitions/DnsName" + }, + "EdiPartyName": { + "$ref": "#/definitions/EdiPartyName" + }, + "IpAddress": { + "$ref": "#/definitions/IpAddress" + }, + "OtherName": { + "$ref": "#/definitions/OtherName" + }, + "RegisteredId": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Rfc822Name": { + "$ref": "#/definitions/Rfc822Name" + }, + "UniformResourceIdentifier": { + "$ref": "#/definitions/UniformResourceIdentifier" + } + }, + "type": "object" + }, + "IpAddress": { + "type": "string" + }, + "KeyUsage": { + "additionalProperties": false, + "properties": { + "CRLSign": { + "default": false, + "type": "boolean" + }, + "DataEncipherment": { + "default": false, + "type": "boolean" + }, + "DecipherOnly": { + "default": false, + "type": "boolean" + }, + "DigitalSignature": { + "default": false, + "type": "boolean" + }, + "EncipherOnly": { + "default": false, + "type": "boolean" + }, + "KeyAgreement": { + "default": false, + "type": "boolean" + }, + "KeyCertSign": { + "default": false, + "type": "boolean" + }, + "KeyEncipherment": { + "default": false, + "type": "boolean" + }, + "NonRepudiation": { + "default": false, + "type": "boolean" + } + }, + "type": "object" + }, + "OcspConfiguration": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + }, + "OcspCustomCname": { + "type": "string" + } + }, + "type": "object" + }, + "OtherName": { + "additionalProperties": false, + "properties": { + "TypeId": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "TypeId", + "Value" + ], + "type": "object" + }, + "RevocationConfiguration": { + "additionalProperties": false, + "properties": { + "CrlConfiguration": { + "$ref": "#/definitions/CrlConfiguration" + }, + "OcspConfiguration": { + "$ref": "#/definitions/OcspConfiguration" + } + }, + "type": "object" + }, + "Rfc822Name": { + "type": "string" + }, + "Subject": { + "additionalProperties": false, + "properties": { + "CommonName": { + "type": "string" + }, + "Country": { + "type": "string" + }, + "CustomAttributes": { + "$ref": "#/definitions/CustomAttributeList" + }, + "DistinguishedNameQualifier": { + "type": "string" + }, + "GenerationQualifier": { + "type": "string" + }, + "GivenName": { + "type": "string" + }, + "Initials": { + "type": "string" + }, + "Locality": { + "type": "string" + }, + "Organization": { + "type": "string" + }, + "OrganizationalUnit": { + "type": "string" + }, + "Pseudonym": { + "type": "string" + }, + "SerialNumber": { + "type": "string" + }, + "State": { + "type": "string" + }, + "Surname": { + "type": "string" + }, + "Title": { + "type": "string" + } + }, + "type": "object" + }, + "SubjectInformationAccess": { + "items": { + "$ref": "#/definitions/AccessDescription" + }, + "type": "array" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "UniformResourceIdentifier": { + "type": "string" + } + }, + "handlers": { + "create": { + "permissions": [ + "acm-pca:CreateCertificateAuthority", + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr" + ] + }, + "delete": { + "permissions": [ + "acm-pca:DeleteCertificateAuthority", + "acm-pca:DescribeCertificateAuthority" + ] + }, + "list": { + "permissions": [ + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr", + "acm-pca:ListCertificateAuthorities", + "acm-pca:ListTags" + ] + }, + "read": { + "permissions": [ + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr", + "acm-pca:ListTags" + ] + }, + "update": { + "permissions": [ + "acm-pca:ListTags", + "acm-pca:TagCertificateAuthority", + "acm-pca:UntagCertificateAuthority", + "acm-pca:UpdateCertificateAuthority" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "$ref": "#/definitions/Arn" + }, + "CertificateSigningRequest": { + "type": "string" + }, + "CsrExtensions": { + "$ref": "#/definitions/CsrExtensions" + }, + "KeyAlgorithm": { + "type": "string" + }, + "KeyStorageSecurityStandard": { + "type": "string" + }, + "RevocationConfiguration": { + "$ref": "#/definitions/RevocationConfiguration" + }, + "SigningAlgorithm": { + "type": "string" + }, + "Subject": { + "$ref": "#/definitions/Subject" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "Type": { + "type": "string" + }, + "UsageMode": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CertificateSigningRequest" + ], + "required": [ + "Type", + "KeyAlgorithm", + "SigningAlgorithm", + "Subject" + ], + "sourceUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_ACMPCA.html", + "typeName": "AWS::ACMPCA::CertificateAuthority", + "writeOnlyProperties": [ + "/properties/Subject", + "/properties/Subject", + "/properties/CsrExtensions", + "/properties/Tags", + "/properties/RevocationConfiguration", + "/properties/KeyStorageSecurityStandard" + ] +} diff --git a/src/cfnlint/data/schemas/providers/sa_east_1/aws-docdbelastic-cluster.json b/src/cfnlint/data/schemas/providers/sa_east_1/aws-docdbelastic-cluster.json deleted file mode 100644 index 00ebbcd43c..0000000000 --- a/src/cfnlint/data/schemas/providers/sa_east_1/aws-docdbelastic-cluster.json +++ /dev/null @@ -1,200 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AdminUserName", - "/properties/AuthType", - "/properties/ClusterName", - "/properties/KmsKeyId" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "docdb-elastic:CreateCluster", - "docdb-elastic:TagResource", - "docdb-elastic:GetCluster", - "docdb-elastic:ListTagsForResource", - "ec2:CreateVpcEndpoint", - "ec2:DescribeVpcEndpoints", - "ec2:DeleteVpcEndpoints", - "ec2:ModifyVpcEndpoint", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:DescribeVpcAttribute", - "ec2:DescribeVpcs", - "ec2:DescribeAvailabilityZones", - "secretsmanager:ListSecrets", - "secretsmanager:ListSecretVersionIds", - "secretsmanager:DescribeSecret", - "secretsmanager:GetSecretValue", - "secretsmanager:GetResourcePolicy", - "kms:DescribeKey", - "kms:CreateGrant", - "kms:GenerateDataKey", - "kms:Decrypt", - "iam:CreateServiceLinkedRole" - ] - }, - "delete": { - "permissions": [ - "docdb-elastic:DeleteCluster", - "docdb-elastic:GetCluster", - "ec2:DescribeVpcEndpoints", - "ec2:DeleteVpcEndpoints", - "ec2:ModifyVpcEndpoint", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:DescribeVpcAttribute", - "ec2:DescribeVpcs", - "ec2:DescribeAvailabilityZones" - ] - }, - "list": { - "permissions": [ - "docdb-elastic:ListClusters" - ] - }, - "read": { - "permissions": [ - "docdb-elastic:GetCluster", - "docdb-elastic:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "docdb-elastic:UpdateCluster", - "docdb-elastic:TagResource", - "docdb-elastic:UntagResource", - "docdb-elastic:GetCluster", - "docdb-elastic:ListTagsForResource", - "ec2:CreateVpcEndpoint", - "ec2:DescribeVpcEndpoints", - "ec2:DeleteVpcEndpoints", - "ec2:ModifyVpcEndpoint", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:DescribeVpcAttribute", - "ec2:DescribeVpcs", - "ec2:DescribeAvailabilityZones", - "secretsmanager:ListSecrets", - "secretsmanager:ListSecretVersionIds", - "secretsmanager:DescribeSecret", - "secretsmanager:GetSecretValue", - "secretsmanager:GetResourcePolicy", - "kms:DescribeKey", - "kms:CreateGrant", - "kms:GenerateDataKey", - "kms:Decrypt" - ] - } - }, - "primaryIdentifier": [ - "/properties/ClusterArn" - ], - "properties": { - "AdminUserName": { - "type": "string" - }, - "AdminUserPassword": { - "type": "string" - }, - "AuthType": { - "type": "string" - }, - "ClusterArn": { - "type": "string" - }, - "ClusterEndpoint": { - "type": "string" - }, - "ClusterName": { - "maxLength": 50, - "minLength": 1, - "pattern": "[a-zA-z][a-zA-Z0-9]*(-[a-zA-Z0-9]+)*", - "type": "string" - }, - "KmsKeyId": { - "type": "string" - }, - "PreferredMaintenanceWindow": { - "type": "string" - }, - "ShardCapacity": { - "type": "integer" - }, - "ShardCount": { - "type": "integer" - }, - "SubnetIds": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "minItems": 0, - "type": "array", - "uniqueItems": true - }, - "VpcSecurityGroupIds": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/ClusterArn", - "/properties/ClusterEndpoint" - ], - "required": [ - "ClusterName", - "AdminUserName", - "ShardCapacity", - "ShardCount", - "AuthType" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-docdbelastic/", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::DocDBElastic::Cluster", - "writeOnlyProperties": [ - "/properties/AdminUserPassword" - ] -} diff --git a/src/cfnlint/data/schemas/providers/sa_east_1/aws-dynamodb-globaltable.json b/src/cfnlint/data/schemas/providers/sa_east_1/aws-dynamodb-globaltable.json new file mode 100644 index 0000000000..748ce4bf8f --- /dev/null +++ b/src/cfnlint/data/schemas/providers/sa_east_1/aws-dynamodb-globaltable.json @@ -0,0 +1,673 @@ +{ + "additionalIdentifiers": [ + [ + "/properties/Arn" + ], + [ + "/properties/StreamArn" + ] + ], + "additionalProperties": false, + "allOf": [ + { + "if": { + "required": [ + "LocalSecondaryIndexes" + ], + "type": "object" + }, + "then": { + "properties": { + "AttributeDefinitions": { + "minItems": 2 + }, + "KeySchema": { + "minItems": 2 + } + }, + "type": "object" + } + } + ], + "createOnlyProperties": [ + "/properties/LocalSecondaryIndexes", + "/properties/TableName", + "/properties/KeySchema" + ], + "definitions": { + "AttributeDefinition": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "AttributeType": { + "type": "string" + } + }, + "required": [ + "AttributeName", + "AttributeType" + ], + "type": "object" + }, + "CapacityAutoScalingSettings": { + "additionalProperties": false, + "properties": { + "MaxCapacity": { + "minimum": 1, + "type": "integer" + }, + "MinCapacity": { + "minimum": 1, + "type": "integer" + }, + "SeedCapacity": { + "minimum": 1, + "type": "integer" + }, + "TargetTrackingScalingPolicyConfiguration": { + "$ref": "#/definitions/TargetTrackingScalingPolicyConfiguration" + } + }, + "required": [ + "MinCapacity", + "MaxCapacity", + "TargetTrackingScalingPolicyConfiguration" + ], + "type": "object" + }, + "ContributorInsightsSpecification": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "GlobalSecondaryIndex": { + "additionalProperties": false, + "properties": { + "IndexName": { + "maxLength": 255, + "minLength": 3, + "type": "string" + }, + "KeySchema": { + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 + }, + "Projection": { + "$ref": "#/definitions/Projection" + }, + "WriteProvisionedThroughputSettings": { + "$ref": "#/definitions/WriteProvisionedThroughputSettings" + } + }, + "required": [ + "IndexName", + "Projection", + "KeySchema" + ], + "type": "object" + }, + "KeySchema": { + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "KeyType": { + "enum": [ + "HASH", + "RANGE" + ], + "type": "string" + } + }, + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" + }, + "prefixItems": [ + { + "additionalProperties": false, + "properties": { + "KeyType": { + "const": "HASH", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + }, + { + "properties": { + "KeyType": { + "const": "RANGE", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + } + ], + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] + }, + "KinesisStreamSpecification": { + "additionalProperties": false, + "properties": { + "ApproximateCreationDateTimePrecision": { + "enum": [ + "MICROSECOND", + "MILLISECOND" + ], + "type": "string" + }, + "StreamArn": { + "type": "string" + } + }, + "required": [ + "StreamArn" + ], + "type": "object" + }, + "LocalSecondaryIndex": { + "additionalProperties": false, + "properties": { + "IndexName": { + "maxLength": 255, + "minLength": 3, + "type": "string" + }, + "KeySchema": { + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 2 + }, + "Projection": { + "$ref": "#/definitions/Projection" + } + }, + "required": [ + "IndexName", + "Projection", + "KeySchema" + ], + "type": "object" + }, + "PointInTimeRecoverySpecification": { + "additionalProperties": false, + "properties": { + "PointInTimeRecoveryEnabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "Projection": { + "additionalProperties": false, + "properties": { + "NonKeyAttributes": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "ProjectionType": { + "type": "string" + } + }, + "type": "object" + }, + "ReadProvisionedThroughputSettings": { + "additionalProperties": false, + "properties": { + "ReadCapacityAutoScalingSettings": { + "$ref": "#/definitions/CapacityAutoScalingSettings" + }, + "ReadCapacityUnits": { + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + "ReplicaGlobalSecondaryIndexSpecification": { + "additionalProperties": false, + "properties": { + "ContributorInsightsSpecification": { + "$ref": "#/definitions/ContributorInsightsSpecification" + }, + "IndexName": { + "maxLength": 255, + "minLength": 3, + "type": "string" + }, + "ReadProvisionedThroughputSettings": { + "$ref": "#/definitions/ReadProvisionedThroughputSettings" + } + }, + "required": [ + "IndexName" + ], + "type": "object" + }, + "ReplicaSSESpecification": { + "additionalProperties": false, + "properties": { + "KMSMasterKeyId": { + "type": "string" + } + }, + "required": [ + "KMSMasterKeyId" + ], + "type": "object" + }, + "ReplicaSpecification": { + "additionalProperties": false, + "properties": { + "ContributorInsightsSpecification": { + "$ref": "#/definitions/ContributorInsightsSpecification" + }, + "DeletionProtectionEnabled": { + "type": "boolean" + }, + "GlobalSecondaryIndexes": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ReplicaGlobalSecondaryIndexSpecification" + }, + "type": "array", + "uniqueItems": true + }, + "KinesisStreamSpecification": { + "$ref": "#/definitions/KinesisStreamSpecification" + }, + "PointInTimeRecoverySpecification": { + "$ref": "#/definitions/PointInTimeRecoverySpecification" + }, + "ReadProvisionedThroughputSettings": { + "$ref": "#/definitions/ReadProvisionedThroughputSettings" + }, + "Region": { + "type": "string" + }, + "ReplicaStreamSpecification": { + "$ref": "#/definitions/ReplicaStreamSpecification" + }, + "ResourcePolicy": { + "$ref": "#/definitions/ResourcePolicy" + }, + "SSESpecification": { + "$ref": "#/definitions/ReplicaSSESpecification" + }, + "TableClass": { + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "Region" + ], + "type": "object" + }, + "ReplicaStreamSpecification": { + "additionalProperties": false, + "properties": { + "ResourcePolicy": { + "$ref": "#/definitions/ResourcePolicy" + } + }, + "required": [ + "ResourcePolicy" + ], + "type": "object" + }, + "ResourcePolicy": { + "additionalProperties": false, + "properties": { + "PolicyDocument": { + "type": "object" + } + }, + "required": [ + "PolicyDocument" + ], + "type": "object" + }, + "SSESpecification": { + "additionalProperties": false, + "properties": { + "SSEEnabled": { + "type": "boolean" + }, + "SSEType": { + "type": "string" + } + }, + "required": [ + "SSEEnabled" + ], + "type": "object" + }, + "StreamSpecification": { + "additionalProperties": false, + "properties": { + "StreamViewType": { + "type": "string" + } + }, + "required": [ + "StreamViewType" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TargetTrackingScalingPolicyConfiguration": { + "additionalProperties": false, + "properties": { + "DisableScaleIn": { + "type": "boolean" + }, + "ScaleInCooldown": { + "minimum": 0, + "type": "integer" + }, + "ScaleOutCooldown": { + "minimum": 0, + "type": "integer" + }, + "TargetValue": { + "format": "double", + "type": "number" + } + }, + "required": [ + "TargetValue" + ], + "type": "object" + }, + "TimeToLiveSpecification": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "WriteProvisionedThroughputSettings": { + "additionalProperties": false, + "properties": { + "WriteCapacityAutoScalingSettings": { + "$ref": "#/definitions/CapacityAutoScalingSettings" + } + }, + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "dynamodb:CreateTable", + "dynamodb:CreateTableReplica", + "dynamodb:Describe*", + "dynamodb:UpdateTimeToLive", + "dynamodb:UpdateContributorInsights", + "dynamodb:UpdateContinuousBackups", + "dynamodb:ListTagsOfResource", + "dynamodb:Query", + "dynamodb:Scan", + "dynamodb:UpdateItem", + "dynamodb:PutItem", + "dynamodb:GetItem", + "dynamodb:DeleteItem", + "dynamodb:BatchWriteItem", + "dynamodb:TagResource", + "dynamodb:EnableKinesisStreamingDestination", + "dynamodb:DisableKinesisStreamingDestination", + "dynamodb:UpdateTableReplicaAutoScaling", + "dynamodb:TagResource", + "dynamodb:GetResourcePolicy", + "dynamodb:PutResourcePolicy", + "application-autoscaling:DeleteScalingPolicy", + "application-autoscaling:DeleteScheduledAction", + "application-autoscaling:DeregisterScalableTarget", + "application-autoscaling:Describe*", + "application-autoscaling:PutScalingPolicy", + "application-autoscaling:PutScheduledAction", + "application-autoscaling:RegisterScalableTarget", + "kinesis:ListStreams", + "kinesis:DescribeStream", + "kinesis:PutRecords", + "kms:CreateGrant", + "kms:DescribeKey", + "kms:ListAliases", + "kms:Decrypt", + "kms:RevokeGrant", + "cloudwatch:PutMetricData", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "dynamodb:Describe*", + "dynamodb:DeleteTable", + "application-autoscaling:DeleteScalingPolicy", + "application-autoscaling:DeleteScheduledAction", + "application-autoscaling:DeregisterScalableTarget", + "application-autoscaling:Describe*", + "application-autoscaling:PutScalingPolicy", + "application-autoscaling:PutScheduledAction", + "application-autoscaling:RegisterScalableTarget" + ] + }, + "list": { + "permissions": [ + "dynamodb:ListTables", + "cloudwatch:PutMetricData" + ] + }, + "read": { + "permissions": [ + "dynamodb:Describe*", + "dynamodb:GetResourcePolicy", + "application-autoscaling:Describe*", + "cloudwatch:PutMetricData", + "dynamodb:ListTagsOfResource", + "kms:DescribeKey" + ] + }, + "update": { + "permissions": [ + "dynamodb:Describe*", + "dynamodb:CreateTableReplica", + "dynamodb:UpdateTable", + "dynamodb:UpdateTimeToLive", + "dynamodb:UpdateContinuousBackups", + "dynamodb:UpdateContributorInsights", + "dynamodb:ListTagsOfResource", + "dynamodb:Query", + "dynamodb:Scan", + "dynamodb:UpdateItem", + "dynamodb:PutItem", + "dynamodb:GetItem", + "dynamodb:DeleteItem", + "dynamodb:BatchWriteItem", + "dynamodb:DeleteTable", + "dynamodb:DeleteTableReplica", + "dynamodb:UpdateItem", + "dynamodb:TagResource", + "dynamodb:UntagResource", + "dynamodb:EnableKinesisStreamingDestination", + "dynamodb:DisableKinesisStreamingDestination", + "dynamodb:UpdateTableReplicaAutoScaling", + "dynamodb:UpdateKinesisStreamingDestination", + "dynamodb:GetResourcePolicy", + "dynamodb:PutResourcePolicy", + "dynamodb:DeleteResourcePolicy", + "application-autoscaling:DeleteScalingPolicy", + "application-autoscaling:DeleteScheduledAction", + "application-autoscaling:DeregisterScalableTarget", + "application-autoscaling:Describe*", + "application-autoscaling:PutScalingPolicy", + "application-autoscaling:PutScheduledAction", + "application-autoscaling:RegisterScalableTarget", + "kinesis:ListStreams", + "kinesis:DescribeStream", + "kinesis:PutRecords", + "kms:CreateGrant", + "kms:DescribeKey", + "kms:ListAliases", + "kms:RevokeGrant", + "cloudwatch:PutMetricData" + ], + "timeoutInMinutes": 1200 + } + }, + "primaryIdentifier": [ + "/properties/TableName" + ], + "properties": { + "Arn": { + "type": "string" + }, + "AttributeDefinitions": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AttributeDefinition" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] + }, + "BillingMode": { + "type": "string" + }, + "GlobalSecondaryIndexes": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/GlobalSecondaryIndex" + }, + "type": "array", + "uniqueItems": true + }, + "KeySchema": { + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 + }, + "LocalSecondaryIndexes": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LocalSecondaryIndex" + }, + "type": "array", + "uniqueItems": true + }, + "Replicas": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ReplicaSpecification" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "SSESpecification": { + "$ref": "#/definitions/SSESpecification" + }, + "StreamArn": { + "type": "string" + }, + "StreamSpecification": { + "$ref": "#/definitions/StreamSpecification" + }, + "TableId": { + "type": "string" + }, + "TableName": { + "type": "string" + }, + "TimeToLiveSpecification": { + "$ref": "#/definitions/TimeToLiveSpecification" + }, + "WriteProvisionedThroughputSettings": { + "$ref": "#/definitions/WriteProvisionedThroughputSettings" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/StreamArn", + "/properties/TableId" + ], + "required": [ + "KeySchema", + "AttributeDefinitions", + "Replicas" + ], + "typeName": "AWS::DynamoDB::GlobalTable", + "writeOnlyProperties": [ + "/properties/Replicas/*/ReadProvisionedThroughputSettings/ReadCapacityAutoScalingSettings/SeedCapacity", + "/properties/Replicas/*/GlobalSecondaryIndexes/*/ReadProvisionedThroughputSettings/ReadCapacityAutoScalingSettings/SeedCapacity", + "/properties/WriteProvisionedThroughputSettings/WriteCapacityAutoScalingSettings/SeedCapacity", + "/properties/GlobalSecondaryIndexes/*/WriteProvisionedThroughputSettings/WriteCapacityAutoScalingSettings/SeedCapacity" + ] +} diff --git a/src/cfnlint/data/schemas/providers/sa_east_1/aws-dynamodb-table.json b/src/cfnlint/data/schemas/providers/sa_east_1/aws-dynamodb-table.json new file mode 100644 index 0000000000..55c218dadf --- /dev/null +++ b/src/cfnlint/data/schemas/providers/sa_east_1/aws-dynamodb-table.json @@ -0,0 +1,625 @@ +{ + "additionalProperties": false, + "allOf": [ + { + "if": { + "required": [ + "LocalSecondaryIndexes" + ], + "type": "object" + }, + "then": { + "properties": { + "AttributeDefinitions": { + "minItems": 2 + }, + "KeySchema": { + "minItems": 2 + } + }, + "type": "object" + } + } + ], + "cfnLint": [ + "AWS::DynamoDB::Table/Properties" + ], + "createOnlyProperties": [ + "/properties/TableName", + "/properties/ImportSourceSpecification" + ], + "definitions": { + "AttributeDefinition": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "type": "string" + }, + "AttributeType": { + "enum": [ + "S", + "N", + "B" + ], + "type": "string" + } + }, + "required": [ + "AttributeName", + "AttributeType" + ], + "type": "object" + }, + "ContributorInsightsSpecification": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + }, + "Csv": { + "additionalProperties": false, + "properties": { + "Delimiter": { + "type": "string" + }, + "HeaderList": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "DeprecatedHashKeyElement": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "type": "string" + }, + "AttributeType": { + "type": "string" + } + }, + "required": [ + "AttributeType", + "AttributeName" + ], + "type": "object" + }, + "DeprecatedKeySchema": { + "additionalProperties": false, + "properties": { + "HashKeyElement": { + "$ref": "#/definitions/DeprecatedHashKeyElement" + } + }, + "required": [ + "HashKeyElement" + ], + "type": "object" + }, + "GlobalSecondaryIndex": { + "additionalProperties": false, + "properties": { + "ContributorInsightsSpecification": { + "$ref": "#/definitions/ContributorInsightsSpecification" + }, + "IndexName": { + "type": "string" + }, + "KeySchema": { + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 + }, + "Projection": { + "$ref": "#/definitions/Projection" + }, + "ProvisionedThroughput": { + "$ref": "#/definitions/ProvisionedThroughput" + } + }, + "required": [ + "IndexName", + "Projection", + "KeySchema" + ], + "type": "object" + }, + "ImportSourceSpecification": { + "additionalProperties": false, + "properties": { + "InputCompressionType": { + "type": "string" + }, + "InputFormat": { + "type": "string" + }, + "InputFormatOptions": { + "$ref": "#/definitions/InputFormatOptions" + }, + "S3BucketSource": { + "$ref": "#/definitions/S3BucketSource" + } + }, + "required": [ + "S3BucketSource", + "InputFormat" + ], + "type": "object" + }, + "InputFormatOptions": { + "additionalProperties": false, + "properties": { + "Csv": { + "$ref": "#/definitions/Csv" + } + }, + "type": "object" + }, + "KeySchema": { + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "type": "string" + }, + "KeyType": { + "enum": [ + "HASH", + "RANGE" + ], + "type": "string" + } + }, + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" + }, + "prefixItems": [ + { + "properties": { + "KeyType": { + "const": "HASH", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + }, + { + "properties": { + "KeyType": { + "const": "RANGE", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + } + ], + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] + }, + "KinesisStreamSpecification": { + "additionalProperties": false, + "properties": { + "ApproximateCreationDateTimePrecision": { + "enum": [ + "MICROSECOND", + "MILLISECOND" + ], + "type": "string" + }, + "StreamArn": { + "type": "string" + } + }, + "required": [ + "StreamArn" + ], + "type": "object" + }, + "LocalSecondaryIndex": { + "additionalProperties": false, + "properties": { + "IndexName": { + "type": "string" + }, + "KeySchema": { + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 2 + }, + "Projection": { + "$ref": "#/definitions/Projection" + } + }, + "required": [ + "IndexName", + "Projection", + "KeySchema" + ], + "type": "object" + }, + "PointInTimeRecoverySpecification": { + "additionalProperties": false, + "properties": { + "PointInTimeRecoveryEnabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "Projection": { + "additionalProperties": false, + "properties": { + "NonKeyAttributes": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "ProjectionType": { + "enum": [ + "ALL", + "KEYS_ONLY", + "INCLUDE" + ], + "type": "string" + } + }, + "type": "object" + }, + "ProvisionedThroughput": { + "additionalProperties": false, + "properties": { + "ReadCapacityUnits": { + "type": "integer" + }, + "WriteCapacityUnits": { + "type": "integer" + } + }, + "required": [ + "WriteCapacityUnits", + "ReadCapacityUnits" + ], + "type": "object" + }, + "ResourcePolicy": { + "additionalProperties": false, + "properties": { + "PolicyDocument": { + "type": "object" + } + }, + "required": [ + "PolicyDocument" + ], + "type": "object" + }, + "S3BucketSource": { + "additionalProperties": false, + "properties": { + "S3Bucket": { + "type": "string" + }, + "S3BucketOwner": { + "type": "string" + }, + "S3KeyPrefix": { + "type": "string" + } + }, + "required": [ + "S3Bucket" + ], + "type": "object" + }, + "SSESpecification": { + "additionalProperties": false, + "cfnLint": [ + "AWS::DynamoDB::Table/Properties/SSESpecification" + ], + "properties": { + "KMSMasterKeyId": { + "type": "string" + }, + "SSEEnabled": { + "type": "boolean" + }, + "SSEType": { + "type": "string" + } + }, + "required": [ + "SSEEnabled" + ], + "type": "object" + }, + "StreamSpecification": { + "additionalProperties": false, + "properties": { + "ResourcePolicy": { + "$ref": "#/definitions/ResourcePolicy" + }, + "StreamViewType": { + "enum": [ + "NEW_IMAGE", + "OLD_IMAGE", + "NEW_AND_OLD_IMAGES", + "KEYS_ONLY" + ], + "type": "string" + } + }, + "required": [ + "StreamViewType" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TimeToLiveSpecification": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + } + }, + "required": [ + "Enabled" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "dynamodb:CreateTable", + "dynamodb:DescribeImport", + "dynamodb:DescribeTable", + "dynamodb:DescribeTimeToLive", + "dynamodb:UpdateTimeToLive", + "dynamodb:UpdateContributorInsights", + "dynamodb:UpdateContinuousBackups", + "dynamodb:DescribeContinuousBackups", + "dynamodb:DescribeContributorInsights", + "dynamodb:EnableKinesisStreamingDestination", + "dynamodb:DisableKinesisStreamingDestination", + "dynamodb:DescribeKinesisStreamingDestination", + "dynamodb:ImportTable", + "dynamodb:ListTagsOfResource", + "dynamodb:TagResource", + "dynamodb:UpdateTable", + "dynamodb:GetResourcePolicy", + "dynamodb:PutResourcePolicy", + "kinesis:DescribeStream", + "kinesis:PutRecords", + "iam:CreateServiceLinkedRole", + "kms:CreateGrant", + "kms:Decrypt", + "kms:DescribeKey", + "kms:ListAliases", + "kms:Encrypt", + "kms:RevokeGrant", + "logs:CreateLogGroup", + "logs:CreateLogStream", + "logs:DescribeLogGroups", + "logs:DescribeLogStreams", + "logs:PutLogEvents", + "logs:PutRetentionPolicy", + "s3:GetObject", + "s3:GetObjectMetadata", + "s3:ListBucket" + ], + "timeoutInMinutes": 720 + }, + "delete": { + "permissions": [ + "dynamodb:DeleteTable", + "dynamodb:DescribeTable" + ], + "timeoutInMinutes": 720 + }, + "list": { + "permissions": [ + "dynamodb:ListTables" + ] + }, + "read": { + "permissions": [ + "dynamodb:DescribeTable", + "dynamodb:DescribeContinuousBackups", + "dynamodb:DescribeContributorInsights", + "dynamodb:DescribeKinesisStreamingDestination", + "dynamodb:ListTagsOfResource", + "dynamodb:GetResourcePolicy" + ] + }, + "update": { + "permissions": [ + "dynamodb:UpdateTable", + "dynamodb:DescribeTable", + "dynamodb:DescribeTimeToLive", + "dynamodb:UpdateTimeToLive", + "dynamodb:UpdateContinuousBackups", + "dynamodb:UpdateContributorInsights", + "dynamodb:UpdateKinesisStreamingDestination", + "dynamodb:DescribeContinuousBackups", + "dynamodb:DescribeKinesisStreamingDestination", + "dynamodb:ListTagsOfResource", + "dynamodb:TagResource", + "dynamodb:UntagResource", + "dynamodb:DescribeContributorInsights", + "dynamodb:EnableKinesisStreamingDestination", + "dynamodb:DisableKinesisStreamingDestination", + "dynamodb:GetResourcePolicy", + "dynamodb:PutResourcePolicy", + "dynamodb:DeleteResourcePolicy", + "kinesis:DescribeStream", + "kinesis:PutRecords", + "iam:CreateServiceLinkedRole", + "kms:CreateGrant", + "kms:DescribeKey", + "kms:ListAliases", + "kms:RevokeGrant" + ], + "timeoutInMinutes": 720 + } + }, + "primaryIdentifier": [ + "/properties/TableName" + ], + "properties": { + "Arn": { + "type": "string" + }, + "AttributeDefinitions": { + "items": { + "$ref": "#/definitions/AttributeDefinition" + }, + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] + }, + "BillingMode": { + "enum": [ + "PROVISIONED", + "PAY_PER_REQUEST" + ], + "type": "string" + }, + "ContributorInsightsSpecification": { + "$ref": "#/definitions/ContributorInsightsSpecification" + }, + "DeletionProtectionEnabled": { + "type": "boolean" + }, + "GlobalSecondaryIndexes": { + "items": { + "$ref": "#/definitions/GlobalSecondaryIndex" + }, + "type": "array", + "uniqueItems": false + }, + "ImportSourceSpecification": { + "$ref": "#/definitions/ImportSourceSpecification" + }, + "KeySchema": { + "oneOf": [ + { + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 + }, + { + "type": "object" + } + ] + }, + "KinesisStreamSpecification": { + "$ref": "#/definitions/KinesisStreamSpecification" + }, + "LocalSecondaryIndexes": { + "items": { + "$ref": "#/definitions/LocalSecondaryIndex" + }, + "type": "array", + "uniqueItems": false + }, + "PointInTimeRecoverySpecification": { + "$ref": "#/definitions/PointInTimeRecoverySpecification" + }, + "ProvisionedThroughput": { + "$ref": "#/definitions/ProvisionedThroughput" + }, + "ResourcePolicy": { + "$ref": "#/definitions/ResourcePolicy" + }, + "SSESpecification": { + "$ref": "#/definitions/SSESpecification" + }, + "StreamArn": { + "type": "string" + }, + "StreamSpecification": { + "$ref": "#/definitions/StreamSpecification" + }, + "TableClass": { + "type": "string" + }, + "TableName": { + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "TimeToLiveSpecification": { + "$ref": "#/definitions/TimeToLiveSpecification" + } + }, + "propertyTransform": { + "/properties/SSESpecification/KMSMasterKeyId": "$join([\"arn:(aws)[-]{0,1}[a-z]{0,3}[-]{0,1}[a-z]{0,3}:kms:[a-z]{2}[-]{1}[a-z]{3,10}[-]{0,1}[a-z]{0,4}[-]{1}[1-4]{1}:[0-9]{12}[:]{1}key\\/\", SSESpecification.KMSMasterKeyId]) $OR $join([\"arn:(aws)[-]{0,1}[a-z]{0,3}[-]{0,1}[a-z]{0,3}:kms:[a-z]{2}[-]{1}[a-z]{3,10}[-]{0,1}[a-z]{0,4}[-]{1}[1-4]{1}:[0-9]{12}[:]{1}key\\/\", KMSMasterKeyId])" + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/StreamArn" + ], + "required": [ + "KeySchema" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::DynamoDB::Table", + "writeOnlyProperties": [ + "/properties/ImportSourceSpecification" + ] +} diff --git a/src/cfnlint/data/schemas/providers/sa_east_1/aws-ec2-instance.json b/src/cfnlint/data/schemas/providers/sa_east_1/aws-ec2-instance.json deleted file mode 100644 index 7b3bfed595..0000000000 --- a/src/cfnlint/data/schemas/providers/sa_east_1/aws-ec2-instance.json +++ /dev/null @@ -1,571 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ElasticGpuSpecifications", - "/properties/Ipv6Addresses", - "/properties/PlacementGroupName", - "/properties/HostResourceGroupArn", - "/properties/ImageId", - "/properties/CpuOptions", - "/properties/PrivateIpAddress", - "/properties/ElasticInferenceAccelerators", - "/properties/EnclaveOptions", - "/properties/HibernationOptions", - "/properties/KeyName", - "/properties/LicenseSpecifications", - "/properties/NetworkInterfaces", - "/properties/AvailabilityZone", - "/properties/SubnetId", - "/properties/LaunchTemplate", - "/properties/SecurityGroups", - "/properties/Ipv6AddressCount" - ], - "definitions": { - "AssociationParameter": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "BlockDeviceMapping": { - "additionalProperties": false, - "properties": { - "DeviceName": { - "type": "string" - }, - "Ebs": { - "$ref": "#/definitions/Ebs" - }, - "NoDevice": { - "$ref": "#/definitions/NoDevice" - }, - "VirtualName": { - "type": "string" - } - }, - "required": [ - "DeviceName" - ], - "requiredXor": [ - "VirtualName", - "Ebs", - "NoDevice" - ], - "type": "object" - }, - "CpuOptions": { - "additionalProperties": false, - "properties": { - "CoreCount": { - "type": "integer" - }, - "ThreadsPerCore": { - "type": "integer" - } - }, - "type": "object" - }, - "CreditSpecification": { - "additionalProperties": false, - "properties": { - "CPUCredits": { - "type": "string" - } - }, - "type": "object" - }, - "Ebs": { - "additionalProperties": false, - "properties": { - "DeleteOnTermination": { - "type": "boolean" - }, - "Encrypted": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "KmsKeyId": { - "type": "string" - }, - "SnapshotId": { - "type": "string" - }, - "VolumeSize": { - "type": "integer" - }, - "VolumeType": { - "type": "string" - } - }, - "type": "object" - }, - "ElasticGpuSpecification": { - "additionalProperties": false, - "properties": { - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "ElasticInferenceAccelerator": { - "additionalProperties": false, - "properties": { - "Count": { - "type": "integer" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "EnclaveOptions": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - } - }, - "type": "object" - }, - "HibernationOptions": { - "additionalProperties": false, - "properties": { - "Configured": { - "type": "boolean" - } - }, - "type": "object" - }, - "InstanceIpv6Address": { - "additionalProperties": false, - "properties": { - "Ipv6Address": { - "type": "string" - } - }, - "required": [ - "Ipv6Address" - ], - "type": "object" - }, - "LaunchTemplateSpecification": { - "additionalProperties": false, - "properties": { - "LaunchTemplateId": { - "type": "string" - }, - "LaunchTemplateName": { - "type": "string" - }, - "Version": { - "type": "string" - } - }, - "required": [ - "Version" - ], - "type": "object" - }, - "LicenseSpecification": { - "additionalProperties": false, - "properties": { - "LicenseConfigurationArn": { - "type": "string" - } - }, - "required": [ - "LicenseConfigurationArn" - ], - "type": "object" - }, - "NetworkInterface": { - "additionalProperties": false, - "properties": { - "AssociateCarrierIpAddress": { - "type": "boolean" - }, - "AssociatePublicIpAddress": { - "type": "boolean" - }, - "DeleteOnTermination": { - "type": "boolean" - }, - "Description": { - "type": "string" - }, - "DeviceIndex": { - "type": "string" - }, - "GroupSet": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": false - }, - "NetworkInterfaceId": { - "type": "string" - }, - "PrivateIpAddress": { - "type": "string" - }, - "PrivateIpAddresses": { - "items": { - "$ref": "#/definitions/PrivateIpAddressSpecification" - }, - "type": "array", - "uniqueItems": false - }, - "SecondaryPrivateIpAddressCount": { - "type": "integer" - }, - "SubnetId": { - "type": "string" - } - }, - "required": [ - "DeviceIndex" - ], - "type": "object" - }, - "NoDevice": { - "additionalProperties": false, - "type": "object" - }, - "PrivateDnsNameOptions": { - "additionalProperties": false, - "properties": { - "EnableResourceNameDnsAAAARecord": { - "type": "boolean" - }, - "EnableResourceNameDnsARecord": { - "type": "boolean" - }, - "HostnameType": { - "type": "string" - } - }, - "type": "object" - }, - "PrivateIpAddressSpecification": { - "additionalProperties": false, - "properties": { - "Primary": { - "type": "boolean" - }, - "PrivateIpAddress": { - "type": "string" - } - }, - "required": [ - "PrivateIpAddress", - "Primary" - ], - "type": "object" - }, - "SsmAssociation": { - "additionalProperties": false, - "properties": { - "AssociationParameters": { - "items": { - "$ref": "#/definitions/AssociationParameter" - }, - "type": "array", - "uniqueItems": false - }, - "DocumentName": { - "type": "string" - } - }, - "required": [ - "DocumentName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "Volume": { - "additionalProperties": false, - "properties": { - "Device": { - "type": "string" - }, - "VolumeId": { - "type": "string" - } - }, - "required": [ - "VolumeId", - "Device" - ], - "type": "object" - } - }, - "dependentExcluded": { - "NetworkInterfaces": [ - "SubnetId" - ], - "SubnetId": [ - "NetworkInterfaces" - ] - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AdditionalInfo": { - "type": "string" - }, - "Affinity": { - "enum": [ - "default", - "host" - ], - "type": "string" - }, - "AvailabilityZone": { - "cfnLint": [ - "AWS::EC2::Instance/Properties/AvailabilityZone" - ], - "type": "string" - }, - "BlockDeviceMappings": { - "items": { - "$ref": "#/definitions/BlockDeviceMapping" - }, - "type": "array", - "uniqueItems": false - }, - "CpuOptions": { - "$ref": "#/definitions/CpuOptions" - }, - "CreditSpecification": { - "$ref": "#/definitions/CreditSpecification" - }, - "DisableApiTermination": { - "type": "boolean" - }, - "EbsOptimized": { - "type": "boolean" - }, - "ElasticGpuSpecifications": { - "items": { - "$ref": "#/definitions/ElasticGpuSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "ElasticInferenceAccelerators": { - "items": { - "$ref": "#/definitions/ElasticInferenceAccelerator" - }, - "type": "array", - "uniqueItems": true - }, - "EnclaveOptions": { - "$ref": "#/definitions/EnclaveOptions" - }, - "HibernationOptions": { - "$ref": "#/definitions/HibernationOptions" - }, - "HostId": { - "type": "string" - }, - "HostResourceGroupArn": { - "type": "string" - }, - "IamInstanceProfile": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "ImageId": { - "type": "string" - }, - "InstanceInitiatedShutdownBehavior": { - "type": "string" - }, - "InstanceType": { - "cfnLint": [ - "AWS::EC2::Instance/Properties/InstanceType" - ], - "type": "string" - }, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": false - }, - "KernelId": { - "type": "string" - }, - "KeyName": { - "type": "string" - }, - "LaunchTemplate": { - "$ref": "#/definitions/LaunchTemplateSpecification" - }, - "LicenseSpecifications": { - "items": { - "$ref": "#/definitions/LicenseSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "Monitoring": { - "type": "boolean" - }, - "NetworkInterfaces": { - "items": { - "$ref": "#/definitions/NetworkInterface" - }, - "type": "array", - "uniqueItems": false - }, - "PlacementGroupName": { - "type": "string" - }, - "PrivateDnsName": { - "type": "string" - }, - "PrivateDnsNameOptions": { - "$ref": "#/definitions/PrivateDnsNameOptions" - }, - "PrivateIp": { - "type": "string" - }, - "PrivateIpAddress": { - "type": "string" - }, - "PropagateTagsToVolumeOnCreation": { - "type": "boolean" - }, - "PublicDnsName": { - "type": "string" - }, - "PublicIp": { - "type": "string" - }, - "RamdiskId": { - "type": "string" - }, - "SecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SecurityGroups": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SourceDestCheck": { - "type": "boolean" - }, - "SsmAssociations": { - "items": { - "$ref": "#/definitions/SsmAssociation" - }, - "type": "array", - "uniqueItems": false - }, - "SubnetId": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "Tenancy": { - "enum": [ - "default", - "dedicated", - "host" - ], - "type": "string" - }, - "UserData": { - "type": "string" - }, - "Volumes": { - "items": { - "$ref": "#/definitions/Volume" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/PublicIp", - "/properties/Id", - "/properties/PublicDnsName", - "/properties/PrivateDnsName", - "/properties/PrivateIp" - ], - "requiredXor": [ - "ImageId", - "LaunchTemplate" - ], - "typeName": "AWS::EC2::Instance" -} diff --git a/src/cfnlint/data/schemas/providers/sa_east_1/aws-ec2-securitygroupegress.json b/src/cfnlint/data/schemas/providers/sa_east_1/aws-ec2-securitygroupegress.json new file mode 100644 index 0000000000..f94631dad2 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/sa_east_1/aws-ec2-securitygroupegress.json @@ -0,0 +1,98 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::EC2::SecurityGroupEgress/Properties" + ], + "createOnlyProperties": [ + "/properties/IpProtocol", + "/properties/DestinationSecurityGroupId", + "/properties/ToPort", + "/properties/CidrIp", + "/properties/FromPort", + "/properties/GroupId", + "/properties/CidrIpv6", + "/properties/DestinationPrefixListId" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:AuthorizeSecurityGroupEgress", + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "delete": { + "permissions": [ + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "update": { + "permissions": [ + "ec2:UpdateSecurityGroupRuleDescriptionsEgress" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CidrIp": { + "type": "string" + }, + "CidrIpv6": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "DestinationPrefixListId": { + "type": "string" + }, + "DestinationSecurityGroupId": { + "type": "string" + }, + "FromPort": { + "minimum": -1, + "type": "integer" + }, + "GroupId": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "IpProtocol": { + "type": "string" + }, + "ToPort": { + "minimum": -1, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IpProtocol", + "GroupId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SecurityGroupEgress" +} diff --git a/src/cfnlint/data/schemas/providers/sa_east_1/aws-gamelift-fleet.json b/src/cfnlint/data/schemas/providers/sa_east_1/aws-gamelift-fleet.json new file mode 100644 index 0000000000..fb6db12d8b --- /dev/null +++ b/src/cfnlint/data/schemas/providers/sa_east_1/aws-gamelift-fleet.json @@ -0,0 +1,523 @@ +{ + "$schema": "https://schema.cloudformation.us-east-1.amazonaws.com/provider.definition.schema.v1.json", + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplyCapacity", + "/properties/BuildId", + "/properties/CertificateConfiguration", + "/properties/EC2InstanceType", + "/properties/FleetType", + "/properties/InstanceRoleARN", + "/properties/InstanceRoleCredentialsProvider", + "/properties/LogPaths", + "/properties/PeerVpcAwsAccountId", + "/properties/PeerVpcId", + "/properties/ScriptId", + "/properties/ServerLaunchParameters", + "/properties/ServerLaunchPath", + "/properties/ComputeType" + ], + "definitions": { + "AnywhereConfiguration": { + "additionalProperties": false, + "properties": { + "Cost": { + "maxLength": 11, + "minLength": 1, + "pattern": "^\\d{1,5}(?:\\.\\d{1,5})?$", + "type": "string" + } + }, + "required": [ + "Cost" + ] + }, + "CertificateConfiguration": { + "additionalProperties": false, + "properties": { + "CertificateType": { + "enum": [ + "DISABLED", + "GENERATED" + ], + "type": "string" + } + }, + "required": [ + "CertificateType" + ], + "type": "object" + }, + "IpPermission": { + "additionalProperties": false, + "properties": { + "FromPort": { + "maximum": 60000, + "minimum": 1, + "type": "integer" + }, + "IpRange": { + "pattern": "(^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(/([0-9]|[1-2][0-9]|3[0-2]))$)", + "type": "string" + }, + "Protocol": { + "enum": [ + "TCP", + "UDP" + ], + "type": "string" + }, + "ToPort": { + "maximum": 60000, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "FromPort", + "IpRange", + "Protocol", + "ToPort" + ], + "type": "object" + }, + "Location": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[A-Za-z0-9\\-]+", + "type": "string" + }, + "LocationCapacity": { + "additionalProperties": false, + "properties": { + "DesiredEC2Instances": { + "minimum": 0, + "type": "integer" + }, + "MaxSize": { + "minimum": 0, + "type": "integer" + }, + "MinSize": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "DesiredEC2Instances", + "MinSize", + "MaxSize" + ], + "type": "object" + }, + "LocationConfiguration": { + "additionalProperties": false, + "properties": { + "Location": { + "$ref": "#/definitions/Location" + }, + "LocationCapacity": { + "$ref": "#/definitions/LocationCapacity" + } + }, + "required": [ + "Location" + ], + "type": "object" + }, + "ResourceCreationLimitPolicy": { + "additionalProperties": false, + "properties": { + "NewGameSessionsPerCreator": { + "minimum": 0, + "type": "integer" + }, + "PolicyPeriodInMinutes": { + "minimum": 0, + "type": "integer" + } + }, + "type": "object" + }, + "RuntimeConfiguration": { + "additionalProperties": false, + "properties": { + "GameSessionActivationTimeoutSeconds": { + "maximum": 600, + "minimum": 1, + "type": "integer" + }, + "MaxConcurrentGameSessionActivations": { + "maximum": 2147483647, + "minimum": 1, + "type": "integer" + }, + "ServerProcesses": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ServerProcess" + }, + "maxItems": 50, + "type": "array" + } + }, + "type": "object" + }, + "ScalingPolicy": { + "additionalProperties": false, + "properties": { + "ComparisonOperator": { + "enum": [ + "GreaterThanOrEqualToThreshold", + "GreaterThanThreshold", + "LessThanThreshold", + "LessThanOrEqualToThreshold" + ], + "type": "string" + }, + "EvaluationPeriods": { + "minimum": 1, + "type": "integer" + }, + "Location": { + "$ref": "#/definitions/Location" + }, + "MetricName": { + "enum": [ + "ActivatingGameSessions", + "ActiveGameSessions", + "ActiveInstances", + "AvailableGameSessions", + "AvailablePlayerSessions", + "CurrentPlayerSessions", + "IdleInstances", + "PercentAvailableGameSessions", + "PercentIdleInstances", + "QueueDepth", + "WaitTime", + "ConcurrentActivatableGameSessions" + ], + "type": "string" + }, + "Name": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "PolicyType": { + "enum": [ + "RuleBased", + "TargetBased" + ], + "type": "string" + }, + "ScalingAdjustment": { + "type": "integer" + }, + "ScalingAdjustmentType": { + "enum": [ + "ChangeInCapacity", + "ExactCapacity", + "PercentChangeInCapacity" + ], + "type": "string" + }, + "Status": { + "enum": [ + "ACTIVE", + "UPDATE_REQUESTED", + "UPDATING", + "DELETE_REQUESTED", + "DELETING", + "DELETED", + "ERROR" + ], + "type": "string" + }, + "TargetConfiguration": { + "$ref": "#/definitions/TargetConfiguration" + }, + "Threshold": { + "type": "number" + }, + "UpdateStatus": { + "enum": [ + "PENDING_UPDATE" + ], + "type": "string" + } + }, + "required": [ + "MetricName", + "Name" + ], + "type": "object" + }, + "ServerProcess": { + "additionalProperties": false, + "properties": { + "ConcurrentExecutions": { + "minimum": 1, + "type": "integer" + }, + "LaunchPath": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^([Cc]:\\\\game\\S+|/local/game/\\S+)", + "type": "string" + }, + "Parameters": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ConcurrentExecutions", + "LaunchPath" + ], + "type": "object" + }, + "TargetConfiguration": { + "additionalProperties": false, + "properties": { + "TargetValue": { + "type": "number" + } + }, + "required": [ + "TargetValue" + ], + "type": "object" + } + }, + "deprecatedProperties": [ + "/properties/LogPaths", + "/properties/ServerLaunchParameters", + "/properties/ServerLaunchPath" + ], + "handlers": { + "create": { + "permissions": [ + "gamelift:CreateFleet", + "gamelift:DescribeFleetAttributes", + "gamelift:DescribeFleetLocationAttributes", + "gamelift:UpdateFleetCapacity", + "gamelift:DescribeFleetLocationCapacity", + "gamelift:PutScalingPolicy", + "gamelift:DescribeScalingPolicies" + ] + }, + "delete": { + "permissions": [ + "gamelift:DeleteFleet", + "gamelift:DescribeFleetLocationCapacity", + "gamelift:DescribeScalingPolicies", + "gamelift:DeleteScalingPolicy" + ] + }, + "list": { + "permissions": [ + "gamelift:ListFleets" + ] + }, + "read": { + "permissions": [ + "gamelift:DescribeFleetAttributes", + "gamelift:DescribeFleetLocationAttributes", + "gamelift:DescribeFleetCapacity", + "gamelift:DescribeFleetPortSettings", + "gamelift:DescribeFleetUtilization", + "gamelift:DescribeRuntimeConfiguration", + "gamelift:DescribeEC2InstanceLimits", + "gamelift:DescribeFleetEvents", + "gamelift:DescribeScalingPolicies" + ] + }, + "update": { + "permissions": [ + "gamelift:UpdateFleetAttributes", + "gamelift:CreateFleetLocations", + "gamelift:DeleteFleetLocations", + "gamelift:UpdateFleetCapacity", + "gamelift:UpdateFleetPortSettings", + "gamelift:UpdateRuntimeConfiguration", + "gamelift:DescribeFleetLocationCapacity", + "gamelift:DescribeFleetPortSettings", + "gamelift:DescribeFleetLocationAttributes", + "gamelift:PutScalingPolicy", + "gamelift:DescribeScalingPolicies", + "gamelift:DeleteScalingPolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/FleetId" + ], + "properties": { + "AnywhereConfiguration": { + "$ref": "#/definitions/AnywhereConfiguration" + }, + "ApplyCapacity": { + "enum": [ + "ON_UPDATE", + "ON_CREATE_AND_UPDATE" + ], + "type": "string" + }, + "BuildId": { + "pattern": "^build-\\S+|^arn:.*:build/build-\\S+", + "type": "string" + }, + "CertificateConfiguration": { + "$ref": "#/definitions/CertificateConfiguration" + }, + "ComputeType": { + "enum": [ + "EC2", + "ANYWHERE" + ], + "type": "string" + }, + "Description": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "DesiredEC2Instances": { + "minimum": 0, + "type": "integer" + }, + "EC2InboundPermissions": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/IpPermission" + }, + "maxItems": 50, + "type": "array" + }, + "EC2InstanceType": { + "cfnLint": "AWS::GameLift::Fleet/EC2InstanceType", + "pattern": "^.*..*$", + "type": "string" + }, + "FleetId": { + "pattern": "^fleet-\\S+", + "type": "string" + }, + "FleetType": { + "enum": [ + "ON_DEMAND", + "SPOT" + ], + "type": "string" + }, + "InstanceRoleARN": { + "minLength": 1, + "pattern": "^arn:aws(-.*)?:[a-z-]+:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$", + "type": "string" + }, + "InstanceRoleCredentialsProvider": { + "enum": [ + "SHARED_CREDENTIAL_FILE" + ], + "type": "string" + }, + "Locations": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LocationConfiguration" + }, + "maxItems": 100, + "minItems": 1, + "type": "array" + }, + "LogPaths": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "MaxSize": { + "minimum": 0, + "type": "integer" + }, + "MetricGroups": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "maxItems": 1, + "type": "array" + }, + "MinSize": { + "minimum": 0, + "type": "integer" + }, + "Name": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "NewGameSessionProtectionPolicy": { + "enum": [ + "FullProtection", + "NoProtection" + ], + "type": "string" + }, + "PeerVpcAwsAccountId": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^[0-9]{12}$", + "type": "string" + }, + "PeerVpcId": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^vpc-\\S+", + "type": "string" + }, + "ResourceCreationLimitPolicy": { + "$ref": "#/definitions/ResourceCreationLimitPolicy" + }, + "RuntimeConfiguration": { + "$ref": "#/definitions/RuntimeConfiguration" + }, + "ScalingPolicies": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ScalingPolicy" + }, + "maxItems": 50, + "type": "array" + }, + "ScriptId": { + "pattern": "^script-\\S+|^arn:.*:script/script-\\S+", + "type": "string" + }, + "ServerLaunchParameters": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "ServerLaunchPath": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/FleetId" + ], + "required": [ + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-gamelift.git", + "taggable": true, + "typeName": "AWS::GameLift::Fleet", + "writeOnlyProperties": [ + "/properties/ApplyCapacity" + ] +} diff --git a/src/cfnlint/data/schemas/providers/sa_east_1/aws-lambda-eventsourcemapping.json b/src/cfnlint/data/schemas/providers/sa_east_1/aws-lambda-eventsourcemapping.json new file mode 100644 index 0000000000..cb7599c139 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/sa_east_1/aws-lambda-eventsourcemapping.json @@ -0,0 +1,353 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::Lambda::EventSourceMapping/Properties" + ], + "createOnlyProperties": [ + "/properties/EventSourceArn", + "/properties/StartingPosition", + "/properties/StartingPositionTimestamp", + "/properties/SelfManagedEventSource", + "/properties/AmazonManagedKafkaEventSourceConfig", + "/properties/SelfManagedKafkaEventSourceConfig" + ], + "definitions": { + "AmazonManagedKafkaEventSourceConfig": { + "additionalProperties": false, + "properties": { + "ConsumerGroupId": { + "$ref": "#/definitions/ConsumerGroupId" + } + }, + "type": "object" + }, + "ConsumerGroupId": { + "maxLength": 200, + "minLength": 1, + "pattern": "[a-zA-Z0-9-\\/*:_+=.@-]*", + "type": "string" + }, + "DestinationConfig": { + "additionalProperties": false, + "properties": { + "OnFailure": { + "$ref": "#/definitions/OnFailure" + } + }, + "type": "object" + }, + "DocumentDBEventSourceConfig": { + "additionalProperties": false, + "properties": { + "CollectionName": { + "maxLength": 57, + "minLength": 1, + "type": "string" + }, + "DatabaseName": { + "maxLength": 63, + "minLength": 1, + "type": "string" + }, + "FullDocument": { + "enum": [ + "UpdateLookup", + "Default" + ], + "type": "string" + } + }, + "type": "object" + }, + "Endpoints": { + "additionalProperties": false, + "properties": { + "KafkaBootstrapServers": { + "items": { + "maxLength": 300, + "minLength": 1, + "pattern": "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9]):[0-9]{1,5}", + "type": "string" + }, + "maxItems": 10, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "Filter": { + "additionalProperties": false, + "properties": { + "Pattern": { + "maxLength": 4096, + "minLength": 0, + "pattern": ".*", + "type": "string" + } + }, + "type": "object" + }, + "FilterCriteria": { + "additionalProperties": false, + "properties": { + "Filters": { + "items": { + "$ref": "#/definitions/Filter" + }, + "maxItems": 20, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "MaximumConcurrency": { + "maximum": 1000, + "minimum": 2, + "type": "integer" + }, + "OnFailure": { + "additionalProperties": false, + "properties": { + "Destination": { + "maxLength": 1024, + "minLength": 12, + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "type": "string" + } + }, + "type": "object" + }, + "ScalingConfig": { + "additionalProperties": false, + "properties": { + "MaximumConcurrency": { + "$ref": "#/definitions/MaximumConcurrency" + } + }, + "type": "object" + }, + "SelfManagedEventSource": { + "additionalProperties": false, + "properties": { + "Endpoints": { + "$ref": "#/definitions/Endpoints" + } + }, + "type": "object" + }, + "SelfManagedKafkaEventSourceConfig": { + "additionalProperties": false, + "properties": { + "ConsumerGroupId": { + "$ref": "#/definitions/ConsumerGroupId" + } + }, + "type": "object" + }, + "SourceAccessConfiguration": { + "additionalProperties": false, + "properties": { + "Type": { + "enum": [ + "BASIC_AUTH", + "VPC_SUBNET", + "VPC_SECURITY_GROUP", + "SASL_SCRAM_512_AUTH", + "SASL_SCRAM_256_AUTH", + "VIRTUAL_HOST", + "CLIENT_CERTIFICATE_TLS_AUTH", + "SERVER_ROOT_CA_CERTIFICATE" + ], + "type": "string" + }, + "URI": { + "maxLength": 200, + "minLength": 1, + "pattern": "[a-zA-Z0-9-\\/*:_+=.@-]*", + "type": "string" + } + }, + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "lambda:CreateEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + }, + "delete": { + "permissions": [ + "lambda:DeleteEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + }, + "list": { + "permissions": [ + "lambda:ListEventSourceMappings" + ] + }, + "read": { + "permissions": [ + "lambda:GetEventSourceMapping" + ] + }, + "update": { + "permissions": [ + "lambda:UpdateEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AmazonManagedKafkaEventSourceConfig": { + "$ref": "#/definitions/AmazonManagedKafkaEventSourceConfig" + }, + "BatchSize": { + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "BisectBatchOnFunctionError": { + "type": "boolean" + }, + "DestinationConfig": { + "$ref": "#/definitions/DestinationConfig" + }, + "DocumentDBEventSourceConfig": { + "$ref": "#/definitions/DocumentDBEventSourceConfig" + }, + "Enabled": { + "type": "boolean" + }, + "EventSourceArn": { + "maxLength": 1024, + "minLength": 12, + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "type": "string" + }, + "FilterCriteria": { + "$ref": "#/definitions/FilterCriteria" + }, + "FunctionName": { + "maxLength": 140, + "minLength": 1, + "pattern": "(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?", + "type": "string" + }, + "FunctionResponseTypes": { + "items": { + "enum": [ + "ReportBatchItemFailures" + ], + "type": "string" + }, + "maxLength": 1, + "minLength": 0, + "type": "array", + "uniqueItems": true + }, + "Id": { + "maxLength": 36, + "minLength": 36, + "pattern": "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + "type": "string" + }, + "MaximumBatchingWindowInSeconds": { + "maximum": 300, + "minimum": 0, + "type": "integer" + }, + "MaximumRecordAgeInSeconds": { + "maximum": 604800, + "minimum": -1, + "type": "integer" + }, + "MaximumRetryAttempts": { + "maximum": 10000, + "minimum": -1, + "type": "integer" + }, + "ParallelizationFactor": { + "maximum": 10, + "minimum": 1, + "type": "integer" + }, + "Queues": { + "items": { + "maxLength": 1000, + "minLength": 1, + "pattern": "[\\s\\S]*", + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "ScalingConfig": { + "$ref": "#/definitions/ScalingConfig" + }, + "SelfManagedEventSource": { + "$ref": "#/definitions/SelfManagedEventSource" + }, + "SelfManagedKafkaEventSourceConfig": { + "$ref": "#/definitions/SelfManagedKafkaEventSourceConfig" + }, + "SourceAccessConfigurations": { + "items": { + "$ref": "#/definitions/SourceAccessConfiguration" + }, + "maxItems": 22, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "StartingPosition": { + "enum": [ + "TRIM_HORIZON", + "LATEST", + "AT_TIMESTAMP" + ], + "maxLength": 12, + "minLength": 6, + "pattern": "(LATEST|TRIM_HORIZON|AT_TIMESTAMP)+", + "type": "string" + }, + "StartingPositionTimestamp": { + "type": "number" + }, + "Topics": { + "items": { + "maxLength": 249, + "minLength": 1, + "pattern": "^[^.]([a-zA-Z0-9\\-_.]+)", + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "TumblingWindowInSeconds": { + "maximum": 900, + "minimum": 0, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "FunctionName" + ], + "typeName": "AWS::Lambda::EventSourceMapping" +} diff --git a/src/cfnlint/data/schemas/providers/sa_east_1/aws-sagemaker-appimageconfig.json b/src/cfnlint/data/schemas/providers/sa_east_1/aws-sagemaker-appimageconfig.json new file mode 100644 index 0000000000..01116f524b --- /dev/null +++ b/src/cfnlint/data/schemas/providers/sa_east_1/aws-sagemaker-appimageconfig.json @@ -0,0 +1,238 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AppImageConfigName", + "/properties/Tags" + ], + "definitions": { + "ContainerConfig": { + "additionalProperties": false, + "properties": { + "ContainerArguments": { + "items": { + "$ref": "#/definitions/CustomImageContainerArguments" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "ContainerEntrypoint": { + "items": { + "$ref": "#/definitions/CustomImageContainerEntrypoint" + }, + "maxItems": 1, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "ContainerEnvironmentVariables": { + "items": { + "$ref": "#/definitions/CustomImageContainerEnvironmentVariable" + }, + "maxItems": 25, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "CustomImageContainerArguments": { + "maxLength": 64, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "CustomImageContainerEntrypoint": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "CustomImageContainerEnvironmentVariable": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "FileSystemConfig": { + "additionalProperties": false, + "properties": { + "DefaultGid": { + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "DefaultUid": { + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "MountPath": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^/.*", + "type": "string" + } + }, + "type": "object" + }, + "JupyterLabAppImageConfig": { + "additionalProperties": false, + "properties": { + "ContainerConfig": { + "$ref": "#/definitions/ContainerConfig" + } + }, + "type": "object" + }, + "KernelGatewayImageConfig": { + "additionalProperties": false, + "properties": { + "FileSystemConfig": { + "$ref": "#/definitions/FileSystemConfig" + }, + "KernelSpecs": { + "items": { + "$ref": "#/definitions/KernelSpec" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "KernelSpecs" + ], + "type": "object" + }, + "KernelSpec": { + "additionalProperties": false, + "properties": { + "DisplayName": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Name": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "sagemaker:CreateAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + }, + "delete": { + "permissions": [ + "sagemaker:DeleteAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + }, + "list": { + "permissions": [ + "sagemaker:ListAppImageConfigs" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeAppImageConfig" + ] + }, + "update": { + "permissions": [ + "sagemaker:UpdateAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + } + }, + "primaryIdentifier": [ + "/properties/AppImageConfigName" + ], + "properties": { + "AppImageConfigArn": { + "maxLength": 256, + "minLength": 1, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:app-image-config/.*", + "type": "string" + }, + "AppImageConfigName": { + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", + "type": "string" + }, + "JupyterLabAppImageConfig": { + "$ref": "#/definitions/JupyterLabAppImageConfig" + }, + "KernelGatewayImageConfig": { + "$ref": "#/definitions/KernelGatewayImageConfig" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/AppImageConfigArn" + ], + "required": [ + "AppImageConfigName" + ], + "typeName": "AWS::SageMaker::AppImageConfig", + "writeOnlyProperties": [ + "/properties/Tags" + ] +} diff --git a/src/cfnlint/data/schemas/providers/sa_east_1/aws-sagemaker-domain.json b/src/cfnlint/data/schemas/providers/sa_east_1/aws-sagemaker-domain.json new file mode 100644 index 0000000000..e57c036025 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/sa_east_1/aws-sagemaker-domain.json @@ -0,0 +1,739 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AuthMode", + "/properties/DomainName", + "/properties/DomainSettings/RStudioServerProDomainSettings/DefaultResourceSpec", + "/properties/KmsKeyId", + "/properties/VpcId", + "/properties/Tags" + ], + "definitions": { + "CodeEditorAppSettings": { + "additionalProperties": false, + "properties": { + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + }, + "LifecycleConfigArns": { + "items": { + "$ref": "#/definitions/StudioLifecycleConfigArn" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "CodeRepository": { + "additionalProperties": false, + "properties": { + "RepositoryUrl": { + "maxLength": 256, + "pattern": "^https://([.\\-_a-zA-Z0-9]+/?){3,1016}$", + "type": "string" + } + }, + "required": [ + "RepositoryUrl" + ], + "type": "object" + }, + "CustomFileSystemConfig": { + "additionalProperties": false, + "properties": { + "EFSFileSystemConfig": { + "$ref": "#/definitions/EFSFileSystemConfig" + } + }, + "type": "object" + }, + "CustomImage": { + "additionalProperties": false, + "properties": { + "AppImageConfigName": { + "maxLength": 63, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", + "type": "string" + }, + "ImageName": { + "maxLength": 63, + "pattern": "^[a-zA-Z0-9]([-.]?[a-zA-Z0-9]){0,62}$", + "type": "string" + }, + "ImageVersionNumber": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "AppImageConfigName", + "ImageName" + ], + "type": "object" + }, + "CustomPosixUserConfig": { + "additionalProperties": false, + "properties": { + "Gid": { + "maximum": 4000000, + "minimum": 1001, + "type": "integer" + }, + "Uid": { + "maximum": 4000000, + "minimum": 10000, + "type": "integer" + } + }, + "required": [ + "Uid", + "Gid" + ], + "type": "object" + }, + "DefaultEbsStorageSettings": { + "additionalProperties": false, + "properties": { + "DefaultEbsVolumeSizeInGb": { + "$ref": "#/definitions/SpaceEbsVolumeSizeInGb" + }, + "MaximumEbsVolumeSizeInGb": { + "$ref": "#/definitions/SpaceEbsVolumeSizeInGb" + } + }, + "required": [ + "DefaultEbsVolumeSizeInGb", + "MaximumEbsVolumeSizeInGb" + ], + "type": "object" + }, + "DefaultSpaceSettings": { + "additionalProperties": false, + "properties": { + "ExecutionRole": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "JupyterServerAppSettings": { + "$ref": "#/definitions/JupyterServerAppSettings" + }, + "KernelGatewayAppSettings": { + "$ref": "#/definitions/KernelGatewayAppSettings" + }, + "SecurityGroups": { + "insertionOrder": false, + "items": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 5, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "ExecutionRole" + ], + "type": "object" + }, + "DefaultSpaceStorageSettings": { + "additionalProperties": false, + "properties": { + "DefaultEbsStorageSettings": { + "$ref": "#/definitions/DefaultEbsStorageSettings" + } + }, + "type": "object" + }, + "DockerSettings": { + "additionalProperties": false, + "properties": { + "EnableDockerAccess": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "VpcOnlyTrustedAccounts": { + "insertionOrder": false, + "items": { + "maxLength": 12, + "pattern": "^[0-9]$", + "type": "string" + }, + "maxItems": 10, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "DomainSettings": { + "additionalProperties": false, + "properties": { + "DockerSettings": { + "$ref": "#/definitions/DockerSettings" + }, + "RStudioServerProDomainSettings": { + "$ref": "#/definitions/RStudioServerProDomainSettings" + }, + "SecurityGroupIds": { + "insertionOrder": false, + "items": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 3, + "minItems": 1, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "EFSFileSystemConfig": { + "additionalProperties": false, + "properties": { + "FileSystemId": { + "maxLength": 21, + "minLength": 11, + "pattern": "^(fs-[0-9a-f]{8,})$", + "type": "string" + }, + "FileSystemPath": { + "maxLength": 256, + "minLength": 1, + "pattern": "^\\/\\S*$", + "type": "string" + } + }, + "required": [ + "FileSystemId" + ], + "type": "object" + }, + "JupyterLabAppSettings": { + "additionalProperties": false, + "properties": { + "CodeRepositories": { + "items": { + "$ref": "#/definitions/CodeRepository" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "CustomImages": { + "items": { + "$ref": "#/definitions/CustomImage" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + }, + "LifecycleConfigArns": { + "items": { + "$ref": "#/definitions/StudioLifecycleConfigArn" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "JupyterServerAppSettings": { + "additionalProperties": false, + "properties": { + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + } + }, + "type": "object" + }, + "KernelGatewayAppSettings": { + "additionalProperties": false, + "properties": { + "CustomImages": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/CustomImage" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + } + }, + "type": "object" + }, + "RSessionAppSettings": { + "additionalProperties": false, + "properties": { + "CustomImages": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/CustomImage" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + } + }, + "type": "object" + }, + "RStudioServerProAppSettings": { + "additionalProperties": false, + "properties": { + "AccessStatus": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "UserGroup": { + "enum": [ + "R_STUDIO_ADMIN", + "R_STUDIO_USER" + ], + "type": "string" + } + }, + "type": "object" + }, + "RStudioServerProDomainSettings": { + "additionalProperties": false, + "properties": { + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + }, + "DomainExecutionRoleArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "RStudioConnectUrl": { + "pattern": "^(https:|http:|www\\.)\\S*", + "type": "string" + }, + "RStudioPackageManagerUrl": { + "pattern": "^(https:|http:|www\\.)\\S*", + "type": "string" + } + }, + "required": [ + "DomainExecutionRoleArn" + ], + "type": "object" + }, + "ResourceSpec": { + "additionalProperties": false, + "properties": { + "InstanceType": { + "enum": [ + "system", + "ml.t3.micro", + "ml.t3.small", + "ml.t3.medium", + "ml.t3.large", + "ml.t3.xlarge", + "ml.t3.2xlarge", + "ml.m5.large", + "ml.m5.xlarge", + "ml.m5.2xlarge", + "ml.m5.4xlarge", + "ml.m5.8xlarge", + "ml.m5.12xlarge", + "ml.m5.16xlarge", + "ml.m5.24xlarge", + "ml.c5.large", + "ml.c5.xlarge", + "ml.c5.2xlarge", + "ml.c5.4xlarge", + "ml.c5.9xlarge", + "ml.c5.12xlarge", + "ml.c5.18xlarge", + "ml.c5.24xlarge", + "ml.p3.2xlarge", + "ml.p3.8xlarge", + "ml.p3.16xlarge", + "ml.g4dn.xlarge", + "ml.g4dn.2xlarge", + "ml.g4dn.4xlarge", + "ml.g4dn.8xlarge", + "ml.g4dn.12xlarge", + "ml.g4dn.16xlarge", + "ml.r5.large", + "ml.r5.xlarge", + "ml.r5.2xlarge", + "ml.r5.4xlarge", + "ml.r5.8xlarge", + "ml.r5.12xlarge", + "ml.r5.16xlarge", + "ml.r5.24xlarge", + "ml.p3dn.24xlarge", + "ml.m5d.large", + "ml.m5d.xlarge", + "ml.m5d.2xlarge", + "ml.m5d.4xlarge", + "ml.m5d.8xlarge", + "ml.m5d.12xlarge", + "ml.m5d.16xlarge", + "ml.m5d.24xlarge", + "ml.g5.xlarge", + "ml.g5.2xlarge", + "ml.g5.4xlarge", + "ml.g5.8xlarge", + "ml.g5.12xlarge", + "ml.g5.16xlarge", + "ml.g5.24xlarge", + "ml.g5.48xlarge", + "ml.p4d.24xlarge", + "ml.p4de.24xlarge", + "ml.geospatial.interactive", + "ml.trn1.2xlarge", + "ml.trn1.32xlarge", + "ml.trn1n.32xlarge" + ], + "type": "string" + }, + "LifecycleConfigArn": { + "maxLength": 256, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:studio-lifecycle-config/.*", + "type": "string" + }, + "SageMakerImageArn": { + "maxLength": 256, + "pattern": "^arn:aws(-[\\w]+)*:sagemaker:.+:[0-9]{12}:image/[a-z0-9]([-.]?[a-z0-9])*$", + "type": "string" + }, + "SageMakerImageVersionArn": { + "maxLength": 256, + "pattern": "^arn:aws(-[\\w]+)*:sagemaker:.+:[0-9]{12}:image-version/[a-z0-9]([-.]?[a-z0-9])*/[0-9]+$", + "type": "string" + } + }, + "type": "object" + }, + "SharingSettings": { + "additionalProperties": false, + "properties": { + "NotebookOutputOption": { + "enum": [ + "Allowed", + "Disabled" + ], + "type": "string" + }, + "S3KmsKeyId": { + "maxLength": 2048, + "pattern": ".*", + "type": "string" + }, + "S3OutputPath": { + "maxLength": 1024, + "pattern": "^(https|s3)://([^/]+)/?(.*)$", + "type": "string" + } + }, + "type": "object" + }, + "SpaceEbsVolumeSizeInGb": { + "maximum": 16384, + "minimum": 5, + "type": "integer" + }, + "StudioLifecycleConfigArn": { + "maxLength": 256, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:studio-lifecycle-config/.*", + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "UserSettings": { + "additionalProperties": false, + "properties": { + "CodeEditorAppSettings": { + "$ref": "#/definitions/CodeEditorAppSettings" + }, + "CustomFileSystemConfigs": { + "items": { + "$ref": "#/definitions/CustomFileSystemConfig" + }, + "maxItems": 2, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "CustomPosixUserConfig": { + "$ref": "#/definitions/CustomPosixUserConfig" + }, + "DefaultLandingUri": { + "maxLength": 1023, + "type": "string" + }, + "ExecutionRole": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "JupyterLabAppSettings": { + "$ref": "#/definitions/JupyterLabAppSettings" + }, + "JupyterServerAppSettings": { + "$ref": "#/definitions/JupyterServerAppSettings" + }, + "KernelGatewayAppSettings": { + "$ref": "#/definitions/KernelGatewayAppSettings" + }, + "RSessionAppSettings": { + "$ref": "#/definitions/RSessionAppSettings" + }, + "RStudioServerProAppSettings": { + "$ref": "#/definitions/RStudioServerProAppSettings" + }, + "SecurityGroups": { + "insertionOrder": false, + "items": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 5, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "SharingSettings": { + "$ref": "#/definitions/SharingSettings" + }, + "SpaceStorageSettings": { + "$ref": "#/definitions/DefaultSpaceStorageSettings" + }, + "StudioWebPortal": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + } + }, + "required": [ + "ExecutionRole" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "sagemaker:CreateApp", + "sagemaker:CreateDomain", + "sagemaker:DescribeDomain", + "sagemaker:DescribeImage", + "sagemaker:DescribeImageVersion", + "iam:CreateServiceLinkedRole", + "iam:PassRole", + "efs:CreateFileSystem", + "kms:CreateGrant", + "kms:Decrypt", + "kms:DescribeKey", + "kms:GenerateDataKeyWithoutPlainText" + ] + }, + "delete": { + "permissions": [ + "sagemaker:DeleteApp", + "sagemaker:DeleteDomain", + "sagemaker:DescribeDomain" + ] + }, + "list": { + "permissions": [ + "sagemaker:ListDomains" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeDomain" + ] + }, + "update": { + "permissions": [ + "sagemaker:CreateApp", + "sagemaker:UpdateDomain", + "sagemaker:DescribeDomain", + "sagemaker:DescribeImage", + "sagemaker:DescribeImageVersion", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/DomainId" + ], + "properties": { + "AppNetworkAccessType": { + "enum": [ + "PublicInternetOnly", + "VpcOnly" + ], + "type": "string" + }, + "AppSecurityGroupManagement": { + "enum": [ + "Service", + "Customer" + ], + "type": "string" + }, + "AuthMode": { + "enum": [ + "SSO", + "IAM" + ], + "type": "string" + }, + "DefaultSpaceSettings": { + "$ref": "#/definitions/DefaultSpaceSettings" + }, + "DefaultUserSettings": { + "$ref": "#/definitions/UserSettings" + }, + "DomainArn": { + "maxLength": 256, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:domain/.*", + "type": "string" + }, + "DomainId": { + "maxLength": 63, + "pattern": "^d-(-*[a-z0-9])+", + "type": "string" + }, + "DomainName": { + "maxLength": 63, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", + "type": "string" + }, + "DomainSettings": { + "$ref": "#/definitions/DomainSettings" + }, + "HomeEfsFileSystemId": { + "maxLength": 32, + "type": "string" + }, + "KmsKeyId": { + "maxLength": 2048, + "pattern": ".*", + "type": "string" + }, + "SecurityGroupIdForDomainBoundary": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "SingleSignOnApplicationArn": { + "pattern": "^arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):sso::[0-9]+:application/[a-zA-Z0-9-_.]+/apl-[a-zA-Z0-9]+$", + "type": "string" + }, + "SingleSignOnManagedApplicationInstanceId": { + "maxLength": 256, + "type": "string" + }, + "SubnetIds": { + "insertionOrder": false, + "items": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 16, + "minItems": 1, + "type": "array", + "uniqueItems": false + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "Url": { + "maxLength": 1024, + "type": "string" + }, + "VpcId": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/DomainArn", + "/properties/Url", + "/properties/DomainId", + "/properties/HomeEfsFileSystemId", + "/properties/SecurityGroupIdForDomainBoundary", + "/properties/SingleSignOnManagedApplicationInstanceId", + "/properties/SingleSignOnApplicationArn" + ], + "required": [ + "AuthMode", + "DefaultUserSettings", + "DomainName", + "SubnetIds", + "VpcId" + ], + "typeName": "AWS::SageMaker::Domain", + "writeOnlyProperties": [ + "/properties/Tags" + ] +} diff --git a/src/cfnlint/data/schemas/providers/sa_east_1/aws-sagemaker-userprofile.json b/src/cfnlint/data/schemas/providers/sa_east_1/aws-sagemaker-userprofile.json new file mode 100644 index 0000000000..d0f8848903 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/sa_east_1/aws-sagemaker-userprofile.json @@ -0,0 +1,524 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DomainId", + "/properties/UserProfileName", + "/properties/SingleSignOnUserIdentifier", + "/properties/SingleSignOnUserValue", + "/properties/UserSettings/RStudioServerProAppSettings/AccessStatus", + "/properties/UserSettings/RStudioServerProAppSettings/UserGroup", + "/properties/Tags" + ], + "definitions": { + "CodeEditorAppSettings": { + "additionalProperties": false, + "properties": { + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + }, + "LifecycleConfigArns": { + "items": { + "$ref": "#/definitions/StudioLifecycleConfigArn" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "CodeRepository": { + "additionalProperties": false, + "properties": { + "RepositoryUrl": { + "maxLength": 256, + "pattern": "^https://([.\\-_a-zA-Z0-9]+/?){3,1016}$", + "type": "string" + } + }, + "required": [ + "RepositoryUrl" + ], + "type": "object" + }, + "CustomFileSystemConfig": { + "additionalProperties": false, + "properties": { + "EFSFileSystemConfig": { + "$ref": "#/definitions/EFSFileSystemConfig" + } + }, + "type": "object" + }, + "CustomImage": { + "additionalProperties": false, + "properties": { + "AppImageConfigName": { + "maxLength": 63, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", + "type": "string" + }, + "ImageName": { + "maxLength": 63, + "pattern": "^[a-zA-Z0-9]([-.]?[a-zA-Z0-9]){0,62}$", + "type": "string" + }, + "ImageVersionNumber": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "AppImageConfigName", + "ImageName" + ], + "type": "object" + }, + "CustomPosixUserConfig": { + "additionalProperties": false, + "properties": { + "Gid": { + "maximum": 4000000, + "minimum": 1001, + "type": "integer" + }, + "Uid": { + "maximum": 4000000, + "minimum": 10000, + "type": "integer" + } + }, + "required": [ + "Uid", + "Gid" + ], + "type": "object" + }, + "DefaultEbsStorageSettings": { + "additionalProperties": false, + "properties": { + "DefaultEbsVolumeSizeInGb": { + "$ref": "#/definitions/SpaceEbsVolumeSizeInGb" + }, + "MaximumEbsVolumeSizeInGb": { + "$ref": "#/definitions/SpaceEbsVolumeSizeInGb" + } + }, + "required": [ + "DefaultEbsVolumeSizeInGb", + "MaximumEbsVolumeSizeInGb" + ], + "type": "object" + }, + "DefaultSpaceStorageSettings": { + "additionalProperties": false, + "properties": { + "DefaultEbsStorageSettings": { + "$ref": "#/definitions/DefaultEbsStorageSettings" + } + }, + "type": "object" + }, + "EFSFileSystemConfig": { + "additionalProperties": false, + "properties": { + "FileSystemId": { + "maxLength": 21, + "minLength": 11, + "pattern": "^(fs-[0-9a-f]{8,})$", + "type": "string" + }, + "FileSystemPath": { + "maxLength": 256, + "minLength": 1, + "pattern": "^\\/\\S*$", + "type": "string" + } + }, + "required": [ + "FileSystemId" + ], + "type": "object" + }, + "JupyterLabAppSettings": { + "additionalProperties": false, + "properties": { + "CodeRepositories": { + "items": { + "$ref": "#/definitions/CodeRepository" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "CustomImages": { + "items": { + "$ref": "#/definitions/CustomImage" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + }, + "LifecycleConfigArns": { + "items": { + "$ref": "#/definitions/StudioLifecycleConfigArn" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "JupyterServerAppSettings": { + "additionalProperties": false, + "properties": { + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + } + }, + "type": "object" + }, + "KernelGatewayAppSettings": { + "additionalProperties": false, + "properties": { + "CustomImages": { + "items": { + "$ref": "#/definitions/CustomImage" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + } + }, + "type": "object" + }, + "RStudioServerProAppSettings": { + "additionalProperties": false, + "properties": { + "AccessStatus": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "UserGroup": { + "enum": [ + "R_STUDIO_ADMIN", + "R_STUDIO_USER" + ], + "type": "string" + } + }, + "type": "object" + }, + "ResourceSpec": { + "additionalProperties": false, + "properties": { + "InstanceType": { + "enum": [ + "system", + "ml.t3.micro", + "ml.t3.small", + "ml.t3.medium", + "ml.t3.large", + "ml.t3.xlarge", + "ml.t3.2xlarge", + "ml.m5.large", + "ml.m5.xlarge", + "ml.m5.2xlarge", + "ml.m5.4xlarge", + "ml.m5.8xlarge", + "ml.m5.12xlarge", + "ml.m5.16xlarge", + "ml.m5.24xlarge", + "ml.c5.large", + "ml.c5.xlarge", + "ml.c5.2xlarge", + "ml.c5.4xlarge", + "ml.c5.9xlarge", + "ml.c5.12xlarge", + "ml.c5.18xlarge", + "ml.c5.24xlarge", + "ml.p3.2xlarge", + "ml.p3.8xlarge", + "ml.p3.16xlarge", + "ml.g4dn.xlarge", + "ml.g4dn.2xlarge", + "ml.g4dn.4xlarge", + "ml.g4dn.8xlarge", + "ml.g4dn.12xlarge", + "ml.g4dn.16xlarge", + "ml.r5.large", + "ml.r5.xlarge", + "ml.r5.2xlarge", + "ml.r5.4xlarge", + "ml.r5.8xlarge", + "ml.r5.12xlarge", + "ml.r5.16xlarge", + "ml.r5.24xlarge", + "ml.p3dn.24xlarge", + "ml.m5d.large", + "ml.m5d.xlarge", + "ml.m5d.2xlarge", + "ml.m5d.4xlarge", + "ml.m5d.8xlarge", + "ml.m5d.12xlarge", + "ml.m5d.16xlarge", + "ml.m5d.24xlarge", + "ml.g5.xlarge", + "ml.g5.2xlarge", + "ml.g5.4xlarge", + "ml.g5.8xlarge", + "ml.g5.12xlarge", + "ml.g5.16xlarge", + "ml.g5.24xlarge", + "ml.g5.48xlarge", + "ml.p4d.24xlarge", + "ml.p4de.24xlarge", + "ml.geospatial.interactive", + "ml.trn1.2xlarge", + "ml.trn1.32xlarge", + "ml.trn1n.32xlarge" + ], + "type": "string" + }, + "SageMakerImageArn": { + "maxLength": 256, + "pattern": "^arn:aws(-[\\w]+)*:sagemaker:.+:[0-9]{12}:image/[a-z0-9]([-.]?[a-z0-9])*$", + "type": "string" + }, + "SageMakerImageVersionArn": { + "maxLength": 256, + "pattern": "^arn:aws(-[\\w]+)*:sagemaker:.+:[0-9]{12}:image-version/[a-z0-9]([-.]?[a-z0-9])*/[0-9]+$", + "type": "string" + } + }, + "type": "object" + }, + "SharingSettings": { + "additionalProperties": false, + "properties": { + "NotebookOutputOption": { + "enum": [ + "Allowed", + "Disabled" + ], + "type": "string" + }, + "S3KmsKeyId": { + "maxLength": 2048, + "pattern": ".*", + "type": "string" + }, + "S3OutputPath": { + "maxLength": 1024, + "pattern": "^(https|s3)://([^/]+)/?(.*)$", + "type": "string" + } + }, + "type": "object" + }, + "SpaceEbsVolumeSizeInGb": { + "maximum": 16384, + "minimum": 5, + "type": "integer" + }, + "StudioLifecycleConfigArn": { + "maxLength": 256, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:studio-lifecycle-config/.*", + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "UserSettings": { + "additionalProperties": false, + "properties": { + "CodeEditorAppSettings": { + "$ref": "#/definitions/CodeEditorAppSettings" + }, + "CustomFileSystemConfigs": { + "items": { + "$ref": "#/definitions/CustomFileSystemConfig" + }, + "maxItems": 2, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "CustomPosixUserConfig": { + "$ref": "#/definitions/CustomPosixUserConfig" + }, + "DefaultLandingUri": { + "maxLength": 1023, + "type": "string" + }, + "ExecutionRole": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "JupyterLabAppSettings": { + "$ref": "#/definitions/JupyterLabAppSettings" + }, + "JupyterServerAppSettings": { + "$ref": "#/definitions/JupyterServerAppSettings" + }, + "KernelGatewayAppSettings": { + "$ref": "#/definitions/KernelGatewayAppSettings" + }, + "RStudioServerProAppSettings": { + "$ref": "#/definitions/RStudioServerProAppSettings" + }, + "SecurityGroups": { + "items": { + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 5, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "SharingSettings": { + "$ref": "#/definitions/SharingSettings" + }, + "SpaceStorageSettings": { + "$ref": "#/definitions/DefaultSpaceStorageSettings" + }, + "StudioWebPortal": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + } + }, + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "sagemaker:CreateUserProfile", + "sagemaker:DescribeUserProfile", + "sagemaker:DescribeImage", + "sagemaker:DescribeImageVersion", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "sagemaker:DeleteUserProfile", + "sagemaker:DescribeUserProfile" + ] + }, + "list": { + "permissions": [ + "sagemaker:ListUserProfiles" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeUserProfile" + ] + }, + "update": { + "permissions": [ + "sagemaker:UpdateUserProfile", + "sagemaker:DescribeUserProfile", + "sagemaker:DescribeImage", + "sagemaker:DescribeImageVersion", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/UserProfileName", + "/properties/DomainId" + ], + "properties": { + "DomainId": { + "maxLength": 63, + "minLength": 1, + "type": "string" + }, + "SingleSignOnUserIdentifier": { + "pattern": "UserName", + "type": "string" + }, + "SingleSignOnUserValue": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "UserProfileArn": { + "maxLength": 256, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:user-profile/.*", + "type": "string" + }, + "UserProfileName": { + "maxLength": 63, + "minLength": 1, + "type": "string" + }, + "UserSettings": { + "$ref": "#/definitions/UserSettings", + "maxItems": 50, + "minItems": 0, + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/UserProfileArn" + ], + "required": [ + "DomainId", + "UserProfileName" + ], + "typeName": "AWS::SageMaker::UserProfile", + "writeOnlyProperties": [ + "/properties/Tags" + ] +} diff --git a/src/cfnlint/data/schemas/providers/sa_east_1/aws-securityhub-delegatedadmin.json b/src/cfnlint/data/schemas/providers/sa_east_1/aws-securityhub-delegatedadmin.json deleted file mode 100644 index 12b73dd551..0000000000 --- a/src/cfnlint/data/schemas/providers/sa_east_1/aws-securityhub-delegatedadmin.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AdminAccountId" - ], - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AdminAccountId": { - "type": "string" - }, - "DelegatedAdminIdentifier": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "Status": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/DelegatedAdminIdentifier", - "/properties/Status" - ], - "required": [ - "AdminAccountId" - ], - "typeName": "AWS::SecurityHub::DelegatedAdmin" -} diff --git a/src/cfnlint/data/schemas/providers/sa_east_1/aws-securityhub-insight.json b/src/cfnlint/data/schemas/providers/sa_east_1/aws-securityhub-insight.json deleted file mode 100644 index 3fc396909f..0000000000 --- a/src/cfnlint/data/schemas/providers/sa_east_1/aws-securityhub-insight.json +++ /dev/null @@ -1,844 +0,0 @@ -{ - "additionalProperties": false, - "definitions": { - "AwsSecurityFindingFilters": { - "additionalProperties": false, - "properties": { - "AwsAccountId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "AwsAccountName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "CompanyName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ComplianceAssociatedStandardsId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ComplianceSecurityControlId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ComplianceSecurityControlParametersName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ComplianceSecurityControlParametersValue": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ComplianceStatus": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "Confidence": { - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "type": "array", - "uniqueItems": true - }, - "CreatedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "Criticality": { - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "type": "array", - "uniqueItems": true - }, - "Description": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "FindingProviderFieldsConfidence": { - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "type": "array", - "uniqueItems": true - }, - "FindingProviderFieldsCriticality": { - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "type": "array", - "uniqueItems": true - }, - "FindingProviderFieldsRelatedFindingsId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "FindingProviderFieldsRelatedFindingsProductArn": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "FindingProviderFieldsSeverityLabel": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "FindingProviderFieldsSeverityOriginal": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "FindingProviderFieldsTypes": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "FirstObservedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "GeneratorId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "Id": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "LastObservedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "MalwareName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "MalwarePath": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "MalwareState": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "MalwareType": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkDestinationDomain": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkDestinationIpV4": { - "items": { - "$ref": "#/definitions/IpFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkDestinationIpV6": { - "items": { - "$ref": "#/definitions/IpFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkDestinationPort": { - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkDirection": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkProtocol": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkSourceDomain": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkSourceIpV4": { - "items": { - "$ref": "#/definitions/IpFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkSourceIpV6": { - "items": { - "$ref": "#/definitions/IpFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkSourceMac": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkSourcePort": { - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NoteText": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NoteUpdatedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NoteUpdatedBy": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ProcessLaunchedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ProcessName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ProcessParentPid": { - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ProcessPath": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ProcessPid": { - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ProcessTerminatedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ProductArn": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ProductFields": { - "items": { - "$ref": "#/definitions/MapFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ProductName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "RecommendationText": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "RecordState": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "Region": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "RelatedFindingsId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "RelatedFindingsProductArn": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceApplicationArn": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceApplicationName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceIamInstanceProfileArn": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceImageId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceIpV4Addresses": { - "items": { - "$ref": "#/definitions/IpFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceIpV6Addresses": { - "items": { - "$ref": "#/definitions/IpFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceKeyName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceLaunchedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceSubnetId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceType": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceVpcId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsIamAccessKeyCreatedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsIamAccessKeyPrincipalName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsIamAccessKeyStatus": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsIamUserUserName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsS3BucketOwnerId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsS3BucketOwnerName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceContainerImageId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceContainerImageName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceContainerLaunchedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceContainerName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceDetailsOther": { - "items": { - "$ref": "#/definitions/MapFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourcePartition": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceRegion": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceTags": { - "items": { - "$ref": "#/definitions/MapFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceType": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "Sample": { - "items": { - "$ref": "#/definitions/BooleanFilter" - }, - "type": "array", - "uniqueItems": true - }, - "SeverityLabel": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "SourceUrl": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ThreatIntelIndicatorCategory": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ThreatIntelIndicatorLastObservedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ThreatIntelIndicatorSource": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ThreatIntelIndicatorSourceUrl": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ThreatIntelIndicatorType": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ThreatIntelIndicatorValue": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "Title": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "Type": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "UpdatedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "UserDefinedFields": { - "items": { - "$ref": "#/definitions/MapFilter" - }, - "type": "array", - "uniqueItems": true - }, - "VerificationState": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "VulnerabilitiesExploitAvailable": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "VulnerabilitiesFixAvailable": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "WorkflowState": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "WorkflowStatus": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "BooleanFilter": { - "additionalProperties": false, - "properties": { - "Value": { - "type": "boolean" - } - }, - "required": [ - "Value" - ], - "type": "object" - }, - "DateFilter": { - "additionalProperties": false, - "properties": { - "DateRange": { - "$ref": "#/definitions/DateRange" - }, - "End": { - "type": "string" - }, - "Start": { - "type": "string" - } - }, - "type": "object" - }, - "DateRange": { - "additionalProperties": false, - "properties": { - "Unit": { - "type": "string" - }, - "Value": { - "type": "number" - } - }, - "required": [ - "Value", - "Unit" - ], - "type": "object" - }, - "IpFilter": { - "additionalProperties": false, - "properties": { - "Cidr": { - "type": "string" - } - }, - "type": "object" - }, - "MapFilter": { - "additionalProperties": false, - "properties": { - "Comparison": { - "type": "string" - }, - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Comparison", - "Value", - "Key" - ], - "type": "object" - }, - "NumberFilter": { - "additionalProperties": false, - "properties": { - "Eq": { - "type": "number" - }, - "Gte": { - "type": "number" - }, - "Lte": { - "type": "number" - } - }, - "type": "object" - }, - "StringFilter": { - "additionalProperties": false, - "properties": { - "Comparison": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Comparison", - "Value" - ], - "type": "object" - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Filters": { - "$ref": "#/definitions/AwsSecurityFindingFilters" - }, - "GroupByAttribute": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "InsightArn": { - "type": "string" - }, - "Name": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/InsightArn" - ], - "required": [ - "Filters", - "GroupByAttribute", - "Name" - ], - "typeName": "AWS::SecurityHub::Insight" -} diff --git a/src/cfnlint/data/schemas/providers/sa_east_1/aws-securityhub-productsubscription.json b/src/cfnlint/data/schemas/providers/sa_east_1/aws-securityhub-productsubscription.json deleted file mode 100644 index 4001045463..0000000000 --- a/src/cfnlint/data/schemas/providers/sa_east_1/aws-securityhub-productsubscription.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ProductArn" - ], - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Id": { - "type": "string" - }, - "ProductArn": { - "type": "string" - }, - "ProductSubscriptionArn": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/ProductSubscriptionArn" - ], - "required": [ - "ProductArn" - ], - "typeName": "AWS::SecurityHub::ProductSubscription" -} diff --git a/src/cfnlint/data/schemas/providers/sa_east_1/aws-verifiedpermissions-identitysource.json b/src/cfnlint/data/schemas/providers/sa_east_1/aws-verifiedpermissions-identitysource.json new file mode 100644 index 0000000000..46a0ad88f1 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/sa_east_1/aws-verifiedpermissions-identitysource.json @@ -0,0 +1,221 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PolicyStoreId" + ], + "definitions": { + "CognitoGroupConfiguration": { + "additionalProperties": false, + "properties": { + "GroupEntityType": { + "maxLength": 200, + "minLength": 1, + "pattern": "^([_a-zA-Z][_a-zA-Z0-9]*::)*[_a-zA-Z][_a-zA-Z0-9]*$", + "type": "string" + } + }, + "required": [ + "GroupEntityType" + ], + "type": "object" + }, + "CognitoUserPoolConfiguration": { + "additionalProperties": false, + "properties": { + "ClientIds": { + "insertionOrder": false, + "items": { + "maxLength": 255, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "maxItems": 1000, + "minItems": 0, + "type": "array" + }, + "GroupConfiguration": { + "$ref": "#/definitions/CognitoGroupConfiguration" + }, + "UserPoolArn": { + "maxLength": 255, + "minLength": 1, + "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", + "type": "string" + } + }, + "required": [ + "UserPoolArn" + ], + "type": "object" + }, + "IdentitySourceConfiguration": { + "additionalProperties": false, + "properties": { + "CognitoUserPoolConfiguration": { + "$ref": "#/definitions/CognitoUserPoolConfiguration" + } + }, + "required": [ + "CognitoUserPoolConfiguration" + ], + "title": "CognitoUserPoolConfiguration", + "type": "object" + }, + "IdentitySourceDetails": { + "additionalProperties": false, + "properties": { + "ClientIds": { + "insertionOrder": false, + "items": { + "maxLength": 255, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "maxItems": 1000, + "minItems": 0, + "type": "array" + }, + "DiscoveryUrl": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^https://.*$", + "type": "string" + }, + "OpenIdIssuer": { + "$ref": "#/definitions/OpenIdIssuer" + }, + "UserPoolArn": { + "maxLength": 255, + "minLength": 1, + "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", + "type": "string" + } + }, + "type": "object" + }, + "OpenIdIssuer": { + "enum": [ + "COGNITO" + ], + "type": "string" + } + }, + "deprecatedProperties": [ + "/properties/Details" + ], + "handlers": { + "create": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "delete": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "PolicyStoreId": { + "$ref": "resource-schema.json#/properties/PolicyStoreId" + } + }, + "required": [ + "PolicyStoreId" + ] + }, + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "read": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "update": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + } + }, + "primaryIdentifier": [ + "/properties/IdentitySourceId", + "/properties/PolicyStoreId" + ], + "properties": { + "Configuration": { + "$ref": "#/definitions/IdentitySourceConfiguration" + }, + "Details": { + "$ref": "#/definitions/IdentitySourceDetails" + }, + "IdentitySourceId": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]*$", + "type": "string" + }, + "PolicyStoreId": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]*$", + "type": "string" + }, + "PrincipalEntityType": { + "maxLength": 200, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Details", + "/properties/IdentitySourceId" + ], + "required": [ + "Configuration", + "PolicyStoreId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-avp", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::VerifiedPermissions::IdentitySource" +} diff --git a/src/cfnlint/data/schemas/providers/us_east_1/__init__.py b/src/cfnlint/data/schemas/providers/us_east_1/__init__.py index ae0c089f84..90903def1c 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/us_east_1/__init__.py @@ -10,6 +10,7 @@ "AWS::ApiGatewayV2::ApiMapping", "AWS::CE::AnomalySubscription", "AWS::Shield::DRTAccess", + "AWS::Deadline::Farm", "AWS::SSO::Assignment", "AWS::Glue::Partition", "AWS::RDS::Integration", @@ -43,6 +44,7 @@ "AWS::EC2::NetworkPerformanceMetricSubscription", "AWS::MediaLive::Channel", "AWS::Greengrass::DeviceDefinition", + "AWS::CleanRoomsML::TrainingDataset", "AWS::CloudFront::ContinuousDeploymentPolicy", "AWS::QuickSight::Analysis", "AWS::Kendra::Faq", @@ -136,6 +138,7 @@ "AWS::CloudTrail::EventDataStore", "AWS::AppIntegrations::Application", "AWS::KinesisFirehose::DeliveryStream", + "AWS::Deadline::QueueFleetAssociation", "AWS::EC2::NetworkInsightsAccessScope", "AWS::Cognito::UserPoolUserToGroupAttachment", "AWS::PCAConnectorAD::DirectoryRegistration", @@ -177,6 +180,7 @@ "AWS::IoTSiteWise::Portal", "AWS::Events::Archive", "AWS::MSK::Cluster", + "AWS::SecurityHub::DelegatedAdmin", "AWS::ControlTower::EnabledBaseline", "AWS::AppStream::AppBlockBuilder", "AWS::Route53RecoveryControl::Cluster", @@ -230,6 +234,7 @@ "AWS::RoboMaker::SimulationApplication", "AWS::NetworkManager::TransitGatewayRegistration", "AWS::Amplify::App", + "AWS::EntityResolution::PolicyStatement", "AWS::InspectorV2::Filter", "AWS::ElastiCache::ReplicationGroup", "AWS::StepFunctions::StateMachineAlias", @@ -293,6 +298,7 @@ "AWS::Lambda::Alias", "AWS::Logs::LogAnomalyDetector", "AWS::WAF::IPSet", + "AWS::Deadline::Fleet", "AWS::IoTTwinMaker::Workspace", "AWS::VpcLattice::ServiceNetworkServiceAssociation", "AWS::EC2::TransitGatewayMulticastDomainAssociation", @@ -392,6 +398,7 @@ "AWS::IoT::PolicyPrincipalAttachment", "AWS::Timestream::ScheduledQuery", "AWS::FraudDetector::List", + "AWS::IVS::PlaybackRestrictionPolicy", "AWS::FMS::NotificationChannel", "AWS::MSK::BatchScramSecret", "AWS::Connect::HoursOfOperation", @@ -413,6 +420,7 @@ "AWS::ApiGatewayV2::VpcLink", "AWS::IoT::JobTemplate", "AWS::IoTFleetWise::SignalCatalog", + "AWS::Deadline::Queue", "AWS::ServiceCatalog::PortfolioProductAssociation", "AWS::DataBrew::Project", "AWS::VpcLattice::TargetGroup", @@ -429,6 +437,7 @@ "AWS::IAM::ServerCertificate", "AWS::CodeStarConnections::Connection", "AWS::IoT::SecurityProfile", + "AWS::GlobalAccelerator::CrossAccountAttachment", "AWS::Events::EventBus", "AWS::DocDB::EventSubscription", "AWS::SQS::QueueInlinePolicy", @@ -444,6 +453,7 @@ "AWS::Connect::PredefinedAttribute", "AWS::IAM::Policy", "AWS::DataBrew::Schedule", + "AWS::Bedrock::Agent", "AWS::AppRunner::Service", "AWS::Connect::ApprovedOrigin", "AWS::SES::ContactList", @@ -483,6 +493,7 @@ "AWS::Config::OrganizationConformancePack", "AWS::Connect::QuickConnect", "AWS::Logs::QueryDefinition", + "AWS::SecurityHub::ProductSubscription", "AWS::IAM::InstanceProfile", "AWS::IoT::BillingGroup", "AWS::IoTFleetWise::DecoderManifest", @@ -503,6 +514,7 @@ "AWS::Cognito::UserPoolUICustomizationAttachment", "AWS::SageMaker::NotebookInstanceLifecycleConfig", "AWS::ImageBuilder::ContainerRecipe", + "AWS::CodeConnections::Connection", "AWS::Connect::Rule", "AWS::EFS::AccessPoint", "AWS::Omics::ReferenceStore", @@ -536,6 +548,7 @@ "AWS::ImageBuilder::Workflow", "AWS::ECS::TaskSet", "AWS::Omics::VariantStore", + "AWS::SecurityLake::AwsLogSource", "AWS::AppSync::ApiKey", "AWS::CloudFormation::TypeActivation", "AWS::GroundStation::DataflowEndpointGroup", @@ -602,6 +615,7 @@ "AWS::EC2::CustomerGateway", "AWS::IAM::GroupPolicy", "AWS::Scheduler::Schedule", + "AWS::Deadline::LicenseEndpoint", "AWS::WAF::ByteMatchSet", "AWS::AmplifyUIBuilder::Theme", "AWS::Neptune::DBClusterParameterGroup", @@ -631,6 +645,7 @@ "AWS::Glue::Trigger", "AWS::GlobalAccelerator::Listener", "AWS::VerifiedPermissions::PolicyStore", + "AWS::Deadline::QueueEnvironment", "AWS::Signer::SigningProfile", "AWS::KendraRanking::ExecutionPlan", "AWS::EC2::VPCPeeringConnection", @@ -701,6 +716,7 @@ "AWS::LookoutMetrics::Alert", "AWS::IoTWireless::TaskDefinition", "AWS::StepFunctions::Activity", + "AWS::IVS::EncoderConfiguration", "AWS::Synthetics::Group", "AWS::ECR::PublicRepository", "AWS::Forecast::Dataset", @@ -714,6 +730,7 @@ "AWS::CodeBuild::SourceCredential", "AWS::EMR::InstanceFleetConfig", "AWS::EMR::Cluster", + "AWS::SecurityLake::DataLake", "AWS::CodePipeline::Webhook", "AWS::ApiGatewayV2::DomainName", "AWS::CustomerProfiles::EventStream", @@ -808,10 +825,12 @@ "AWS::DataZone::Environment", "AWS::DocDB::DBSubnetGroup", "AWS::Logs::Delivery", + "AWS::Bedrock::DataSource", "AWS::ServiceCatalog::Portfolio", "AWS::WorkSpacesWeb::TrustStore", "AWS::CustomerProfiles::Domain", "AWS::IoT::Policy", + "AWS::APS::Scraper", "AWS::EC2::TransitGatewayRoute", "AWS::SSM::MaintenanceWindow", "AWS::DataZone::Domain", @@ -834,6 +853,7 @@ "AWS::DevOpsGuru::LogAnomalyDetectionIntegration", "AWS::NetworkManager::Link", "AWS::QLDB::Stream", + "AWS::SecurityLake::Subscriber", "AWS::SageMaker::NotebookInstance", "AWS::IoTSiteWise::Dashboard", "AWS::Pinpoint::APNSVoipChannel", @@ -870,6 +890,7 @@ "AWS::GameLift::MatchmakingRuleSet", "AWS::EC2::EgressOnlyInternetGateway", "AWS::Athena::CapacityReservation", + "AWS::SecurityHub::Insight", "AWS::Config::ConformancePack", "AWS::EC2::VPCCidrBlock", "AWS::APS::Workspace", @@ -955,6 +976,7 @@ "AWS::StepFunctions::StateMachine", "AWS::RDS::DBClusterParameterGroup", "AWS::WAF::XssMatchSet", + "AWS::IVS::StorageConfiguration", "AWS::Route53RecoveryReadiness::ReadinessCheck", "AWS::EC2::VerifiedAccessTrustProvider", "AWS::AppMesh::VirtualRouter", @@ -978,6 +1000,7 @@ "AWS::SimSpaceWeaver::Simulation", "AWS::Events::Connection", "AWS::Athena::DataCatalog", + "AWS::Bedrock::AgentAlias", "AWS::DocDB::DBCluster", "AWS::MediaConnect::FlowVpcInterface", "AWS::Greengrass::FunctionDefinitionVersion", @@ -1008,6 +1031,7 @@ "AWS::CleanRooms::Collaboration", "AWS::SSM::Association", "AWS::EC2::ClientVpnEndpoint", + "AWS::EntityResolution::IdNamespace", "AWS::CloudFront::ResponseHeadersPolicy", "AWS::SecurityHub::AutomationRule", "AWS::MSK::ClusterPolicy", @@ -1037,9 +1061,11 @@ "AWS::Route53Resolver::OutpostResolver", "AWS::ACMPCA::Certificate", "AWS::EC2::IPAMAllocation", + "AWS::Deadline::StorageProfile", "AWS::WorkSpaces::Workspace", "AWS::Inspector::AssessmentTemplate", "AWS::EMR::Studio", + "AWS::Deadline::MeteredProduct", "AWS::EC2::InstanceConnectEndpoint", "AWS::DAX::ParameterGroup", "AWS::DataZone::SubscriptionTarget", @@ -1074,6 +1100,7 @@ "AWS::DataPipeline::Pipeline", "AWS::IoTCoreDeviceAdvisor::SuiteDefinition", "AWS::IoT::Thing", + "AWS::Bedrock::KnowledgeBase", "AWS::Route53::HealthCheck", "AWS::Pinpoint::Segment", "AWS::Omics::RunGroup", @@ -1206,6 +1233,7 @@ "AWS::ElasticLoadBalancingV2::Listener", "AWS::Redshift::EventSubscription", "AWS::IoTFleetHub::Application", + "AWS::BCMDataExports::Export", "AWS::Connect::User", "AWS::SSMContacts::ContactChannel", "AWS::MemoryDB::ACL", diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-acmpca-certificateauthority.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-acmpca-certificateauthority.json index 08ec85e5fa..ecdb17a904 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-acmpca-certificateauthority.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-acmpca-certificateauthority.json @@ -417,6 +417,13 @@ "Subject" ], "sourceUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_ACMPCA.html", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, "typeName": "AWS::ACMPCA::CertificateAuthority", "writeOnlyProperties": [ "/properties/Subject", diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-amplify-domain.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-amplify-domain.json index c248e35696..405a867b56 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-amplify-domain.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-amplify-domain.json @@ -180,12 +180,17 @@ "/properties/Arn", "/properties/DomainStatus", "/properties/StatusReason", - "/properties/CertificateRecord" + "/properties/CertificateRecord", + "/properties/Certificate", + "/properties/UpdateStatus" ], "required": [ "AppId", "DomainName", "SubDomainSettings" ], - "typeName": "AWS::Amplify::Domain" + "typeName": "AWS::Amplify::Domain", + "writeOnlyProperties": [ + "/properties/CertificateSettings" + ] } diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-appconfig-environment.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-appconfig-environment.json index 1b1444bd23..f695b9066c 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-appconfig-environment.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-appconfig-environment.json @@ -10,12 +10,20 @@ "AlarmArn": { "maxLength": 2048, "minLength": 1, + "relationshipRef": { + "propertyPath": "/properties/Arn", + "typeName": "AWS::CloudWatch::Alarm" + }, "type": "string" }, "AlarmRoleArn": { "maxLength": 2048, "minLength": 20, "pattern": "^((arn):(aws|aws-cn|aws-iso|aws-iso-[a-z]{1}|aws-us-gov):(iam)::\\d{12}:role[/].*)$", + "relationshipRef": { + "propertyPath": "/properties/Arn", + "typeName": "AWS::IAM::Role" + }, "type": "string" } }, diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-aps-scraper.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-aps-scraper.json new file mode 100644 index 0000000000..1d95e5a7ea --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-aps-scraper.json @@ -0,0 +1,233 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ScrapeConfiguration", + "/properties/Source", + "/properties/Destination", + "/properties/Alias" + ], + "definitions": { + "Destination": { + "additionalProperties": false, + "oneOf": [ + { + "required": [ + "AmpConfiguration" + ] + } + ], + "properties": { + "AmpConfiguration": { + "additionalProperties": false, + "properties": { + "WorkspaceArn": { + "pattern": "^arn:aws[-a-z]*:aps:[-a-z0-9]+:[0-9]{12}:workspace/.+$", + "type": "string" + } + }, + "required": [ + "WorkspaceArn" + ], + "type": "object" + } + }, + "type": "object" + }, + "ScrapeConfiguration": { + "additionalProperties": false, + "oneOf": [ + { + "required": [ + "ConfigurationBlob" + ] + } + ], + "properties": { + "ConfigurationBlob": { + "type": "string" + } + }, + "type": "object" + }, + "SecurityGroupId": { + "pattern": "^sg-[0-9a-z]+$", + "type": "string" + }, + "Source": { + "additionalProperties": false, + "oneOf": [ + { + "required": [ + "EksConfiguration" + ] + } + ], + "properties": { + "EksConfiguration": { + "additionalProperties": false, + "properties": { + "ClusterArn": { + "pattern": "^arn:aws[-a-z]*:eks:[-a-z0-9]+:[0-9]{12}:cluster/.+$", + "type": "string" + }, + "SecurityGroupIds": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SecurityGroupId" + }, + "type": "array" + }, + "SubnetIds": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SubnetId" + }, + "type": "array" + } + }, + "required": [ + "ClusterArn", + "SubnetIds" + ], + "type": "object" + } + }, + "type": "object" + }, + "SubnetId": { + "pattern": "^subnet-[0-9a-z]+$", + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "aps:CreateScraper", + "aps:DescribeScraper", + "aps:DescribeWorkspace", + "aps:TagResource", + "eks:CreateAccessEntry", + "eks:AssociateAccessPolicy", + "eks:DescribeCluster", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups", + "iam:CreateServiceLinkedRole" + ] + }, + "delete": { + "permissions": [ + "aps:DeleteScraper", + "aps:DescribeScraper", + "aps:DescribeWorkspace", + "eks:AssociateAccessPolicy", + "eks:DescribeCluster", + "ec2:DescribeSubnets", + "ec2:DescribeSecurityGroups", + "iam:DeleteServiceLinkedRole" + ] + }, + "list": { + "permissions": [ + "aps:ListScrapers", + "aps:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "aps:DescribeScraper", + "aps:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "aps:DescribeScraper", + "aps:TagResource", + "aps:UntagResource", + "aps:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Alias": { + "maxLength": 100, + "minLength": 1, + "pattern": "^[0-9A-Za-z][-.0-9A-Z_a-z]*$", + "type": "string" + }, + "Arn": { + "pattern": "^arn:(aws|aws-us-gov|aws-cn):aps:(af|ap|ca|eu|me|sa|us)-(central|north|(north(?:east|west))|south|south(?:east|west)|east|west)-[0-9]+:[0-9]+:scraper/s-[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}$", + "type": "string" + }, + "Destination": { + "$ref": "#/definitions/Destination" + }, + "RoleArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:(aws|aws-us-gov|aws-cn):iam::[0-9]{12}:role/[a-zA-Z0-9-]+$", + "type": "string" + }, + "ScrapeConfiguration": { + "$ref": "#/definitions/ScrapeConfiguration" + }, + "ScraperId": { + "maxLength": 64, + "minLength": 1, + "pattern": "^s-[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}$", + "type": "string" + }, + "Source": { + "$ref": "#/definitions/Source" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/ScraperId", + "/properties/Arn", + "/properties/RoleArn" + ], + "required": [ + "ScrapeConfiguration", + "Source", + "Destination" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-aps", + "tagging": { + "cloudFormationSystemTags": true, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::APS::Scraper" +} diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-arczonalshift-zonalautoshiftconfiguration.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-arczonalshift-zonalautoshiftconfiguration.json index f2ac7da17a..fc350974de 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-arczonalshift-zonalautoshiftconfiguration.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-arczonalshift-zonalautoshiftconfiguration.json @@ -82,8 +82,7 @@ }, "ZonalAutoshiftStatus": { "enum": [ - "ENABLED", - "DISABLED" + "ENABLED" ], "type": "string" } diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-bcmdataexports-export.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-bcmdataexports-export.json new file mode 100644 index 0000000000..d9d4a0a310 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-bcmdataexports-export.json @@ -0,0 +1,295 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Export/Name", + "/properties/Export/DataQuery/TableConfigurations", + "/properties/Export/RefreshCadence" + ], + "definitions": { + "CompressionOption": { + "enum": [ + "GZIP", + "PARQUET" + ], + "type": "string" + }, + "DataQuery": { + "additionalProperties": false, + "properties": { + "QueryStatement": { + "maxLength": 36000, + "minLength": 1, + "pattern": "^[\\S\\s]*$", + "type": "string" + }, + "TableConfigurations": { + "$ref": "#/definitions/TableConfigurations" + } + }, + "required": [ + "QueryStatement" + ], + "type": "object" + }, + "DestinationConfigurations": { + "additionalProperties": false, + "properties": { + "S3Destination": { + "$ref": "#/definitions/S3Destination" + } + }, + "required": [ + "S3Destination" + ], + "type": "object" + }, + "Export": { + "additionalProperties": false, + "properties": { + "DataQuery": { + "$ref": "#/definitions/DataQuery" + }, + "Description": { + "maxLength": 1024, + "minLength": 0, + "pattern": "^[\\S\\s]*$", + "type": "string" + }, + "DestinationConfigurations": { + "$ref": "#/definitions/DestinationConfigurations" + }, + "ExportArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[-a-z0-9]*:[-a-z0-9]+:[-a-z0-9]*:[0-9]{12}:[-a-zA-Z0-9/:_]+$", + "type": "string" + }, + "Name": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[0-9A-Za-z\\-_]+$", + "type": "string" + }, + "RefreshCadence": { + "$ref": "#/definitions/RefreshCadence" + } + }, + "required": [ + "DataQuery", + "DestinationConfigurations", + "Name", + "RefreshCadence" + ], + "type": "object" + }, + "FormatOption": { + "enum": [ + "TEXT_OR_CSV", + "PARQUET" + ], + "type": "string" + }, + "FrequencyOption": { + "enum": [ + "SYNCHRONOUS" + ], + "type": "string" + }, + "OverwriteOption": { + "enum": [ + "CREATE_NEW_REPORT", + "OVERWRITE_REPORT" + ], + "type": "string" + }, + "RefreshCadence": { + "additionalProperties": false, + "properties": { + "Frequency": { + "$ref": "#/definitions/FrequencyOption" + } + }, + "required": [ + "Frequency" + ], + "type": "object" + }, + "ResourceTag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "S3Destination": { + "additionalProperties": false, + "properties": { + "S3Bucket": { + "maxLength": 1024, + "minLength": 0, + "pattern": "^[\\S\\s]*$", + "type": "string" + }, + "S3OutputConfigurations": { + "$ref": "#/definitions/S3OutputConfigurations" + }, + "S3Prefix": { + "maxLength": 1024, + "minLength": 0, + "pattern": "^[\\S\\s]*$", + "type": "string" + }, + "S3Region": { + "maxLength": 1024, + "minLength": 0, + "pattern": "^[\\S\\s]*$", + "type": "string" + } + }, + "required": [ + "S3Bucket", + "S3OutputConfigurations", + "S3Prefix", + "S3Region" + ], + "type": "object" + }, + "S3OutputConfigurations": { + "additionalProperties": false, + "properties": { + "Compression": { + "$ref": "#/definitions/CompressionOption" + }, + "Format": { + "$ref": "#/definitions/FormatOption" + }, + "OutputType": { + "$ref": "#/definitions/S3OutputType" + }, + "Overwrite": { + "$ref": "#/definitions/OverwriteOption" + } + }, + "required": [ + "Compression", + "Format", + "OutputType", + "Overwrite" + ], + "type": "object" + }, + "S3OutputType": { + "enum": [ + "CUSTOM" + ], + "type": "string" + }, + "TableConfigurations": { + "additionalProperties": false, + "patternProperties": { + "^[\\S\\s]*$": { + "$ref": "#/definitions/TableProperties" + } + }, + "type": "object" + }, + "TableProperties": { + "additionalProperties": false, + "patternProperties": { + "^[\\S\\s]*$": { + "maxLength": 1024, + "minLength": 0, + "pattern": "^[\\S\\s]*$", + "type": "string" + } + }, + "type": "object" + } + }, + "documentationUrl": "https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_DataExports_CreateExport.html#API_DataExports_CreateExport_RequestSyntax", + "handlers": { + "create": { + "permissions": [ + "bcm-data-exports:CreateExport", + "bcm-data-exports:GetExport", + "bcm-data-exports:ListTagsForResource", + "bcm-data-exports:TagResource", + "cur:PutReportDefinition" + ] + }, + "delete": { + "permissions": [ + "bcm-data-exports:DeleteExport" + ] + }, + "list": { + "permissions": [ + "bcm-data-exports:ListExports" + ] + }, + "read": { + "permissions": [ + "bcm-data-exports:GetExport", + "bcm-data-exports:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "bcm-data-exports:UpdateExport", + "bcm-data-exports:TagResource", + "bcm-data-exports:UntagResource", + "bcm-data-exports:GetExport", + "bcm-data-exports:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/ExportArn" + ], + "properties": { + "Export": { + "$ref": "#/definitions/Export" + }, + "ExportArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[-a-z0-9]*:[-a-z0-9]+:[-a-z0-9]*:[0-9]{12}:[-a-zA-Z0-9/:_]+$", + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/ResourceTag" + }, + "maxItems": 200, + "minItems": 0, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/ExportArn" + ], + "required": [ + "Export" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::BCMDataExports::Export" +} diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-bedrock-agent.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-bedrock-agent.json new file mode 100644 index 0000000000..5c2fa2e5b2 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-bedrock-agent.json @@ -0,0 +1,479 @@ +{ + "additionalProperties": false, + "definitions": { + "APISchema": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "S3": { + "$ref": "#/definitions/S3Identifier" + } + }, + "required": [ + "S3" + ], + "title": "S3", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "Payload": { + "type": "string" + } + }, + "required": [ + "Payload" + ], + "title": "Payload", + "type": "object" + } + ] + }, + "ActionGroupExecutor": { + "additionalProperties": false, + "properties": { + "Lambda": { + "maxLength": 2048, + "pattern": "^arn:(aws[a-zA-Z-]*)?:lambda:[a-z]{2}(-gov)?-[a-z]+-\\d{1}:\\d{12}:function:[a-zA-Z0-9-_\\.]+(:(\\$LATEST|[a-zA-Z0-9-_]+))?$", + "type": "string" + } + }, + "required": [ + "Lambda" + ], + "title": "Lambda", + "type": "object" + }, + "ActionGroupSignature": { + "enum": [ + "AMAZON.UserInput" + ], + "type": "string" + }, + "ActionGroupState": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "AgentActionGroup": { + "additionalProperties": false, + "properties": { + "ActionGroupExecutor": { + "$ref": "#/definitions/ActionGroupExecutor" + }, + "ActionGroupName": { + "pattern": "^([0-9a-zA-Z][_-]?){1,100}$", + "type": "string" + }, + "ActionGroupState": { + "$ref": "#/definitions/ActionGroupState" + }, + "ApiSchema": { + "$ref": "#/definitions/APISchema" + }, + "Description": { + "maxLength": 200, + "minLength": 1, + "type": "string" + }, + "ParentActionGroupSignature": { + "$ref": "#/definitions/ActionGroupSignature" + }, + "SkipResourceInUseCheckOnDelete": { + "default": false, + "type": "boolean" + } + }, + "required": [ + "ActionGroupName" + ], + "type": "object" + }, + "AgentKnowledgeBase": { + "additionalProperties": false, + "properties": { + "Description": { + "maxLength": 200, + "minLength": 1, + "type": "string" + }, + "KnowledgeBaseId": { + "pattern": "^[0-9a-zA-Z]{10}$", + "type": "string" + }, + "KnowledgeBaseState": { + "$ref": "#/definitions/KnowledgeBaseState" + } + }, + "required": [ + "KnowledgeBaseId", + "Description" + ], + "type": "object" + }, + "AgentStatus": { + "enum": [ + "CREATING", + "PREPARING", + "PREPARED", + "NOT_PREPARED", + "DELETING", + "FAILED", + "VERSIONING", + "UPDATING" + ], + "type": "string" + }, + "CreationMode": { + "enum": [ + "DEFAULT", + "OVERRIDDEN" + ], + "type": "string" + }, + "InferenceConfiguration": { + "additionalProperties": false, + "properties": { + "MaximumLength": { + "maximum": 4096, + "minimum": 0, + "type": "number" + }, + "StopSequences": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "maxItems": 4, + "minItems": 0, + "type": "array" + }, + "Temperature": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "TopK": { + "maximum": 500, + "minimum": 0, + "type": "number" + }, + "TopP": { + "maximum": 1, + "minimum": 0, + "type": "number" + } + }, + "type": "object" + }, + "KnowledgeBaseState": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "PromptConfiguration": { + "additionalProperties": false, + "properties": { + "BasePromptTemplate": { + "maxLength": 100000, + "minLength": 1, + "type": "string" + }, + "InferenceConfiguration": { + "$ref": "#/definitions/InferenceConfiguration" + }, + "ParserMode": { + "$ref": "#/definitions/CreationMode" + }, + "PromptCreationMode": { + "$ref": "#/definitions/CreationMode" + }, + "PromptState": { + "$ref": "#/definitions/PromptState" + }, + "PromptType": { + "$ref": "#/definitions/PromptType" + } + }, + "type": "object" + }, + "PromptOverrideConfiguration": { + "additionalProperties": false, + "properties": { + "OverrideLambda": { + "maxLength": 2048, + "pattern": "^arn:(aws[a-zA-Z-]*)?:lambda:[a-z]{2}(-gov)?-[a-z]+-\\d{1}:\\d{12}:function:[a-zA-Z0-9-_\\.]+(:(\\$LATEST|[a-zA-Z0-9-_]+))?$", + "type": "string" + }, + "PromptConfigurations": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/PromptConfiguration" + }, + "maxItems": 10, + "type": "array" + } + }, + "required": [ + "PromptConfigurations" + ], + "type": "object" + }, + "PromptState": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "PromptType": { + "enum": [ + "PRE_PROCESSING", + "ORCHESTRATION", + "POST_PROCESSING", + "KNOWLEDGE_BASE_RESPONSE_GENERATION" + ], + "type": "string" + }, + "S3Identifier": { + "additionalProperties": false, + "properties": { + "S3BucketName": { + "maxLength": 63, + "minLength": 3, + "pattern": "^[a-z0-9][\\.\\-a-z0-9]{1,61}[a-z0-9]$", + "type": "string" + }, + "S3ObjectKey": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^[\\.\\-\\!\\*\\_\\'\\(\\)a-zA-Z0-9][\\.\\-\\!\\*\\_\\'\\(\\)\\/a-zA-Z0-9]*$", + "type": "string" + } + }, + "type": "object" + }, + "TagsMap": { + "additionalProperties": false, + "patternProperties": { + "^[a-zA-Z0-9\\s._:/=+@-]*$": { + "maxLength": 256, + "minLength": 0, + "pattern": "^[a-zA-Z0-9\\s._:/=+@-]*$", + "type": "string" + } + }, + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "bedrock:CreateAgent", + "bedrock:GetAgent", + "bedrock:PrepareAgent", + "bedrock:GetAgentKnowledgeBase", + "bedrock:AssociateAgentKnowledgeBase", + "bedrock:ListAgentKnowledgeBases", + "bedrock:CreateAgentActionGroup", + "bedrock:GetAgentActionGroup", + "bedrock:ListAgentActionGroups", + "bedrock:TagResource", + "bedrock:ListTagsForResource", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "bedrock:GetAgent", + "bedrock:DeleteAgent" + ] + }, + "list": { + "permissions": [ + "bedrock:ListAgents" + ] + }, + "read": { + "permissions": [ + "bedrock:GetAgent", + "bedrock:GetAgentActionGroup", + "bedrock:ListAgentActionGroups", + "bedrock:GetAgentKnowledgeBase", + "bedrock:ListAgentKnowledgeBases", + "bedrock:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "bedrock:GetAgent", + "bedrock:UpdateAgent", + "bedrock:PrepareAgent", + "bedrock:GetAgentKnowledgeBase", + "bedrock:UpdateAgentKnowledgeBase", + "bedrock:AssociateAgentKnowledgeBase", + "bedrock:DisassociateAgentKnowledgeBase", + "bedrock:ListAgentKnowledgeBases", + "bedrock:CreateAgentActionGroup", + "bedrock:GetAgentActionGroup", + "bedrock:UpdateAgentActionGroup", + "bedrock:DeleteAgentActionGroup", + "bedrock:ListAgentActionGroups", + "bedrock:TagResource", + "bedrock:UntagResource", + "bedrock:ListTagsForResource", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/AgentId" + ], + "properties": { + "ActionGroups": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AgentActionGroup" + }, + "type": "array" + }, + "AgentArn": { + "maxLength": 2048, + "pattern": "^arn:aws(|-cn|-us-gov):bedrock:[a-z0-9-]{1,20}:[0-9]{12}:agent/[0-9a-zA-Z]{10}$", + "type": "string" + }, + "AgentId": { + "pattern": "^[0-9a-zA-Z]{10}$", + "type": "string" + }, + "AgentName": { + "pattern": "^([0-9a-zA-Z][_-]?){1,100}$", + "type": "string" + }, + "AgentResourceRoleArn": { + "maxLength": 2048, + "pattern": "^arn:aws(-[^:]+)?:iam::([0-9]{12})?:role/(service-role/)?AmazonBedrockExecutionRoleForAgents.+$", + "type": "string" + }, + "AgentStatus": { + "$ref": "#/definitions/AgentStatus" + }, + "AgentVersion": { + "maxLength": 5, + "minLength": 5, + "pattern": "^DRAFT$", + "type": "string" + }, + "AutoPrepare": { + "default": false, + "type": "boolean" + }, + "CreatedAt": { + "format": "date-time", + "type": "string" + }, + "CustomerEncryptionKeyArn": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^arn:aws(|-cn|-us-gov):kms:[a-zA-Z0-9-]*:[0-9]{12}:key/[a-zA-Z0-9-]{36}$", + "type": "string" + }, + "Description": { + "maxLength": 200, + "minLength": 1, + "type": "string" + }, + "FailureReasons": { + "insertionOrder": false, + "items": { + "maxLength": 2048, + "type": "string" + }, + "maxItems": 2048, + "type": "array" + }, + "FoundationModel": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:(([0-9]{12}:custom-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}(([:][a-z0-9-]{1,63}){0,2})?/[a-z0-9]{12})|(:foundation-model/([a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.]?[a-z0-9-]{1,63})([:][a-z0-9-]{1,63}){0,2})))|(([a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}([.]?[a-z0-9-]{1,63})([:][a-z0-9-]{1,63}){0,2}))|(([0-9a-zA-Z][_-]?)+)$", + "type": "string" + }, + "IdleSessionTTLInSeconds": { + "maximum": 3600, + "minimum": 60, + "type": "number" + }, + "Instruction": { + "maxLength": 1200, + "minLength": 40, + "type": "string" + }, + "KnowledgeBases": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AgentKnowledgeBase" + }, + "type": "array" + }, + "PreparedAt": { + "format": "date-time", + "type": "string" + }, + "PromptOverrideConfiguration": { + "$ref": "#/definitions/PromptOverrideConfiguration" + }, + "RecommendedActions": { + "insertionOrder": false, + "items": { + "maxLength": 2048, + "type": "string" + }, + "maxItems": 2048, + "type": "array" + }, + "SkipResourceInUseCheckOnDelete": { + "default": false, + "type": "boolean" + }, + "Tags": { + "$ref": "#/definitions/TagsMap" + }, + "UpdatedAt": { + "format": "date-time", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/AgentArn", + "/properties/AgentId", + "/properties/AgentStatus", + "/properties/AgentVersion", + "/properties/CreatedAt", + "/properties/FailureReasons", + "/properties/PreparedAt", + "/properties/RecommendedActions", + "/properties/UpdatedAt" + ], + "required": [ + "AgentName" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Bedrock::Agent", + "writeOnlyProperties": [ + "/properties/AutoPrepare", + "/properties/SkipResourceInUseCheckOnDelete", + "/properties/ActionGroups/*/SkipResourceInUseCheckOnDelete" + ] +} diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-bedrock-agentalias.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-bedrock-agentalias.json new file mode 100644 index 0000000000..5f35ea54ba --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-bedrock-agentalias.json @@ -0,0 +1,198 @@ +{ + "additionalIdentifiers": [ + [ + "/properties/AgentAliasArn" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AgentId" + ], + "definitions": { + "AgentAliasHistoryEvent": { + "additionalProperties": false, + "properties": { + "EndDate": { + "type": "string" + }, + "RoutingConfiguration": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AgentAliasRoutingConfigurationListItem" + }, + "maxItems": 1, + "type": "array" + }, + "StartDate": { + "type": "string" + } + }, + "type": "object" + }, + "AgentAliasRoutingConfigurationListItem": { + "additionalProperties": false, + "properties": { + "AgentVersion": { + "maxLength": 5, + "minLength": 1, + "pattern": "^(DRAFT|[0-9]{0,4}[1-9][0-9]{0,4})$", + "type": "string" + } + }, + "required": [ + "AgentVersion" + ], + "type": "object" + }, + "AgentAliasStatus": { + "enum": [ + "CREATING", + "PREPARED", + "FAILED", + "UPDATING", + "DELETING" + ], + "type": "string" + }, + "TagsMap": { + "additionalProperties": false, + "patternProperties": { + "^[a-zA-Z0-9\\s._:/=+@-]*$": { + "maxLength": 256, + "minLength": 0, + "pattern": "^[a-zA-Z0-9\\s._:/=+@-]*$", + "type": "string" + } + }, + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "bedrock:PrepareAgent", + "bedrock:GetAgent", + "bedrock:CreateAgentAlias", + "bedrock:TagResource", + "bedrock:GetAgentAlias", + "bedrock:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "bedrock:DeleteAgentAlias" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "AgentId": { + "$ref": "resource-schema.json#/properties/AgentId" + } + }, + "required": [ + "AgentId" + ] + }, + "permissions": [ + "bedrock:ListAgentAliases" + ] + }, + "read": { + "permissions": [ + "bedrock:GetAgentAlias", + "bedrock:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "bedrock:PrepareAgent", + "bedrock:GetAgent", + "bedrock:UpdateAgentAlias", + "bedrock:TagResource", + "bedrock:UntagResource", + "bedrock:GetAgentAlias", + "bedrock:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/AgentId", + "/properties/AgentAliasId" + ], + "properties": { + "AgentAliasArn": { + "maxLength": 2048, + "pattern": "^arn:aws(|-cn|-us-gov):bedrock:[a-z0-9-]{1,20}:[0-9]{12}:agent-alias/[0-9a-zA-Z]{10}/[0-9a-zA-Z]{10}$", + "type": "string" + }, + "AgentAliasHistoryEvents": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AgentAliasHistoryEvent" + }, + "maxItems": 10, + "type": "array" + }, + "AgentAliasId": { + "maxLength": 10, + "minLength": 10, + "pattern": "^(\\bTSTALIASID\\b|[0-9a-zA-Z]+)$", + "type": "string" + }, + "AgentAliasName": { + "pattern": "^([0-9a-zA-Z][_-]?){1,100}$", + "type": "string" + }, + "AgentAliasStatus": { + "$ref": "#/definitions/AgentAliasStatus" + }, + "AgentId": { + "pattern": "^[0-9a-zA-Z]{10}$", + "type": "string" + }, + "CreatedAt": { + "type": "string" + }, + "Description": { + "maxLength": 200, + "minLength": 1, + "type": "string" + }, + "RoutingConfiguration": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/AgentAliasRoutingConfigurationListItem" + }, + "maxItems": 1, + "type": "array" + }, + "Tags": { + "$ref": "#/definitions/TagsMap" + }, + "UpdatedAt": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/AgentAliasArn", + "/properties/AgentAliasHistoryEvents", + "/properties/AgentAliasId", + "/properties/AgentAliasStatus", + "/properties/CreatedAt", + "/properties/UpdatedAt" + ], + "required": [ + "AgentAliasName", + "AgentId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-bedrock-agents", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Bedrock::AgentAlias" +} diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-bedrock-datasource.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-bedrock-datasource.json new file mode 100644 index 0000000000..29ef0b643b --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-bedrock-datasource.json @@ -0,0 +1,225 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/KnowledgeBaseId", + "/properties/VectorIngestionConfiguration" + ], + "definitions": { + "ChunkingConfiguration": { + "additionalProperties": false, + "properties": { + "ChunkingStrategy": { + "$ref": "#/definitions/ChunkingStrategy" + }, + "FixedSizeChunkingConfiguration": { + "$ref": "#/definitions/FixedSizeChunkingConfiguration" + } + }, + "required": [ + "ChunkingStrategy" + ], + "type": "object" + }, + "ChunkingStrategy": { + "enum": [ + "FIXED_SIZE", + "NONE" + ], + "type": "string" + }, + "DataSourceConfiguration": { + "additionalProperties": false, + "properties": { + "S3Configuration": { + "$ref": "#/definitions/S3DataSourceConfiguration" + }, + "Type": { + "$ref": "#/definitions/DataSourceType" + } + }, + "required": [ + "Type", + "S3Configuration" + ], + "type": "object" + }, + "DataSourceStatus": { + "enum": [ + "AVAILABLE", + "DELETING" + ], + "type": "string" + }, + "DataSourceType": { + "enum": [ + "S3" + ], + "type": "string" + }, + "FixedSizeChunkingConfiguration": { + "additionalProperties": false, + "properties": { + "MaxTokens": { + "minimum": 1, + "type": "integer" + }, + "OverlapPercentage": { + "maximum": 99, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "MaxTokens", + "OverlapPercentage" + ], + "type": "object" + }, + "S3DataSourceConfiguration": { + "additionalProperties": false, + "properties": { + "BucketArn": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^arn:aws(|-cn|-us-gov):s3:::[a-z0-9][a-z0-9.-]{1,61}[a-z0-9]$", + "type": "string" + }, + "InclusionPrefixes": { + "insertionOrder": false, + "items": { + "maxLength": 300, + "minLength": 1, + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "BucketArn" + ], + "type": "object" + }, + "ServerSideEncryptionConfiguration": { + "additionalProperties": false, + "properties": { + "KmsKeyArn": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^arn:aws(|-cn|-us-gov):kms:[a-zA-Z0-9-]*:[0-9]{12}:key/[a-zA-Z0-9-]{36}$", + "type": "string" + } + }, + "type": "object" + }, + "VectorIngestionConfiguration": { + "additionalProperties": false, + "properties": { + "ChunkingConfiguration": { + "$ref": "#/definitions/ChunkingConfiguration" + } + }, + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "bedrock:CreateDataSource", + "bedrock:GetDataSource", + "bedrock:GetKnowledgeBase" + ] + }, + "delete": { + "permissions": [ + "bedrock:GetDataSource", + "bedrock:DeleteDataSource" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "KnowledgeBaseId": { + "$ref": "resource-schema.json#/properties/KnowledgeBaseId" + } + }, + "required": [ + "KnowledgeBaseId" + ] + }, + "permissions": [ + "bedrock:ListDataSources" + ] + }, + "read": { + "permissions": [ + "bedrock:GetDataSource" + ] + }, + "update": { + "permissions": [ + "bedrock:GetDataSource", + "bedrock:UpdateDataSource" + ] + } + }, + "primaryIdentifier": [ + "/properties/KnowledgeBaseId", + "/properties/DataSourceId" + ], + "properties": { + "CreatedAt": { + "type": "string" + }, + "DataSourceConfiguration": { + "$ref": "#/definitions/DataSourceConfiguration" + }, + "DataSourceId": { + "pattern": "^[0-9a-zA-Z]{10}$", + "type": "string" + }, + "DataSourceStatus": { + "$ref": "#/definitions/DataSourceStatus" + }, + "Description": { + "maxLength": 200, + "minLength": 1, + "type": "string" + }, + "KnowledgeBaseId": { + "pattern": "^[0-9a-zA-Z]{10}$", + "type": "string" + }, + "Name": { + "pattern": "^([0-9a-zA-Z][_-]?){1,100}$", + "type": "string" + }, + "ServerSideEncryptionConfiguration": { + "$ref": "#/definitions/ServerSideEncryptionConfiguration" + }, + "UpdatedAt": { + "type": "string" + }, + "VectorIngestionConfiguration": { + "$ref": "#/definitions/VectorIngestionConfiguration" + } + }, + "readOnlyProperties": [ + "/properties/DataSourceId", + "/properties/DataSourceStatus", + "/properties/CreatedAt", + "/properties/UpdatedAt" + ], + "required": [ + "DataSourceConfiguration", + "Name", + "KnowledgeBaseId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-aps", + "tagging": { + "cloudFormationSystemTags": true, + "taggable": false + }, + "typeName": "AWS::Bedrock::DataSource" +} diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-bedrock-knowledgebase.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-bedrock-knowledgebase.json new file mode 100644 index 0000000000..0bb1769f6d --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-bedrock-knowledgebase.json @@ -0,0 +1,452 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/StorageConfiguration", + "/properties/KnowledgeBaseConfiguration" + ], + "definitions": { + "KnowledgeBaseConfiguration": { + "additionalProperties": false, + "properties": { + "Type": { + "$ref": "#/definitions/KnowledgeBaseType" + }, + "VectorKnowledgeBaseConfiguration": { + "$ref": "#/definitions/VectorKnowledgeBaseConfiguration" + } + }, + "required": [ + "Type", + "VectorKnowledgeBaseConfiguration" + ], + "type": "object" + }, + "KnowledgeBaseStatus": { + "enum": [ + "CREATING", + "ACTIVE", + "DELETING", + "UPDATING", + "FAILED" + ], + "type": "string" + }, + "KnowledgeBaseStorageType": { + "enum": [ + "OPENSEARCH_SERVERLESS", + "PINECONE", + "RDS" + ], + "type": "string" + }, + "KnowledgeBaseType": { + "enum": [ + "VECTOR" + ], + "type": "string" + }, + "OpenSearchServerlessConfiguration": { + "additionalProperties": false, + "properties": { + "CollectionArn": { + "maxLength": 2048, + "pattern": "^arn:aws:aoss:[a-z]{2}(-gov)?-[a-z]+-\\d{1}:\\d{12}:collection/[a-z0-9-]{3,32}$", + "type": "string" + }, + "FieldMapping": { + "$ref": "#/definitions/OpenSearchServerlessFieldMapping" + }, + "VectorIndexName": { + "maxLength": 2048, + "pattern": "^.*$", + "type": "string" + } + }, + "required": [ + "CollectionArn", + "FieldMapping", + "VectorIndexName" + ], + "type": "object" + }, + "OpenSearchServerlessFieldMapping": { + "additionalProperties": false, + "properties": { + "MetadataField": { + "maxLength": 2048, + "pattern": "^.*$", + "type": "string" + }, + "TextField": { + "maxLength": 2048, + "pattern": "^.*$", + "type": "string" + }, + "VectorField": { + "maxLength": 2048, + "pattern": "^.*$", + "type": "string" + } + }, + "required": [ + "MetadataField", + "TextField", + "VectorField" + ], + "type": "object" + }, + "PineconeConfiguration": { + "additionalProperties": false, + "properties": { + "ConnectionString": { + "maxLength": 2048, + "pattern": "^.*$", + "type": "string" + }, + "CredentialsSecretArn": { + "pattern": "^arn:aws(|-cn|-us-gov):secretsmanager:[a-z0-9-]{1,20}:([0-9]{12}|):secret:[a-zA-Z0-9!/_+=.@-]{1,512}$", + "type": "string" + }, + "FieldMapping": { + "$ref": "#/definitions/PineconeFieldMapping" + }, + "Namespace": { + "maxLength": 2048, + "pattern": "^.*$", + "type": "string" + } + }, + "required": [ + "ConnectionString", + "CredentialsSecretArn", + "FieldMapping" + ], + "type": "object" + }, + "PineconeFieldMapping": { + "additionalProperties": false, + "properties": { + "MetadataField": { + "maxLength": 2048, + "pattern": "^.*$", + "type": "string" + }, + "TextField": { + "maxLength": 2048, + "pattern": "^.*$", + "type": "string" + } + }, + "required": [ + "MetadataField", + "TextField" + ], + "type": "object" + }, + "RdsConfiguration": { + "additionalProperties": false, + "properties": { + "CredentialsSecretArn": { + "pattern": "^arn:aws(|-cn|-us-gov):secretsmanager:[a-z0-9-]{1,20}:([0-9]{12}|):secret:[a-zA-Z0-9!/_+=.@-]{1,512}$", + "type": "string" + }, + "DatabaseName": { + "maxLength": 63, + "pattern": "^[a-zA-Z0-9_\\-]+$", + "type": "string" + }, + "FieldMapping": { + "$ref": "#/definitions/RdsFieldMapping" + }, + "ResourceArn": { + "pattern": "^arn:aws(|-cn|-us-gov):rds:[a-zA-Z0-9-]*:[0-9]{12}:cluster:[a-zA-Z0-9-]{1,63}$", + "type": "string" + }, + "TableName": { + "maxLength": 63, + "pattern": "^[a-zA-Z0-9_\\.\\-]+$", + "type": "string" + } + }, + "required": [ + "CredentialsSecretArn", + "DatabaseName", + "FieldMapping", + "ResourceArn", + "TableName" + ], + "type": "object" + }, + "RdsFieldMapping": { + "additionalProperties": false, + "properties": { + "MetadataField": { + "maxLength": 63, + "pattern": "^[a-zA-Z0-9_\\-]+$", + "type": "string" + }, + "PrimaryKeyField": { + "maxLength": 63, + "pattern": "^[a-zA-Z0-9_\\-]+$", + "type": "string" + }, + "TextField": { + "maxLength": 63, + "pattern": "^[a-zA-Z0-9_\\-]+$", + "type": "string" + }, + "VectorField": { + "maxLength": 63, + "pattern": "^[a-zA-Z0-9_\\-]+$", + "type": "string" + } + }, + "required": [ + "MetadataField", + "PrimaryKeyField", + "TextField", + "VectorField" + ], + "type": "object" + }, + "RedisEnterpriseCloudConfiguration": { + "additionalProperties": false, + "properties": { + "CredentialsSecretArn": { + "pattern": "^arn:aws(|-cn|-us-gov):secretsmanager:[a-z0-9-]{1,20}:([0-9]{12}|):secret:[a-zA-Z0-9!/_+=.@-]{1,512}$", + "type": "string" + }, + "Endpoint": { + "maxLength": 2048, + "pattern": "^.*$", + "type": "string" + }, + "FieldMapping": { + "$ref": "#/definitions/RedisEnterpriseCloudFieldMapping" + }, + "VectorIndexName": { + "maxLength": 2048, + "pattern": "^.*$", + "type": "string" + } + }, + "required": [ + "CredentialsSecretArn", + "Endpoint", + "FieldMapping", + "VectorIndexName" + ], + "type": "object" + }, + "RedisEnterpriseCloudFieldMapping": { + "additionalProperties": false, + "properties": { + "MetadataField": { + "maxLength": 2048, + "pattern": "^.*$", + "type": "string" + }, + "TextField": { + "maxLength": 2048, + "pattern": "^.*$", + "type": "string" + }, + "VectorField": { + "maxLength": 2048, + "pattern": "^.*$", + "type": "string" + } + }, + "required": [ + "MetadataField", + "TextField", + "VectorField" + ], + "type": "object" + }, + "StorageConfiguration": { + "additionalProperties": false, + "oneOf": [ + { + "required": [ + "OpensearchServerlessConfiguration" + ] + }, + { + "required": [ + "PineconeConfiguration" + ] + }, + { + "required": [ + "RdsConfiguration" + ] + } + ], + "properties": { + "OpensearchServerlessConfiguration": { + "$ref": "#/definitions/OpenSearchServerlessConfiguration" + }, + "PineconeConfiguration": { + "$ref": "#/definitions/PineconeConfiguration" + }, + "RdsConfiguration": { + "$ref": "#/definitions/RdsConfiguration" + }, + "Type": { + "$ref": "#/definitions/KnowledgeBaseStorageType" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "TagsMap": { + "additionalProperties": false, + "patternProperties": { + "^[a-zA-Z0-9\\s._:/=+@-]*$": { + "maxLength": 256, + "minLength": 0, + "pattern": "^[a-zA-Z0-9\\s._:/=+@-]*$", + "type": "string" + } + }, + "type": "object" + }, + "VectorKnowledgeBaseConfiguration": { + "additionalProperties": false, + "properties": { + "EmbeddingModelArn": { + "maxLength": 1011, + "minLength": 20, + "pattern": "^arn:aws(-[^:]+)?:bedrock:[a-z0-9-]{1,20}:(([0-9]{12}:custom-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}/[a-z0-9]{12})|(:foundation-model/[a-z0-9-]{1,63}[.]{1}[a-z0-9-]{1,63}))$", + "type": "string" + } + }, + "required": [ + "EmbeddingModelArn" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "bedrock:CreateKnowledgeBase", + "bedrock:GetKnowledgeBase", + "bedrock:TagResource", + "bedrock:ListTagsForResource", + "bedrock:AssociateThirdPartyKnowledgeBase", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "bedrock:GetKnowledgeBase", + "bedrock:DeleteKnowledgeBase", + "bedrock:ListDataSources" + ] + }, + "list": { + "permissions": [ + "bedrock:ListKnowledgeBases" + ] + }, + "read": { + "permissions": [ + "bedrock:GetKnowledgeBase", + "bedrock:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "bedrock:GetKnowledgeBase", + "bedrock:UpdateKnowledgeBase", + "bedrock:TagResource", + "bedrock:UntagResource", + "bedrock:ListTagsForResource", + "bedrock:AssociateThirdPartyKnowledgeBase", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/KnowledgeBaseId" + ], + "properties": { + "CreatedAt": { + "type": "string" + }, + "Description": { + "maxLength": 200, + "minLength": 1, + "type": "string" + }, + "FailureReasons": { + "insertionOrder": false, + "items": { + "maxLength": 2048, + "type": "string" + }, + "maxItems": 2048, + "type": "array" + }, + "KnowledgeBaseArn": { + "maxLength": 128, + "minLength": 0, + "pattern": "^arn:aws(|-cn|-us-gov):bedrock:[a-zA-Z0-9-]*:[0-9]{12}:knowledge-base/[0-9a-zA-Z]+$", + "type": "string" + }, + "KnowledgeBaseConfiguration": { + "$ref": "#/definitions/KnowledgeBaseConfiguration" + }, + "KnowledgeBaseId": { + "pattern": "^[0-9a-zA-Z]{10}$", + "type": "string" + }, + "Name": { + "pattern": "^([0-9a-zA-Z][_-]?){1,100}$", + "type": "string" + }, + "RoleArn": { + "maxLength": 2048, + "pattern": "^arn:aws(-[^:]+)?:iam::([0-9]{12})?:role/.+$", + "type": "string" + }, + "Status": { + "$ref": "#/definitions/KnowledgeBaseStatus" + }, + "StorageConfiguration": { + "$ref": "#/definitions/StorageConfiguration" + }, + "Tags": { + "$ref": "#/definitions/TagsMap" + }, + "UpdatedAt": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/KnowledgeBaseId", + "/properties/KnowledgeBaseArn", + "/properties/CreatedAt", + "/properties/UpdatedAt", + "/properties/FailureReasons", + "/properties/Status" + ], + "required": [ + "KnowledgeBaseConfiguration", + "Name", + "RoleArn", + "StorageConfiguration" + ], + "tagging": { + "cloudFormationSystemTags": true, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::Bedrock::KnowledgeBase" +} diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-cleanrooms-configuredtable.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-cleanrooms-configuredtable.json index 564cc62b68..a693e37236 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-cleanrooms-configuredtable.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-cleanrooms-configuredtable.json @@ -190,6 +190,9 @@ }, "AllowedAnalysisProviders": { "$ref": "#/definitions/AllowedAnalysisProviders" + }, + "DifferentialPrivacy": { + "$ref": "#/definitions/DifferentialPrivacy" } }, "required": [ @@ -294,6 +297,35 @@ ], "type": "string" }, + "DifferentialPrivacy": { + "additionalProperties": false, + "properties": { + "Columns": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/DifferentialPrivacyColumn" + }, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "Columns" + ], + "type": "object" + }, + "DifferentialPrivacyColumn": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, "GlueTableReference": { "additionalProperties": false, "properties": { @@ -341,7 +373,18 @@ "LOWER", "RTRIM", "UPPER", - "COALESCE" + "COALESCE", + "CONVERT", + "CURRENT_DATE", + "DATEADD", + "EXTRACT", + "GETDATE", + "SUBSTRING", + "TO_CHAR", + "TO_DATE", + "TO_NUMBER", + "TO_TIMESTAMP", + "TRIM" ], "type": "string" }, diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-cleanroomsml-trainingdataset.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-cleanroomsml-trainingdataset.json new file mode 100644 index 0000000000..e96aec6629 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-cleanroomsml-trainingdataset.json @@ -0,0 +1,253 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Description", + "/properties/Name", + "/properties/RoleArn", + "/properties/TrainingData" + ], + "definitions": { + "ColumnSchema": { + "additionalProperties": false, + "properties": { + "ColumnName": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_](([a-zA-Z0-9_ ]+-)*([a-zA-Z0-9_ ]+))?$", + "type": "string" + }, + "ColumnTypes": { + "items": { + "$ref": "#/definitions/ColumnType" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "ColumnName", + "ColumnTypes" + ], + "type": "object" + }, + "ColumnType": { + "enum": [ + "USER_ID", + "ITEM_ID", + "TIMESTAMP", + "CATEGORICAL_FEATURE", + "NUMERICAL_FEATURE" + ], + "type": "string" + }, + "DataSource": { + "additionalProperties": false, + "properties": { + "GlueDataSource": { + "$ref": "#/definitions/GlueDataSource" + } + }, + "required": [ + "GlueDataSource" + ], + "type": "object" + }, + "Dataset": { + "additionalProperties": false, + "properties": { + "InputConfig": { + "$ref": "#/definitions/DatasetInputConfig" + }, + "Type": { + "$ref": "#/definitions/DatasetType" + } + }, + "required": [ + "InputConfig", + "Type" + ], + "type": "object" + }, + "DatasetInputConfig": { + "additionalProperties": false, + "properties": { + "DataSource": { + "$ref": "#/definitions/DataSource" + }, + "Schema": { + "items": { + "$ref": "#/definitions/ColumnSchema" + }, + "maxItems": 100, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "DataSource", + "Schema" + ], + "type": "object" + }, + "DatasetType": { + "enum": [ + "INTERACTIONS" + ], + "type": "string" + }, + "GlueDataSource": { + "additionalProperties": false, + "properties": { + "CatalogId": { + "maxLength": 12, + "minLength": 12, + "pattern": "^[0-9]{12}$", + "type": "string" + }, + "DatabaseName": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_](([a-zA-Z0-9_]+-)*([a-zA-Z0-9_]+))?$", + "type": "string" + }, + "TableName": { + "maxLength": 128, + "minLength": 1, + "pattern": "^[a-zA-Z0-9_](([a-zA-Z0-9_ ]+-)*([a-zA-Z0-9_ ]+))?$", + "type": "string" + } + }, + "required": [ + "DatabaseName", + "TableName" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TrainingDatasetStatus": { + "enum": [ + "ACTIVE" + ], + "type": "string" + }, + "Unit": { + "additionalProperties": false, + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "cleanrooms-ml:CreateTrainingDataset", + "cleanrooms-ml:GetTrainingDataset", + "cleanrooms-ml:TagResource", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "cleanrooms-ml:DeleteTrainingDataset" + ] + }, + "list": { + "permissions": [ + "cleanrooms-ml:ListTrainingDatasets" + ] + }, + "read": { + "permissions": [ + "cleanrooms-ml:GetTrainingDataset" + ] + }, + "update": { + "permissions": [ + "cleanrooms-ml:TagResource", + "cleanrooms-ml:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/TrainingDatasetArn" + ], + "properties": { + "Description": { + "maxLength": 255, + "pattern": "^[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDBFF-\\uDC00\\uDFFF\\t\\r\\n]*$", + "type": "string" + }, + "Name": { + "maxLength": 63, + "minLength": 1, + "pattern": "^(?!\\s*$)[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDBFF-\\uDC00\\uDFFF\\t]*$", + "type": "string" + }, + "RoleArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[-a-z]*:iam::[0-9]{12}:role/.+$", + "type": "string" + }, + "Status": { + "$ref": "#/definitions/TrainingDatasetStatus" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "TrainingData": { + "items": { + "$ref": "#/definitions/Dataset" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + }, + "TrainingDatasetArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[-a-z]*:cleanrooms-ml:[-a-z0-9]+:[0-9]{12}:training-dataset/[-a-zA-Z0-9_/.]+$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Status", + "/properties/TrainingDatasetArn" + ], + "required": [ + "Name", + "RoleArn", + "TrainingData" + ], + "tagging": { + "cloudFormationSystemTags": true, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::CleanRoomsML::TrainingDataset" +} diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-cloudfront-originaccesscontrol.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-cloudfront-originaccesscontrol.json index 2da12fdee1..708c83d7f2 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-cloudfront-originaccesscontrol.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-cloudfront-originaccesscontrol.json @@ -11,7 +11,7 @@ "type": "string" }, "OriginAccessControlOriginType": { - "pattern": "^(s3|mediastore)$", + "pattern": "^(s3|mediastore|lambda|mediapackagev2)$", "type": "string" }, "SigningBehavior": { diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-cloudwatch-alarm.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-cloudwatch-alarm.json index 613fbe51c1..3f5d19edc1 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-cloudwatch-alarm.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-cloudwatch-alarm.json @@ -96,6 +96,26 @@ "Metric" ], "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" } }, "dependentExcluded": { @@ -125,7 +145,8 @@ "create": { "permissions": [ "cloudwatch:PutMetricAlarm", - "cloudwatch:DescribeAlarms" + "cloudwatch:DescribeAlarms", + "cloudwatch:TagResource" ] }, "delete": { @@ -141,13 +162,16 @@ }, "read": { "permissions": [ - "cloudwatch:DescribeAlarms" + "cloudwatch:DescribeAlarms", + "cloudwatch:ListTagsForResource" ] }, "update": { "permissions": [ "cloudwatch:PutMetricAlarm", - "cloudwatch:DescribeAlarms" + "cloudwatch:DescribeAlarms", + "cloudwatch:TagResource", + "cloudwatch:UntagResource" ] } }, @@ -251,6 +275,14 @@ ], "type": "string" }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, "Threshold": { "type": "number" }, @@ -312,7 +344,11 @@ ], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cloudwatch.git", "tagging": { - "taggable": false + "cloudFormationSystemTags": true, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true }, "typeName": "AWS::CloudWatch::Alarm" } diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-cloudwatch-compositealarm.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-cloudwatch-compositealarm.json index 6503a56146..661d1f5817 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-cloudwatch-compositealarm.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-cloudwatch-compositealarm.json @@ -3,11 +3,39 @@ "createOnlyProperties": [ "/properties/AlarmName" ], + "definitions": { + "AlarmActionARN": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, "handlers": { "create": { "permissions": [ "cloudwatch:DescribeAlarms", - "cloudwatch:PutCompositeAlarm" + "cloudwatch:PutCompositeAlarm", + "cloudwatch:TagResource" ] }, "delete": { @@ -23,13 +51,16 @@ }, "read": { "permissions": [ - "cloudwatch:DescribeAlarms" + "cloudwatch:DescribeAlarms", + "cloudwatch:ListTagsForResource" ] }, "update": { "permissions": [ "cloudwatch:DescribeAlarms", - "cloudwatch:PutCompositeAlarm" + "cloudwatch:PutCompositeAlarm", + "cloudwatch:TagResource", + "cloudwatch:UntagResource" ] } }, @@ -99,6 +130,14 @@ }, "maxItems": 5, "type": "array" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true } }, "readOnlyProperties": [ @@ -109,7 +148,11 @@ ], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cloudwatch.git", "tagging": { - "taggable": false + "cloudFormationSystemTags": true, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true }, "typeName": "AWS::CloudWatch::CompositeAlarm" } diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-codeconnections-connection.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-codeconnections-connection.json new file mode 100644 index 0000000000..db9ec2c31a --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-codeconnections-connection.json @@ -0,0 +1,120 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ConnectionName", + "/properties/ProviderType", + "/properties/HostArn" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "codeconnections:CreateConnection", + "codeconnections:TagResource" + ] + }, + "delete": { + "permissions": [ + "codeconnections:DeleteConnection" + ] + }, + "list": { + "permissions": [ + "codeconnections:ListConnections", + "codeconnections:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "codeconnections:GetConnection", + "codeconnections:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "codeconnections:ListTagsForResource", + "codeconnections:TagResource", + "codeconnections:UntagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/ConnectionArn" + ], + "properties": { + "ConnectionArn": { + "maxLength": 256, + "minLength": 0, + "pattern": "arn:aws(-[\\w]+)*:.+:.+:[0-9]{12}:.+", + "type": "string" + }, + "ConnectionName": { + "maxLength": 32, + "minLength": 1, + "type": "string" + }, + "ConnectionStatus": { + "type": "string" + }, + "HostArn": { + "maxLength": 256, + "minLength": 0, + "pattern": "arn:aws(-[\\w]+)*:.+:.+:[0-9]{12}:.+", + "type": "string" + }, + "OwnerAccountId": { + "maxLength": 12, + "minLength": 12, + "pattern": "[0-9]{12}", + "type": "string" + }, + "ProviderType": { + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/ConnectionArn", + "/properties/ConnectionStatus", + "/properties/OwnerAccountId" + ], + "required": [ + "ConnectionName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-codeconnections.git", + "tagging": { + "cloudFormationSystemTags": true, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::CodeConnections::Connection" +} diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-codestarconnections-repositorylink.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-codestarconnections-repositorylink.json index 02b6075dc9..acd21621a7 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-codestarconnections-repositorylink.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-codestarconnections-repositorylink.json @@ -91,7 +91,13 @@ "type": "string" }, "ProviderType": { - "pattern": "^(GitHub|Bitbucket|GitHubEnterprise|GitLab)$", + "enum": [ + "GitHub", + "Bitbucket", + "GitHubEnterprise", + "GitLab", + "GitLabSelfManaged" + ], "type": "string" }, "RepositoryLinkArn": { diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-codestarconnections-syncconfiguration.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-codestarconnections-syncconfiguration.json index 14339389f8..e85e34304d 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-codestarconnections-syncconfiguration.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-codestarconnections-syncconfiguration.json @@ -54,7 +54,20 @@ "type": "string" }, "ProviderType": { - "pattern": "^(GitHub|Bitbucket|GitHubEnterprise|GitLab)$", + "enum": [ + "GitHub", + "Bitbucket", + "GitHubEnterprise", + "GitLab", + "GitLabSelfManaged" + ], + "type": "string" + }, + "PublishDeploymentStatus": { + "enum": [ + "ENABLED", + "DISABLED" + ], "type": "string" }, "RepositoryLinkId": { @@ -74,6 +87,13 @@ }, "SyncType": { "type": "string" + }, + "TriggerResourceUpdateOn": { + "enum": [ + "ANY_CHANGE", + "FILE_CHANGE" + ], + "type": "string" } }, "readOnlyProperties": [ diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-config-organizationconformancepack.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-config-organizationconformancepack.json index e9bcba6c5f..884dc86cd9 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-config-organizationconformancepack.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-config-organizationconformancepack.json @@ -136,6 +136,13 @@ "OrganizationConformancePackName" ], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-config.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": false + }, "typeName": "AWS::Config::OrganizationConformancePack", "writeOnlyProperties": [ "/properties/TemplateBody", diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-connect-predefinedattribute.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-connect-predefinedattribute.json index 7ae4019e48..244a29df7c 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-connect-predefinedattribute.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-connect-predefinedattribute.json @@ -66,6 +66,13 @@ "pattern": "^arn:aws[-a-z0-9]*:connect:[-a-z0-9]*:[0-9]{12}:instance/[-a-zA-Z0-9]*$", "type": "string" }, + "LastModifiedRegion": { + "pattern": "[a-z]{2}(-[a-z]+){1,2}(-[0-9])?", + "type": "string" + }, + "LastModifiedTime": { + "type": "number" + }, "Name": { "maxLength": 64, "minLength": 1, @@ -81,6 +88,10 @@ "type": "object" } }, + "readOnlyProperties": [ + "/properties/LastModifiedRegion", + "/properties/LastModifiedTime" + ], "required": [ "InstanceArn", "Name", diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-deadline-farm.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-deadline-farm.json new file mode 100644 index 0000000000..6f9565a662 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-deadline-farm.json @@ -0,0 +1,98 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/KmsKeyArn" + ], + "handlers": { + "create": { + "permissions": [ + "deadline:CreateFarm", + "deadline:GetFarm", + "kms:Encrypt", + "kms:Decrypt", + "kms:CreateGrant", + "kms:GenerateDataKey" + ] + }, + "delete": { + "permissions": [ + "deadline:DeleteFarm", + "deadline:GetFarm", + "identitystore:ListGroupMembershipsForMember", + "kms:Encrypt", + "kms:Decrypt", + "kms:CreateGrant", + "kms:GenerateDataKey" + ] + }, + "list": { + "permissions": [ + "deadline:ListFarms", + "identitystore:ListGroupMembershipsForMember" + ] + }, + "read": { + "permissions": [ + "deadline:GetFarm", + "identitystore:ListGroupMembershipsForMember", + "kms:Encrypt", + "kms:Decrypt", + "kms:CreateGrant", + "kms:GenerateDataKey" + ] + }, + "update": { + "permissions": [ + "deadline:UpdateFarm", + "deadline:GetFarm", + "identitystore:ListGroupMembershipsForMember", + "kms:Encrypt", + "kms:Decrypt", + "kms:CreateGrant", + "kms:GenerateDataKey" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "pattern": "^arn:(aws[a-zA-Z-]*):deadline:[a-z0-9-]+:[0-9]+:farm/.+?", + "type": "string" + }, + "Description": { + "default": "", + "maxLength": 100, + "minLength": 0, + "type": "string" + }, + "DisplayName": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "FarmId": { + "pattern": "^farm-[0-9a-f]{32}$", + "type": "string" + }, + "KmsKeyArn": { + "pattern": "^arn:aws[-a-z]*:kms:.*:key/.*", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/FarmId", + "/properties/Arn" + ], + "required": [ + "DisplayName" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Deadline::Farm" +} diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-deadline-fleet.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-deadline-fleet.json new file mode 100644 index 0000000000..cea8621807 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-deadline-fleet.json @@ -0,0 +1,546 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/FarmId" + ], + "definitions": { + "AcceleratorCountRange": { + "additionalProperties": false, + "properties": { + "Max": { + "maximum": 2147483647, + "minimum": 0, + "type": "integer" + }, + "Min": { + "maximum": 2147483647, + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "Min" + ], + "type": "object" + }, + "AcceleratorTotalMemoryMiBRange": { + "additionalProperties": false, + "properties": { + "Max": { + "maximum": 2147483647, + "minimum": 0, + "type": "integer" + }, + "Min": { + "maximum": 2147483647, + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "Min" + ], + "type": "object" + }, + "AcceleratorType": { + "enum": [ + "gpu" + ], + "type": "string" + }, + "AutoScalingMode": { + "enum": [ + "NO_SCALING", + "EVENT_BASED_AUTO_SCALING" + ], + "type": "string" + }, + "CpuArchitectureType": { + "enum": [ + "x86_64", + "arm64" + ], + "type": "string" + }, + "CustomerManagedFleetConfiguration": { + "additionalProperties": false, + "properties": { + "Mode": { + "$ref": "#/definitions/AutoScalingMode" + }, + "StorageProfileId": { + "pattern": "^sp-[0-9a-f]{32}$", + "type": "string" + }, + "WorkerCapabilities": { + "$ref": "#/definitions/CustomerManagedWorkerCapabilities" + } + }, + "required": [ + "Mode", + "WorkerCapabilities" + ], + "type": "object" + }, + "CustomerManagedFleetOperatingSystemFamily": { + "enum": [ + "WINDOWS", + "LINUX", + "MACOS" + ], + "type": "string" + }, + "CustomerManagedWorkerCapabilities": { + "additionalProperties": false, + "properties": { + "AcceleratorCount": { + "$ref": "#/definitions/AcceleratorCountRange" + }, + "AcceleratorTotalMemoryMiB": { + "$ref": "#/definitions/AcceleratorTotalMemoryMiBRange" + }, + "AcceleratorTypes": { + "items": { + "$ref": "#/definitions/AcceleratorType" + }, + "type": "array" + }, + "CpuArchitectureType": { + "$ref": "#/definitions/CpuArchitectureType" + }, + "CustomAmounts": { + "items": { + "$ref": "#/definitions/FleetAmountCapability" + }, + "maxItems": 15, + "minItems": 1, + "type": "array" + }, + "CustomAttributes": { + "items": { + "$ref": "#/definitions/FleetAttributeCapability" + }, + "maxItems": 15, + "minItems": 1, + "type": "array" + }, + "MemoryMiB": { + "$ref": "#/definitions/MemoryMiBRange" + }, + "OsFamily": { + "$ref": "#/definitions/CustomerManagedFleetOperatingSystemFamily" + }, + "VCpuCount": { + "$ref": "#/definitions/VCpuCountRange" + } + }, + "required": [ + "CpuArchitectureType", + "MemoryMiB", + "OsFamily", + "VCpuCount" + ], + "type": "object" + }, + "Ec2EbsVolume": { + "additionalProperties": false, + "properties": { + "Iops": { + "default": 3000, + "maximum": 16000, + "minimum": 3000, + "type": "integer" + }, + "SizeGiB": { + "default": 250, + "type": "integer" + }, + "ThroughputMiB": { + "default": 125, + "maximum": 1000, + "minimum": 125, + "type": "integer" + } + }, + "type": "object" + }, + "Ec2MarketType": { + "enum": [ + "on-demand", + "spot" + ], + "type": "string" + }, + "FleetAmountCapability": { + "additionalProperties": false, + "properties": { + "Max": { + "type": "number" + }, + "Min": { + "type": "number" + }, + "Name": { + "maxLength": 100, + "minLength": 1, + "pattern": "^([a-zA-Z][a-zA-Z0-9]{0,63}:)?amount(\\.[a-zA-Z][a-zA-Z0-9]{0,63})+$", + "type": "string" + } + }, + "required": [ + "Min", + "Name" + ], + "type": "object" + }, + "FleetAttributeCapability": { + "additionalProperties": false, + "properties": { + "Name": { + "maxLength": 100, + "minLength": 1, + "pattern": "^([a-zA-Z][a-zA-Z0-9]{0,63}:)?attr(\\.[a-zA-Z][a-zA-Z0-9]{0,63})+$", + "type": "string" + }, + "Values": { + "items": { + "maxLength": 100, + "minLength": 1, + "pattern": "^[a-zA-Z_]([a-zA-Z0-9_\\-]{0,99})$", + "type": "string" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "Name", + "Values" + ], + "type": "object" + }, + "FleetCapabilities": { + "additionalProperties": false, + "properties": { + "Amounts": { + "items": { + "$ref": "#/definitions/FleetAmountCapability" + }, + "maxItems": 15, + "minItems": 1, + "type": "array" + }, + "Attributes": { + "items": { + "$ref": "#/definitions/FleetAttributeCapability" + }, + "maxItems": 15, + "minItems": 1, + "type": "array" + } + }, + "type": "object" + }, + "FleetConfiguration": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "CustomerManaged": { + "$ref": "#/definitions/CustomerManagedFleetConfiguration" + } + }, + "required": [ + "CustomerManaged" + ], + "title": "CustomerManaged", + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "ServiceManagedEc2": { + "$ref": "#/definitions/ServiceManagedEc2FleetConfiguration" + } + }, + "required": [ + "ServiceManagedEc2" + ], + "title": "ServiceManagedEc2", + "type": "object" + } + ] + }, + "FleetStatus": { + "enum": [ + "ACTIVE", + "CREATE_IN_PROGRESS", + "UPDATE_IN_PROGRESS", + "CREATE_FAILED", + "UPDATE_FAILED" + ], + "type": "string" + }, + "MemoryMiBRange": { + "additionalProperties": false, + "properties": { + "Max": { + "maximum": 2147483647, + "minimum": 512, + "type": "integer" + }, + "Min": { + "maximum": 2147483647, + "minimum": 512, + "type": "integer" + } + }, + "required": [ + "Min" + ], + "type": "object" + }, + "ServiceManagedEc2FleetConfiguration": { + "additionalProperties": false, + "properties": { + "InstanceCapabilities": { + "$ref": "#/definitions/ServiceManagedEc2InstanceCapabilities" + }, + "InstanceMarketOptions": { + "$ref": "#/definitions/ServiceManagedEc2InstanceMarketOptions" + } + }, + "required": [ + "InstanceCapabilities", + "InstanceMarketOptions" + ], + "type": "object" + }, + "ServiceManagedEc2InstanceCapabilities": { + "additionalProperties": false, + "properties": { + "AllowedInstanceTypes": { + "items": { + "pattern": "^[a-zA-Z0-9]+\\.[a-zA-Z0-9]+$", + "type": "string" + }, + "maxItems": 100, + "minItems": 1, + "type": "array" + }, + "CpuArchitectureType": { + "$ref": "#/definitions/CpuArchitectureType" + }, + "CustomAmounts": { + "items": { + "$ref": "#/definitions/FleetAmountCapability" + }, + "maxItems": 15, + "minItems": 1, + "type": "array" + }, + "CustomAttributes": { + "items": { + "$ref": "#/definitions/FleetAttributeCapability" + }, + "maxItems": 15, + "minItems": 1, + "type": "array" + }, + "ExcludedInstanceTypes": { + "items": { + "pattern": "^[a-zA-Z0-9]+\\.[a-zA-Z0-9]+$", + "type": "string" + }, + "maxItems": 100, + "minItems": 1, + "type": "array" + }, + "MemoryMiB": { + "$ref": "#/definitions/MemoryMiBRange" + }, + "OsFamily": { + "$ref": "#/definitions/ServiceManagedFleetOperatingSystemFamily" + }, + "RootEbsVolume": { + "$ref": "#/definitions/Ec2EbsVolume" + }, + "VCpuCount": { + "$ref": "#/definitions/VCpuCountRange" + } + }, + "required": [ + "CpuArchitectureType", + "MemoryMiB", + "OsFamily", + "VCpuCount" + ], + "type": "object" + }, + "ServiceManagedEc2InstanceMarketOptions": { + "additionalProperties": false, + "properties": { + "Type": { + "$ref": "#/definitions/Ec2MarketType" + } + }, + "required": [ + "Type" + ], + "type": "object" + }, + "ServiceManagedFleetOperatingSystemFamily": { + "enum": [ + "WINDOWS", + "LINUX" + ], + "type": "string" + }, + "VCpuCountRange": { + "additionalProperties": false, + "properties": { + "Max": { + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "Min": { + "maximum": 10000, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "Min" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "deadline:CreateFleet", + "deadline:GetFleet", + "iam:PassRole", + "identitystore:ListGroupMembershipsForMember", + "logs:CreateLogGroup" + ] + }, + "delete": { + "permissions": [ + "deadline:DeleteFleet", + "deadline:GetFleet", + "identitystore:ListGroupMembershipsForMember" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "FarmId": { + "$ref": "resource-schema.json#/properties/FarmId" + } + }, + "required": [ + "FarmId" + ] + }, + "permissions": [ + "deadline:ListFleets", + "identitystore:DescribeGroup", + "identitystore:DescribeUser", + "identitystore:ListGroupMembershipsForMember" + ] + }, + "read": { + "permissions": [ + "deadline:GetFleet", + "identitystore:ListGroupMembershipsForMember" + ] + }, + "update": { + "permissions": [ + "deadline:UpdateFleet", + "deadline:GetFleet", + "iam:PassRole", + "identitystore:ListGroupMembershipsForMember" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "pattern": "^arn:(aws[a-zA-Z-]*):deadline:[a-z0-9-]+:[0-9]+:farm/farm-[0-9a-z]{32}/fleet/fleet-[0-9a-z]{32}", + "type": "string" + }, + "Capabilities": { + "$ref": "#/definitions/FleetCapabilities" + }, + "Configuration": { + "$ref": "#/definitions/FleetConfiguration" + }, + "Description": { + "default": "", + "maxLength": 100, + "minLength": 0, + "type": "string" + }, + "DisplayName": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "FarmId": { + "pattern": "^farm-[0-9a-f]{32}$", + "type": "string" + }, + "FleetId": { + "pattern": "^fleet-[0-9a-f]{32}$", + "type": "string" + }, + "MaxWorkerCount": { + "maximum": 2147483647, + "minimum": 0, + "type": "integer" + }, + "MinWorkerCount": { + "default": 0, + "maximum": 2147483647, + "minimum": 0, + "type": "integer" + }, + "RoleArn": { + "pattern": "^arn:(aws[a-zA-Z-]*):iam::\\d{12}:role(/[!-.0-~]+)*/[\\w+=,.@-]+$", + "type": "string" + }, + "Status": { + "$ref": "#/definitions/FleetStatus" + }, + "WorkerCount": { + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Capabilities", + "/properties/FleetId", + "/properties/Status", + "/properties/WorkerCount", + "/properties/Arn" + ], + "required": [ + "Configuration", + "DisplayName", + "MaxWorkerCount", + "RoleArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-deadline", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Deadline::Fleet" +} diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-deadline-licenseendpoint.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-deadline-licenseendpoint.json new file mode 100644 index 0000000000..177098c594 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-deadline-licenseendpoint.json @@ -0,0 +1,114 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/SecurityGroupIds", + "/properties/SubnetIds", + "/properties/VpcId" + ], + "definitions": { + "LicenseEndpointStatus": { + "enum": [ + "CREATE_IN_PROGRESS", + "DELETE_IN_PROGRESS", + "READY", + "NOT_READY" + ], + "type": "string" + } + }, + "handlers": { + "create": { + "permissions": [ + "deadline:CreateLicenseEndpoint", + "deadline:GetLicenseEndpoint", + "ec2:CreateTags", + "ec2:CreateVpcEndpoint", + "ec2:DescribeVpcEndpoints" + ] + }, + "delete": { + "permissions": [ + "deadline:GetLicenseEndpoint", + "deadline:DeleteLicenseEndpoint", + "ec2:DeleteVpcEndpoints", + "ec2:DescribeVpcEndpoints" + ] + }, + "list": { + "permissions": [ + "deadline:ListLicenseEndpoints" + ] + }, + "read": { + "permissions": [ + "deadline:GetLicenseEndpoint" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "pattern": "^arn:(aws[a-zA-Z-]*):deadline:[a-z0-9-]+:[0-9]{12}:license-endpoint/le-[0-9a-z]{32}", + "type": "string" + }, + "DnsName": { + "type": "string" + }, + "LicenseEndpointId": { + "pattern": "^le-[0-9a-f]{32}$", + "type": "string" + }, + "SecurityGroupIds": { + "items": { + "type": "string" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" + }, + "Status": { + "$ref": "#/definitions/LicenseEndpointStatus" + }, + "StatusMessage": { + "maxLength": 1024, + "minLength": 0, + "type": "string" + }, + "SubnetIds": { + "items": { + "maxLength": 32, + "minLength": 1, + "type": "string" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" + }, + "VpcId": { + "maxLength": 32, + "minLength": 1, + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/DnsName", + "/properties/LicenseEndpointId", + "/properties/Status", + "/properties/StatusMessage", + "/properties/Arn" + ], + "required": [ + "SecurityGroupIds", + "SubnetIds", + "VpcId" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Deadline::LicenseEndpoint" +} diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-deadline-meteredproduct.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-deadline-meteredproduct.json new file mode 100644 index 0000000000..6a160bacd6 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-deadline-meteredproduct.json @@ -0,0 +1,85 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/LicenseEndpointId", + "/properties/ProductId" + ], + "handlers": { + "create": { + "permissions": [ + "deadline:PutMeteredProduct", + "deadline:ListMeteredProducts" + ] + }, + "delete": { + "permissions": [ + "deadline:DeleteMeteredProduct", + "deadline:ListMeteredProducts" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "LicenseEndpointId": { + "$ref": "resource-schema.json#/properties/LicenseEndpointId" + } + }, + "required": [ + "LicenseEndpointId" + ] + }, + "permissions": [ + "deadline:ListMeteredProducts" + ] + }, + "read": { + "permissions": [ + "deadline:GetMeteredProduct", + "deadline:ListMeteredProducts" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "pattern": "^arn:(aws[a-zA-Z-]*):deadline:[a-z0-9-]+:[0-9]{12}:license-endpoint/le-[0-9a-z]{32}/metered-product/[0-9a-z]{1,32}-[.0-9a-z]{1,32}", + "type": "string" + }, + "Family": { + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "LicenseEndpointId": { + "pattern": "^le-[0-9a-f]{32}$", + "type": "string" + }, + "Port": { + "maximum": 65535, + "minimum": 1024, + "type": "integer" + }, + "ProductId": { + "pattern": "^[0-9a-z]{1,32}-[.0-9a-z]{1,32}$", + "type": "string" + }, + "Vendor": { + "maxLength": 64, + "minLength": 1, + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-deadline", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Deadline::MeteredProduct" +} diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-deadline-queue.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-deadline-queue.json new file mode 100644 index 0000000000..e159b904be --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-deadline-queue.json @@ -0,0 +1,238 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/FarmId" + ], + "definitions": { + "DefaultQueueBudgetAction": { + "default": "NONE", + "enum": [ + "NONE", + "STOP_SCHEDULING_AND_COMPLETE_TASKS", + "STOP_SCHEDULING_AND_CANCEL_TASKS" + ], + "type": "string" + }, + "JobAttachmentSettings": { + "additionalProperties": false, + "properties": { + "RootPrefix": { + "maxLength": 63, + "minLength": 1, + "type": "string" + }, + "S3BucketName": { + "maxLength": 63, + "minLength": 3, + "pattern": "(?!^(\\d+\\.)+\\d+$)(^(([a-z0-9]|[a-z0-9][a-z0-9\\-]*[a-z0-9])\\.)*([a-z0-9]|[a-z0-9][a-z0-9\\-]*[a-z0-9])$)", + "type": "string" + } + }, + "required": [ + "RootPrefix", + "S3BucketName" + ], + "type": "object" + }, + "JobRunAsUser": { + "additionalProperties": false, + "properties": { + "Posix": { + "$ref": "#/definitions/PosixUser" + }, + "RunAs": { + "$ref": "#/definitions/RunAs" + }, + "Windows": { + "$ref": "#/definitions/WindowsUser" + } + }, + "required": [ + "RunAs" + ], + "type": "object" + }, + "PosixUser": { + "additionalProperties": false, + "properties": { + "Group": { + "maxLength": 31, + "minLength": 0, + "pattern": "^(?:[a-z][a-z0-9-]{0,30})?$", + "type": "string" + }, + "User": { + "maxLength": 31, + "minLength": 0, + "pattern": "^(?:[a-z][a-z0-9-]{0,30})?$", + "type": "string" + } + }, + "required": [ + "Group", + "User" + ], + "type": "object" + }, + "RunAs": { + "enum": [ + "QUEUE_CONFIGURED_USER", + "WORKER_AGENT_USER" + ], + "type": "string" + }, + "WindowsUser": { + "additionalProperties": false, + "properties": { + "PasswordArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:(aws[a-zA-Z-]*):secretsmanager:[a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\\d{1}:\\d{12}:secret:[a-zA-Z0-9-/_+=.@]{1,2028}$", + "type": "string" + }, + "User": { + "maxLength": 111, + "minLength": 0, + "pattern": "^[^\"'/\\[\\]:;|=,+*?<>\\s]*$", + "type": "string" + } + }, + "required": [ + "PasswordArn", + "User" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "deadline:CreateQueue", + "deadline:GetQueue", + "iam:PassRole", + "identitystore:ListGroupMembershipsForMember", + "logs:CreateLogGroup", + "s3:ListBucket" + ] + }, + "delete": { + "permissions": [ + "deadline:DeleteQueue", + "deadline:GetQueue", + "identitystore:ListGroupMembershipsForMember" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "FarmId": { + "$ref": "resource-schema.json#/properties/FarmId" + } + }, + "required": [ + "FarmId" + ] + }, + "permissions": [ + "deadline:ListQueues", + "identitystore:DescribeGroup", + "identitystore:DescribeUser", + "identitystore:ListGroupMembershipsForMember" + ] + }, + "read": { + "permissions": [ + "deadline:GetQueue", + "identitystore:ListGroupMembershipsForMember" + ] + }, + "update": { + "permissions": [ + "deadline:UpdateQueue", + "deadline:GetQueue", + "iam:PassRole", + "identitystore:ListGroupMembershipsForMember", + "logs:CreateLogGroup", + "s3:ListBucket" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "AllowedStorageProfileIds": { + "items": { + "pattern": "^sp-[0-9a-f]{32}$", + "type": "string" + }, + "maxItems": 20, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "Arn": { + "pattern": "^arn:*", + "type": "string" + }, + "DefaultBudgetAction": { + "$ref": "#/definitions/DefaultQueueBudgetAction" + }, + "Description": { + "default": "", + "maxLength": 100, + "minLength": 0, + "type": "string" + }, + "DisplayName": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "FarmId": { + "pattern": "^farm-[0-9a-f]{32}$", + "type": "string" + }, + "JobAttachmentSettings": { + "$ref": "#/definitions/JobAttachmentSettings" + }, + "JobRunAsUser": { + "$ref": "#/definitions/JobRunAsUser" + }, + "QueueId": { + "pattern": "^queue-[0-9a-f]{32}$", + "type": "string" + }, + "RequiredFileSystemLocationNames": { + "items": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[0-9A-Za-z ]*$", + "type": "string" + }, + "maxItems": 20, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "RoleArn": { + "pattern": "^arn:(aws[a-zA-Z-]*):iam::\\d{12}:role(/[!-.0-~]+)*/[\\w+=,.@-]+$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/QueueId", + "/properties/Arn" + ], + "required": [ + "DisplayName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-deadline", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Deadline::Queue" +} diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-deadline-queueenvironment.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-deadline-queueenvironment.json new file mode 100644 index 0000000000..031a56e612 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-deadline-queueenvironment.json @@ -0,0 +1,117 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/FarmId", + "/properties/QueueId" + ], + "definitions": { + "EnvironmentTemplateType": { + "enum": [ + "JSON", + "YAML" + ], + "type": "string" + } + }, + "handlers": { + "create": { + "permissions": [ + "deadline:CreateQueueEnvironment", + "identitystore:ListGroupMembershipsForMember" + ] + }, + "delete": { + "permissions": [ + "deadline:DeleteQueueEnvironment", + "deadline:GetQueueEnvironment", + "identitystore:ListGroupMembershipsForMember" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "FarmId": { + "$ref": "resource-schema.json#/properties/FarmId" + }, + "QueueId": { + "$ref": "resource-schema.json#/properties/QueueId" + } + }, + "required": [ + "FarmId", + "QueueId" + ] + }, + "permissions": [ + "deadline:ListQueueEnvironments", + "identitystore:ListGroupMembershipsForMember" + ] + }, + "read": { + "permissions": [ + "deadline:GetQueueEnvironment", + "identitystore:ListGroupMembershipsForMember" + ] + }, + "update": { + "permissions": [ + "deadline:UpdateQueueEnvironment", + "identitystore:ListGroupMembershipsForMember" + ] + } + }, + "primaryIdentifier": [ + "/properties/FarmId", + "/properties/QueueId", + "/properties/QueueEnvironmentId" + ], + "properties": { + "FarmId": { + "pattern": "^farm-[0-9a-f]{32}$", + "type": "string" + }, + "Name": { + "type": "string" + }, + "Priority": { + "maximum": 10000, + "minimum": 0, + "type": "integer" + }, + "QueueEnvironmentId": { + "pattern": "^queueenv-[0-9a-f]{32}$", + "type": "string" + }, + "QueueId": { + "pattern": "^queue-[0-9a-f]{32}$", + "type": "string" + }, + "Template": { + "maxLength": 15000, + "minLength": 1, + "type": "string" + }, + "TemplateType": { + "$ref": "#/definitions/EnvironmentTemplateType" + } + }, + "readOnlyProperties": [ + "/properties/Name", + "/properties/QueueEnvironmentId" + ], + "required": [ + "FarmId", + "QueueId", + "Priority", + "Template", + "TemplateType" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-deadline", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Deadline::QueueEnvironment" +} diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-deadline-queuefleetassociation.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-deadline-queuefleetassociation.json new file mode 100644 index 0000000000..89c8fe7ff1 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-deadline-queuefleetassociation.json @@ -0,0 +1,79 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/FarmId", + "/properties/FleetId", + "/properties/QueueId" + ], + "handlers": { + "create": { + "permissions": [ + "deadline:CreateQueueFleetAssociation", + "deadline:GetQueueFleetAssociation", + "identitystore:ListGroupMembershipsForMember" + ] + }, + "delete": { + "permissions": [ + "deadline:DeleteQueueFleetAssociation", + "deadline:GetQueueFleetAssociation", + "deadline:UpdateQueueFleetAssociation", + "identitystore:ListGroupMembershipsForMember" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "FarmId": { + "$ref": "resource-schema.json#/properties/FarmId" + } + }, + "required": [ + "FarmId" + ] + }, + "permissions": [ + "deadline:ListQueueFleetAssociations", + "identitystore:ListGroupMembershipsForMember" + ] + }, + "read": { + "permissions": [ + "deadline:GetQueueFleetAssociation", + "identitystore:ListGroupMembershipsForMember" + ] + } + }, + "primaryIdentifier": [ + "/properties/FarmId", + "/properties/FleetId", + "/properties/QueueId" + ], + "properties": { + "FarmId": { + "pattern": "^farm-[0-9a-f]{32}$", + "type": "string" + }, + "FleetId": { + "pattern": "^fleet-[0-9a-f]{32}$", + "type": "string" + }, + "QueueId": { + "pattern": "^queue-[0-9a-f]{32}$", + "type": "string" + } + }, + "required": [ + "FarmId", + "FleetId", + "QueueId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-deadline", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Deadline::QueueFleetAssociation" +} diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-deadline-storageprofile.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-deadline-storageprofile.json new file mode 100644 index 0000000000..47def71914 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-deadline-storageprofile.json @@ -0,0 +1,138 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/FarmId" + ], + "definitions": { + "FileSystemLocation": { + "additionalProperties": false, + "properties": { + "Name": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[0-9A-Za-z ]*$", + "type": "string" + }, + "Path": { + "maxLength": 1024, + "minLength": 0, + "type": "string" + }, + "Type": { + "$ref": "#/definitions/FileSystemLocationType" + } + }, + "required": [ + "Name", + "Path", + "Type" + ], + "type": "object" + }, + "FileSystemLocationType": { + "enum": [ + "SHARED", + "LOCAL" + ], + "type": "string" + }, + "StorageProfileOperatingSystemFamily": { + "enum": [ + "WINDOWS", + "LINUX", + "MACOS" + ], + "type": "string" + } + }, + "handlers": { + "create": { + "permissions": [ + "deadline:CreateStorageProfile", + "deadline:GetStorageProfile", + "identitystore:ListGroupMembershipsForMember" + ] + }, + "delete": { + "permissions": [ + "deadline:DeleteStorageProfile", + "deadline:GetStorageProfile", + "identitystore:ListGroupMembershipsForMember" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "FarmId": { + "$ref": "resource-schema.json#/properties/FarmId" + } + }, + "required": [ + "FarmId" + ] + }, + "permissions": [ + "deadline:ListStorageProfiles", + "identitystore:ListGroupMembershipsForMember" + ] + }, + "read": { + "permissions": [ + "deadline:GetStorageProfile", + "identitystore:ListGroupMembershipsForMember" + ] + }, + "update": { + "permissions": [ + "deadline:UpdateStorageProfile", + "deadline:GetStorageProfile", + "identitystore:ListGroupMembershipsForMember" + ] + } + }, + "primaryIdentifier": [ + "/properties/FarmId", + "/properties/StorageProfileId" + ], + "properties": { + "DisplayName": { + "maxLength": 100, + "minLength": 1, + "type": "string" + }, + "FarmId": { + "pattern": "^farm-[0-9a-f]{32}$", + "type": "string" + }, + "FileSystemLocations": { + "items": { + "$ref": "#/definitions/FileSystemLocation" + }, + "maxItems": 20, + "minItems": 0, + "type": "array" + }, + "OsFamily": { + "$ref": "#/definitions/StorageProfileOperatingSystemFamily" + }, + "StorageProfileId": { + "pattern": "^sp-[0-9a-f]{32}$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/StorageProfileId" + ], + "required": [ + "DisplayName", + "OsFamily" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-deadline", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::Deadline::StorageProfile" +} diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-docdbelastic-cluster.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-docdbelastic-cluster.json index eaa74b7fd0..ad772b7ace 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-docdbelastic-cluster.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-docdbelastic-cluster.json @@ -33,6 +33,9 @@ "create": { "permissions": [ "docdb-elastic:CreateCluster", + "docdb-elastic:TagResource", + "docdb-elastic:GetCluster", + "docdb-elastic:ListTagsForResource", "ec2:CreateVpcEndpoint", "ec2:DescribeVpcEndpoints", "ec2:DeleteVpcEndpoints", @@ -57,6 +60,7 @@ "delete": { "permissions": [ "docdb-elastic:DeleteCluster", + "docdb-elastic:GetCluster", "ec2:DescribeVpcEndpoints", "ec2:DeleteVpcEndpoints", "ec2:ModifyVpcEndpoint", @@ -83,6 +87,8 @@ "docdb-elastic:UpdateCluster", "docdb-elastic:TagResource", "docdb-elastic:UntagResource", + "docdb-elastic:GetCluster", + "docdb-elastic:ListTagsForResource", "ec2:CreateVpcEndpoint", "ec2:DescribeVpcEndpoints", "ec2:DeleteVpcEndpoints", @@ -117,6 +123,9 @@ "AuthType": { "type": "string" }, + "BackupRetentionPeriod": { + "type": "integer" + }, "ClusterArn": { "type": "string" }, @@ -132,6 +141,9 @@ "KmsKeyId": { "type": "string" }, + "PreferredBackupWindow": { + "type": "string" + }, "PreferredMaintenanceWindow": { "type": "string" }, @@ -141,6 +153,9 @@ "ShardCount": { "type": "integer" }, + "ShardInstanceCount": { + "type": "integer" + }, "SubnetIds": { "insertionOrder": false, "items": { diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-dynamodb-globaltable.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-dynamodb-globaltable.json index 0d52690763..2ae3432be1 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-dynamodb-globaltable.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-dynamodb-globaltable.json @@ -8,6 +8,27 @@ ] ], "additionalProperties": false, + "allOf": [ + { + "if": { + "required": [ + "LocalSecondaryIndexes" + ], + "type": "object" + }, + "then": { + "properties": { + "AttributeDefinitions": { + "minItems": 2 + }, + "KeySchema": { + "minItems": 2 + } + }, + "type": "object" + } + } + ], "createOnlyProperties": [ "/properties/LocalSecondaryIndexes", "/properties/TableName", @@ -79,13 +100,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "minItems": 1, - "type": "array", - "uniqueItems": true + "minItems": 1 }, "Projection": { "$ref": "#/definitions/Projection" @@ -102,22 +119,60 @@ "type": "object" }, "KeySchema": { - "additionalProperties": false, - "properties": { - "AttributeName": { - "maxLength": 255, - "minLength": 1, - "type": "string" + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "KeyType": { + "enum": [ + "HASH", + "RANGE" + ], + "type": "string" + } }, - "KeyType": { - "type": "string" - } + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" }, - "required": [ - "KeyType", - "AttributeName" + "prefixItems": [ + { + "additionalProperties": false, + "properties": { + "KeyType": { + "const": "HASH", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + }, + { + "properties": { + "KeyType": { + "const": "RANGE", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + } ], - "type": "object" + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "KinesisStreamSpecification": { "additionalProperties": false, @@ -130,6 +185,10 @@ "type": "string" }, "StreamArn": { + "relationshipRef": { + "propertyPath": "/properties/Arn", + "typeName": "AWS::Kinesis::Stream" + }, "type": "string" } }, @@ -147,12 +206,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "type": "array", - "uniqueItems": true + "minItems": 2 }, "Projection": { "$ref": "#/definitions/Projection" @@ -229,6 +285,26 @@ "additionalProperties": false, "properties": { "KMSMasterKeyId": { + "anyOf": [ + { + "relationshipRef": { + "propertyPath": "/properties/Arn", + "typeName": "AWS::KMS::Key" + } + }, + { + "relationshipRef": { + "propertyPath": "/properties/KeyId", + "typeName": "AWS::KMS::Key" + } + }, + { + "relationshipRef": { + "propertyPath": "/properties/AliasName", + "typeName": "AWS::KMS::Alias" + } + } + ], "type": "string" } }, @@ -541,7 +617,10 @@ }, "minItems": 1, "type": "array", - "uniqueItems": true + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "BillingMode": { "type": "string" @@ -555,13 +634,9 @@ "uniqueItems": true }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "minItems": 1, - "type": "array", - "uniqueItems": true + "minItems": 1 }, "LocalSecondaryIndexes": { "insertionOrder": false, diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-dynamodb-table.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-dynamodb-table.json index 55f974db0b..b883ca8f0e 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-dynamodb-table.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-dynamodb-table.json @@ -1,5 +1,26 @@ { "additionalProperties": false, + "allOf": [ + { + "if": { + "required": [ + "LocalSecondaryIndexes" + ], + "type": "object" + }, + "then": { + "properties": { + "AttributeDefinitions": { + "minItems": 2 + }, + "KeySchema": { + "minItems": 2 + } + }, + "type": "object" + } + } + ], "cfnLint": [ "AWS::DynamoDB::Table/Properties" ], @@ -95,11 +116,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 }, "Projection": { "$ref": "#/definitions/Projection" @@ -147,24 +166,57 @@ "type": "object" }, "KeySchema": { - "additionalProperties": false, - "properties": { - "AttributeName": { - "type": "string" + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "type": "string" + }, + "KeyType": { + "enum": [ + "HASH", + "RANGE" + ], + "type": "string" + } }, - "KeyType": { - "enum": [ - "HASH", - "RANGE" + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" + }, + "prefixItems": [ + { + "properties": { + "KeyType": { + "const": "HASH", + "type": "string" + } + }, + "required": [ + "KeyType" ], - "type": "string" + "type": "object" + }, + { + "properties": { + "KeyType": { + "const": "RANGE", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" } - }, - "required": [ - "KeyType", - "AttributeName" ], - "type": "object" + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "KinesisStreamSpecification": { "additionalProperties": false, @@ -177,6 +229,10 @@ "type": "string" }, "StreamArn": { + "relationshipRef": { + "propertyPath": "/properties/Arn", + "typeName": "AWS::Kinesis::Stream" + }, "type": "string" } }, @@ -192,11 +248,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 2 }, "Projection": { "$ref": "#/definitions/Projection" @@ -271,6 +325,10 @@ "additionalProperties": false, "properties": { "S3Bucket": { + "relationshipRef": { + "propertyPath": "/properties/BucketName", + "typeName": "AWS::S3::Bucket" + }, "type": "string" }, "S3BucketOwner": { @@ -292,6 +350,26 @@ ], "properties": { "KMSMasterKeyId": { + "anyOf": [ + { + "relationshipRef": { + "propertyPath": "/properties/Arn", + "typeName": "AWS::KMS::Key" + } + }, + { + "relationshipRef": { + "propertyPath": "/properties/KeyId", + "typeName": "AWS::KMS::Key" + } + }, + { + "relationshipRef": { + "propertyPath": "/properties/AliasName", + "typeName": "AWS::KMS::Alias" + } + } + ], "type": "string" }, "SSEEnabled": { @@ -466,7 +544,10 @@ "$ref": "#/definitions/AttributeDefinition" }, "type": "array", - "uniqueItems": true + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "BillingMode": { "enum": [ @@ -494,11 +575,9 @@ "KeySchema": { "oneOf": [ { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 }, { "type": "object" 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 01bba4b8ab..5498e27a8f 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 @@ -564,9 +564,6 @@ "properties": { "AutoRecovery": { "type": "string" - }, - "RebootMigration": { - "type": "string" } }, "type": "object" diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-securitygroup.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-securitygroup.json index f76b4ecc6c..be5f3b528b 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-securitygroup.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-securitygroup.json @@ -35,9 +35,6 @@ "IpProtocol": { "type": "string" }, - "SourceSecurityGroupId": { - "type": "string" - }, "ToPort": { "minimum": -1, "type": "integer" @@ -127,9 +124,6 @@ "VpcId" ] }, - "deprecatedProperties": [ - "/properties/SecurityGroupEgress/*/SourceSecurityGroupId" - ], "handlers": { "create": { "permissions": [ @@ -216,6 +210,14 @@ "type": "string" } }, + "propertyTransform": { + "/properties/SecurityGroupEgress/*/FromPort": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$ipProtocol := $mapVal ? $mapVal : $lowercase(IpProtocol);$ipProtocol in ['imcp', 'tcp', 'udp', 'imcp'] ? FromPort : -1)", + "/properties/SecurityGroupEgress/*/IpProtocol": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$mapVal ? $mapVal : $lowercase(IpProtocol))", + "/properties/SecurityGroupEgress/*/ToPort": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$ipProtocol := $mapVal ? $mapVal : $lowercase(IpProtocol);$ipProtocol in ['imcp', 'tcp', 'udp', 'imcp'] ? ToPort : -1)", + "/properties/SecurityGroupIngress/*/FromPort": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$ipProtocol := $mapVal ? $mapVal : $lowercase(IpProtocol);$ipProtocol in ['imcp', 'tcp', 'udp', 'imcp'] ? FromPort : -1)", + "/properties/SecurityGroupIngress/*/IpProtocol": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$mapVal ? $mapVal : $lowercase(IpProtocol))", + "/properties/SecurityGroupIngress/*/ToPort": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$ipProtocol := $mapVal ? $mapVal : $lowercase(IpProtocol);$ipProtocol in ['imcp', 'tcp', 'udp', 'imcp'] ? ToPort : -1)" + }, "readOnlyProperties": [ "/properties/Id", "/properties/GroupId" diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-securitygroupegress.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-securitygroupegress.json index f94631dad2..ebe18001e8 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-securitygroupegress.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-securitygroupegress.json @@ -80,6 +80,11 @@ "type": "integer" } }, + "propertyTransform": { + "/properties/FromPort": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$ipProtocol := $mapVal ? $mapVal : $lowercase(IpProtocol);$ipProtocol in ['imcp', 'tcp', 'udp', 'imcp'] ? FromPort : -1)", + "/properties/IpProtocol": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$mapVal ? $mapVal : $lowercase(IpProtocol))", + "/properties/ToPort": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$ipProtocol := $mapVal ? $mapVal : $lowercase(IpProtocol);$ipProtocol in ['imcp', 'tcp', 'udp', 'imcp'] ? ToPort : -1)" + }, "readOnlyProperties": [ "/properties/Id" ], 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 c27da994c3..22edc4e5d5 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 @@ -93,6 +93,9 @@ "EnableDns64": { "type": "boolean" }, + "EnableLniAtDeviceIndex": { + "type": "integer" + }, "Ipv4IpamPoolId": { "type": "string" }, @@ -172,6 +175,7 @@ }, "typeName": "AWS::EC2::Subnet", "writeOnlyProperties": [ + "/properties/EnableLniAtDeviceIndex", "/properties/Ipv4IpamPoolId", "/properties/Ipv4NetmaskLength", "/properties/Ipv6IpamPoolId", diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-transitgatewayroutetableassociation.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-transitgatewayroutetableassociation.json index 890b2c4be2..d1da7ffa8c 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-transitgatewayroutetableassociation.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-transitgatewayroutetableassociation.json @@ -4,13 +4,46 @@ "/properties/TransitGatewayRouteTableId", "/properties/TransitGatewayAttachmentId" ], + "definitions": {}, + "handlers": { + "create": { + "permissions": [ + "ec2:AssociateTransitGatewayRouteTable", + "ec2:GetTransitGatewayRouteTableAssociations" + ] + }, + "delete": { + "permissions": [ + "ec2:GetTransitGatewayRouteTableAssociations", + "ec2:DisassociateTransitGatewayRouteTable" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "TransitGatewayRouteTableId": { + "$ref": "resource-schema.json#/properties/TransitGatewayRouteTableId" + } + }, + "required": [ + "TransitGatewayRouteTableId" + ] + }, + "permissions": [ + "ec2:GetTransitGatewayRouteTableAssociations" + ] + }, + "read": { + "permissions": [ + "ec2:GetTransitGatewayRouteTableAssociations" + ] + } + }, "primaryIdentifier": [ - "/properties/Id" + "/properties/TransitGatewayRouteTableId", + "/properties/TransitGatewayAttachmentId" ], "properties": { - "Id": { - "type": "string" - }, "TransitGatewayAttachmentId": { "type": "string" }, @@ -18,12 +51,17 @@ "type": "string" } }, - "readOnlyProperties": [ - "/properties/Id" - ], + "replacementStrategy": "delete_then_create", "required": [ "TransitGatewayRouteTableId", "TransitGatewayAttachmentId" ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-transitgateway.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, "typeName": "AWS::EC2::TransitGatewayRouteTableAssociation" } 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 decf420b9b..1edb40abaa 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 @@ -85,7 +85,6 @@ "readOnlyProperties": [ "/properties/Id" ], - "replacementStrategy": "delete_then_create", "required": [ "VpcId" ], diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-ecr-pullthroughcacherule.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-ecr-pullthroughcacherule.json index 4302d918c4..0ee5af15ab 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-ecr-pullthroughcacherule.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-ecr-pullthroughcacherule.json @@ -117,7 +117,9 @@ } }, "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ecr.git", - "taggable": false, + "tagging": { + "taggable": false + }, "typeName": "AWS::ECR::PullThroughCacheRule", "writeOnlyProperties": [ "/properties/CredentialArn", diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-ecr-registrypolicy.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-ecr-registrypolicy.json index 2635f36090..21c904f1bf 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-ecr-registrypolicy.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-ecr-registrypolicy.json @@ -55,5 +55,8 @@ "PolicyText" ], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ecr.git", + "tagging": { + "taggable": false + }, "typeName": "AWS::ECR::RegistryPolicy" } diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-ecr-replicationconfiguration.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-ecr-replicationconfiguration.json index 9fe08d4e84..f69e98a4cc 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-ecr-replicationconfiguration.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-ecr-replicationconfiguration.json @@ -145,5 +145,8 @@ "ReplicationConfiguration" ], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ecr.git", + "tagging": { + "taggable": false + }, "typeName": "AWS::ECR::ReplicationConfiguration" } diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-ecr-repository.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-ecr-repository.json index 1e329b7baf..8c60194618 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-ecr-repository.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-ecr-repository.json @@ -201,6 +201,13 @@ "/properties/RepositoryUri" ], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ecr.git", + "tagging": { + "cloudFormationSystemTags": true, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, "typeName": "AWS::ECR::Repository", "writeOnlyProperties": [ "/properties/EmptyOnDelete" diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-ecs-taskdefinition.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-ecs-taskdefinition.json index f2828c8fcd..14d5d5d40a 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-ecs-taskdefinition.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-ecs-taskdefinition.json @@ -365,6 +365,41 @@ }, "type": "object" }, + "FSxAuthorizationConfig": { + "additionalProperties": false, + "properties": { + "CredentialsParameter": { + "type": "string" + }, + "Domain": { + "type": "string" + } + }, + "required": [ + "CredentialsParameter", + "Domain" + ], + "type": "object" + }, + "FSxWindowsFileServerVolumeConfiguration": { + "additionalProperties": false, + "properties": { + "AuthorizationConfig": { + "$ref": "#/definitions/FSxAuthorizationConfig" + }, + "FileSystemId": { + "type": "string" + }, + "RootDirectory": { + "type": "string" + } + }, + "required": [ + "FileSystemId", + "RootDirectory" + ], + "type": "object" + }, "FirelensConfiguration": { "additionalProperties": false, "properties": { @@ -755,6 +790,9 @@ "EFSVolumeConfiguration": { "$ref": "#/definitions/EFSVolumeConfiguration" }, + "FSxWindowsFileServerVolumeConfiguration": { + "$ref": "#/definitions/FSxWindowsFileServerVolumeConfiguration" + }, "Host": { "$ref": "#/definitions/HostVolumeProperties" }, diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-elasticache-serverlesscache.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-elasticache-serverlesscache.json index 7ad43dccf2..7e7123e0d7 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-elasticache-serverlesscache.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-elasticache-serverlesscache.json @@ -27,6 +27,9 @@ "Maximum": { "type": "integer" }, + "Minimum": { + "type": "integer" + }, "Unit": { "enum": [ "GB" @@ -35,7 +38,6 @@ } }, "required": [ - "Maximum", "Unit" ], "type": "object" @@ -45,11 +47,11 @@ "properties": { "Maximum": { "type": "integer" + }, + "Minimum": { + "type": "integer" } }, - "required": [ - "Maximum" - ], "type": "object" }, "Endpoint": { diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-elasticache-user.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-elasticache-user.json index 5247af8ac3..0775783108 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-elasticache-user.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-elasticache-user.json @@ -33,7 +33,8 @@ "permissions": [ "elasticache:CreateUser", "elasticache:DescribeUsers", - "elasticache:ListTagsForResource" + "elasticache:ListTagsForResource", + "elasticache:AddTagsToResource" ] }, "delete": { diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-elasticache-usergroup.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-elasticache-usergroup.json index 0a33952e4f..285e73b7c4 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-elasticache-usergroup.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-elasticache-usergroup.json @@ -32,7 +32,8 @@ "permissions": [ "elasticache:CreateUserGroup", "elasticache:DescribeUserGroups", - "elasticache:ListTagsForResource" + "elasticache:ListTagsForResource", + "elasticache:AddTagsToResource" ] }, "delete": { diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-emr-studiosessionmapping.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-emr-studiosessionmapping.json index a2e2d43a5a..a12ee321c4 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-emr-studiosessionmapping.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-emr-studiosessionmapping.json @@ -20,6 +20,7 @@ "sso-directory:SearchGroups", "sso-directory:DescribeUser", "sso-directory:DescribeGroup", + "sso:GetManagedApplicationInstance", "sso:ListDirectoryAssociations", "sso:GetProfile", "sso:ListProfiles", diff --git a/src/cfnlint/data/schemas/providers/us_east_2/aws-entityresolution-idmappingworkflow.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-entityresolution-idnamespace.json similarity index 50% rename from src/cfnlint/data/schemas/providers/us_east_2/aws-entityresolution-idmappingworkflow.json rename to src/cfnlint/data/schemas/providers/us_east_1/aws-entityresolution-idnamespace.json index 814d9d9720..8ae32b9527 100644 --- a/src/cfnlint/data/schemas/providers/us_east_2/aws-entityresolution-idmappingworkflow.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-entityresolution-idnamespace.json @@ -1,30 +1,16 @@ { "additionalProperties": false, "createOnlyProperties": [ - "/properties/WorkflowName" + "/properties/IdNamespaceName" ], "definitions": { - "AttributeName": { - "maxLength": 255, - "minLength": 0, - "pattern": "^[a-zA-Z_0-9- \\t]*$", - "type": "string" - }, - "CreatedAt": { - "type": "string" - }, - "Description": { - "maxLength": 255, - "minLength": 0, - "type": "string" - }, "EntityName": { "maxLength": 255, - "minLength": 0, + "minLength": 1, "pattern": "^[a-zA-Z_0-9-]*$", "type": "string" }, - "IdMappingTechniques": { + "IdNamespaceIdMappingWorkflowProperties": { "additionalProperties": false, "properties": { "IdMappingType": { @@ -34,71 +20,33 @@ "type": "string" }, "ProviderProperties": { - "$ref": "#/definitions/ProviderProperties" - } - }, - "type": "object" - }, - "IdMappingWorkflowArn": { - "pattern": "^arn:(aws|aws-us-gov|aws-cn):entityresolution:.*:[0-9]+:(idmappingworkflow/.*)$", - "type": "string" - }, - "IdMappingWorkflowInputSource": { - "additionalProperties": false, - "properties": { - "InputSourceARN": { - "pattern": "arn:(aws|aws-us-gov|aws-cn):.*:.*:[0-9]+:.*$", - "type": "string" - }, - "SchemaArn": { - "$ref": "#/definitions/SchemaMappingArn", - "type": "string" - } - }, - "required": [ - "InputSourceARN", - "SchemaArn" - ], - "type": "object" - }, - "IdMappingWorkflowOutputSource": { - "additionalProperties": false, - "properties": { - "KMSArn": { - "$ref": "#/definitions/KMSArn" - }, - "OutputS3Path": { - "pattern": "^s3://([^/]+)/?(.*?([^/]+)/?)$", - "type": "string" + "$ref": "#/definitions/NamespaceProviderProperties" } }, "required": [ - "OutputS3Path" + "IdMappingType" ], "type": "object" }, - "IntermediateSourceConfiguration": { + "IdNamespaceInputSource": { "additionalProperties": false, "properties": { - "IntermediateS3Path": { + "InputSourceARN": { + "pattern": "^arn:(aws|aws-us-gov|aws-cn):entityresolution:[a-z]{2}-[a-z]{1,10}-[0-9]:[0-9]{12}:(idnamespace/[a-zA-Z_0-9-]{1,255})$|^arn:(aws|aws-us-gov|aws-cn):glue:[a-z]{2}-[a-z]{1,10}-[0-9]:[0-9]{12}:(table/[a-zA-Z_0-9-]{1,255}/[a-zA-Z_0-9-]{1,255})$", "type": "string" + }, + "SchemaName": { + "$ref": "#/definitions/EntityName" } }, "required": [ - "IntermediateS3Path" + "InputSourceARN" ], "type": "object" }, - "KMSArn": { - "pattern": "^arn:(aws|aws-us-gov|aws-cn):kms:.*:[0-9]+:.*$", - "type": "string" - }, - "ProviderProperties": { + "NamespaceProviderProperties": { "additionalProperties": false, "properties": { - "IntermediateSourceConfiguration": { - "$ref": "#/definitions/IntermediateSourceConfiguration" - }, "ProviderConfiguration": { "additionalProperties": false, "patternProperties": { @@ -109,8 +57,7 @@ "type": "object" }, "ProviderServiceArn": { - "pattern": "^arn:(aws|aws-us-gov|aws-cn):entityresolution:([A-Za-z0-9]+(-[A-Za-z0-9]+)+)::providerservice/[A-Za-z0-9]+/[A-Za-z0-9]+$", - "type": "string" + "$ref": "#/definitions/ProviderServiceArn" } }, "required": [ @@ -118,8 +65,10 @@ ], "type": "object" }, - "SchemaMappingArn": { - "pattern": "^arn:(aws|aws-us-gov|aws-cn):entityresolution:.*:[0-9]+:(schemamapping/.*)$", + "ProviderServiceArn": { + "maxLength": 255, + "minLength": 20, + "pattern": "^arn:(aws|aws-us-gov|aws-cn):(entityresolution):([a-z]{2}-[a-z]{1,10}-[0-9])::providerservice/([a-zA-Z0-9_-]{1,255})/([a-zA-Z0-9_-]{1,255})$", "type": "string" }, "Tag": { @@ -141,85 +90,84 @@ "Value" ], "type": "object" - }, - "UpdatedAt": { - "type": "string" } }, "handlers": { "create": { "permissions": [ - "entityresolution:CreateIdMappingWorkflow", - "entityresolution:GetIdMappingWorkflow", + "entityresolution:CreateIdNamespace", "entityresolution:TagResource", - "kms:CreateGrant", - "kms:DescribeKey", "iam:PassRole" ] }, "delete": { "permissions": [ - "entityresolution:DeleteIdMappingWorkflow", - "entityresolution:GetIdMappingWorkflow", + "entityresolution:DeleteIdNamespace", + "entityresolution:GetIdNamespace", "entityresolution:UntagResource" ] }, "list": { "permissions": [ - "entityresolution:ListIdMappingWorkflows" + "entityresolution:ListIdNamespaces" ] }, "read": { "permissions": [ - "entityresolution:GetIdMappingWorkflow", + "entityresolution:GetIdNamespace", "entityresolution:ListTagsForResource" ] }, "update": { "permissions": [ - "entityresolution:GetIdMappingWorkflow", - "entityresolution:UpdateIdMappingWorkflow", + "entityresolution:UpdateIdNamespace", "entityresolution:ListTagsForResource", "entityresolution:TagResource", "entityresolution:UntagResource", - "iam:PassRole", - "kms:CreateGrant", - "kms:DescribeKey" + "iam:PassRole" ] } }, "primaryIdentifier": [ - "/properties/WorkflowName" + "/properties/IdNamespaceName" ], "properties": { "CreatedAt": { - "$ref": "#/definitions/CreatedAt" + "type": "string" }, "Description": { - "$ref": "#/definitions/Description" - }, - "IdMappingTechniques": { - "$ref": "#/definitions/IdMappingTechniques" + "maxLength": 255, + "minLength": 0, + "type": "string" }, - "InputSourceConfig": { + "IdMappingWorkflowProperties": { "insertionOrder": false, "items": { - "$ref": "#/definitions/IdMappingWorkflowInputSource" + "$ref": "#/definitions/IdNamespaceIdMappingWorkflowProperties" }, - "maxItems": 20, + "maxItems": 1, "minItems": 1, "type": "array" }, - "OutputSourceConfig": { + "IdNamespaceArn": { + "pattern": "^arn:(aws|aws-us-gov|aws-cn):entityresolution:[a-z]{2}-[a-z]{1,10}-[0-9]:[0-9]{12}:(idnamespace/[a-zA-Z_0-9-]{1,255})$", + "type": "string" + }, + "IdNamespaceName": { + "$ref": "#/definitions/EntityName" + }, + "InputSourceConfig": { "insertionOrder": false, "items": { - "$ref": "#/definitions/IdMappingWorkflowOutputSource" + "$ref": "#/definitions/IdNamespaceInputSource" }, - "maxItems": 1, - "minItems": 1, + "maxItems": 20, + "minItems": 0, "type": "array" }, "RoleArn": { + "maxLength": 512, + "minLength": 32, "pattern": "^arn:(aws|aws-us-gov|aws-cn):iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", "type": "string" }, @@ -233,27 +181,25 @@ "type": "array", "uniqueItems": true }, - "UpdatedAt": { - "$ref": "#/definitions/UpdatedAt" - }, - "WorkflowArn": { - "$ref": "#/definitions/IdMappingWorkflowArn" + "Type": { + "enum": [ + "SOURCE", + "TARGET" + ], + "type": "string" }, - "WorkflowName": { - "$ref": "#/definitions/EntityName" + "UpdatedAt": { + "type": "string" } }, "readOnlyProperties": [ - "/properties/WorkflowArn", - "/properties/UpdatedAt", - "/properties/CreatedAt" + "/properties/IdNamespaceArn", + "/properties/CreatedAt", + "/properties/UpdatedAt" ], "required": [ - "WorkflowName", - "InputSourceConfig", - "OutputSourceConfig", - "IdMappingTechniques", - "RoleArn" + "IdNamespaceName", + "Type" ], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-entity-resolution.git", "tagging": { @@ -263,5 +209,5 @@ "tagUpdatable": true, "taggable": true }, - "typeName": "AWS::EntityResolution::IdMappingWorkflow" + "typeName": "AWS::EntityResolution::IdNamespace" } diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-entityresolution-policystatement.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-entityresolution-policystatement.json new file mode 100644 index 0000000000..55e5984416 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-entityresolution-policystatement.json @@ -0,0 +1,130 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/StatementId", + "/properties/Arn" + ], + "definitions": { + "StatementAction": { + "maxLength": 64, + "minLength": 3, + "pattern": "^(entityresolution:[a-zA-Z0-9]+)$", + "type": "string" + }, + "StatementActionList": { + "items": { + "$ref": "#/definitions/StatementAction" + }, + "type": "array" + }, + "StatementCondition": { + "maxLength": 40960, + "minLength": 1, + "type": "string" + }, + "StatementEffect": { + "enum": [ + "Allow", + "Deny" + ], + "type": "string" + }, + "StatementId": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[0-9A-Za-z]+$", + "type": "string" + }, + "StatementPrincipal": { + "maxLength": 64, + "minLength": 12, + "pattern": "^(\\\\d{12})|([a-z0-9\\\\.]+)$", + "type": "string" + }, + "StatementPrincipalList": { + "items": { + "$ref": "#/definitions/StatementPrincipal" + }, + "type": "array" + }, + "VeniceGlobalArn": { + "pattern": "^arn:(aws|aws-us-gov|aws-cn):entityresolution:[a-z]{2}-[a-z]{1,10}-[0-9]:[0-9]{12}:((schemamapping|matchingworkflow|idmappingworkflow|idnamespace)/[a-zA-Z_0-9-]{1,255})$", + "type": "string" + } + }, + "handlers": { + "create": { + "permissions": [ + "entityresolution:AddPolicyStatement" + ] + }, + "delete": { + "permissions": [ + "entityresolution:DeletePolicyStatement", + "entityresolution:GetPolicy" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "Arn": { + "$ref": "resource-schema.json#/properties/Arn" + } + }, + "required": [ + "Arn" + ] + }, + "permissions": [ + "entityresolution:GetPolicy" + ] + }, + "read": { + "permissions": [ + "entityresolution:GetPolicy" + ] + }, + "update": { + "permissions": [ + "entityresolution:AddPolicyStatement", + "entityresolution:DeletePolicyStatement" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn", + "/properties/StatementId" + ], + "properties": { + "Action": { + "$ref": "#/definitions/StatementActionList" + }, + "Arn": { + "$ref": "#/definitions/VeniceGlobalArn" + }, + "Condition": { + "$ref": "#/definitions/StatementCondition" + }, + "Effect": { + "$ref": "#/definitions/StatementEffect" + }, + "Principal": { + "$ref": "#/definitions/StatementPrincipalList" + }, + "StatementId": { + "$ref": "#/definitions/StatementId" + } + }, + "required": [ + "Arn", + "StatementId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-entity-resolution.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EntityResolution::PolicyStatement" +} diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-globalaccelerator-crossaccountattachment.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-globalaccelerator-crossaccountattachment.json similarity index 100% rename from src/cfnlint/data/schemas/providers/ap_northeast_1/aws-globalaccelerator-crossaccountattachment.json rename to src/cfnlint/data/schemas/providers/us_east_1/aws-globalaccelerator-crossaccountattachment.json diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-ivs-encoderconfiguration.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-ivs-encoderconfiguration.json new file mode 100644 index 0000000000..34c05bbe86 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-ivs-encoderconfiguration.json @@ -0,0 +1,136 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Video", + "/properties/Video/Bitrate", + "/properties/Video/Framerate", + "/properties/Video/Height", + "/properties/Video/Width" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "ivs:CreateEncoderConfiguration", + "ivs:TagResource" + ] + }, + "delete": { + "permissions": [ + "ivs:DeleteEncoderConfiguration", + "ivs:UntagResource" + ] + }, + "list": { + "permissions": [ + "ivs:ListEncoderConfigurations", + "ivs:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "ivs:GetEncoderConfiguration", + "ivs:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "ivs:GetEncoderConfiguration", + "ivs:ListTagsForResource", + "ivs:UntagResource", + "ivs:TagResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "maxLength": 128, + "minLength": 1, + "pattern": "^arn:aws:ivs:[a-z0-9-]+:[0-9]+:encoder-configuration/[a-zA-Z0-9-]+$", + "type": "string" + }, + "Name": { + "maxLength": 128, + "minLength": 0, + "pattern": "^[a-zA-Z0-9-_]*$", + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + }, + "Video": { + "additionalProperties": false, + "properties": { + "Bitrate": { + "default": 2500000, + "maximum": 8500000, + "minimum": 1, + "type": "integer" + }, + "Framerate": { + "default": 30, + "maximum": 60, + "minimum": 1, + "type": "number" + }, + "Height": { + "default": 720, + "maximum": 1920, + "minimum": 1, + "type": "integer" + }, + "Width": { + "default": 1280, + "maximum": 1920, + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::IVS::EncoderConfiguration" +} diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-elasticache-usergroup.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-ivs-playbackrestrictionpolicy.json similarity index 50% rename from src/cfnlint/data/schemas/providers/ap_northeast_1/aws-elasticache-usergroup.json rename to src/cfnlint/data/schemas/providers/us_east_1/aws-ivs-playbackrestrictionpolicy.json index 285e73b7c4..5fe616ae89 100644 --- a/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-elasticache-usergroup.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-ivs-playbackrestrictionpolicy.json @@ -1,9 +1,5 @@ { "additionalProperties": false, - "createOnlyProperties": [ - "/properties/UserGroupId", - "/properties/Engine" - ], "definitions": { "Tag": { "additionalProperties": false, @@ -11,18 +7,17 @@ "Key": { "maxLength": 128, "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z0-9 _\\.\\/=+:\\-@]*$", "type": "string" }, "Value": { "maxLength": 256, "minLength": 0, - "pattern": "^[a-zA-Z0-9 _\\.\\/=+:\\-@]*$", "type": "string" } }, "required": [ - "Key" + "Key", + "Value" ], "type": "object" } @@ -30,56 +25,73 @@ "handlers": { "create": { "permissions": [ - "elasticache:CreateUserGroup", - "elasticache:DescribeUserGroups", - "elasticache:ListTagsForResource", - "elasticache:AddTagsToResource" + "ivs:CreatePlaybackRestrictionPolicy", + "ivs:TagResource" ] }, "delete": { "permissions": [ - "elasticache:ModifyReplicationGroup", - "elasticache:DeleteUserGroup", - "elasticache:DescribeUserGroups", - "elasticache:ListTagsForResource" + "ivs:DeletePlaybackRestrictionPolicy", + "ivs:UntagResource" ] }, "list": { "permissions": [ - "elasticache:DescribeUserGroups", - "elasticache:ListTagsForResource" + "ivs:ListPlaybackRestrictionPolicies", + "ivs:ListTagsForResource" ] }, "read": { "permissions": [ - "elasticache:DescribeUserGroups", - "elasticache:ListTagsForResource" + "ivs:GetPlaybackRestrictionPolicy", + "ivs:ListTagsForResource" ] }, "update": { "permissions": [ - "elasticache:ModifyUserGroup", - "elasticache:DescribeUserGroups", - "elasticache:ListTagsForResource", - "elasticache:AddTagsToResource", - "elasticache:RemoveTagsFromResource" + "ivs:GetPlaybackRestrictionPolicy", + "ivs:UpdatePlaybackRestrictionPolicy", + "ivs:ListTagsForResource", + "ivs:UntagResource", + "ivs:TagResource" ] } }, "primaryIdentifier": [ - "/properties/UserGroupId" + "/properties/Arn" ], "properties": { + "AllowedCountries": { + "default": [], + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "AllowedOrigins": { + "default": [], + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, "Arn": { + "maxLength": 128, + "minLength": 1, + "pattern": "^arn:aws:ivs:[a-z0-9-]+:[0-9]+:playback-restriction-policy/[a-zA-Z0-9-]+$", "type": "string" }, - "Engine": { - "enum": [ - "redis" - ], - "type": "string" + "EnableStrictOriginEnforcement": { + "default": false, + "type": "boolean" }, - "Status": { + "Name": { + "maxLength": 128, + "minLength": 0, + "pattern": "^[a-zA-Z0-9-_]*$", "type": "string" }, "Tags": { @@ -90,31 +102,16 @@ "maxItems": 50, "type": "array", "uniqueItems": true - }, - "UserGroupId": { - "pattern": "[a-z][a-z0-9\\\\-]*", - "type": "string" - }, - "UserIds": { - "$comment": "List of users.", - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true } }, "readOnlyProperties": [ - "/properties/Status", "/properties/Arn" ], "required": [ - "UserGroupId", - "Engine", - "UserIds" + "AllowedCountries", + "AllowedOrigins" ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticache", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", "tagging": { "cloudFormationSystemTags": false, "tagOnCreate": true, @@ -122,5 +119,5 @@ "tagUpdatable": true, "taggable": true }, - "typeName": "AWS::ElastiCache::UserGroup" + "typeName": "AWS::IVS::PlaybackRestrictionPolicy" } diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-ivs-storageconfiguration.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-ivs-storageconfiguration.json new file mode 100644 index 0000000000..b3470f4c42 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-ivs-storageconfiguration.json @@ -0,0 +1,132 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/S3", + "/properties/S3/BucketName" + ], + "definitions": { + "S3StorageConfiguration": { + "additionalProperties": false, + "properties": { + "BucketName": { + "maxLength": 63, + "minLength": 3, + "pattern": "^[a-z0-9-.]+$", + "type": "string" + } + }, + "required": [ + "BucketName" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "ivs:CreateStorageConfiguration", + "ivs:GetStorageConfiguration", + "ivs:TagResource", + "s3:GetBucketLocation", + "s3:GetBucketPolicy", + "s3:PutBucketPolicy" + ] + }, + "delete": { + "permissions": [ + "ivs:DeleteStorageConfiguration", + "ivs:UntagResource", + "s3:GetBucketPolicy", + "s3:DeleteBucketPolicy", + "s3:PutBucketPolicy" + ] + }, + "list": { + "permissions": [ + "ivs:ListStorageConfigurations", + "s3:GetBucketLocation", + "ivs:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "ivs:GetStorageConfiguration", + "ivs:ListTagsForResource", + "s3:GetBucketLocation" + ] + }, + "update": { + "permissions": [ + "ivs:GetStorageConfiguration", + "ivs:TagResource", + "ivs:UntagResource", + "ivs:ListTagsForResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "maxLength": 128, + "minLength": 0, + "pattern": "^arn:aws[-a-z]*:ivs:[a-z0-9-]+:[0-9]+:storage-configuration/[a-zA-Z0-9-]+$", + "type": "string" + }, + "Name": { + "maxLength": 128, + "minLength": 0, + "pattern": "^[a-zA-Z0-9-_]*$", + "type": "string" + }, + "S3": { + "$ref": "#/definitions/S3StorageConfiguration" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "S3" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::IVS::StorageConfiguration" +} diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-lambda-eventsourcemapping.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-lambda-eventsourcemapping.json index cb7599c139..e7a75d62d7 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-lambda-eventsourcemapping.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-lambda-eventsourcemapping.json @@ -115,7 +115,7 @@ "Destination": { "maxLength": 1024, "minLength": 12, - "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?(-iso)?(-isob)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", "type": "string" } }, @@ -231,7 +231,7 @@ "EventSourceArn": { "maxLength": 1024, "minLength": 12, - "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?(-iso)?(-isob)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", "type": "string" }, "FilterCriteria": { @@ -240,7 +240,7 @@ "FunctionName": { "maxLength": 140, "minLength": 1, - "pattern": "(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?", + "pattern": "(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?(-iso)?(-isob)?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?", "type": "string" }, "FunctionResponseTypes": { @@ -343,11 +343,20 @@ "type": "integer" } }, + "propertyTransform": { + "/properties/StartingPositionTimestamp": "StartingPositionTimestamp * 1000" + }, "readOnlyProperties": [ "/properties/Id" ], "required": [ "FunctionName" ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, "typeName": "AWS::Lambda::EventSourceMapping" } diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-mediatailor-channel.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-mediatailor-channel.json index e2ae2cb0e1..f13c944005 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-mediatailor-channel.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-mediatailor-channel.json @@ -185,6 +185,12 @@ "Arn": { "type": "string" }, + "Audiences": { + "items": { + "type": "string" + }, + "type": "array" + }, "ChannelName": { "type": "string" }, diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-networkfirewall-tlsinspectionconfiguration.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-networkfirewall-tlsinspectionconfiguration.json index 00f466915a..ea743fee48 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-networkfirewall-tlsinspectionconfiguration.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-networkfirewall-tlsinspectionconfiguration.json @@ -199,6 +199,7 @@ "handlers": { "create": { "permissions": [ + "iam:CreateServiceLinkedRole", "network-firewall:CreateTLSInspectionConfiguration", "network-firewall:DescribeTLSInspectionConfiguration", "network-firewall:TagResource" diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-rds-customdbengineversion.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-rds-customdbengineversion.json index 5c02261b65..5445225028 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-rds-customdbengineversion.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-rds-customdbengineversion.json @@ -5,8 +5,11 @@ "/properties/EngineVersion", "/properties/DatabaseInstallationFilesS3BucketName", "/properties/DatabaseInstallationFilesS3Prefix", + "/properties/ImageId", "/properties/KMSKeyId", - "/properties/Manifest" + "/properties/Manifest", + "/properties/SourceCustomDbEngineVersionIdentifier", + "/properties/UseAwsProvidedLatestImage" ], "definitions": { "Tag": { @@ -32,8 +35,14 @@ "handlers": { "create": { "permissions": [ + "ec2:CopySnapshot", + "ec2:DeleteSnapshot", + "ec2:DescribeSnapshots", "kms:CreateGrant", + "kms:Decrypt", "kms:DescribeKey", + "kms:GenerateDataKey", + "kms:ReEncrypt", "mediaimport:CreateDatabaseBinarySnapshot", "rds:AddTagsToResource", "rds:CreateCustomDBEngineVersion", @@ -110,6 +119,9 @@ "minLength": 1, "type": "string" }, + "ImageId": { + "type": "string" + }, "KMSKeyId": { "maxLength": 2048, "minLength": 1, @@ -120,6 +132,9 @@ "minLength": 1, "type": "string" }, + "SourceCustomDbEngineVersionIdentifier": { + "type": "string" + }, "Status": { "default": "available", "enum": [ @@ -136,6 +151,9 @@ }, "type": "array", "uniqueItems": false + }, + "UseAwsProvidedLatestImage": { + "type": "boolean" } }, "propertyTransform": { @@ -147,7 +165,6 @@ "/properties/DBEngineVersionArn" ], "required": [ - "DatabaseInstallationFilesS3BucketName", "Engine", "EngineVersion" ], @@ -157,6 +174,8 @@ }, "typeName": "AWS::RDS::CustomDBEngineVersion", "writeOnlyProperties": [ - "/properties/Manifest" + "/properties/Manifest", + "/properties/SourceCustomDbEngineVersionIdentifier", + "/properties/UseAwsProvidedLatestImage" ] } diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-rds-integration.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-rds-integration.json index 42677c73be..8bb00c0dfe 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-rds-integration.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-rds-integration.json @@ -4,8 +4,7 @@ "/properties/SourceArn", "/properties/TargetArn", "/properties/KMSKeyId", - "/properties/AdditionalEncryptionContext", - "/properties/IntegrationName" + "/properties/AdditionalEncryptionContext" ], "definitions": { "EncryptionContextMap": { @@ -79,7 +78,8 @@ "permissions": [ "rds:DescribeIntegrations", "rds:AddTagsToResource", - "rds:RemoveTagsFromResource" + "rds:RemoveTagsFromResource", + "rds:ModifyIntegration" ] } }, @@ -93,6 +93,17 @@ "CreateTime": { "type": "string" }, + "DataFilter": { + "maxLength": 25600, + "minLength": 1, + "pattern": "[a-zA-Z0-9_ \"\\\\\\-$,*.:?+\\/]*", + "type": "string" + }, + "Description": { + "maxLength": 1000, + "minLength": 1, + "type": "string" + }, "IntegrationArn": { "type": "string" }, diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-sagemaker-appimageconfig.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-sagemaker-appimageconfig.json index 01116f524b..2375e61b56 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-sagemaker-appimageconfig.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-sagemaker-appimageconfig.json @@ -5,6 +5,15 @@ "/properties/Tags" ], "definitions": { + "CodeEditorAppImageConfig": { + "additionalProperties": false, + "properties": { + "ContainerConfig": { + "$ref": "#/definitions/ContainerConfig" + } + }, + "type": "object" + }, "ContainerConfig": { "additionalProperties": false, "properties": { @@ -209,6 +218,9 @@ "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", "type": "string" }, + "CodeEditorAppImageConfig": { + "$ref": "#/definitions/CodeEditorAppImageConfig" + }, "JupyterLabAppImageConfig": { "$ref": "#/definitions/JupyterLabAppImageConfig" }, diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-sagemaker-domain.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-sagemaker-domain.json index e57c036025..67a1620f2f 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-sagemaker-domain.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-sagemaker-domain.json @@ -12,6 +12,15 @@ "CodeEditorAppSettings": { "additionalProperties": false, "properties": { + "CustomImages": { + "items": { + "$ref": "#/definitions/CustomImage" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, "DefaultResourceSpec": { "$ref": "#/definitions/ResourceSpec" }, diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-sagemaker-userprofile.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-sagemaker-userprofile.json index d0f8848903..075303e55d 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-sagemaker-userprofile.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-sagemaker-userprofile.json @@ -13,6 +13,15 @@ "CodeEditorAppSettings": { "additionalProperties": false, "properties": { + "CustomImages": { + "items": { + "$ref": "#/definitions/CustomImage" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, "DefaultResourceSpec": { "$ref": "#/definitions/ResourceSpec" }, diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-securityhub-delegatedadmin.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-securityhub-delegatedadmin.json new file mode 100644 index 0000000000..eb2a4240d0 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-securityhub-delegatedadmin.json @@ -0,0 +1,70 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AdminAccountId" + ], + "handlers": { + "create": { + "permissions": [ + "securityhub:EnableOrganizationAdminAccount", + "organizations:DescribeOrganization", + "organizations:EnableAWSServiceAccess", + "organizations:RegisterDelegatedAdministrator" + ] + }, + "delete": { + "permissions": [ + "securityhub:DisableOrganizationAdminAccount", + "organizations:DescribeOrganization" + ] + }, + "list": { + "permissions": [ + "securityhub:ListOrganizationAdminAccounts", + "organizations:DescribeOrganization" + ] + }, + "read": { + "permissions": [ + "securityhub:ListOrganizationAdminAccounts", + "organizations:DescribeOrganization" + ] + } + }, + "primaryIdentifier": [ + "/properties/DelegatedAdminIdentifier" + ], + "properties": { + "AdminAccountId": { + "pattern": "^[0-9]{12}$", + "type": "string" + }, + "DelegatedAdminIdentifier": { + "pattern": "^[0-9]{12}/[a-zA-Z0-9-]{1,32}$", + "type": "string" + }, + "Status": { + "enum": [ + "ENABLED", + "DISABLE_IN_PROGRESS" + ], + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/DelegatedAdminIdentifier", + "/properties/Status" + ], + "required": [ + "AdminAccountId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::SecurityHub::DelegatedAdmin" +} diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-securityhub-insight.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-securityhub-insight.json similarity index 67% rename from src/cfnlint/data/schemas/providers/ap_northeast_1/aws-securityhub-insight.json rename to src/cfnlint/data/schemas/providers/us_east_1/aws-securityhub-insight.json index 3fc396909f..8eba1e0c46 100644 --- a/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-securityhub-insight.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-securityhub-insight.json @@ -5,702 +5,938 @@ "additionalProperties": false, "properties": { "AwsAccountId": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "AwsAccountName": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "CompanyName": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "ComplianceAssociatedStandardsId": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "ComplianceSecurityControlId": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "ComplianceSecurityControlParametersName": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "ComplianceSecurityControlParametersValue": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "ComplianceStatus": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "Confidence": { + "insertionOrder": true, "items": { "$ref": "#/definitions/NumberFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "CreatedAt": { + "insertionOrder": true, "items": { "$ref": "#/definitions/DateFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "Criticality": { + "insertionOrder": true, "items": { "$ref": "#/definitions/NumberFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "Description": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "FindingProviderFieldsConfidence": { + "insertionOrder": true, "items": { "$ref": "#/definitions/NumberFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "FindingProviderFieldsCriticality": { + "insertionOrder": true, "items": { "$ref": "#/definitions/NumberFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "FindingProviderFieldsRelatedFindingsId": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "FindingProviderFieldsRelatedFindingsProductArn": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "FindingProviderFieldsSeverityLabel": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "FindingProviderFieldsSeverityOriginal": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "FindingProviderFieldsTypes": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "FirstObservedAt": { + "insertionOrder": true, "items": { "$ref": "#/definitions/DateFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "GeneratorId": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "Id": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "Keyword": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/KeywordFilter" + }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "LastObservedAt": { + "insertionOrder": true, "items": { "$ref": "#/definitions/DateFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "MalwareName": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "MalwarePath": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "MalwareState": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "MalwareType": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "NetworkDestinationDomain": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "NetworkDestinationIpV4": { + "insertionOrder": true, "items": { "$ref": "#/definitions/IpFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "NetworkDestinationIpV6": { + "insertionOrder": true, "items": { "$ref": "#/definitions/IpFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "NetworkDestinationPort": { + "insertionOrder": true, "items": { "$ref": "#/definitions/NumberFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "NetworkDirection": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "NetworkProtocol": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "NetworkSourceDomain": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "NetworkSourceIpV4": { + "insertionOrder": true, "items": { "$ref": "#/definitions/IpFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "NetworkSourceIpV6": { + "insertionOrder": true, "items": { "$ref": "#/definitions/IpFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "NetworkSourceMac": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "NetworkSourcePort": { + "insertionOrder": true, "items": { "$ref": "#/definitions/NumberFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "NoteText": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "NoteUpdatedAt": { + "insertionOrder": true, "items": { "$ref": "#/definitions/DateFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "NoteUpdatedBy": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "ProcessLaunchedAt": { + "insertionOrder": true, "items": { "$ref": "#/definitions/DateFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "ProcessName": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "ProcessParentPid": { + "insertionOrder": true, "items": { "$ref": "#/definitions/NumberFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "ProcessPath": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "ProcessPid": { + "insertionOrder": true, "items": { "$ref": "#/definitions/NumberFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "ProcessTerminatedAt": { + "insertionOrder": true, "items": { "$ref": "#/definitions/DateFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "ProductArn": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "ProductFields": { + "insertionOrder": true, "items": { "$ref": "#/definitions/MapFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "ProductName": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "RecommendationText": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "RecordState": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "Region": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "RelatedFindingsId": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "RelatedFindingsProductArn": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "ResourceApplicationArn": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "ResourceApplicationName": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "ResourceAwsEc2InstanceIamInstanceProfileArn": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "ResourceAwsEc2InstanceImageId": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "ResourceAwsEc2InstanceIpV4Addresses": { + "insertionOrder": true, "items": { "$ref": "#/definitions/IpFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "ResourceAwsEc2InstanceIpV6Addresses": { + "insertionOrder": true, "items": { "$ref": "#/definitions/IpFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "ResourceAwsEc2InstanceKeyName": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "ResourceAwsEc2InstanceLaunchedAt": { + "insertionOrder": true, "items": { "$ref": "#/definitions/DateFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "ResourceAwsEc2InstanceSubnetId": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "ResourceAwsEc2InstanceType": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "ResourceAwsEc2InstanceVpcId": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "ResourceAwsIamAccessKeyCreatedAt": { + "insertionOrder": true, "items": { "$ref": "#/definitions/DateFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "ResourceAwsIamAccessKeyPrincipalName": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "ResourceAwsIamAccessKeyStatus": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/StringFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "ResourceAwsIamAccessKeyUserName": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "ResourceAwsIamUserUserName": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "ResourceAwsS3BucketOwnerId": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "ResourceAwsS3BucketOwnerName": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "ResourceContainerImageId": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "ResourceContainerImageName": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "ResourceContainerLaunchedAt": { + "insertionOrder": true, "items": { "$ref": "#/definitions/DateFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "ResourceContainerName": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "ResourceDetailsOther": { + "insertionOrder": true, "items": { "$ref": "#/definitions/MapFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "ResourceId": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "ResourcePartition": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "ResourceRegion": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "ResourceTags": { + "insertionOrder": true, "items": { "$ref": "#/definitions/MapFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "ResourceType": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "Sample": { + "insertionOrder": true, "items": { "$ref": "#/definitions/BooleanFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "SeverityLabel": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "SeverityNormalized": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/NumberFilter" + }, + "maxItems": 20, + "type": "array", + "uniqueItems": true + }, + "SeverityProduct": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/NumberFilter" + }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "SourceUrl": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "ThreatIntelIndicatorCategory": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "ThreatIntelIndicatorLastObservedAt": { + "insertionOrder": true, "items": { "$ref": "#/definitions/DateFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "ThreatIntelIndicatorSource": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "ThreatIntelIndicatorSourceUrl": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "ThreatIntelIndicatorType": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "ThreatIntelIndicatorValue": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "Title": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "Type": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "UpdatedAt": { + "insertionOrder": true, "items": { "$ref": "#/definitions/DateFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "UserDefinedFields": { + "insertionOrder": true, "items": { "$ref": "#/definitions/MapFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "VerificationState": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "VulnerabilitiesExploitAvailable": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "VulnerabilitiesFixAvailable": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "WorkflowState": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true }, "WorkflowStatus": { + "insertionOrder": true, "items": { "$ref": "#/definitions/StringFilter" }, + "maxItems": 20, "type": "array", "uniqueItems": true } @@ -726,10 +962,10 @@ "$ref": "#/definitions/DateRange" }, "End": { - "type": "string" + "$ref": "#/definitions/ISO8601DateString" }, "Start": { - "type": "string" + "$ref": "#/definitions/ISO8601DateString" } }, "type": "object" @@ -738,6 +974,9 @@ "additionalProperties": false, "properties": { "Unit": { + "enum": [ + "DAYS" + ], "type": "string" }, "Value": { @@ -745,40 +984,67 @@ } }, "required": [ - "Value", - "Unit" + "Unit", + "Value" ], "type": "object" }, + "ISO8601DateString": { + "pattern": "^([\\+-]?\\d{4}(?!\\d{2}))((-?)((0[1-9]|1[0-2])(\\3([12]\\d|0[1-9]|3[01]))?|W([0-4]\\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\\d|[12]\\d{2}|3([0-5]\\d|6[1-6])))([tT]((([01]\\d|2[0-3])((:?)[0-5]\\d)?|24\\:?00)([\\.,]\\d+(?!:))?)?(\\17[0-5]\\d([\\.,]\\d+)?)?([zZ]|([\\+-])([01]\\d|2[0-3]):?([0-5]\\d)?)?)?)?$", + "type": "string" + }, "IpFilter": { "additionalProperties": false, "properties": { "Cidr": { - "type": "string" + "$ref": "#/definitions/NonEmptyString" } }, + "required": [ + "Cidr" + ], + "type": "object" + }, + "KeywordFilter": { + "additionalProperties": false, + "properties": { + "Value": { + "$ref": "#/definitions/NonEmptyString" + } + }, + "required": [ + "Value" + ], "type": "object" }, "MapFilter": { "additionalProperties": false, "properties": { "Comparison": { + "enum": [ + "EQUALS", + "NOT_EQUALS" + ], "type": "string" }, "Key": { - "type": "string" + "$ref": "#/definitions/NonEmptyString" }, "Value": { - "type": "string" + "$ref": "#/definitions/NonEmptyString" } }, "required": [ "Comparison", - "Value", - "Key" + "Key", + "Value" ], "type": "object" }, + "NonEmptyString": { + "minLength": 1, + "type": "string" + }, "NumberFilter": { "additionalProperties": false, "properties": { @@ -798,10 +1064,10 @@ "additionalProperties": false, "properties": { "Comparison": { - "type": "string" + "$ref": "#/definitions/StringFilterComparison" }, "Value": { - "type": "string" + "$ref": "#/definitions/NonEmptyString" } }, "required": [ @@ -809,36 +1075,83 @@ "Value" ], "type": "object" + }, + "StringFilterComparison": { + "enum": [ + "EQUALS", + "PREFIX", + "NOT_EQUALS", + "PREFIX_NOT_EQUALS" + ], + "type": "string" + } + }, + "deprecatedProperties": [ + "/properties/Filters/Keyword", + "/properties/Filters/ResourceAwsIamAccessKeyUserName", + "/properties/Filters/SeverityNormalized", + "/properties/Filters/SeverityProduct" + ], + "handlers": { + "create": { + "permissions": [ + "securityhub:CreateInsight" + ] + }, + "delete": { + "permissions": [ + "securityhub:GetInsights", + "securityhub:DeleteInsight" + ] + }, + "list": { + "permissions": [ + "securityhub:GetInsights" + ] + }, + "read": { + "permissions": [ + "securityhub:GetInsights" + ] + }, + "update": { + "permissions": [ + "securityhub:UpdateInsight" + ] } }, "primaryIdentifier": [ - "/properties/Id" + "/properties/InsightArn" ], "properties": { "Filters": { - "$ref": "#/definitions/AwsSecurityFindingFilters" + "$ref": "#/definitions/AwsSecurityFindingFilters", + "maxProperties": 10 }, "GroupByAttribute": { - "type": "string" - }, - "Id": { - "type": "string" + "$ref": "#/definitions/NonEmptyString" }, "InsightArn": { + "pattern": "arn:aws\\S*:securityhub:\\S*", "type": "string" }, "Name": { + "maxLength": 128, + "minLength": 1, "type": "string" } }, "readOnlyProperties": [ - "/properties/Id", "/properties/InsightArn" ], "required": [ "Filters", - "GroupByAttribute", - "Name" + "Name", + "GroupByAttribute" ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-securityhub", + "tagging": { + "taggable": false + }, "typeName": "AWS::SecurityHub::Insight" } diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-securityhub-productsubscription.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-securityhub-productsubscription.json new file mode 100644 index 0000000000..1228690927 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-securityhub-productsubscription.json @@ -0,0 +1,57 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ProductArn" + ], + "handlers": { + "create": { + "permissions": [ + "securityhub:EnableImportFindingsForProduct" + ] + }, + "delete": { + "permissions": [ + "securityhub:ListEnabledProductsForImport", + "securityhub:DisableImportFindingsForProduct" + ] + }, + "list": { + "permissions": [ + "securityhub:ListEnabledProductsForImport" + ] + }, + "read": { + "permissions": [ + "securityhub:ListEnabledProductsForImport" + ] + } + }, + "primaryIdentifier": [ + "/properties/ProductSubscriptionArn" + ], + "properties": { + "ProductArn": { + "pattern": "arn:aws\\S*:securityhub:\\S*", + "type": "string" + }, + "ProductSubscriptionArn": { + "pattern": "arn:aws\\S*:securityhub:\\S*", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/ProductSubscriptionArn" + ], + "required": [ + "ProductArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-securityhub", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagProperty": "/properties/Tags", + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::SecurityHub::ProductSubscription" +} diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-securitylake-awslogsource.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-securitylake-awslogsource.json new file mode 100644 index 0000000000..5f4549ff6f --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-securitylake-awslogsource.json @@ -0,0 +1,91 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DataLakeArn", + "/properties/SourceName", + "/properties/SourceVersion" + ], + "handlers": { + "create": { + "permissions": [ + "glue:CreateDatabase", + "glue:CreateTable", + "glue:GetDatabase", + "glue:GetTable", + "iam:CreateServiceLinkedRole", + "kms:CreateGrant", + "kms:DescribeKey", + "securitylake:CreateDataLake", + "securitylake:CreateAwsLogSource", + "securitylake:ListLogSources" + ] + }, + "delete": { + "permissions": [ + "securitylake:DeleteAwsLogSource", + "securitylake:ListLogSources" + ] + }, + "list": { + "permissions": [ + "securitylake:ListLogSources" + ] + }, + "read": { + "permissions": [ + "securitylake:ListLogSources" + ] + }, + "update": { + "permissions": [ + "securitylake:CreateAwsLogSource", + "securitylake:DeleteAwsLogSource", + "glue:CreateDatabase", + "glue:CreateTable", + "glue:GetDatabase", + "glue:GetTable", + "iam:CreateServiceLinkedRole", + "kms:CreateGrant", + "kms:DescribeKey" + ] + } + }, + "primaryIdentifier": [ + "/properties/SourceName", + "/properties/SourceVersion" + ], + "properties": { + "Accounts": { + "insertionOrder": false, + "items": { + "pattern": "^[0-9]{12}$", + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "DataLakeArn": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "SourceName": { + "type": "string" + }, + "SourceVersion": { + "pattern": "^(latest|[0-9]\\.[0-9])$", + "type": "string" + } + }, + "replacementStrategy": "delete_then_create", + "required": [ + "DataLakeArn", + "SourceVersion", + "SourceName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-securitylake.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::SecurityLake::AwsLogSource" +} diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-securitylake-datalake.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-securitylake-datalake.json new file mode 100644 index 0000000000..581f80b130 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-securitylake-datalake.json @@ -0,0 +1,210 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/MetaStoreManagerRoleArn" + ], + "definitions": { + "Days": { + "minimum": 1, + "type": "integer" + }, + "EncryptionConfiguration": { + "additionalProperties": false, + "properties": { + "KmsKeyId": { + "type": "string" + } + }, + "type": "object" + }, + "Expiration": { + "additionalProperties": false, + "properties": { + "Days": { + "$ref": "#/definitions/Days" + } + }, + "type": "object" + }, + "LifecycleConfiguration": { + "additionalProperties": false, + "properties": { + "Expiration": { + "$ref": "#/definitions/Expiration" + }, + "Transitions": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Transitions" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "Regions": { + "insertionOrder": false, + "items": { + "pattern": "^(af|ap|ca|eu|me|sa|us)-(central|north|(north(?:east|west))|south|south(?:east|west)|east|west)-\\d+$", + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "ReplicationConfiguration": { + "additionalProperties": false, + "properties": { + "Regions": { + "$ref": "#/definitions/Regions" + }, + "RoleArn": { + "pattern": "^arn:.*$", + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "Transitions": { + "additionalProperties": false, + "properties": { + "Days": { + "minimum": 1, + "type": "integer" + }, + "StorageClass": { + "type": "string" + } + }, + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "events:*", + "iam:CreateServiceLinkedRole", + "iam:GetRole", + "iam:ListAttachedRolePolicies", + "iam:PutRolePolicy", + "iam:PassRole", + "glue:*", + "organizations:*", + "kms:DescribeKey", + "kms:CreateGrant", + "lakeformation:*", + "lambda:*", + "s3:*", + "securitylake:CreateDataLake", + "securitylake:TagResource", + "securitylake:List*", + "sqs:*" + ] + }, + "delete": { + "permissions": [ + "organizations:*", + "securitylake:DeleteDataLake", + "securitylake:List*" + ] + }, + "list": { + "permissions": [ + "securitylake:List*" + ] + }, + "read": { + "permissions": [ + "securitylake:List*" + ] + }, + "update": { + "permissions": [ + "events:*", + "iam:CreateServiceLinkedRole", + "iam:DeleteRolePolicy", + "iam:GetRole", + "iam:PassRole", + "iam:PutRolePolicy", + "kms:DescribeKey", + "kms:CreateGrant", + "lakeformation:*", + "lambda:*", + "organizations:*", + "s3:*", + "securitylake:List*", + "securitylake:TagResource", + "securitylake:UntagResource", + "securitylake:UpdateDataLake", + "sqs:*" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "maxLength": 1011, + "minLength": 1, + "type": "string" + }, + "EncryptionConfiguration": { + "$ref": "#/definitions/EncryptionConfiguration" + }, + "LifecycleConfiguration": { + "$ref": "#/definitions/LifecycleConfiguration" + }, + "MetaStoreManagerRoleArn": { + "pattern": "^arn:.*$", + "type": "string" + }, + "ReplicationConfiguration": { + "$ref": "#/definitions/ReplicationConfiguration" + }, + "S3BucketArn": { + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/S3BucketArn" + ], + "replacementStrategy": "delete_then_create", + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-securitylake.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::SecurityLake::DataLake", + "writeOnlyProperties": [ + "/properties/MetaStoreManagerRoleArn" + ] +} diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-securitylake-subscriber.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-securitylake-subscriber.json new file mode 100644 index 0000000000..3554089f65 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-securitylake-subscriber.json @@ -0,0 +1,295 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DataLakeArn" + ], + "definitions": { + "AccessTypes": { + "insertionOrder": true, + "items": { + "enum": [ + "LAKEFORMATION", + "S3" + ], + "type": "string" + }, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "AwsLogSource": { + "additionalProperties": false, + "properties": { + "SourceName": { + "type": "string" + }, + "SourceVersion": { + "pattern": "^(latest|[0-9]\\.[0-9])$", + "type": "string" + } + }, + "type": "object" + }, + "CustomLogSource": { + "additionalProperties": false, + "properties": { + "SourceName": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[\\\\\\w\\-_:/.]*$", + "type": "string" + }, + "SourceVersion": { + "maxLength": 32, + "minLength": 1, + "pattern": "^[A-Za-z0-9\\-\\.\\_]*$", + "type": "string" + } + }, + "type": "object" + }, + "Source": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "AwsLogSource": { + "$ref": "#/definitions/AwsLogSource" + } + }, + "required": [ + "AwsLogSource" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "CustomLogSource": { + "$ref": "#/definitions/CustomLogSource" + } + }, + "required": [ + "CustomLogSource" + ], + "type": "object" + } + ] + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "securitylake:CreateSubscriber", + "securitylake:CreateCustomLogSource", + "securitylake:CreateDataLake", + "securitylake:TagResource", + "securitylake:GetSubscriber", + "securitylake:ListTagsForResource", + "iam:GetRole", + "iam:GetRolePolicy", + "iam:PutRolePolicy", + "iam:CreateRole", + "iam:CreateServiceLinkedRole", + "glue:GetDatabase", + "glue:GetTable", + "lakeformation:RegisterResource", + "lakeformation:GrantPermissions", + "lakeformation:RevokePermissions", + "lakeformation:ListPermissions", + "ram:GetResourceShareAssociations", + "ram:CreateResourceShare", + "ram:UpdateResourceShare", + "ram:GetResourceShares" + ] + }, + "delete": { + "permissions": [ + "securitylake:DeleteSubscriber", + "iam:GetRole", + "iam:ListRolePolicies", + "iam:DeleteRole", + "iam:DeleteRolePolicy", + "glue:GetTable", + "lakeformation:RevokePermissions", + "lakeformation:ListPermissions", + "ram:GetResourceShares", + "ram:DeleteResourceShare", + "events:DeleteApiDestination", + "events:DeleteConnection", + "events:DeleteRule", + "events:ListApiDestinations", + "events:ListTargetsByRule", + "events:DescribeRule", + "events:RemoveTargets", + "sqs:DeleteQueue", + "sqs:GetQueueUrl" + ] + }, + "list": { + "permissions": [ + "securitylake:ListSubscribers" + ] + }, + "read": { + "permissions": [ + "securitylake:GetSubscriber", + "securitylake:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "securitylake:UpdateSubscriber", + "securitylake:GetSubscriber", + "securitylake:TagResource", + "securitylake:UntagResource", + "securitylake:ListTagsForResource", + "glue:GetDatabase", + "glue:GetTable", + "lakeformation:ListPermissions", + "lakeformation:GrantPermissions", + "lakeformation:RevokePermissions", + "ram:CreateResourceShare", + "ram:GetResourceShares", + "ram:GetResourceShareAssociations", + "ram:UpdateResourceShare", + "ram:DeleteResourceShare", + "iam:CreateRole", + "iam:GetRole", + "iam:DeleteRole", + "iam:PutRolePolicy", + "iam:DeleteRolePolicy", + "iam:ListRolePolicies", + "events:CreateApiDestination", + "events:CreateConnection", + "events:ListApiDestinations", + "events:ListConnections", + "events:PutRule", + "events:UpdateApiDestination", + "events:UpdateConnection", + "events:DeleteApiDestination", + "events:DeleteConnection", + "events:DeleteRule", + "events:RemoveTargets", + "events:ListTargetsByRule", + "events:DescribeRule", + "events:PutTargets" + ] + } + }, + "primaryIdentifier": [ + "/properties/SubscriberArn" + ], + "properties": { + "AccessTypes": { + "$ref": "#/definitions/AccessTypes" + }, + "DataLakeArn": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "ResourceShareArn": { + "type": "string" + }, + "ResourceShareName": { + "type": "string" + }, + "S3BucketArn": { + "type": "string" + }, + "Sources": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Source" + }, + "type": "array" + }, + "SubscriberArn": { + "type": "string" + }, + "SubscriberDescription": { + "type": "string" + }, + "SubscriberIdentity": { + "additionalProperties": false, + "properties": { + "ExternalId": { + "maxLength": 1224, + "minLength": 2, + "pattern": "^[\\w+=,.@:/-]*$", + "type": "string" + }, + "Principal": { + "pattern": "^([0-9]{12}|[a-z0-9\\.\\-]*\\.(amazonaws|amazon)\\.com)$", + "type": "string" + } + }, + "required": [ + "ExternalId", + "Principal" + ], + "type": "object" + }, + "SubscriberName": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[\\\\\\w\\s\\-_:/,.@=+]*$", + "type": "string" + }, + "SubscriberRoleArn": { + "type": "string" + }, + "Tags": { + "insertionOrder": true, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/SubscriberArn", + "/properties/S3BucketArn", + "/properties/SubscriberRoleArn", + "/properties/ResourceShareArn", + "/properties/ResourceShareName" + ], + "replacementStrategy": "delete_then_create", + "required": [ + "AccessTypes", + "DataLakeArn", + "Sources", + "SubscriberIdentity", + "SubscriberName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-securitylake.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::SecurityLake::Subscriber" +} diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-signer-profilepermission.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-signer-profilepermission.json index c7832a61ae..0f8d81fad7 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-signer-profilepermission.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-signer-profilepermission.json @@ -21,6 +21,16 @@ ] }, "list": { + "handlerSchema": { + "properties": { + "ProfileName": { + "$ref": "resource-schema.json#/properties/ProfileName" + }, + "StatementId": { + "$ref": "resource-schema.json#/properties/StatementId" + } + } + }, "permissions": [ "signer:ListProfilePermissions", "signer:GetSigningProfile" 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 8f87783fd4..0bf609145a 100644 --- a/src/cfnlint/data/schemas/providers/us_east_2/__init__.py +++ b/src/cfnlint/data/schemas/providers/us_east_2/__init__.py @@ -8,6 +8,7 @@ "AWS::ApiGatewayV2::ApiMapping", "AWS::CE::AnomalySubscription", "AWS::Shield::DRTAccess", + "AWS::Deadline::Farm", "AWS::SSO::Assignment", "AWS::Glue::Partition", "AWS::RDS::Integration", @@ -40,6 +41,7 @@ "AWS::EC2::NetworkPerformanceMetricSubscription", "AWS::MediaLive::Channel", "AWS::Greengrass::DeviceDefinition", + "AWS::CleanRoomsML::TrainingDataset", "AWS::CloudFront::ContinuousDeploymentPolicy", "AWS::QuickSight::Analysis", "AWS::Kendra::Faq", @@ -122,6 +124,7 @@ "AWS::OpsWorks::Layer", "AWS::CloudTrail::EventDataStore", "AWS::KinesisFirehose::DeliveryStream", + "AWS::Deadline::QueueFleetAssociation", "AWS::EC2::NetworkInsightsAccessScope", "AWS::Cognito::UserPoolUserToGroupAttachment", "AWS::PCAConnectorAD::DirectoryRegistration", @@ -158,6 +161,7 @@ "AWS::IoTSiteWise::Portal", "AWS::Events::Archive", "AWS::MSK::Cluster", + "AWS::SecurityHub::DelegatedAdmin", "AWS::ControlTower::EnabledBaseline", "AWS::AppStream::AppBlockBuilder", "AWS::EC2::VPCEndpointConnectionNotification", @@ -206,6 +210,7 @@ "AWS::RoboMaker::SimulationApplication", "AWS::NetworkManager::TransitGatewayRegistration", "AWS::Amplify::App", + "AWS::EntityResolution::PolicyStatement", "AWS::InspectorV2::Filter", "AWS::ElastiCache::ReplicationGroup", "AWS::StepFunctions::StateMachineAlias", @@ -266,6 +271,7 @@ "AWS::Lambda::Alias", "AWS::Logs::LogAnomalyDetector", "AWS::WAF::IPSet", + "AWS::Deadline::Fleet", "AWS::VpcLattice::ServiceNetworkServiceAssociation", "AWS::EC2::TransitGatewayMulticastDomainAssociation", "AWS::S3Outposts::Endpoint", @@ -368,6 +374,7 @@ "AWS::MediaPackageV2::ChannelPolicy", "AWS::ApiGatewayV2::VpcLink", "AWS::IoT::JobTemplate", + "AWS::Deadline::Queue", "AWS::ServiceCatalog::PortfolioProductAssociation", "AWS::DataBrew::Project", "AWS::VpcLattice::TargetGroup", @@ -382,6 +389,7 @@ "AWS::IAM::ServerCertificate", "AWS::CodeStarConnections::Connection", "AWS::IoT::SecurityProfile", + "AWS::GlobalAccelerator::CrossAccountAttachment", "AWS::Events::EventBus", "AWS::DocDB::EventSubscription", "AWS::SQS::QueueInlinePolicy", @@ -428,6 +436,7 @@ "AWS::EFS::FileSystem", "AWS::Config::OrganizationConformancePack", "AWS::Logs::QueryDefinition", + "AWS::SecurityHub::ProductSubscription", "AWS::IAM::InstanceProfile", "AWS::IoT::BillingGroup", "AWS::AppStream::Application", @@ -446,6 +455,7 @@ "AWS::Cognito::UserPoolUICustomizationAttachment", "AWS::SageMaker::NotebookInstanceLifecycleConfig", "AWS::ImageBuilder::ContainerRecipe", + "AWS::CodeConnections::Connection", "AWS::EFS::AccessPoint", "AWS::Redshift::ClusterSecurityGroupIngress", "AWS::ServiceCatalogAppRegistry::AttributeGroupAssociation", @@ -475,6 +485,7 @@ "AWS::EC2::ClientVpnRoute", "AWS::ImageBuilder::Workflow", "AWS::ECS::TaskSet", + "AWS::SecurityLake::AwsLogSource", "AWS::AppSync::ApiKey", "AWS::CloudFormation::TypeActivation", "AWS::GroundStation::DataflowEndpointGroup", @@ -532,6 +543,7 @@ "AWS::EC2::CustomerGateway", "AWS::IAM::GroupPolicy", "AWS::Scheduler::Schedule", + "AWS::Deadline::LicenseEndpoint", "AWS::WAF::ByteMatchSet", "AWS::AmplifyUIBuilder::Theme", "AWS::Neptune::DBClusterParameterGroup", @@ -556,6 +568,7 @@ "AWS::Glue::Trigger", "AWS::GlobalAccelerator::Listener", "AWS::VerifiedPermissions::PolicyStore", + "AWS::Deadline::QueueEnvironment", "AWS::Signer::SigningProfile", "AWS::KendraRanking::ExecutionPlan", "AWS::EC2::VPCPeeringConnection", @@ -631,6 +644,7 @@ "AWS::CodeBuild::SourceCredential", "AWS::EMR::InstanceFleetConfig", "AWS::EMR::Cluster", + "AWS::SecurityLake::DataLake", "AWS::CodePipeline::Webhook", "AWS::ApiGatewayV2::DomainName", "AWS::RDS::DBCluster", @@ -719,6 +733,7 @@ "AWS::Logs::Delivery", "AWS::ServiceCatalog::Portfolio", "AWS::IoT::Policy", + "AWS::APS::Scraper", "AWS::EC2::TransitGatewayRoute", "AWS::SSM::MaintenanceWindow", "AWS::DataZone::Domain", @@ -737,6 +752,7 @@ "AWS::DevOpsGuru::LogAnomalyDetectionIntegration", "AWS::NetworkManager::Link", "AWS::QLDB::Stream", + "AWS::SecurityLake::Subscriber", "AWS::SageMaker::NotebookInstance", "AWS::IoTSiteWise::Dashboard", "AWS::SSO::InstanceAccessControlAttributeConfiguration", @@ -771,6 +787,7 @@ "AWS::GameLift::MatchmakingRuleSet", "AWS::EC2::EgressOnlyInternetGateway", "AWS::Athena::CapacityReservation", + "AWS::SecurityHub::Insight", "AWS::Config::ConformancePack", "AWS::EC2::VPCCidrBlock", "AWS::APS::Workspace", @@ -894,6 +911,7 @@ "AWS::CleanRooms::Collaboration", "AWS::SSM::Association", "AWS::EC2::ClientVpnEndpoint", + "AWS::EntityResolution::IdNamespace", "AWS::CloudFront::ResponseHeadersPolicy", "AWS::SecurityHub::AutomationRule", "AWS::MSK::ClusterPolicy", @@ -919,9 +937,11 @@ "AWS::Route53Resolver::OutpostResolver", "AWS::ACMPCA::Certificate", "AWS::EC2::IPAMAllocation", + "AWS::Deadline::StorageProfile", "AWS::WorkSpaces::Workspace", "AWS::Inspector::AssessmentTemplate", "AWS::EMR::Studio", + "AWS::Deadline::MeteredProduct", "AWS::EC2::InstanceConnectEndpoint", "AWS::DAX::ParameterGroup", "AWS::DataZone::SubscriptionTarget", @@ -1084,6 +1104,7 @@ "aws-apigatewayv2-apimapping.json", "aws-ce-anomalysubscription.json", "aws-shield-drtaccess.json", + "aws-deadline-farm.json", "aws-sso-assignment.json", "aws-glue-partition.json", "aws-rds-integration.json", @@ -1104,7 +1125,6 @@ "aws-wafregional-ipset.json", "aws-redshiftserverless-namespace.json", "aws-apprunner-observabilityconfiguration.json", - "aws-ec2-securitygroupegress.json", "aws-ec2-localgatewayroutetablevpcassociation.json", "aws-config-organizationconfigrule.json", "aws-glue-dataqualityruleset.json", @@ -1115,6 +1135,7 @@ "aws-ec2-networkperformancemetricsubscription.json", "aws-medialive-channel.json", "aws-greengrass-devicedefinition.json", + "aws-cleanroomsml-trainingdataset.json", "aws-cloudfront-continuousdeploymentpolicy.json", "aws-quicksight-analysis.json", "aws-kendra-faq.json", @@ -1135,7 +1156,6 @@ "aws-apigatewayv2-integrationresponse.json", "aws-iotevents-input.json", "aws-ec2-networkacl.json", - "aws-lambda-eventsourcemapping.json", "aws-budgets-budgetsaction.json", "aws-logs-resourcepolicy.json", "aws-servicecatalog-launchnotificationconstraint.json", @@ -1156,7 +1176,6 @@ "aws-mediatailor-channel.json", "aws-lambda-url.json", "aws-mediatailor-channelpolicy.json", - "aws-gamelift-fleet.json", "aws-datasync-locationfsxwindows.json", "aws-gamelift-build.json", "aws-apigateway-requestvalidator.json", @@ -1196,6 +1215,7 @@ "aws-rekognition-collection.json", "aws-opsworks-layer.json", "aws-kinesisfirehose-deliverystream.json", + "aws-deadline-queuefleetassociation.json", "aws-ec2-networkinsightsaccessscope.json", "aws-cognito-userpoolusertogroupattachment.json", "aws-pcaconnectorad-directoryregistration.json", @@ -1232,6 +1252,7 @@ "aws-iotsitewise-portal.json", "aws-events-archive.json", "aws-msk-cluster.json", + "aws-securityhub-delegatedadmin.json", "aws-controltower-enabledbaseline.json", "aws-appstream-appblockbuilder.json", "aws-ec2-vpcendpointconnectionnotification.json", @@ -1262,10 +1283,10 @@ "aws-appconfig-deploymentstrategy.json", "aws-glue-devendpoint.json", "aws-sagemaker-modelpackage.json", + "aws-cleanrooms-configuredtable.json", "aws-wafregional-sizeconstraintset.json", "aws-eventschemas-discoverer.json", "aws-networkmanager-connectpeer.json", - "aws-elasticache-usergroup.json", "aws-iot-thinggroup.json", "aws-logs-deliverydestination.json", "aws-imagebuilder-imagerecipe.json", @@ -1279,6 +1300,7 @@ "aws-robomaker-simulationapplication.json", "aws-networkmanager-transitgatewayregistration.json", "aws-amplify-app.json", + "aws-entityresolution-policystatement.json", "aws-inspectorv2-filter.json", "aws-elasticache-replicationgroup.json", "aws-stepfunctions-statemachinealias.json", @@ -1338,6 +1360,7 @@ "aws-lambda-alias.json", "aws-logs-loganomalydetector.json", "aws-waf-ipset.json", + "aws-deadline-fleet.json", "aws-vpclattice-servicenetworkserviceassociation.json", "aws-ec2-transitgatewaymulticastdomainassociation.json", "aws-s3outposts-endpoint.json", @@ -1438,6 +1461,7 @@ "aws-mediaconnect-bridgesource.json", "aws-mediapackagev2-channelpolicy.json", "aws-iot-jobtemplate.json", + "aws-deadline-queue.json", "aws-servicecatalog-portfolioproductassociation.json", "aws-databrew-project.json", "aws-vpclattice-targetgroup.json", @@ -1452,6 +1476,7 @@ "aws-iam-servercertificate.json", "aws-codestarconnections-connection.json", "aws-iot-securityprofile.json", + "aws-globalaccelerator-crossaccountattachment.json", "aws-events-eventbus.json", "aws-docdb-eventsubscription.json", "aws-sqs-queueinlinepolicy.json", @@ -1498,6 +1523,7 @@ "aws-efs-filesystem.json", "aws-config-organizationconformancepack.json", "aws-logs-querydefinition.json", + "aws-securityhub-productsubscription.json", "aws-iam-instanceprofile.json", "aws-iot-billinggroup.json", "aws-appstream-application.json", @@ -1515,6 +1541,7 @@ "aws-cognito-userpooluicustomizationattachment.json", "aws-sagemaker-notebookinstancelifecycleconfig.json", "aws-imagebuilder-containerrecipe.json", + "aws-codeconnections-connection.json", "aws-efs-accesspoint.json", "aws-redshift-clustersecuritygroupingress.json", "aws-servicecatalogappregistry-attributegroupassociation.json", @@ -1544,6 +1571,7 @@ "aws-ec2-clientvpnroute.json", "aws-imagebuilder-workflow.json", "aws-ecs-taskset.json", + "aws-securitylake-awslogsource.json", "aws-appsync-apikey.json", "aws-cloudformation-typeactivation.json", "aws-groundstation-dataflowendpointgroup.json", @@ -1597,9 +1625,9 @@ "aws-neptune-dbcluster.json", "aws-evidently-feature.json", "aws-backup-backupvault.json", - "aws-ec2-customergateway.json", "aws-iam-grouppolicy.json", "aws-scheduler-schedule.json", + "aws-deadline-licenseendpoint.json", "aws-waf-bytematchset.json", "aws-amplifyuibuilder-theme.json", "aws-neptune-dbclusterparametergroup.json", @@ -1623,6 +1651,7 @@ "aws-glue-trigger.json", "aws-globalaccelerator-listener.json", "aws-verifiedpermissions-policystore.json", + "aws-deadline-queueenvironment.json", "aws-signer-signingprofile.json", "aws-kendraranking-executionplan.json", "aws-ec2-vpcpeeringconnection.json", @@ -1698,6 +1727,7 @@ "aws-codebuild-sourcecredential.json", "aws-emr-instancefleetconfig.json", "aws-emr-cluster.json", + "aws-securitylake-datalake.json", "aws-codepipeline-webhook.json", "aws-apigatewayv2-domainname.json", "aws-rds-dbcluster.json", @@ -1733,11 +1763,11 @@ "aws-ec2-localgatewayroutetable.json", "aws-apigateway-resource.json", "aws-sagemaker-appimageconfig.json", - "aws-verifiedpermissions-identitysource.json", "aws-macie-session.json", "aws-elasticloadbalancingv2-targetgroup.json", "aws-applicationautoscaling-scalingpolicy.json", "aws-pipes-pipe.json", + "aws-iotsitewise-gateway.json", "aws-emr-studiosessionmapping.json", "aws-cloudformation-macro.json", "aws-robomaker-robotapplication.json", @@ -1784,6 +1814,7 @@ "aws-logs-delivery.json", "aws-servicecatalog-portfolio.json", "aws-iot-policy.json", + "aws-aps-scraper.json", "aws-ec2-transitgatewayroute.json", "aws-ssm-maintenancewindow.json", "aws-datazone-domain.json", @@ -1802,6 +1833,7 @@ "aws-devopsguru-loganomalydetectionintegration.json", "aws-networkmanager-link.json", "aws-qldb-stream.json", + "aws-securitylake-subscriber.json", "aws-sagemaker-notebookinstance.json", "aws-iotsitewise-dashboard.json", "aws-sso-instanceaccesscontrolattributeconfiguration.json", @@ -1836,6 +1868,7 @@ "aws-gamelift-matchmakingruleset.json", "aws-ec2-egressonlyinternetgateway.json", "aws-athena-capacityreservation.json", + "aws-securityhub-insight.json", "aws-config-conformancepack.json", "aws-ec2-vpccidrblock.json", "aws-aps-workspace.json", @@ -1848,6 +1881,7 @@ "aws-acmpca-certificateauthority.json", "aws-athena-preparedstatement.json", "aws-autoscaling-scheduledaction.json", + "aws-entityresolution-idmappingworkflow.json", "aws-cognito-identitypoolprincipaltag.json", "aws-apigatewayv2-route.json", "aws-lakeformation-resource.json", @@ -1935,6 +1969,7 @@ "aws-personalize-dataset.json", "aws-iot1click-placement.json", "aws-ec2-prefixlist.json", + "aws-ec2-instance.json", "aws-opensearchserverless-securityconfig.json", "aws-networkmanager-device.json", "aws-proton-environmentaccountconnection.json", @@ -1952,6 +1987,7 @@ "aws-cleanrooms-collaboration.json", "aws-ssm-association.json", "aws-ec2-clientvpnendpoint.json", + "aws-entityresolution-idnamespace.json", "aws-cloudfront-responseheaderspolicy.json", "aws-securityhub-automationrule.json", "aws-msk-clusterpolicy.json", @@ -1977,9 +2013,11 @@ "aws-route53resolver-outpostresolver.json", "aws-acmpca-certificate.json", "aws-ec2-ipamallocation.json", + "aws-deadline-storageprofile.json", "aws-workspaces-workspace.json", "aws-inspector-assessmenttemplate.json", "aws-emr-studio.json", + "aws-deadline-meteredproduct.json", "aws-ec2-instanceconnectendpoint.json", "aws-dax-parametergroup.json", "aws-datazone-subscriptiontarget.json", diff --git a/src/cfnlint/data/schemas/providers/us_east_2/aws-cleanrooms-configuredtable.json b/src/cfnlint/data/schemas/providers/us_east_2/aws-cleanrooms-configuredtable.json deleted file mode 100644 index a693e37236..0000000000 --- a/src/cfnlint/data/schemas/providers/us_east_2/aws-cleanrooms-configuredtable.json +++ /dev/null @@ -1,578 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AllowedColumns", - "/properties/AnalysisMethod", - "/properties/TableReference" - ], - "definitions": { - "AggregateColumn": { - "additionalProperties": false, - "properties": { - "ColumnNames": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AnalysisRuleColumnName" - }, - "minItems": 1, - "type": "array" - }, - "Function": { - "$ref": "#/definitions/AggregateFunctionName" - } - }, - "required": [ - "ColumnNames", - "Function" - ], - "type": "object" - }, - "AggregateFunctionName": { - "enum": [ - "SUM", - "SUM_DISTINCT", - "COUNT", - "COUNT_DISTINCT", - "AVG" - ], - "type": "string" - }, - "AggregationConstraint": { - "additionalProperties": false, - "properties": { - "ColumnName": { - "$ref": "#/definitions/AnalysisRuleColumnName" - }, - "Minimum": { - "maximum": 100000, - "minimum": 2, - "type": "number" - }, - "Type": { - "$ref": "#/definitions/AggregationType" - } - }, - "required": [ - "ColumnName", - "Minimum", - "Type" - ], - "type": "object" - }, - "AggregationType": { - "enum": [ - "COUNT_DISTINCT" - ], - "type": "string" - }, - "AllowedAnalyses": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AllowedAnalysis" - }, - "minItems": 0, - "type": "array" - }, - "AllowedAnalysis": { - "maxLength": 200, - "minLength": 0, - "pattern": "(ANY_QUERY|arn:[\\w]{3}:cleanrooms:[\\w]{2}-[\\w]{4,9}-[\\d]:[\\d]{12}:membership/[\\d\\w-]+/analysistemplate/[\\d\\w-]+)", - "type": "string" - }, - "AllowedAnalysisProvider": { - "maxLength": 12, - "minLength": 12, - "pattern": "\\d+", - "type": "string" - }, - "AllowedAnalysisProviders": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AllowedAnalysisProvider" - }, - "minItems": 0, - "type": "array" - }, - "AnalysisMethod": { - "enum": [ - "DIRECT_QUERY" - ], - "type": "string" - }, - "AnalysisRule": { - "additionalProperties": false, - "properties": { - "Policy": { - "$ref": "#/definitions/ConfiguredTableAnalysisRulePolicy" - }, - "Type": { - "$ref": "#/definitions/ConfiguredTableAnalysisRuleType" - } - }, - "required": [ - "Type", - "Policy" - ], - "type": "object" - }, - "AnalysisRuleAggregation": { - "additionalProperties": false, - "properties": { - "AggregateColumns": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AggregateColumn" - }, - "minItems": 1, - "type": "array" - }, - "AllowedJoinOperators": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/JoinOperator" - }, - "maxItems": 2, - "type": "array" - }, - "DimensionColumns": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AnalysisRuleColumnName" - }, - "type": "array" - }, - "JoinColumns": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AnalysisRuleColumnName" - }, - "type": "array" - }, - "JoinRequired": { - "$ref": "#/definitions/JoinRequiredOption" - }, - "OutputConstraints": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AggregationConstraint" - }, - "minItems": 1, - "type": "array" - }, - "ScalarFunctions": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ScalarFunctions" - }, - "type": "array" - } - }, - "required": [ - "AggregateColumns", - "JoinColumns", - "DimensionColumns", - "ScalarFunctions", - "OutputConstraints" - ], - "type": "object" - }, - "AnalysisRuleColumnName": { - "maxLength": 127, - "minLength": 1, - "pattern": "^[a-z0-9_](([a-z0-9_ ]+-)*([a-z0-9_ ]+))?$", - "type": "string" - }, - "AnalysisRuleCustom": { - "additionalProperties": false, - "properties": { - "AllowedAnalyses": { - "$ref": "#/definitions/AllowedAnalyses" - }, - "AllowedAnalysisProviders": { - "$ref": "#/definitions/AllowedAnalysisProviders" - }, - "DifferentialPrivacy": { - "$ref": "#/definitions/DifferentialPrivacy" - } - }, - "required": [ - "AllowedAnalyses" - ], - "type": "object" - }, - "AnalysisRuleList": { - "additionalProperties": false, - "properties": { - "AllowedJoinOperators": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/JoinOperator" - }, - "maxItems": 2, - "type": "array" - }, - "JoinColumns": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AnalysisRuleColumnName" - }, - "minItems": 1, - "type": "array" - }, - "ListColumns": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AnalysisRuleColumnName" - }, - "type": "array" - } - }, - "required": [ - "JoinColumns", - "ListColumns" - ], - "type": "object" - }, - "ConfiguredTableAnalysisRulePolicy": { - "additionalProperties": false, - "properties": { - "V1": { - "$ref": "#/definitions/ConfiguredTableAnalysisRulePolicyV1" - } - }, - "required": [ - "V1" - ], - "title": "V1", - "type": "object" - }, - "ConfiguredTableAnalysisRulePolicyV1": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "List": { - "$ref": "#/definitions/AnalysisRuleList" - } - }, - "required": [ - "List" - ], - "title": "List", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "Aggregation": { - "$ref": "#/definitions/AnalysisRuleAggregation" - } - }, - "required": [ - "Aggregation" - ], - "title": "Aggregation", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "Custom": { - "$ref": "#/definitions/AnalysisRuleCustom" - } - }, - "required": [ - "Custom" - ], - "title": "Custom", - "type": "object" - } - ] - }, - "ConfiguredTableAnalysisRuleType": { - "enum": [ - "AGGREGATION", - "LIST", - "CUSTOM" - ], - "type": "string" - }, - "DifferentialPrivacy": { - "additionalProperties": false, - "properties": { - "Columns": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/DifferentialPrivacyColumn" - }, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "Columns" - ], - "type": "object" - }, - "DifferentialPrivacyColumn": { - "additionalProperties": false, - "properties": { - "Name": { - "type": "string" - } - }, - "required": [ - "Name" - ], - "type": "object" - }, - "GlueTableReference": { - "additionalProperties": false, - "properties": { - "DatabaseName": { - "maxLength": 128, - "pattern": "^[a-zA-Z0-9_](([a-zA-Z0-9_ ]+-)*([a-zA-Z0-9_ ]+))?$", - "type": "string" - }, - "TableName": { - "maxLength": 128, - "pattern": "^[a-zA-Z0-9_](([a-zA-Z0-9_ ]+-)*([a-zA-Z0-9_ ]+))?$", - "type": "string" - } - }, - "required": [ - "DatabaseName", - "TableName" - ], - "type": "object" - }, - "JoinOperator": { - "enum": [ - "OR", - "AND" - ], - "type": "string" - }, - "JoinRequiredOption": { - "enum": [ - "QUERY_RUNNER" - ], - "type": "string" - }, - "ScalarFunctions": { - "enum": [ - "TRUNC", - "ABS", - "CEILING", - "FLOOR", - "LN", - "LOG", - "ROUND", - "SQRT", - "CAST", - "LOWER", - "RTRIM", - "UPPER", - "COALESCE", - "CONVERT", - "CURRENT_DATE", - "DATEADD", - "EXTRACT", - "GETDATE", - "SUBSTRING", - "TO_CHAR", - "TO_DATE", - "TO_NUMBER", - "TO_TIMESTAMP", - "TRIM" - ], - "type": "string" - }, - "TableReference": { - "additionalProperties": false, - "properties": { - "Glue": { - "$ref": "#/definitions/GlueTableReference" - } - }, - "required": [ - "Glue" - ], - "title": "Glue", - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "cleanrooms:CreateConfiguredTable", - "cleanrooms:DeleteConfiguredTable", - "cleanrooms:DeleteConfiguredTableAnalysisRule", - "cleanrooms:CreateConfiguredTableAnalysisRule", - "cleanrooms:GetConfiguredTable", - "cleanrooms:GetConfiguredTableAnalysisRule", - "glue:GetDatabase", - "glue:GetDatabases", - "glue:GetTable", - "glue:GetTables", - "glue:GetPartition", - "glue:GetPartitions", - "glue:BatchGetPartition", - "glue:GetSchemaVersion", - "cleanrooms:ListTagsForResource", - "cleanrooms:TagResource", - "cleanrooms:ListConfiguredTables" - ] - }, - "delete": { - "permissions": [ - "cleanrooms:DeleteConfiguredTable", - "cleanrooms:GetConfiguredTable", - "cleanrooms:ListConfiguredTables", - "cleanrooms:GetConfiguredTableAnalysisRule", - "cleanrooms:DeleteConfiguredTableAnalysisRule", - "cleanrooms:ListTagsForResource", - "cleanrooms:UntagResource", - "glue:GetDatabase", - "glue:GetDatabases", - "glue:GetTable", - "glue:GetTables", - "glue:GetPartition", - "glue:GetPartitions", - "glue:BatchGetPartition", - "glue:GetSchemaVersion" - ] - }, - "list": { - "permissions": [ - "cleanrooms:ListConfiguredTables" - ] - }, - "read": { - "permissions": [ - "cleanrooms:GetConfiguredTable", - "cleanrooms:GetConfiguredTableAnalysisRule", - "cleanrooms:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "cleanrooms:UpdateConfiguredTable", - "cleanrooms:GetConfiguredTable", - "cleanrooms:CreateConfiguredTableAnalysisRule", - "cleanrooms:UpdateConfiguredTableAnalysisRule", - "cleanrooms:GetConfiguredTableAnalysisRule", - "cleanrooms:DeleteConfiguredTableAnalysisRule", - "cleanrooms:ListTagsForResource", - "cleanrooms:TagResource", - "cleanrooms:UntagResource", - "glue:GetDatabase", - "glue:GetDatabases", - "glue:GetTable", - "glue:GetTables", - "glue:GetPartition", - "glue:GetPartitions", - "glue:BatchGetPartition", - "glue:GetSchemaVersion" - ] - } - }, - "primaryIdentifier": [ - "/properties/ConfiguredTableIdentifier" - ], - "properties": { - "AllowedColumns": { - "insertionOrder": false, - "items": { - "maxLength": 128, - "pattern": "^[a-z0-9_](([a-z0-9_ ]+-)*([a-z0-9_ ]+))?$", - "type": "string" - }, - "maxItems": 100, - "minItems": 1, - "type": "array" - }, - "AnalysisMethod": { - "$ref": "#/definitions/AnalysisMethod" - }, - "AnalysisRules": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/AnalysisRule" - }, - "maxItems": 1, - "minItems": 1, - "type": "array" - }, - "Arn": { - "maxLength": 100, - "type": "string" - }, - "ConfiguredTableIdentifier": { - "maxLength": 36, - "minLength": 36, - "pattern": "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}", - "type": "string" - }, - "Description": { - "maxLength": 255, - "pattern": "^[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDBFF-\\uDC00\\uDFFF\\t\\r\\n]*$", - "type": "string" - }, - "Name": { - "maxLength": 100, - "minLength": 1, - "pattern": "^(?!\\s*$)[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDBFF-\\uDC00\\uDFFF\\t]*$", - "type": "string" - }, - "TableReference": { - "$ref": "#/definitions/TableReference" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/ConfiguredTableIdentifier" - ], - "required": [ - "AllowedColumns", - "AnalysisMethod", - "Name", - "TableReference" - ], - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::CleanRooms::ConfiguredTable" -} diff --git a/src/cfnlint/data/schemas/providers/us_east_2/aws-dynamodb-globaltable.json b/src/cfnlint/data/schemas/providers/us_east_2/aws-dynamodb-globaltable.json index 4e5ba995cb..ae37e9142b 100644 --- a/src/cfnlint/data/schemas/providers/us_east_2/aws-dynamodb-globaltable.json +++ b/src/cfnlint/data/schemas/providers/us_east_2/aws-dynamodb-globaltable.json @@ -8,6 +8,27 @@ ] ], "additionalProperties": false, + "allOf": [ + { + "if": { + "required": [ + "LocalSecondaryIndexes" + ], + "type": "object" + }, + "then": { + "properties": { + "AttributeDefinitions": { + "minItems": 2 + }, + "KeySchema": { + "minItems": 2 + } + }, + "type": "object" + } + } + ], "createOnlyProperties": [ "/properties/LocalSecondaryIndexes", "/properties/TableName", @@ -79,13 +100,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "minItems": 1, - "type": "array", - "uniqueItems": true + "minItems": 1 }, "Projection": { "$ref": "#/definitions/Projection" @@ -102,22 +119,60 @@ "type": "object" }, "KeySchema": { - "additionalProperties": false, - "properties": { - "AttributeName": { - "maxLength": 255, - "minLength": 1, - "type": "string" + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "KeyType": { + "enum": [ + "HASH", + "RANGE" + ], + "type": "string" + } }, - "KeyType": { - "type": "string" - } + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" }, - "required": [ - "KeyType", - "AttributeName" + "prefixItems": [ + { + "additionalProperties": false, + "properties": { + "KeyType": { + "const": "HASH", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + }, + { + "properties": { + "KeyType": { + "const": "RANGE", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + } ], - "type": "object" + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "KinesisStreamSpecification": { "additionalProperties": false, @@ -147,12 +202,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "type": "array", - "uniqueItems": true + "minItems": 2 }, "Projection": { "$ref": "#/definitions/Projection" @@ -511,7 +563,10 @@ }, "minItems": 1, "type": "array", - "uniqueItems": true + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "BillingMode": { "type": "string" @@ -525,13 +580,9 @@ "uniqueItems": true }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "minItems": 1, - "type": "array", - "uniqueItems": true + "minItems": 1 }, "LocalSecondaryIndexes": { "insertionOrder": false, diff --git a/src/cfnlint/data/schemas/providers/us_east_2/aws-dynamodb-table.json b/src/cfnlint/data/schemas/providers/us_east_2/aws-dynamodb-table.json index efc82f1d70..f21d084b10 100644 --- a/src/cfnlint/data/schemas/providers/us_east_2/aws-dynamodb-table.json +++ b/src/cfnlint/data/schemas/providers/us_east_2/aws-dynamodb-table.json @@ -1,5 +1,26 @@ { "additionalProperties": false, + "allOf": [ + { + "if": { + "required": [ + "LocalSecondaryIndexes" + ], + "type": "object" + }, + "then": { + "properties": { + "AttributeDefinitions": { + "minItems": 2 + }, + "KeySchema": { + "minItems": 2 + } + }, + "type": "object" + } + } + ], "cfnLint": [ "AWS::DynamoDB::Table/Properties" ], @@ -95,11 +116,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 }, "Projection": { "$ref": "#/definitions/Projection" @@ -147,24 +166,57 @@ "type": "object" }, "KeySchema": { - "additionalProperties": false, - "properties": { - "AttributeName": { - "type": "string" + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "type": "string" + }, + "KeyType": { + "enum": [ + "HASH", + "RANGE" + ], + "type": "string" + } }, - "KeyType": { - "enum": [ - "HASH", - "RANGE" + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" + }, + "prefixItems": [ + { + "properties": { + "KeyType": { + "const": "HASH", + "type": "string" + } + }, + "required": [ + "KeyType" ], - "type": "string" + "type": "object" + }, + { + "properties": { + "KeyType": { + "const": "RANGE", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" } - }, - "required": [ - "KeyType", - "AttributeName" ], - "type": "object" + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "KinesisStreamSpecification": { "additionalProperties": false, @@ -192,11 +244,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 2 }, "Projection": { "$ref": "#/definitions/Projection" @@ -451,7 +501,10 @@ "$ref": "#/definitions/AttributeDefinition" }, "type": "array", - "uniqueItems": true + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "BillingMode": { "enum": [ @@ -479,11 +532,9 @@ "KeySchema": { "oneOf": [ { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 }, { "type": "object" diff --git a/src/cfnlint/data/schemas/providers/us_east_2/aws-ec2-customergateway.json b/src/cfnlint/data/schemas/providers/us_east_2/aws-ec2-customergateway.json new file mode 100644 index 0000000000..19e10fe34c --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_east_2/aws-ec2-customergateway.json @@ -0,0 +1,113 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/CertificateArn", + "/properties/BgpAsn", + "/properties/Type", + "/properties/IpAddress", + "/properties/DeviceName" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "ec2:CreateCustomerGateway", + "ec2:DescribeCustomerGateways", + "ec2:CreateTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteCustomerGateway", + "ec2:DescribeCustomerGateways", + "ec2:DeleteTags" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeCustomerGateways" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeCustomerGateways" + ] + }, + "update": { + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags", + "ec2:DescribeCustomerGateways" + ] + } + }, + "primaryIdentifier": [ + "/properties/CustomerGatewayId" + ], + "properties": { + "BgpAsn": { + "default": 65000, + "type": "integer" + }, + "CertificateArn": { + "pattern": "^arn:(aws[a-zA-Z-]*)?:acm:[a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\\d{1}:\\d{12}:certificate\\/[a-zA-Z0-9-_]+$", + "type": "string" + }, + "CustomerGatewayId": { + "type": "string" + }, + "DeviceName": { + "type": "string" + }, + "IpAddress": { + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Type": { + "enum": [ + "ipsec.1" + ], + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/CustomerGatewayId" + ], + "required": [ + "BgpAsn", + "IpAddress", + "Type" + ], + "tagging": { + "cloudFormationSystemTags": true, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::CustomerGateway" +} diff --git a/src/cfnlint/data/schemas/providers/us_east_2/aws-ec2-instance.json b/src/cfnlint/data/schemas/providers/us_east_2/aws-ec2-instance.json deleted file mode 100644 index 7b3bfed595..0000000000 --- a/src/cfnlint/data/schemas/providers/us_east_2/aws-ec2-instance.json +++ /dev/null @@ -1,571 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ElasticGpuSpecifications", - "/properties/Ipv6Addresses", - "/properties/PlacementGroupName", - "/properties/HostResourceGroupArn", - "/properties/ImageId", - "/properties/CpuOptions", - "/properties/PrivateIpAddress", - "/properties/ElasticInferenceAccelerators", - "/properties/EnclaveOptions", - "/properties/HibernationOptions", - "/properties/KeyName", - "/properties/LicenseSpecifications", - "/properties/NetworkInterfaces", - "/properties/AvailabilityZone", - "/properties/SubnetId", - "/properties/LaunchTemplate", - "/properties/SecurityGroups", - "/properties/Ipv6AddressCount" - ], - "definitions": { - "AssociationParameter": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "BlockDeviceMapping": { - "additionalProperties": false, - "properties": { - "DeviceName": { - "type": "string" - }, - "Ebs": { - "$ref": "#/definitions/Ebs" - }, - "NoDevice": { - "$ref": "#/definitions/NoDevice" - }, - "VirtualName": { - "type": "string" - } - }, - "required": [ - "DeviceName" - ], - "requiredXor": [ - "VirtualName", - "Ebs", - "NoDevice" - ], - "type": "object" - }, - "CpuOptions": { - "additionalProperties": false, - "properties": { - "CoreCount": { - "type": "integer" - }, - "ThreadsPerCore": { - "type": "integer" - } - }, - "type": "object" - }, - "CreditSpecification": { - "additionalProperties": false, - "properties": { - "CPUCredits": { - "type": "string" - } - }, - "type": "object" - }, - "Ebs": { - "additionalProperties": false, - "properties": { - "DeleteOnTermination": { - "type": "boolean" - }, - "Encrypted": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "KmsKeyId": { - "type": "string" - }, - "SnapshotId": { - "type": "string" - }, - "VolumeSize": { - "type": "integer" - }, - "VolumeType": { - "type": "string" - } - }, - "type": "object" - }, - "ElasticGpuSpecification": { - "additionalProperties": false, - "properties": { - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "ElasticInferenceAccelerator": { - "additionalProperties": false, - "properties": { - "Count": { - "type": "integer" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "EnclaveOptions": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - } - }, - "type": "object" - }, - "HibernationOptions": { - "additionalProperties": false, - "properties": { - "Configured": { - "type": "boolean" - } - }, - "type": "object" - }, - "InstanceIpv6Address": { - "additionalProperties": false, - "properties": { - "Ipv6Address": { - "type": "string" - } - }, - "required": [ - "Ipv6Address" - ], - "type": "object" - }, - "LaunchTemplateSpecification": { - "additionalProperties": false, - "properties": { - "LaunchTemplateId": { - "type": "string" - }, - "LaunchTemplateName": { - "type": "string" - }, - "Version": { - "type": "string" - } - }, - "required": [ - "Version" - ], - "type": "object" - }, - "LicenseSpecification": { - "additionalProperties": false, - "properties": { - "LicenseConfigurationArn": { - "type": "string" - } - }, - "required": [ - "LicenseConfigurationArn" - ], - "type": "object" - }, - "NetworkInterface": { - "additionalProperties": false, - "properties": { - "AssociateCarrierIpAddress": { - "type": "boolean" - }, - "AssociatePublicIpAddress": { - "type": "boolean" - }, - "DeleteOnTermination": { - "type": "boolean" - }, - "Description": { - "type": "string" - }, - "DeviceIndex": { - "type": "string" - }, - "GroupSet": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": false - }, - "NetworkInterfaceId": { - "type": "string" - }, - "PrivateIpAddress": { - "type": "string" - }, - "PrivateIpAddresses": { - "items": { - "$ref": "#/definitions/PrivateIpAddressSpecification" - }, - "type": "array", - "uniqueItems": false - }, - "SecondaryPrivateIpAddressCount": { - "type": "integer" - }, - "SubnetId": { - "type": "string" - } - }, - "required": [ - "DeviceIndex" - ], - "type": "object" - }, - "NoDevice": { - "additionalProperties": false, - "type": "object" - }, - "PrivateDnsNameOptions": { - "additionalProperties": false, - "properties": { - "EnableResourceNameDnsAAAARecord": { - "type": "boolean" - }, - "EnableResourceNameDnsARecord": { - "type": "boolean" - }, - "HostnameType": { - "type": "string" - } - }, - "type": "object" - }, - "PrivateIpAddressSpecification": { - "additionalProperties": false, - "properties": { - "Primary": { - "type": "boolean" - }, - "PrivateIpAddress": { - "type": "string" - } - }, - "required": [ - "PrivateIpAddress", - "Primary" - ], - "type": "object" - }, - "SsmAssociation": { - "additionalProperties": false, - "properties": { - "AssociationParameters": { - "items": { - "$ref": "#/definitions/AssociationParameter" - }, - "type": "array", - "uniqueItems": false - }, - "DocumentName": { - "type": "string" - } - }, - "required": [ - "DocumentName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "Volume": { - "additionalProperties": false, - "properties": { - "Device": { - "type": "string" - }, - "VolumeId": { - "type": "string" - } - }, - "required": [ - "VolumeId", - "Device" - ], - "type": "object" - } - }, - "dependentExcluded": { - "NetworkInterfaces": [ - "SubnetId" - ], - "SubnetId": [ - "NetworkInterfaces" - ] - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AdditionalInfo": { - "type": "string" - }, - "Affinity": { - "enum": [ - "default", - "host" - ], - "type": "string" - }, - "AvailabilityZone": { - "cfnLint": [ - "AWS::EC2::Instance/Properties/AvailabilityZone" - ], - "type": "string" - }, - "BlockDeviceMappings": { - "items": { - "$ref": "#/definitions/BlockDeviceMapping" - }, - "type": "array", - "uniqueItems": false - }, - "CpuOptions": { - "$ref": "#/definitions/CpuOptions" - }, - "CreditSpecification": { - "$ref": "#/definitions/CreditSpecification" - }, - "DisableApiTermination": { - "type": "boolean" - }, - "EbsOptimized": { - "type": "boolean" - }, - "ElasticGpuSpecifications": { - "items": { - "$ref": "#/definitions/ElasticGpuSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "ElasticInferenceAccelerators": { - "items": { - "$ref": "#/definitions/ElasticInferenceAccelerator" - }, - "type": "array", - "uniqueItems": true - }, - "EnclaveOptions": { - "$ref": "#/definitions/EnclaveOptions" - }, - "HibernationOptions": { - "$ref": "#/definitions/HibernationOptions" - }, - "HostId": { - "type": "string" - }, - "HostResourceGroupArn": { - "type": "string" - }, - "IamInstanceProfile": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "ImageId": { - "type": "string" - }, - "InstanceInitiatedShutdownBehavior": { - "type": "string" - }, - "InstanceType": { - "cfnLint": [ - "AWS::EC2::Instance/Properties/InstanceType" - ], - "type": "string" - }, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": false - }, - "KernelId": { - "type": "string" - }, - "KeyName": { - "type": "string" - }, - "LaunchTemplate": { - "$ref": "#/definitions/LaunchTemplateSpecification" - }, - "LicenseSpecifications": { - "items": { - "$ref": "#/definitions/LicenseSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "Monitoring": { - "type": "boolean" - }, - "NetworkInterfaces": { - "items": { - "$ref": "#/definitions/NetworkInterface" - }, - "type": "array", - "uniqueItems": false - }, - "PlacementGroupName": { - "type": "string" - }, - "PrivateDnsName": { - "type": "string" - }, - "PrivateDnsNameOptions": { - "$ref": "#/definitions/PrivateDnsNameOptions" - }, - "PrivateIp": { - "type": "string" - }, - "PrivateIpAddress": { - "type": "string" - }, - "PropagateTagsToVolumeOnCreation": { - "type": "boolean" - }, - "PublicDnsName": { - "type": "string" - }, - "PublicIp": { - "type": "string" - }, - "RamdiskId": { - "type": "string" - }, - "SecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SecurityGroups": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SourceDestCheck": { - "type": "boolean" - }, - "SsmAssociations": { - "items": { - "$ref": "#/definitions/SsmAssociation" - }, - "type": "array", - "uniqueItems": false - }, - "SubnetId": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "Tenancy": { - "enum": [ - "default", - "dedicated", - "host" - ], - "type": "string" - }, - "UserData": { - "type": "string" - }, - "Volumes": { - "items": { - "$ref": "#/definitions/Volume" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/PublicIp", - "/properties/Id", - "/properties/PublicDnsName", - "/properties/PrivateDnsName", - "/properties/PrivateIp" - ], - "requiredXor": [ - "ImageId", - "LaunchTemplate" - ], - "typeName": "AWS::EC2::Instance" -} diff --git a/src/cfnlint/data/schemas/providers/us_east_2/aws-ec2-securitygroupegress.json b/src/cfnlint/data/schemas/providers/us_east_2/aws-ec2-securitygroupegress.json new file mode 100644 index 0000000000..f94631dad2 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_east_2/aws-ec2-securitygroupegress.json @@ -0,0 +1,98 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::EC2::SecurityGroupEgress/Properties" + ], + "createOnlyProperties": [ + "/properties/IpProtocol", + "/properties/DestinationSecurityGroupId", + "/properties/ToPort", + "/properties/CidrIp", + "/properties/FromPort", + "/properties/GroupId", + "/properties/CidrIpv6", + "/properties/DestinationPrefixListId" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:AuthorizeSecurityGroupEgress", + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "delete": { + "permissions": [ + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "update": { + "permissions": [ + "ec2:UpdateSecurityGroupRuleDescriptionsEgress" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CidrIp": { + "type": "string" + }, + "CidrIpv6": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "DestinationPrefixListId": { + "type": "string" + }, + "DestinationSecurityGroupId": { + "type": "string" + }, + "FromPort": { + "minimum": -1, + "type": "integer" + }, + "GroupId": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "IpProtocol": { + "type": "string" + }, + "ToPort": { + "minimum": -1, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IpProtocol", + "GroupId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SecurityGroupEgress" +} diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-elasticache-usergroup.json b/src/cfnlint/data/schemas/providers/us_east_2/aws-elasticache-usergroup.json similarity index 96% rename from src/cfnlint/data/schemas/providers/ap_northeast_3/aws-elasticache-usergroup.json rename to src/cfnlint/data/schemas/providers/us_east_2/aws-elasticache-usergroup.json index 285e73b7c4..0a33952e4f 100644 --- a/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-elasticache-usergroup.json +++ b/src/cfnlint/data/schemas/providers/us_east_2/aws-elasticache-usergroup.json @@ -32,8 +32,7 @@ "permissions": [ "elasticache:CreateUserGroup", "elasticache:DescribeUserGroups", - "elasticache:ListTagsForResource", - "elasticache:AddTagsToResource" + "elasticache:ListTagsForResource" ] }, "delete": { diff --git a/src/cfnlint/data/schemas/providers/us_east_2/aws-gamelift-fleet.json b/src/cfnlint/data/schemas/providers/us_east_2/aws-gamelift-fleet.json new file mode 100644 index 0000000000..fb6db12d8b --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_east_2/aws-gamelift-fleet.json @@ -0,0 +1,523 @@ +{ + "$schema": "https://schema.cloudformation.us-east-1.amazonaws.com/provider.definition.schema.v1.json", + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplyCapacity", + "/properties/BuildId", + "/properties/CertificateConfiguration", + "/properties/EC2InstanceType", + "/properties/FleetType", + "/properties/InstanceRoleARN", + "/properties/InstanceRoleCredentialsProvider", + "/properties/LogPaths", + "/properties/PeerVpcAwsAccountId", + "/properties/PeerVpcId", + "/properties/ScriptId", + "/properties/ServerLaunchParameters", + "/properties/ServerLaunchPath", + "/properties/ComputeType" + ], + "definitions": { + "AnywhereConfiguration": { + "additionalProperties": false, + "properties": { + "Cost": { + "maxLength": 11, + "minLength": 1, + "pattern": "^\\d{1,5}(?:\\.\\d{1,5})?$", + "type": "string" + } + }, + "required": [ + "Cost" + ] + }, + "CertificateConfiguration": { + "additionalProperties": false, + "properties": { + "CertificateType": { + "enum": [ + "DISABLED", + "GENERATED" + ], + "type": "string" + } + }, + "required": [ + "CertificateType" + ], + "type": "object" + }, + "IpPermission": { + "additionalProperties": false, + "properties": { + "FromPort": { + "maximum": 60000, + "minimum": 1, + "type": "integer" + }, + "IpRange": { + "pattern": "(^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(/([0-9]|[1-2][0-9]|3[0-2]))$)", + "type": "string" + }, + "Protocol": { + "enum": [ + "TCP", + "UDP" + ], + "type": "string" + }, + "ToPort": { + "maximum": 60000, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "FromPort", + "IpRange", + "Protocol", + "ToPort" + ], + "type": "object" + }, + "Location": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[A-Za-z0-9\\-]+", + "type": "string" + }, + "LocationCapacity": { + "additionalProperties": false, + "properties": { + "DesiredEC2Instances": { + "minimum": 0, + "type": "integer" + }, + "MaxSize": { + "minimum": 0, + "type": "integer" + }, + "MinSize": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "DesiredEC2Instances", + "MinSize", + "MaxSize" + ], + "type": "object" + }, + "LocationConfiguration": { + "additionalProperties": false, + "properties": { + "Location": { + "$ref": "#/definitions/Location" + }, + "LocationCapacity": { + "$ref": "#/definitions/LocationCapacity" + } + }, + "required": [ + "Location" + ], + "type": "object" + }, + "ResourceCreationLimitPolicy": { + "additionalProperties": false, + "properties": { + "NewGameSessionsPerCreator": { + "minimum": 0, + "type": "integer" + }, + "PolicyPeriodInMinutes": { + "minimum": 0, + "type": "integer" + } + }, + "type": "object" + }, + "RuntimeConfiguration": { + "additionalProperties": false, + "properties": { + "GameSessionActivationTimeoutSeconds": { + "maximum": 600, + "minimum": 1, + "type": "integer" + }, + "MaxConcurrentGameSessionActivations": { + "maximum": 2147483647, + "minimum": 1, + "type": "integer" + }, + "ServerProcesses": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ServerProcess" + }, + "maxItems": 50, + "type": "array" + } + }, + "type": "object" + }, + "ScalingPolicy": { + "additionalProperties": false, + "properties": { + "ComparisonOperator": { + "enum": [ + "GreaterThanOrEqualToThreshold", + "GreaterThanThreshold", + "LessThanThreshold", + "LessThanOrEqualToThreshold" + ], + "type": "string" + }, + "EvaluationPeriods": { + "minimum": 1, + "type": "integer" + }, + "Location": { + "$ref": "#/definitions/Location" + }, + "MetricName": { + "enum": [ + "ActivatingGameSessions", + "ActiveGameSessions", + "ActiveInstances", + "AvailableGameSessions", + "AvailablePlayerSessions", + "CurrentPlayerSessions", + "IdleInstances", + "PercentAvailableGameSessions", + "PercentIdleInstances", + "QueueDepth", + "WaitTime", + "ConcurrentActivatableGameSessions" + ], + "type": "string" + }, + "Name": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "PolicyType": { + "enum": [ + "RuleBased", + "TargetBased" + ], + "type": "string" + }, + "ScalingAdjustment": { + "type": "integer" + }, + "ScalingAdjustmentType": { + "enum": [ + "ChangeInCapacity", + "ExactCapacity", + "PercentChangeInCapacity" + ], + "type": "string" + }, + "Status": { + "enum": [ + "ACTIVE", + "UPDATE_REQUESTED", + "UPDATING", + "DELETE_REQUESTED", + "DELETING", + "DELETED", + "ERROR" + ], + "type": "string" + }, + "TargetConfiguration": { + "$ref": "#/definitions/TargetConfiguration" + }, + "Threshold": { + "type": "number" + }, + "UpdateStatus": { + "enum": [ + "PENDING_UPDATE" + ], + "type": "string" + } + }, + "required": [ + "MetricName", + "Name" + ], + "type": "object" + }, + "ServerProcess": { + "additionalProperties": false, + "properties": { + "ConcurrentExecutions": { + "minimum": 1, + "type": "integer" + }, + "LaunchPath": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^([Cc]:\\\\game\\S+|/local/game/\\S+)", + "type": "string" + }, + "Parameters": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ConcurrentExecutions", + "LaunchPath" + ], + "type": "object" + }, + "TargetConfiguration": { + "additionalProperties": false, + "properties": { + "TargetValue": { + "type": "number" + } + }, + "required": [ + "TargetValue" + ], + "type": "object" + } + }, + "deprecatedProperties": [ + "/properties/LogPaths", + "/properties/ServerLaunchParameters", + "/properties/ServerLaunchPath" + ], + "handlers": { + "create": { + "permissions": [ + "gamelift:CreateFleet", + "gamelift:DescribeFleetAttributes", + "gamelift:DescribeFleetLocationAttributes", + "gamelift:UpdateFleetCapacity", + "gamelift:DescribeFleetLocationCapacity", + "gamelift:PutScalingPolicy", + "gamelift:DescribeScalingPolicies" + ] + }, + "delete": { + "permissions": [ + "gamelift:DeleteFleet", + "gamelift:DescribeFleetLocationCapacity", + "gamelift:DescribeScalingPolicies", + "gamelift:DeleteScalingPolicy" + ] + }, + "list": { + "permissions": [ + "gamelift:ListFleets" + ] + }, + "read": { + "permissions": [ + "gamelift:DescribeFleetAttributes", + "gamelift:DescribeFleetLocationAttributes", + "gamelift:DescribeFleetCapacity", + "gamelift:DescribeFleetPortSettings", + "gamelift:DescribeFleetUtilization", + "gamelift:DescribeRuntimeConfiguration", + "gamelift:DescribeEC2InstanceLimits", + "gamelift:DescribeFleetEvents", + "gamelift:DescribeScalingPolicies" + ] + }, + "update": { + "permissions": [ + "gamelift:UpdateFleetAttributes", + "gamelift:CreateFleetLocations", + "gamelift:DeleteFleetLocations", + "gamelift:UpdateFleetCapacity", + "gamelift:UpdateFleetPortSettings", + "gamelift:UpdateRuntimeConfiguration", + "gamelift:DescribeFleetLocationCapacity", + "gamelift:DescribeFleetPortSettings", + "gamelift:DescribeFleetLocationAttributes", + "gamelift:PutScalingPolicy", + "gamelift:DescribeScalingPolicies", + "gamelift:DeleteScalingPolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/FleetId" + ], + "properties": { + "AnywhereConfiguration": { + "$ref": "#/definitions/AnywhereConfiguration" + }, + "ApplyCapacity": { + "enum": [ + "ON_UPDATE", + "ON_CREATE_AND_UPDATE" + ], + "type": "string" + }, + "BuildId": { + "pattern": "^build-\\S+|^arn:.*:build/build-\\S+", + "type": "string" + }, + "CertificateConfiguration": { + "$ref": "#/definitions/CertificateConfiguration" + }, + "ComputeType": { + "enum": [ + "EC2", + "ANYWHERE" + ], + "type": "string" + }, + "Description": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "DesiredEC2Instances": { + "minimum": 0, + "type": "integer" + }, + "EC2InboundPermissions": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/IpPermission" + }, + "maxItems": 50, + "type": "array" + }, + "EC2InstanceType": { + "cfnLint": "AWS::GameLift::Fleet/EC2InstanceType", + "pattern": "^.*..*$", + "type": "string" + }, + "FleetId": { + "pattern": "^fleet-\\S+", + "type": "string" + }, + "FleetType": { + "enum": [ + "ON_DEMAND", + "SPOT" + ], + "type": "string" + }, + "InstanceRoleARN": { + "minLength": 1, + "pattern": "^arn:aws(-.*)?:[a-z-]+:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$", + "type": "string" + }, + "InstanceRoleCredentialsProvider": { + "enum": [ + "SHARED_CREDENTIAL_FILE" + ], + "type": "string" + }, + "Locations": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LocationConfiguration" + }, + "maxItems": 100, + "minItems": 1, + "type": "array" + }, + "LogPaths": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "MaxSize": { + "minimum": 0, + "type": "integer" + }, + "MetricGroups": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "maxItems": 1, + "type": "array" + }, + "MinSize": { + "minimum": 0, + "type": "integer" + }, + "Name": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "NewGameSessionProtectionPolicy": { + "enum": [ + "FullProtection", + "NoProtection" + ], + "type": "string" + }, + "PeerVpcAwsAccountId": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^[0-9]{12}$", + "type": "string" + }, + "PeerVpcId": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^vpc-\\S+", + "type": "string" + }, + "ResourceCreationLimitPolicy": { + "$ref": "#/definitions/ResourceCreationLimitPolicy" + }, + "RuntimeConfiguration": { + "$ref": "#/definitions/RuntimeConfiguration" + }, + "ScalingPolicies": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ScalingPolicy" + }, + "maxItems": 50, + "type": "array" + }, + "ScriptId": { + "pattern": "^script-\\S+|^arn:.*:script/script-\\S+", + "type": "string" + }, + "ServerLaunchParameters": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "ServerLaunchPath": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/FleetId" + ], + "required": [ + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-gamelift.git", + "taggable": true, + "typeName": "AWS::GameLift::Fleet", + "writeOnlyProperties": [ + "/properties/ApplyCapacity" + ] +} diff --git a/src/cfnlint/data/schemas/providers/us_east_2/aws-iotsitewise-gateway.json b/src/cfnlint/data/schemas/providers/us_east_2/aws-iotsitewise-gateway.json deleted file mode 100644 index 20b0ba8baa..0000000000 --- a/src/cfnlint/data/schemas/providers/us_east_2/aws-iotsitewise-gateway.json +++ /dev/null @@ -1,179 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/GatewayPlatform" - ], - "definitions": { - "CapabilityConfiguration": { - "type": "string" - }, - "CapabilityNamespace": { - "type": "string" - }, - "GatewayCapabilitySummary": { - "additionalProperties": false, - "properties": { - "CapabilityConfiguration": { - "$ref": "#/definitions/CapabilityConfiguration" - }, - "CapabilityNamespace": { - "$ref": "#/definitions/CapabilityNamespace" - } - }, - "required": [ - "CapabilityNamespace" - ], - "type": "object" - }, - "GatewayPlatform": { - "additionalProperties": false, - "oneOf": [ - { - "required": [ - "Greengrass" - ] - }, - { - "required": [ - "GreengrassV2" - ] - } - ], - "properties": { - "Greengrass": { - "$ref": "#/definitions/Greengrass" - }, - "GreengrassV2": { - "$ref": "#/definitions/GreengrassV2" - } - }, - "type": "object" - }, - "Greengrass": { - "additionalProperties": false, - "properties": { - "GroupArn": { - "type": "string" - } - }, - "required": [ - "GroupArn" - ], - "type": "object" - }, - "GreengrassV2": { - "additionalProperties": false, - "properties": { - "CoreDeviceThingName": { - "type": "string" - } - }, - "required": [ - "CoreDeviceThingName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "iotsitewise:CreateGateway", - "iotsitewise:DescribeGateway", - "iotsitewise:DescribeGatewayCapabilityConfiguration", - "iotsitewise:UpdateGatewayCapabilityConfiguration", - "iam:PassRole", - "iam:GetRole", - "greengrass:GetCoreDevice", - "iotsitewise:ListTagsForResource", - "iotsitewise:TagResource", - "iot:DescribeThing" - ] - }, - "delete": { - "permissions": [ - "iotsitewise:DescribeGateway", - "iotsitewise:DescribeGatewayCapabilityConfiguration", - "iotsitewise:DeleteGateway" - ] - }, - "list": { - "permissions": [ - "iotsitewise:ListGateways" - ] - }, - "read": { - "permissions": [ - "iotsitewise:DescribeGateway", - "iotsitewise:DescribeGatewayCapabilityConfiguration", - "iotsitewise:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "iotsitewise:UpdateGateway", - "iotsitewise:UpdateGatewayCapabilityConfiguration", - "iotsitewise:TagResource", - "iotsitewise:UntagResource", - "iotsitewise:DescribeGateway", - "iotsitewise:DescribeGatewayCapabilityConfiguration", - "iotsitewise:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/GatewayId" - ], - "properties": { - "GatewayCapabilitySummaries": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/GatewayCapabilitySummary" - }, - "type": "array", - "uniqueItems": true - }, - "GatewayId": { - "type": "string" - }, - "GatewayName": { - "type": "string" - }, - "GatewayPlatform": { - "$ref": "#/definitions/GatewayPlatform" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/GatewayId" - ], - "required": [ - "GatewayName", - "GatewayPlatform" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-IoTSiteWise.git", - "taggable": true, - "typeName": "AWS::IoTSiteWise::Gateway" -} diff --git a/src/cfnlint/data/schemas/providers/us_east_2/aws-lambda-eventsourcemapping.json b/src/cfnlint/data/schemas/providers/us_east_2/aws-lambda-eventsourcemapping.json new file mode 100644 index 0000000000..cb7599c139 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_east_2/aws-lambda-eventsourcemapping.json @@ -0,0 +1,353 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::Lambda::EventSourceMapping/Properties" + ], + "createOnlyProperties": [ + "/properties/EventSourceArn", + "/properties/StartingPosition", + "/properties/StartingPositionTimestamp", + "/properties/SelfManagedEventSource", + "/properties/AmazonManagedKafkaEventSourceConfig", + "/properties/SelfManagedKafkaEventSourceConfig" + ], + "definitions": { + "AmazonManagedKafkaEventSourceConfig": { + "additionalProperties": false, + "properties": { + "ConsumerGroupId": { + "$ref": "#/definitions/ConsumerGroupId" + } + }, + "type": "object" + }, + "ConsumerGroupId": { + "maxLength": 200, + "minLength": 1, + "pattern": "[a-zA-Z0-9-\\/*:_+=.@-]*", + "type": "string" + }, + "DestinationConfig": { + "additionalProperties": false, + "properties": { + "OnFailure": { + "$ref": "#/definitions/OnFailure" + } + }, + "type": "object" + }, + "DocumentDBEventSourceConfig": { + "additionalProperties": false, + "properties": { + "CollectionName": { + "maxLength": 57, + "minLength": 1, + "type": "string" + }, + "DatabaseName": { + "maxLength": 63, + "minLength": 1, + "type": "string" + }, + "FullDocument": { + "enum": [ + "UpdateLookup", + "Default" + ], + "type": "string" + } + }, + "type": "object" + }, + "Endpoints": { + "additionalProperties": false, + "properties": { + "KafkaBootstrapServers": { + "items": { + "maxLength": 300, + "minLength": 1, + "pattern": "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9]):[0-9]{1,5}", + "type": "string" + }, + "maxItems": 10, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "Filter": { + "additionalProperties": false, + "properties": { + "Pattern": { + "maxLength": 4096, + "minLength": 0, + "pattern": ".*", + "type": "string" + } + }, + "type": "object" + }, + "FilterCriteria": { + "additionalProperties": false, + "properties": { + "Filters": { + "items": { + "$ref": "#/definitions/Filter" + }, + "maxItems": 20, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "MaximumConcurrency": { + "maximum": 1000, + "minimum": 2, + "type": "integer" + }, + "OnFailure": { + "additionalProperties": false, + "properties": { + "Destination": { + "maxLength": 1024, + "minLength": 12, + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "type": "string" + } + }, + "type": "object" + }, + "ScalingConfig": { + "additionalProperties": false, + "properties": { + "MaximumConcurrency": { + "$ref": "#/definitions/MaximumConcurrency" + } + }, + "type": "object" + }, + "SelfManagedEventSource": { + "additionalProperties": false, + "properties": { + "Endpoints": { + "$ref": "#/definitions/Endpoints" + } + }, + "type": "object" + }, + "SelfManagedKafkaEventSourceConfig": { + "additionalProperties": false, + "properties": { + "ConsumerGroupId": { + "$ref": "#/definitions/ConsumerGroupId" + } + }, + "type": "object" + }, + "SourceAccessConfiguration": { + "additionalProperties": false, + "properties": { + "Type": { + "enum": [ + "BASIC_AUTH", + "VPC_SUBNET", + "VPC_SECURITY_GROUP", + "SASL_SCRAM_512_AUTH", + "SASL_SCRAM_256_AUTH", + "VIRTUAL_HOST", + "CLIENT_CERTIFICATE_TLS_AUTH", + "SERVER_ROOT_CA_CERTIFICATE" + ], + "type": "string" + }, + "URI": { + "maxLength": 200, + "minLength": 1, + "pattern": "[a-zA-Z0-9-\\/*:_+=.@-]*", + "type": "string" + } + }, + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "lambda:CreateEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + }, + "delete": { + "permissions": [ + "lambda:DeleteEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + }, + "list": { + "permissions": [ + "lambda:ListEventSourceMappings" + ] + }, + "read": { + "permissions": [ + "lambda:GetEventSourceMapping" + ] + }, + "update": { + "permissions": [ + "lambda:UpdateEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AmazonManagedKafkaEventSourceConfig": { + "$ref": "#/definitions/AmazonManagedKafkaEventSourceConfig" + }, + "BatchSize": { + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "BisectBatchOnFunctionError": { + "type": "boolean" + }, + "DestinationConfig": { + "$ref": "#/definitions/DestinationConfig" + }, + "DocumentDBEventSourceConfig": { + "$ref": "#/definitions/DocumentDBEventSourceConfig" + }, + "Enabled": { + "type": "boolean" + }, + "EventSourceArn": { + "maxLength": 1024, + "minLength": 12, + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "type": "string" + }, + "FilterCriteria": { + "$ref": "#/definitions/FilterCriteria" + }, + "FunctionName": { + "maxLength": 140, + "minLength": 1, + "pattern": "(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?", + "type": "string" + }, + "FunctionResponseTypes": { + "items": { + "enum": [ + "ReportBatchItemFailures" + ], + "type": "string" + }, + "maxLength": 1, + "minLength": 0, + "type": "array", + "uniqueItems": true + }, + "Id": { + "maxLength": 36, + "minLength": 36, + "pattern": "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + "type": "string" + }, + "MaximumBatchingWindowInSeconds": { + "maximum": 300, + "minimum": 0, + "type": "integer" + }, + "MaximumRecordAgeInSeconds": { + "maximum": 604800, + "minimum": -1, + "type": "integer" + }, + "MaximumRetryAttempts": { + "maximum": 10000, + "minimum": -1, + "type": "integer" + }, + "ParallelizationFactor": { + "maximum": 10, + "minimum": 1, + "type": "integer" + }, + "Queues": { + "items": { + "maxLength": 1000, + "minLength": 1, + "pattern": "[\\s\\S]*", + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "ScalingConfig": { + "$ref": "#/definitions/ScalingConfig" + }, + "SelfManagedEventSource": { + "$ref": "#/definitions/SelfManagedEventSource" + }, + "SelfManagedKafkaEventSourceConfig": { + "$ref": "#/definitions/SelfManagedKafkaEventSourceConfig" + }, + "SourceAccessConfigurations": { + "items": { + "$ref": "#/definitions/SourceAccessConfiguration" + }, + "maxItems": 22, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "StartingPosition": { + "enum": [ + "TRIM_HORIZON", + "LATEST", + "AT_TIMESTAMP" + ], + "maxLength": 12, + "minLength": 6, + "pattern": "(LATEST|TRIM_HORIZON|AT_TIMESTAMP)+", + "type": "string" + }, + "StartingPositionTimestamp": { + "type": "number" + }, + "Topics": { + "items": { + "maxLength": 249, + "minLength": 1, + "pattern": "^[^.]([a-zA-Z0-9\\-_.]+)", + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "TumblingWindowInSeconds": { + "maximum": 900, + "minimum": 0, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "FunctionName" + ], + "typeName": "AWS::Lambda::EventSourceMapping" +} diff --git a/src/cfnlint/data/schemas/providers/us_east_2/aws-verifiedpermissions-identitysource.json b/src/cfnlint/data/schemas/providers/us_east_2/aws-verifiedpermissions-identitysource.json new file mode 100644 index 0000000000..46a0ad88f1 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_east_2/aws-verifiedpermissions-identitysource.json @@ -0,0 +1,221 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PolicyStoreId" + ], + "definitions": { + "CognitoGroupConfiguration": { + "additionalProperties": false, + "properties": { + "GroupEntityType": { + "maxLength": 200, + "minLength": 1, + "pattern": "^([_a-zA-Z][_a-zA-Z0-9]*::)*[_a-zA-Z][_a-zA-Z0-9]*$", + "type": "string" + } + }, + "required": [ + "GroupEntityType" + ], + "type": "object" + }, + "CognitoUserPoolConfiguration": { + "additionalProperties": false, + "properties": { + "ClientIds": { + "insertionOrder": false, + "items": { + "maxLength": 255, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "maxItems": 1000, + "minItems": 0, + "type": "array" + }, + "GroupConfiguration": { + "$ref": "#/definitions/CognitoGroupConfiguration" + }, + "UserPoolArn": { + "maxLength": 255, + "minLength": 1, + "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", + "type": "string" + } + }, + "required": [ + "UserPoolArn" + ], + "type": "object" + }, + "IdentitySourceConfiguration": { + "additionalProperties": false, + "properties": { + "CognitoUserPoolConfiguration": { + "$ref": "#/definitions/CognitoUserPoolConfiguration" + } + }, + "required": [ + "CognitoUserPoolConfiguration" + ], + "title": "CognitoUserPoolConfiguration", + "type": "object" + }, + "IdentitySourceDetails": { + "additionalProperties": false, + "properties": { + "ClientIds": { + "insertionOrder": false, + "items": { + "maxLength": 255, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "maxItems": 1000, + "minItems": 0, + "type": "array" + }, + "DiscoveryUrl": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^https://.*$", + "type": "string" + }, + "OpenIdIssuer": { + "$ref": "#/definitions/OpenIdIssuer" + }, + "UserPoolArn": { + "maxLength": 255, + "minLength": 1, + "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", + "type": "string" + } + }, + "type": "object" + }, + "OpenIdIssuer": { + "enum": [ + "COGNITO" + ], + "type": "string" + } + }, + "deprecatedProperties": [ + "/properties/Details" + ], + "handlers": { + "create": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "delete": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "PolicyStoreId": { + "$ref": "resource-schema.json#/properties/PolicyStoreId" + } + }, + "required": [ + "PolicyStoreId" + ] + }, + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "read": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "update": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + } + }, + "primaryIdentifier": [ + "/properties/IdentitySourceId", + "/properties/PolicyStoreId" + ], + "properties": { + "Configuration": { + "$ref": "#/definitions/IdentitySourceConfiguration" + }, + "Details": { + "$ref": "#/definitions/IdentitySourceDetails" + }, + "IdentitySourceId": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]*$", + "type": "string" + }, + "PolicyStoreId": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]*$", + "type": "string" + }, + "PrincipalEntityType": { + "maxLength": 200, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Details", + "/properties/IdentitySourceId" + ], + "required": [ + "Configuration", + "PolicyStoreId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-avp", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::VerifiedPermissions::IdentitySource" +} diff --git a/src/cfnlint/data/schemas/providers/us_gov_east_1/__init__.py b/src/cfnlint/data/schemas/providers/us_gov_east_1/__init__.py index 57d35f397d..c4e465d153 100644 --- a/src/cfnlint/data/schemas/providers/us_gov_east_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/us_gov_east_1/__init__.py @@ -62,6 +62,7 @@ "AWS::AutoScaling::AutoScalingGroup", "AWS::WAFv2::RegexPatternSet", "AWS::EC2::TransitGatewayRouteTable", + "AWS::ControlTower::EnabledControl", "AWS::S3::AccessGrantsInstance", "AWS::Route53::RecordSet", "AWS::EKS::AccessEntry", @@ -84,6 +85,8 @@ "AWS::DocDB::DBInstance", "AWS::DataSync::LocationHDFS", "AWS::MSK::Cluster", + "AWS::SecurityHub::DelegatedAdmin", + "AWS::ControlTower::EnabledBaseline", "AWS::AppStream::AppBlockBuilder", "AWS::EC2::VPCEndpointConnectionNotification", "AWS::CodePipeline::Pipeline", @@ -243,6 +246,7 @@ "AWS::EFS::FileSystem", "AWS::Config::OrganizationConformancePack", "AWS::Logs::QueryDefinition", + "AWS::SecurityHub::ProductSubscription", "AWS::IAM::InstanceProfile", "AWS::IoT::BillingGroup", "AWS::AppStream::Application", @@ -256,6 +260,7 @@ "AWS::EC2::SubnetRouteTableAssociation", "AWS::ServiceCatalog::ServiceActionAssociation", "AWS::ImageBuilder::ContainerRecipe", + "AWS::CodeConnections::Connection", "AWS::EFS::AccessPoint", "AWS::Redshift::ClusterSecurityGroupIngress", "AWS::ServiceCatalogAppRegistry::AttributeGroupAssociation", @@ -404,6 +409,7 @@ "AWS::AutoScaling::LifecycleHook", "AWS::FSx::DataRepositoryAssociation", "AWS::EC2::NetworkInterface", + "AWS::ControlTower::LandingZone", "AWS::Route53Resolver::ResolverQueryLoggingConfigAssociation", "AWS::KinesisAnalyticsV2::ApplicationReferenceDataSource", "AWS::Lambda::EventInvokeConfig", @@ -444,6 +450,7 @@ "AWS::ServiceCatalogAppRegistry::AttributeGroup", "AWS::EC2::ClientVpnTargetNetworkAssociation", "AWS::EC2::EgressOnlyInternetGateway", + "AWS::SecurityHub::Insight", "AWS::Config::ConformancePack", "AWS::EC2::VPCCidrBlock", "AWS::IAM::VirtualMFADevice", @@ -639,7 +646,6 @@ "aws-s3-accessgrantslocation.json", "aws-ecs-service.json", "aws-ram-resourceshare.json", - "aws-ec2-securitygroupegress.json", "aws-ec2-localgatewayroutetablevpcassociation.json", "aws-config-organizationconfigrule.json", "aws-glue-dataqualityruleset.json", @@ -652,7 +658,6 @@ "aws-rds-dbinstance.json", "aws-ec2-vpcdhcpoptionsassociation.json", "aws-ec2-networkacl.json", - "aws-lambda-eventsourcemapping.json", "aws-logs-resourcepolicy.json", "aws-servicecatalog-launchnotificationconstraint.json", "aws-iot-cacertificate.json", @@ -673,6 +678,7 @@ "aws-ecs-primarytaskset.json", "aws-autoscaling-autoscalinggroup.json", "aws-wafv2-regexpatternset.json", + "aws-controltower-enabledcontrol.json", "aws-s3-accessgrantsinstance.json", "aws-route53-recordset.json", "aws-eks-accessentry.json", @@ -691,6 +697,8 @@ "aws-docdb-dbinstance.json", "aws-datasync-locationhdfs.json", "aws-msk-cluster.json", + "aws-securityhub-delegatedadmin.json", + "aws-controltower-enabledbaseline.json", "aws-appstream-appblockbuilder.json", "aws-ec2-vpcendpointconnectionnotification.json", "aws-opsworks-instance.json", @@ -709,7 +717,6 @@ "aws-s3-accessgrant.json", "aws-appconfig-deploymentstrategy.json", "aws-glue-devendpoint.json", - "aws-elasticache-usergroup.json", "aws-iot-thinggroup.json", "aws-imagebuilder-imagerecipe.json", "aws-iot-softwarepackage.json", @@ -737,7 +744,6 @@ "aws-wafv2-ipset.json", "aws-iam-role.json", "aws-dms-endpoint.json", - "aws-elasticache-serverlesscache.json", "aws-appmesh-gatewayroute.json", "aws-apigateway-apikey.json", "aws-kinesisanalyticsv2-application.json", @@ -746,8 +752,6 @@ "aws-ec2-transitgatewaymulticastdomainassociation.json", "aws-s3outposts-endpoint.json", "aws-waf-sizeconstraintset.json", - "aws-ec2-transitgatewayroutetableassociation.json", - "aws-appconfig-environment.json", "aws-imagebuilder-image.json", "aws-elasticache-securitygroupingress.json", "aws-cloudwatch-dashboard.json", @@ -808,7 +812,6 @@ "aws-rds-dbsecuritygroupingress.json", "aws-ec2-transitgatewaymulticastgroupmember.json", "aws-glue-securityconfiguration.json", - "aws-networkfirewall-tlsinspectionconfiguration.json", "aws-applicationinsights-application.json", "aws-ecs-clustercapacityproviderassociations.json", "aws-appconfig-configurationprofile.json", @@ -822,6 +825,7 @@ "aws-efs-filesystem.json", "aws-config-organizationconformancepack.json", "aws-logs-querydefinition.json", + "aws-securityhub-productsubscription.json", "aws-iot-billinggroup.json", "aws-appstream-application.json", "aws-datasync-locationnfs.json", @@ -834,6 +838,7 @@ "aws-ec2-subnetroutetableassociation.json", "aws-servicecatalog-serviceactionassociation.json", "aws-imagebuilder-containerrecipe.json", + "aws-codeconnections-connection.json", "aws-efs-accesspoint.json", "aws-redshift-clustersecuritygroupingress.json", "aws-servicecatalogappregistry-attributegroupassociation.json", @@ -937,14 +942,12 @@ "aws-appconfig-hostedconfigurationversion.json", "aws-datasync-locationefs.json", "aws-ec2-localgatewayroutetable.json", - "aws-sagemaker-appimageconfig.json", "aws-elasticloadbalancingv2-targetgroup.json", "aws-applicationautoscaling-scalingpolicy.json", "aws-emr-studiosessionmapping.json", "aws-cloudformation-macro.json", "aws-secretsmanager-secret.json", "aws-route53resolver-resolverconfig.json", - "aws-elasticache-user.json", "aws-sagemaker-image.json", "aws-logs-subscriptionfilter.json", "aws-codedeploy-application.json", @@ -953,6 +956,7 @@ "aws-datasync-locations3.json", "aws-fsx-datarepositoryassociation.json", "aws-ec2-networkinterface.json", + "aws-controltower-landingzone.json", "aws-route53resolver-resolverqueryloggingconfigassociation.json", "aws-lambda-eventinvokeconfig.json", "aws-kinesisvideo-stream.json", @@ -990,8 +994,9 @@ "aws-servicecatalogappregistry-attributegroup.json", "aws-ec2-clientvpntargetnetworkassociation.json", "aws-ec2-egressonlyinternetgateway.json", + "aws-securityhub-insight.json", + "aws-config-conformancepack.json", "aws-iam-virtualmfadevice.json", - "aws-acmpca-certificateauthority.json", "aws-lakeformation-resource.json", "aws-detective-memberinvitation.json", "aws-ec2-ipamscope.json", @@ -1000,6 +1005,7 @@ "aws-resiliencehub-resiliencypolicy.json", "aws-iot-dimension.json", "aws-logs-loggroup.json", + "aws-ecs-cluster.json", "aws-ec2-trafficmirrorfilterrule.json", "aws-ec2-placementgroup.json", "aws-ecr-repository.json", @@ -1067,6 +1073,7 @@ "aws-eks-nodegroup.json", "aws-organizations-organizationalunit.json", "aws-sqs-queue.json", + "aws-guardduty-detector.json", "aws-iot-provisioningtemplate.json", "aws-batch-computeenvironment.json", "aws-events-eventbuspolicy.json", @@ -1085,11 +1092,13 @@ "aws-servicecatalogappregistry-resourceassociation.json", "aws-resourcegroups-group.json", "aws-cloudformation-resourcedefaultversion.json", + "aws-signer-profilepermission.json", "aws-ec2-ipam.json", "aws-ec2-transitgatewaypeeringattachment.json", "aws-iam-accesskey.json", "aws-rds-dbsubnetgroup.json", "aws-amazonmq-configuration.json", + "aws-appconfig-deployment.json", "aws-accessanalyzer-analyzer.json", "aws-ec2-ec2fleet.json", "aws-greengrass-resourcedefinition.json", diff --git a/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-acmpca-certificateauthority.json b/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-acmpca-certificateauthority.json new file mode 100644 index 0000000000..08ec85e5fa --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-acmpca-certificateauthority.json @@ -0,0 +1,429 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Type", + "/properties/KeyAlgorithm", + "/properties/SigningAlgorithm", + "/properties/Subject", + "/properties/CsrExtensions", + "/properties/KeyStorageSecurityStandard", + "/properties/UsageMode" + ], + "definitions": { + "AccessDescription": { + "additionalProperties": false, + "properties": { + "AccessLocation": { + "$ref": "#/definitions/GeneralName" + }, + "AccessMethod": { + "$ref": "#/definitions/AccessMethod" + } + }, + "required": [ + "AccessMethod", + "AccessLocation" + ], + "type": "object" + }, + "AccessMethod": { + "additionalProperties": false, + "properties": { + "AccessMethodType": { + "$ref": "#/definitions/AccessMethodType" + }, + "CustomObjectIdentifier": { + "$ref": "#/definitions/CustomObjectIdentifier" + } + }, + "type": "object" + }, + "AccessMethodType": { + "type": "string" + }, + "Arn": { + "type": "string" + }, + "CrlConfiguration": { + "additionalProperties": false, + "properties": { + "CrlDistributionPointExtensionConfiguration": { + "$ref": "#/definitions/CrlDistributionPointExtensionConfiguration" + }, + "CustomCname": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + }, + "ExpirationInDays": { + "type": "integer" + }, + "S3BucketName": { + "type": "string" + }, + "S3ObjectAcl": { + "type": "string" + } + }, + "type": "object" + }, + "CrlDistributionPointExtensionConfiguration": { + "additionalProperties": false, + "properties": { + "OmitExtension": { + "type": "boolean" + } + }, + "required": [ + "OmitExtension" + ], + "type": "object" + }, + "CsrExtensions": { + "additionalProperties": false, + "properties": { + "KeyUsage": { + "$ref": "#/definitions/KeyUsage" + }, + "SubjectInformationAccess": { + "$ref": "#/definitions/SubjectInformationAccess" + } + }, + "type": "object" + }, + "CustomAttribute": { + "additionalProperties": false, + "properties": { + "ObjectIdentifier": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "ObjectIdentifier", + "Value" + ], + "type": "object" + }, + "CustomAttributeList": { + "items": { + "$ref": "#/definitions/CustomAttribute" + }, + "type": "array" + }, + "CustomObjectIdentifier": { + "type": "string" + }, + "DnsName": { + "type": "string" + }, + "EdiPartyName": { + "additionalProperties": false, + "properties": { + "NameAssigner": { + "type": "string" + }, + "PartyName": { + "type": "string" + } + }, + "required": [ + "PartyName", + "NameAssigner" + ], + "type": "object" + }, + "GeneralName": { + "additionalProperties": false, + "properties": { + "DirectoryName": { + "$ref": "#/definitions/Subject" + }, + "DnsName": { + "$ref": "#/definitions/DnsName" + }, + "EdiPartyName": { + "$ref": "#/definitions/EdiPartyName" + }, + "IpAddress": { + "$ref": "#/definitions/IpAddress" + }, + "OtherName": { + "$ref": "#/definitions/OtherName" + }, + "RegisteredId": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Rfc822Name": { + "$ref": "#/definitions/Rfc822Name" + }, + "UniformResourceIdentifier": { + "$ref": "#/definitions/UniformResourceIdentifier" + } + }, + "type": "object" + }, + "IpAddress": { + "type": "string" + }, + "KeyUsage": { + "additionalProperties": false, + "properties": { + "CRLSign": { + "default": false, + "type": "boolean" + }, + "DataEncipherment": { + "default": false, + "type": "boolean" + }, + "DecipherOnly": { + "default": false, + "type": "boolean" + }, + "DigitalSignature": { + "default": false, + "type": "boolean" + }, + "EncipherOnly": { + "default": false, + "type": "boolean" + }, + "KeyAgreement": { + "default": false, + "type": "boolean" + }, + "KeyCertSign": { + "default": false, + "type": "boolean" + }, + "KeyEncipherment": { + "default": false, + "type": "boolean" + }, + "NonRepudiation": { + "default": false, + "type": "boolean" + } + }, + "type": "object" + }, + "OcspConfiguration": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + }, + "OcspCustomCname": { + "type": "string" + } + }, + "type": "object" + }, + "OtherName": { + "additionalProperties": false, + "properties": { + "TypeId": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "TypeId", + "Value" + ], + "type": "object" + }, + "RevocationConfiguration": { + "additionalProperties": false, + "properties": { + "CrlConfiguration": { + "$ref": "#/definitions/CrlConfiguration" + }, + "OcspConfiguration": { + "$ref": "#/definitions/OcspConfiguration" + } + }, + "type": "object" + }, + "Rfc822Name": { + "type": "string" + }, + "Subject": { + "additionalProperties": false, + "properties": { + "CommonName": { + "type": "string" + }, + "Country": { + "type": "string" + }, + "CustomAttributes": { + "$ref": "#/definitions/CustomAttributeList" + }, + "DistinguishedNameQualifier": { + "type": "string" + }, + "GenerationQualifier": { + "type": "string" + }, + "GivenName": { + "type": "string" + }, + "Initials": { + "type": "string" + }, + "Locality": { + "type": "string" + }, + "Organization": { + "type": "string" + }, + "OrganizationalUnit": { + "type": "string" + }, + "Pseudonym": { + "type": "string" + }, + "SerialNumber": { + "type": "string" + }, + "State": { + "type": "string" + }, + "Surname": { + "type": "string" + }, + "Title": { + "type": "string" + } + }, + "type": "object" + }, + "SubjectInformationAccess": { + "items": { + "$ref": "#/definitions/AccessDescription" + }, + "type": "array" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "UniformResourceIdentifier": { + "type": "string" + } + }, + "handlers": { + "create": { + "permissions": [ + "acm-pca:CreateCertificateAuthority", + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr" + ] + }, + "delete": { + "permissions": [ + "acm-pca:DeleteCertificateAuthority", + "acm-pca:DescribeCertificateAuthority" + ] + }, + "list": { + "permissions": [ + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr", + "acm-pca:ListCertificateAuthorities", + "acm-pca:ListTags" + ] + }, + "read": { + "permissions": [ + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr", + "acm-pca:ListTags" + ] + }, + "update": { + "permissions": [ + "acm-pca:ListTags", + "acm-pca:TagCertificateAuthority", + "acm-pca:UntagCertificateAuthority", + "acm-pca:UpdateCertificateAuthority" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "$ref": "#/definitions/Arn" + }, + "CertificateSigningRequest": { + "type": "string" + }, + "CsrExtensions": { + "$ref": "#/definitions/CsrExtensions" + }, + "KeyAlgorithm": { + "type": "string" + }, + "KeyStorageSecurityStandard": { + "type": "string" + }, + "RevocationConfiguration": { + "$ref": "#/definitions/RevocationConfiguration" + }, + "SigningAlgorithm": { + "type": "string" + }, + "Subject": { + "$ref": "#/definitions/Subject" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "Type": { + "type": "string" + }, + "UsageMode": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CertificateSigningRequest" + ], + "required": [ + "Type", + "KeyAlgorithm", + "SigningAlgorithm", + "Subject" + ], + "sourceUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_ACMPCA.html", + "typeName": "AWS::ACMPCA::CertificateAuthority", + "writeOnlyProperties": [ + "/properties/Subject", + "/properties/Subject", + "/properties/CsrExtensions", + "/properties/Tags", + "/properties/RevocationConfiguration", + "/properties/KeyStorageSecurityStandard" + ] +} diff --git a/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-appconfig-deployment.json b/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-appconfig-deployment.json deleted file mode 100644 index 231f321d6b..0000000000 --- a/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-appconfig-deployment.json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/KmsKeyIdentifier", - "/properties/DeploymentStrategyId", - "/properties/ConfigurationVersion", - "/properties/ApplicationId", - "/properties/ConfigurationProfileId", - "/properties/Tags", - "/properties/EnvironmentId", - "/properties/Description" - ], - "definitions": { - "Tags": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "type": "object" - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "ApplicationId": { - "type": "string" - }, - "ConfigurationProfileId": { - "type": "string" - }, - "ConfigurationVersion": { - "type": "string" - }, - "DeploymentStrategyId": { - "type": "string" - }, - "Description": { - "type": "string" - }, - "EnvironmentId": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "KmsKeyIdentifier": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tags" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "DeploymentStrategyId", - "ConfigurationProfileId", - "EnvironmentId", - "ConfigurationVersion", - "ApplicationId" - ], - "typeName": "AWS::AppConfig::Deployment" -} diff --git a/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-appconfig-environment.json b/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-appconfig-environment.json new file mode 100644 index 0000000000..1b1444bd23 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-appconfig-environment.json @@ -0,0 +1,152 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationId" + ], + "definitions": { + "Monitor": { + "additionalProperties": false, + "properties": { + "AlarmArn": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "AlarmRoleArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^((arn):(aws|aws-cn|aws-iso|aws-iso-[a-z]{1}|aws-us-gov):(iam)::\\d{12}:role[/].*)$", + "type": "string" + } + }, + "required": [ + "AlarmArn" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:.)[a-zA-Z1-9+=._:/-]*$", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "appconfig:CreateEnvironment", + "appconfig:GetEnvironment", + "appconfig:ListTagsForResource", + "appconfig:TagResource", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "appconfig:GetEnvironment", + "appconfig:DeleteEnvironment" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ApplicationId": { + "$ref": "resource-schema.json#/properties/ApplicationId" + } + }, + "required": [ + "ApplicationId" + ] + }, + "permissions": [ + "appconfig:ListEnvironments" + ] + }, + "read": { + "permissions": [ + "appconfig:GetEnvironment", + "appconfig:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "appconfig:UpdateEnvironment", + "appconfig:TagResource", + "appconfig:UntagResource", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/ApplicationId", + "/properties/EnvironmentId" + ], + "properties": { + "ApplicationId": { + "pattern": "[a-z0-9]{4,7}", + "type": "string" + }, + "Description": { + "maxLength": 1024, + "minLength": 0, + "type": "string" + }, + "EnvironmentId": { + "pattern": "[a-z0-9]{4,7}", + "type": "string" + }, + "Monitors": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Monitor" + }, + "maxItems": 5, + "minItems": 0, + "type": "array" + }, + "Name": { + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/EnvironmentId" + ], + "required": [ + "Name", + "ApplicationId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-appconfig.git", + "tagging": { + "cloudFormationSystemTags": true, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::AppConfig::Environment" +} diff --git a/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-config-conformancepack.json b/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-config-conformancepack.json deleted file mode 100644 index cc35e80876..0000000000 --- a/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-config-conformancepack.json +++ /dev/null @@ -1,140 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ConformancePackName" - ], - "definitions": { - "ConformancePackInputParameter": { - "additionalProperties": false, - "properties": { - "ParameterName": { - "$ref": "#/definitions/ParameterName" - }, - "ParameterValue": { - "$ref": "#/definitions/ParameterValue" - } - }, - "required": [ - "ParameterName", - "ParameterValue" - ], - "type": "object" - }, - "ParameterName": { - "maxLength": 255, - "minLength": 0, - "type": "string" - }, - "ParameterValue": { - "maxLength": 4096, - "minLength": 0, - "type": "string" - } - }, - "documentationUrl": "https://docs.aws.amazon.com/config/latest/developerguide/conformance-packs.html", - "handlers": { - "create": { - "permissions": [ - "config:PutConformancePack", - "config:DescribeConformancePackStatus", - "config:DescribeConformancePacks", - "s3:GetObject", - "s3:GetBucketAcl", - "iam:CreateServiceLinkedRole", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "config:DeleteConformancePack", - "config:DescribeConformancePackStatus" - ] - }, - "list": { - "permissions": [ - "config:DescribeConformancePacks" - ] - }, - "read": { - "permissions": [ - "config:DescribeConformancePacks" - ] - }, - "update": { - "permissions": [ - "config:PutConformancePack", - "config:DescribeConformancePackStatus", - "s3:GetObject", - "s3:GetBucketAcl", - "iam:CreateServiceLinkedRole", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/ConformancePackName" - ], - "properties": { - "ConformancePackInputParameters": { - "items": { - "$ref": "#/definitions/ConformancePackInputParameter" - }, - "maxItems": 60, - "minItems": 0, - "type": "array" - }, - "ConformancePackName": { - "maxLength": 256, - "minLength": 1, - "pattern": "[a-zA-Z][-a-zA-Z0-9]*", - "type": "string" - }, - "DeliveryS3Bucket": { - "maxLength": 63, - "minLength": 0, - "type": "string" - }, - "DeliveryS3KeyPrefix": { - "maxLength": 1024, - "minLength": 0, - "type": "string" - }, - "TemplateBody": { - "maxLength": 51200, - "minLength": 1, - "type": "string" - }, - "TemplateS3Uri": { - "maxLength": 1024, - "minLength": 1, - "pattern": "s3://.*", - "type": "string" - }, - "TemplateSSMDocumentDetails": { - "additionalProperties": false, - "properties": { - "DocumentName": { - "maxLength": 128, - "minLength": 3, - "type": "string" - }, - "DocumentVersion": { - "maxLength": 128, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - } - }, - "required": [ - "ConformancePackName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-config.git", - "typeName": "AWS::Config::ConformancePack", - "writeOnlyProperties": [ - "/properties/TemplateBody", - "/properties/TemplateS3Uri", - "/properties/TemplateSSMDocumentDetails" - ] -} diff --git a/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-dynamodb-globaltable.json b/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-dynamodb-globaltable.json index 4e5ba995cb..ae37e9142b 100644 --- a/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-dynamodb-globaltable.json +++ b/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-dynamodb-globaltable.json @@ -8,6 +8,27 @@ ] ], "additionalProperties": false, + "allOf": [ + { + "if": { + "required": [ + "LocalSecondaryIndexes" + ], + "type": "object" + }, + "then": { + "properties": { + "AttributeDefinitions": { + "minItems": 2 + }, + "KeySchema": { + "minItems": 2 + } + }, + "type": "object" + } + } + ], "createOnlyProperties": [ "/properties/LocalSecondaryIndexes", "/properties/TableName", @@ -79,13 +100,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "minItems": 1, - "type": "array", - "uniqueItems": true + "minItems": 1 }, "Projection": { "$ref": "#/definitions/Projection" @@ -102,22 +119,60 @@ "type": "object" }, "KeySchema": { - "additionalProperties": false, - "properties": { - "AttributeName": { - "maxLength": 255, - "minLength": 1, - "type": "string" + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "KeyType": { + "enum": [ + "HASH", + "RANGE" + ], + "type": "string" + } }, - "KeyType": { - "type": "string" - } + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" }, - "required": [ - "KeyType", - "AttributeName" + "prefixItems": [ + { + "additionalProperties": false, + "properties": { + "KeyType": { + "const": "HASH", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + }, + { + "properties": { + "KeyType": { + "const": "RANGE", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + } ], - "type": "object" + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "KinesisStreamSpecification": { "additionalProperties": false, @@ -147,12 +202,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "type": "array", - "uniqueItems": true + "minItems": 2 }, "Projection": { "$ref": "#/definitions/Projection" @@ -511,7 +563,10 @@ }, "minItems": 1, "type": "array", - "uniqueItems": true + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "BillingMode": { "type": "string" @@ -525,13 +580,9 @@ "uniqueItems": true }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "minItems": 1, - "type": "array", - "uniqueItems": true + "minItems": 1 }, "LocalSecondaryIndexes": { "insertionOrder": false, diff --git a/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-dynamodb-table.json b/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-dynamodb-table.json index efc82f1d70..f21d084b10 100644 --- a/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-dynamodb-table.json +++ b/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-dynamodb-table.json @@ -1,5 +1,26 @@ { "additionalProperties": false, + "allOf": [ + { + "if": { + "required": [ + "LocalSecondaryIndexes" + ], + "type": "object" + }, + "then": { + "properties": { + "AttributeDefinitions": { + "minItems": 2 + }, + "KeySchema": { + "minItems": 2 + } + }, + "type": "object" + } + } + ], "cfnLint": [ "AWS::DynamoDB::Table/Properties" ], @@ -95,11 +116,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 }, "Projection": { "$ref": "#/definitions/Projection" @@ -147,24 +166,57 @@ "type": "object" }, "KeySchema": { - "additionalProperties": false, - "properties": { - "AttributeName": { - "type": "string" + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "type": "string" + }, + "KeyType": { + "enum": [ + "HASH", + "RANGE" + ], + "type": "string" + } }, - "KeyType": { - "enum": [ - "HASH", - "RANGE" + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" + }, + "prefixItems": [ + { + "properties": { + "KeyType": { + "const": "HASH", + "type": "string" + } + }, + "required": [ + "KeyType" ], - "type": "string" + "type": "object" + }, + { + "properties": { + "KeyType": { + "const": "RANGE", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" } - }, - "required": [ - "KeyType", - "AttributeName" ], - "type": "object" + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "KinesisStreamSpecification": { "additionalProperties": false, @@ -192,11 +244,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 2 }, "Projection": { "$ref": "#/definitions/Projection" @@ -451,7 +501,10 @@ "$ref": "#/definitions/AttributeDefinition" }, "type": "array", - "uniqueItems": true + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "BillingMode": { "enum": [ @@ -479,11 +532,9 @@ "KeySchema": { "oneOf": [ { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 }, { "type": "object" diff --git a/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-ec2-securitygroupegress.json b/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-ec2-securitygroupegress.json new file mode 100644 index 0000000000..f94631dad2 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-ec2-securitygroupegress.json @@ -0,0 +1,98 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::EC2::SecurityGroupEgress/Properties" + ], + "createOnlyProperties": [ + "/properties/IpProtocol", + "/properties/DestinationSecurityGroupId", + "/properties/ToPort", + "/properties/CidrIp", + "/properties/FromPort", + "/properties/GroupId", + "/properties/CidrIpv6", + "/properties/DestinationPrefixListId" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:AuthorizeSecurityGroupEgress", + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "delete": { + "permissions": [ + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "update": { + "permissions": [ + "ec2:UpdateSecurityGroupRuleDescriptionsEgress" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CidrIp": { + "type": "string" + }, + "CidrIpv6": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "DestinationPrefixListId": { + "type": "string" + }, + "DestinationSecurityGroupId": { + "type": "string" + }, + "FromPort": { + "minimum": -1, + "type": "integer" + }, + "GroupId": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "IpProtocol": { + "type": "string" + }, + "ToPort": { + "minimum": -1, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IpProtocol", + "GroupId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SecurityGroupEgress" +} diff --git a/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-ec2-transitgatewayroutetableassociation.json b/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-ec2-transitgatewayroutetableassociation.json new file mode 100644 index 0000000000..890b2c4be2 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-ec2-transitgatewayroutetableassociation.json @@ -0,0 +1,29 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TransitGatewayRouteTableId", + "/properties/TransitGatewayAttachmentId" + ], + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "type": "string" + }, + "TransitGatewayAttachmentId": { + "type": "string" + }, + "TransitGatewayRouteTableId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "TransitGatewayRouteTableId", + "TransitGatewayAttachmentId" + ], + "typeName": "AWS::EC2::TransitGatewayRouteTableAssociation" +} diff --git a/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-ecs-cluster.json b/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-ecs-cluster.json deleted file mode 100644 index 5e5707bc05..0000000000 --- a/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-ecs-cluster.json +++ /dev/null @@ -1,173 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ClusterName" - ], - "definitions": { - "CapacityProviderStrategyItem": { - "additionalProperties": false, - "properties": { - "Base": { - "type": "integer" - }, - "CapacityProvider": { - "type": "string" - }, - "Weight": { - "type": "integer" - } - }, - "type": "object" - }, - "ClusterConfiguration": { - "additionalProperties": false, - "properties": { - "ExecuteCommandConfiguration": { - "$ref": "#/definitions/ExecuteCommandConfiguration" - } - }, - "type": "object" - }, - "ClusterSettings": { - "additionalProperties": false, - "properties": { - "Name": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "type": "object" - }, - "ExecuteCommandConfiguration": { - "additionalProperties": false, - "properties": { - "KmsKeyId": { - "type": "string" - }, - "LogConfiguration": { - "$ref": "#/definitions/ExecuteCommandLogConfiguration" - }, - "Logging": { - "type": "string" - } - }, - "type": "object" - }, - "ExecuteCommandLogConfiguration": { - "additionalProperties": false, - "properties": { - "CloudWatchEncryptionEnabled": { - "type": "boolean" - }, - "CloudWatchLogGroupName": { - "type": "string" - }, - "S3BucketName": { - "type": "string" - }, - "S3EncryptionEnabled": { - "type": "boolean" - }, - "S3KeyPrefix": { - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "ecs:CreateCluster", - "ecs:DescribeClusters", - "iam:CreateServiceLinkedRole" - ] - }, - "delete": { - "permissions": [ - "ecs:DeleteCluster", - "ecs:DescribeClusters" - ] - }, - "list": { - "permissions": [ - "ecs:DescribeClusters", - "ecs:ListClusters" - ] - }, - "read": { - "permissions": [ - "ecs:DescribeClusters" - ] - }, - "update": { - "permissions": [ - "ecs:PutAccountSettingDefault", - "ecs:DescribeClusters", - "ecs:TagResource", - "ecs:UntagResource", - "ecs:PutAccountSetting", - "ecs:ListTagsForResource", - "ecs:UpdateCluster", - "ecs:UpdateClusterSettings", - "ecs:PutClusterCapacityProviders" - ] - } - }, - "primaryIdentifier": [ - "/properties/ClusterName" - ], - "properties": { - "Arn": { - "type": "string" - }, - "CapacityProviders": { - "items": { - "type": "string" - }, - "type": "array" - }, - "ClusterName": { - "type": "string" - }, - "ClusterSettings": { - "items": { - "$ref": "#/definitions/ClusterSettings" - }, - "type": "array" - }, - "Configuration": { - "$ref": "#/definitions/ClusterConfiguration" - }, - "DefaultCapacityProviderStrategy": { - "items": { - "$ref": "#/definitions/CapacityProviderStrategyItem" - }, - "type": "array" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "typeName": "AWS::ECS::Cluster" -} diff --git a/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-elasticache-serverlesscache.json b/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-elasticache-serverlesscache.json new file mode 100644 index 0000000000..7ad43dccf2 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-elasticache-serverlesscache.json @@ -0,0 +1,243 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ServerlessCacheName", + "/properties/Engine", + "/properties/MajorEngineVersion", + "/properties/KmsKeyId", + "/properties/SnapshotArnsToRestore", + "/properties/SubnetIds" + ], + "definitions": { + "CacheUsageLimits": { + "additionalProperties": false, + "properties": { + "DataStorage": { + "$ref": "#/definitions/DataStorage" + }, + "ECPUPerSecond": { + "$ref": "#/definitions/ECPUPerSecond" + } + }, + "type": "object" + }, + "DataStorage": { + "additionalProperties": false, + "properties": { + "Maximum": { + "type": "integer" + }, + "Unit": { + "enum": [ + "GB" + ], + "type": "string" + } + }, + "required": [ + "Maximum", + "Unit" + ], + "type": "object" + }, + "ECPUPerSecond": { + "additionalProperties": false, + "properties": { + "Maximum": { + "type": "integer" + } + }, + "required": [ + "Maximum" + ], + "type": "object" + }, + "Endpoint": { + "additionalProperties": false, + "properties": { + "Address": { + "type": "string" + }, + "Port": { + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[a-zA-Z0-9 _\\.\\/=+:\\-@]*$", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "pattern": "^[a-zA-Z0-9 _\\.\\/=+:\\-@]*$", + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "elasticache:CreateServerlessCache", + "elasticache:DescribeServerlessCaches", + "elasticache:AddTagsToResource", + "elasticache:ListTagsForResource", + "ec2:CreateTags", + "ec2:CreateVpcEndpoint", + "kms:CreateGrant", + "kms:DescribeKey" + ] + }, + "delete": { + "permissions": [ + "elasticache:DeleteServerlessCache", + "elasticache:DescribeServerlessCaches", + "elasticache:ListTagsForResource" + ] + }, + "list": { + "permissions": [ + "elasticache:DescribeServerlessCaches", + "elasticache:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "elasticache:DescribeServerlessCaches", + "elasticache:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "elasticache:ModifyServerlessCache", + "elasticache:DescribeServerlessCaches", + "elasticache:AddTagsToResource", + "elasticache:ListTagsForResource", + "elasticache:RemoveTagsFromResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/ServerlessCacheName" + ], + "properties": { + "ARN": { + "type": "string" + }, + "CacheUsageLimits": { + "$ref": "#/definitions/CacheUsageLimits" + }, + "CreateTime": { + "type": "string" + }, + "DailySnapshotTime": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "Endpoint": { + "$ref": "#/definitions/Endpoint" + }, + "Engine": { + "type": "string" + }, + "FinalSnapshotName": { + "type": "string" + }, + "FullEngineVersion": { + "type": "string" + }, + "KmsKeyId": { + "type": "string" + }, + "MajorEngineVersion": { + "type": "string" + }, + "ReaderEndpoint": { + "$ref": "#/definitions/Endpoint" + }, + "SecurityGroupIds": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "ServerlessCacheName": { + "type": "string" + }, + "SnapshotArnsToRestore": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "SnapshotRetentionLimit": { + "type": "integer" + }, + "Status": { + "type": "string" + }, + "SubnetIds": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "UserGroupId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/FullEngineVersion", + "/properties/CreateTime", + "/properties/Status", + "/properties/Endpoint/Address", + "/properties/Endpoint/Port", + "/properties/ReaderEndpoint/Address", + "/properties/ReaderEndpoint/Port", + "/properties/ARN" + ], + "required": [ + "ServerlessCacheName", + "Engine" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticache", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ElastiCache::ServerlessCache", + "writeOnlyProperties": [ + "/properties/SnapshotArnsToRestore", + "/properties/FinalSnapshotName" + ] +} diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-elasticache-user.json b/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-elasticache-user.json similarity index 97% rename from src/cfnlint/data/schemas/providers/ap_northeast_3/aws-elasticache-user.json rename to src/cfnlint/data/schemas/providers/us_gov_east_1/aws-elasticache-user.json index 0775783108..5247af8ac3 100644 --- a/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-elasticache-user.json +++ b/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-elasticache-user.json @@ -33,8 +33,7 @@ "permissions": [ "elasticache:CreateUser", "elasticache:DescribeUsers", - "elasticache:ListTagsForResource", - "elasticache:AddTagsToResource" + "elasticache:ListTagsForResource" ] }, "delete": { diff --git a/src/cfnlint/data/schemas/providers/ap_south_1/aws-elasticache-usergroup.json b/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-elasticache-usergroup.json similarity index 96% rename from src/cfnlint/data/schemas/providers/ap_south_1/aws-elasticache-usergroup.json rename to src/cfnlint/data/schemas/providers/us_gov_east_1/aws-elasticache-usergroup.json index 285e73b7c4..0a33952e4f 100644 --- a/src/cfnlint/data/schemas/providers/ap_south_1/aws-elasticache-usergroup.json +++ b/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-elasticache-usergroup.json @@ -32,8 +32,7 @@ "permissions": [ "elasticache:CreateUserGroup", "elasticache:DescribeUserGroups", - "elasticache:ListTagsForResource", - "elasticache:AddTagsToResource" + "elasticache:ListTagsForResource" ] }, "delete": { diff --git a/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-gammadilithium-jobdefinition.json b/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-gammadilithium-jobdefinition.json index ac35ac594b..349bfa79f7 100644 --- a/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-gammadilithium-jobdefinition.json +++ b/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-gammadilithium-jobdefinition.json @@ -308,6 +308,9 @@ "EksContainerSecurityContext": { "additionalProperties": false, "properties": { + "AllowPrivilegeEscalation": { + "type": "boolean" + }, "Privileged": { "type": "boolean" }, @@ -461,6 +464,18 @@ }, "type": "object" }, + "ImagePullSecret": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, "LinuxParameters": { "additionalProperties": false, "properties": { @@ -613,6 +628,13 @@ "HostNetwork": { "type": "boolean" }, + "ImagePullSecrets": { + "items": { + "$ref": "#/definitions/ImagePullSecret" + }, + "type": "array", + "uniqueItems": false + }, "InitContainers": { "items": { "$ref": "#/definitions/EksContainer" diff --git a/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-guardduty-detector.json b/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-guardduty-detector.json deleted file mode 100644 index 60b06ade42..0000000000 --- a/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-guardduty-detector.json +++ /dev/null @@ -1,155 +0,0 @@ -{ - "additionalProperties": false, - "definitions": { - "CFNDataSourceConfigurations": { - "additionalProperties": false, - "properties": { - "Kubernetes": { - "$ref": "#/definitions/CFNKubernetesConfiguration" - }, - "MalwareProtection": { - "$ref": "#/definitions/CFNMalwareProtectionConfiguration" - }, - "S3Logs": { - "$ref": "#/definitions/CFNS3LogsConfiguration" - } - }, - "type": "object" - }, - "CFNKubernetesAuditLogsConfiguration": { - "additionalProperties": false, - "properties": { - "Enable": { - "type": "boolean" - } - }, - "type": "object" - }, - "CFNKubernetesConfiguration": { - "additionalProperties": false, - "properties": { - "AuditLogs": { - "$ref": "#/definitions/CFNKubernetesAuditLogsConfiguration" - } - }, - "type": "object" - }, - "CFNMalwareProtectionConfiguration": { - "additionalProperties": false, - "properties": { - "ScanEc2InstanceWithFindings": { - "$ref": "#/definitions/CFNScanEc2InstanceWithFindingsConfiguration" - } - }, - "type": "object" - }, - "CFNS3LogsConfiguration": { - "additionalProperties": false, - "properties": { - "Enable": { - "type": "boolean" - } - }, - "type": "object" - }, - "CFNScanEc2InstanceWithFindingsConfiguration": { - "additionalProperties": false, - "properties": { - "EbsVolumes": { - "type": "boolean" - } - }, - "type": "object" - }, - "FeatureAdditionalConfiguration": { - "additionalProperties": false, - "properties": { - "Name": { - "type": "string" - }, - "Status": { - "type": "string" - } - }, - "type": "object" - }, - "FeatureConfigurations": { - "additionalProperties": false, - "properties": { - "AdditionalConfiguration": { - "items": { - "$ref": "#/definitions/FeatureAdditionalConfiguration" - }, - "type": "array", - "uniqueItems": false - }, - "Name": { - "type": "string" - }, - "Status": { - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "DataSources": { - "$ref": "#/definitions/CFNDataSourceConfigurations" - }, - "Enable": { - "type": "boolean" - }, - "Features": { - "items": { - "$ref": "#/definitions/FeatureConfigurations" - }, - "type": "array", - "uniqueItems": false - }, - "FindingPublishingFrequency": { - "enum": [ - "FIFTEEN_MINUTES", - "ONE_HOUR", - "SIX_HOURS" - ], - "type": "string" - }, - "Id": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Enable" - ], - "typeName": "AWS::GuardDuty::Detector" -} diff --git a/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-lambda-eventsourcemapping.json b/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-lambda-eventsourcemapping.json new file mode 100644 index 0000000000..cb7599c139 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-lambda-eventsourcemapping.json @@ -0,0 +1,353 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::Lambda::EventSourceMapping/Properties" + ], + "createOnlyProperties": [ + "/properties/EventSourceArn", + "/properties/StartingPosition", + "/properties/StartingPositionTimestamp", + "/properties/SelfManagedEventSource", + "/properties/AmazonManagedKafkaEventSourceConfig", + "/properties/SelfManagedKafkaEventSourceConfig" + ], + "definitions": { + "AmazonManagedKafkaEventSourceConfig": { + "additionalProperties": false, + "properties": { + "ConsumerGroupId": { + "$ref": "#/definitions/ConsumerGroupId" + } + }, + "type": "object" + }, + "ConsumerGroupId": { + "maxLength": 200, + "minLength": 1, + "pattern": "[a-zA-Z0-9-\\/*:_+=.@-]*", + "type": "string" + }, + "DestinationConfig": { + "additionalProperties": false, + "properties": { + "OnFailure": { + "$ref": "#/definitions/OnFailure" + } + }, + "type": "object" + }, + "DocumentDBEventSourceConfig": { + "additionalProperties": false, + "properties": { + "CollectionName": { + "maxLength": 57, + "minLength": 1, + "type": "string" + }, + "DatabaseName": { + "maxLength": 63, + "minLength": 1, + "type": "string" + }, + "FullDocument": { + "enum": [ + "UpdateLookup", + "Default" + ], + "type": "string" + } + }, + "type": "object" + }, + "Endpoints": { + "additionalProperties": false, + "properties": { + "KafkaBootstrapServers": { + "items": { + "maxLength": 300, + "minLength": 1, + "pattern": "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9]):[0-9]{1,5}", + "type": "string" + }, + "maxItems": 10, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "Filter": { + "additionalProperties": false, + "properties": { + "Pattern": { + "maxLength": 4096, + "minLength": 0, + "pattern": ".*", + "type": "string" + } + }, + "type": "object" + }, + "FilterCriteria": { + "additionalProperties": false, + "properties": { + "Filters": { + "items": { + "$ref": "#/definitions/Filter" + }, + "maxItems": 20, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "MaximumConcurrency": { + "maximum": 1000, + "minimum": 2, + "type": "integer" + }, + "OnFailure": { + "additionalProperties": false, + "properties": { + "Destination": { + "maxLength": 1024, + "minLength": 12, + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "type": "string" + } + }, + "type": "object" + }, + "ScalingConfig": { + "additionalProperties": false, + "properties": { + "MaximumConcurrency": { + "$ref": "#/definitions/MaximumConcurrency" + } + }, + "type": "object" + }, + "SelfManagedEventSource": { + "additionalProperties": false, + "properties": { + "Endpoints": { + "$ref": "#/definitions/Endpoints" + } + }, + "type": "object" + }, + "SelfManagedKafkaEventSourceConfig": { + "additionalProperties": false, + "properties": { + "ConsumerGroupId": { + "$ref": "#/definitions/ConsumerGroupId" + } + }, + "type": "object" + }, + "SourceAccessConfiguration": { + "additionalProperties": false, + "properties": { + "Type": { + "enum": [ + "BASIC_AUTH", + "VPC_SUBNET", + "VPC_SECURITY_GROUP", + "SASL_SCRAM_512_AUTH", + "SASL_SCRAM_256_AUTH", + "VIRTUAL_HOST", + "CLIENT_CERTIFICATE_TLS_AUTH", + "SERVER_ROOT_CA_CERTIFICATE" + ], + "type": "string" + }, + "URI": { + "maxLength": 200, + "minLength": 1, + "pattern": "[a-zA-Z0-9-\\/*:_+=.@-]*", + "type": "string" + } + }, + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "lambda:CreateEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + }, + "delete": { + "permissions": [ + "lambda:DeleteEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + }, + "list": { + "permissions": [ + "lambda:ListEventSourceMappings" + ] + }, + "read": { + "permissions": [ + "lambda:GetEventSourceMapping" + ] + }, + "update": { + "permissions": [ + "lambda:UpdateEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AmazonManagedKafkaEventSourceConfig": { + "$ref": "#/definitions/AmazonManagedKafkaEventSourceConfig" + }, + "BatchSize": { + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "BisectBatchOnFunctionError": { + "type": "boolean" + }, + "DestinationConfig": { + "$ref": "#/definitions/DestinationConfig" + }, + "DocumentDBEventSourceConfig": { + "$ref": "#/definitions/DocumentDBEventSourceConfig" + }, + "Enabled": { + "type": "boolean" + }, + "EventSourceArn": { + "maxLength": 1024, + "minLength": 12, + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "type": "string" + }, + "FilterCriteria": { + "$ref": "#/definitions/FilterCriteria" + }, + "FunctionName": { + "maxLength": 140, + "minLength": 1, + "pattern": "(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?", + "type": "string" + }, + "FunctionResponseTypes": { + "items": { + "enum": [ + "ReportBatchItemFailures" + ], + "type": "string" + }, + "maxLength": 1, + "minLength": 0, + "type": "array", + "uniqueItems": true + }, + "Id": { + "maxLength": 36, + "minLength": 36, + "pattern": "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + "type": "string" + }, + "MaximumBatchingWindowInSeconds": { + "maximum": 300, + "minimum": 0, + "type": "integer" + }, + "MaximumRecordAgeInSeconds": { + "maximum": 604800, + "minimum": -1, + "type": "integer" + }, + "MaximumRetryAttempts": { + "maximum": 10000, + "minimum": -1, + "type": "integer" + }, + "ParallelizationFactor": { + "maximum": 10, + "minimum": 1, + "type": "integer" + }, + "Queues": { + "items": { + "maxLength": 1000, + "minLength": 1, + "pattern": "[\\s\\S]*", + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "ScalingConfig": { + "$ref": "#/definitions/ScalingConfig" + }, + "SelfManagedEventSource": { + "$ref": "#/definitions/SelfManagedEventSource" + }, + "SelfManagedKafkaEventSourceConfig": { + "$ref": "#/definitions/SelfManagedKafkaEventSourceConfig" + }, + "SourceAccessConfigurations": { + "items": { + "$ref": "#/definitions/SourceAccessConfiguration" + }, + "maxItems": 22, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "StartingPosition": { + "enum": [ + "TRIM_HORIZON", + "LATEST", + "AT_TIMESTAMP" + ], + "maxLength": 12, + "minLength": 6, + "pattern": "(LATEST|TRIM_HORIZON|AT_TIMESTAMP)+", + "type": "string" + }, + "StartingPositionTimestamp": { + "type": "number" + }, + "Topics": { + "items": { + "maxLength": 249, + "minLength": 1, + "pattern": "^[^.]([a-zA-Z0-9\\-_.]+)", + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "TumblingWindowInSeconds": { + "maximum": 900, + "minimum": 0, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "FunctionName" + ], + "typeName": "AWS::Lambda::EventSourceMapping" +} diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_2/aws-networkfirewall-tlsinspectionconfiguration.json b/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-networkfirewall-tlsinspectionconfiguration.json similarity index 99% rename from src/cfnlint/data/schemas/providers/ap_southeast_2/aws-networkfirewall-tlsinspectionconfiguration.json rename to src/cfnlint/data/schemas/providers/us_gov_east_1/aws-networkfirewall-tlsinspectionconfiguration.json index ea743fee48..00f466915a 100644 --- a/src/cfnlint/data/schemas/providers/ap_southeast_2/aws-networkfirewall-tlsinspectionconfiguration.json +++ b/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-networkfirewall-tlsinspectionconfiguration.json @@ -199,7 +199,6 @@ "handlers": { "create": { "permissions": [ - "iam:CreateServiceLinkedRole", "network-firewall:CreateTLSInspectionConfiguration", "network-firewall:DescribeTLSInspectionConfiguration", "network-firewall:TagResource" diff --git a/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-sagemaker-appimageconfig.json b/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-sagemaker-appimageconfig.json new file mode 100644 index 0000000000..01116f524b --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-sagemaker-appimageconfig.json @@ -0,0 +1,238 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AppImageConfigName", + "/properties/Tags" + ], + "definitions": { + "ContainerConfig": { + "additionalProperties": false, + "properties": { + "ContainerArguments": { + "items": { + "$ref": "#/definitions/CustomImageContainerArguments" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "ContainerEntrypoint": { + "items": { + "$ref": "#/definitions/CustomImageContainerEntrypoint" + }, + "maxItems": 1, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "ContainerEnvironmentVariables": { + "items": { + "$ref": "#/definitions/CustomImageContainerEnvironmentVariable" + }, + "maxItems": 25, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "CustomImageContainerArguments": { + "maxLength": 64, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "CustomImageContainerEntrypoint": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "CustomImageContainerEnvironmentVariable": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "FileSystemConfig": { + "additionalProperties": false, + "properties": { + "DefaultGid": { + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "DefaultUid": { + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "MountPath": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^/.*", + "type": "string" + } + }, + "type": "object" + }, + "JupyterLabAppImageConfig": { + "additionalProperties": false, + "properties": { + "ContainerConfig": { + "$ref": "#/definitions/ContainerConfig" + } + }, + "type": "object" + }, + "KernelGatewayImageConfig": { + "additionalProperties": false, + "properties": { + "FileSystemConfig": { + "$ref": "#/definitions/FileSystemConfig" + }, + "KernelSpecs": { + "items": { + "$ref": "#/definitions/KernelSpec" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "KernelSpecs" + ], + "type": "object" + }, + "KernelSpec": { + "additionalProperties": false, + "properties": { + "DisplayName": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Name": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "sagemaker:CreateAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + }, + "delete": { + "permissions": [ + "sagemaker:DeleteAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + }, + "list": { + "permissions": [ + "sagemaker:ListAppImageConfigs" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeAppImageConfig" + ] + }, + "update": { + "permissions": [ + "sagemaker:UpdateAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + } + }, + "primaryIdentifier": [ + "/properties/AppImageConfigName" + ], + "properties": { + "AppImageConfigArn": { + "maxLength": 256, + "minLength": 1, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:app-image-config/.*", + "type": "string" + }, + "AppImageConfigName": { + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", + "type": "string" + }, + "JupyterLabAppImageConfig": { + "$ref": "#/definitions/JupyterLabAppImageConfig" + }, + "KernelGatewayImageConfig": { + "$ref": "#/definitions/KernelGatewayImageConfig" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/AppImageConfigArn" + ], + "required": [ + "AppImageConfigName" + ], + "typeName": "AWS::SageMaker::AppImageConfig", + "writeOnlyProperties": [ + "/properties/Tags" + ] +} diff --git a/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-signer-profilepermission.json b/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-signer-profilepermission.json deleted file mode 100644 index 0f8d81fad7..0000000000 --- a/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-signer-profilepermission.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ProfileName", - "/properties/Action", - "/properties/Principal", - "/properties/StatementId", - "/properties/ProfileVersion" - ], - "handlers": { - "create": { - "permissions": [ - "signer:AddProfilePermission", - "signer:ListProfilePermissions" - ] - }, - "delete": { - "permissions": [ - "signer:RemoveProfilePermission", - "signer:ListProfilePermissions" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "ProfileName": { - "$ref": "resource-schema.json#/properties/ProfileName" - }, - "StatementId": { - "$ref": "resource-schema.json#/properties/StatementId" - } - } - }, - "permissions": [ - "signer:ListProfilePermissions", - "signer:GetSigningProfile" - ] - }, - "read": { - "permissions": [ - "signer:ListProfilePermissions" - ] - } - }, - "primaryIdentifier": [ - "/properties/StatementId", - "/properties/ProfileName" - ], - "properties": { - "Action": { - "type": "string" - }, - "Principal": { - "type": "string" - }, - "ProfileName": { - "type": "string" - }, - "ProfileVersion": { - "pattern": "^[0-9a-zA-Z]{10}$", - "type": "string" - }, - "StatementId": { - "type": "string" - } - }, - "required": [ - "ProfileName", - "Action", - "Principal", - "StatementId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "typeName": "AWS::Signer::ProfilePermission" -} 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 a7e849e6c7..15f5c1e841 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 @@ -71,6 +71,7 @@ "AWS::AutoScaling::AutoScalingGroup", "AWS::WAFv2::RegexPatternSet", "AWS::EC2::TransitGatewayRouteTable", + "AWS::ControlTower::EnabledControl", "AWS::S3::AccessGrantsInstance", "AWS::Cognito::IdentityPoolRoleAttachment", "AWS::Route53::RecordSet", @@ -102,6 +103,8 @@ "AWS::DataSync::LocationHDFS", "AWS::IoTSiteWise::Portal", "AWS::MSK::Cluster", + "AWS::SecurityHub::DelegatedAdmin", + "AWS::ControlTower::EnabledBaseline", "AWS::AppStream::AppBlockBuilder", "AWS::EC2::VPCEndpointConnectionNotification", "AWS::CodePipeline::Pipeline", @@ -124,6 +127,7 @@ "AWS::S3::AccessGrant", "AWS::AppConfig::DeploymentStrategy", "AWS::Glue::DevEndpoint", + "AWS::SageMaker::ModelPackage", "AWS::ElastiCache::UserGroup", "AWS::IoT::ThingGroup", "AWS::ImageBuilder::ImageRecipe", @@ -191,6 +195,7 @@ "AWS::FIS::TargetAccountConfiguration", "AWS::KinesisAnalytics::ApplicationOutput", "AWS::WAFv2::RuleGroup", + "AWS::SageMaker::ModelPackageGroup", "AWS::SES::ConfigurationSet", "AWS::ElastiCache::ParameterGroup", "AWS::NetworkFirewall::LoggingConfiguration", @@ -291,6 +296,7 @@ "AWS::Config::OrganizationConformancePack", "AWS::Connect::QuickConnect", "AWS::Logs::QueryDefinition", + "AWS::SecurityHub::ProductSubscription", "AWS::IAM::InstanceProfile", "AWS::IoT::BillingGroup", "AWS::AppStream::Application", @@ -427,6 +433,7 @@ "AWS::EMR::InstanceGroupConfig", "AWS::StepFunctions::Activity", "AWS::Synthetics::Group", + "AWS::SageMaker::Project", "AWS::EC2::LocalGatewayRouteTableVirtualInterfaceGroupAssociation", "AWS::S3::BucketPolicy", "AWS::IoT::CustomMetric", @@ -476,6 +483,7 @@ "AWS::AutoScaling::LifecycleHook", "AWS::FSx::DataRepositoryAssociation", "AWS::EC2::NetworkInterface", + "AWS::ControlTower::LandingZone", "AWS::Route53Resolver::ResolverQueryLoggingConfigAssociation", "AWS::KinesisAnalyticsV2::ApplicationReferenceDataSource", "AWS::Lambda::EventInvokeConfig", @@ -523,6 +531,7 @@ "AWS::ServiceCatalogAppRegistry::AttributeGroup", "AWS::EC2::ClientVpnTargetNetworkAssociation", "AWS::EC2::EgressOnlyInternetGateway", + "AWS::SecurityHub::Insight", "AWS::Config::ConformancePack", "AWS::EC2::VPCCidrBlock", "AWS::IAM::VirtualMFADevice", @@ -750,7 +759,6 @@ "aws-s3-accessgrantslocation.json", "aws-ecs-service.json", "aws-ram-resourceshare.json", - "aws-ec2-securitygroupegress.json", "aws-ec2-localgatewayroutetablevpcassociation.json", "aws-config-organizationconfigrule.json", "aws-glue-dataqualityruleset.json", @@ -766,7 +774,6 @@ "aws-ec2-vpcdhcpoptionsassociation.json", "aws-iotevents-input.json", "aws-ec2-networkacl.json", - "aws-lambda-eventsourcemapping.json", "aws-logs-resourcepolicy.json", "aws-servicecatalog-launchnotificationconstraint.json", "aws-quicksight-datasource.json", @@ -776,7 +783,6 @@ "aws-pinpoint-gcmchannel.json", "aws-connect-instance.json", "aws-apigateway-documentationpart.json", - "aws-cloudwatch-compositealarm.json", "aws-route53resolver-firewalldomainlist.json", "aws-appconfig-application.json", "aws-opsworks-stack.json", @@ -792,6 +798,7 @@ "aws-cognito-userpooldomain.json", "aws-autoscaling-autoscalinggroup.json", "aws-wafv2-regexpatternset.json", + "aws-controltower-enabledcontrol.json", "aws-s3-accessgrantsinstance.json", "aws-cognito-identitypoolroleattachment.json", "aws-route53-recordset.json", @@ -820,6 +827,8 @@ "aws-datasync-locationhdfs.json", "aws-iotsitewise-portal.json", "aws-msk-cluster.json", + "aws-securityhub-delegatedadmin.json", + "aws-controltower-enabledbaseline.json", "aws-appstream-appblockbuilder.json", "aws-ec2-vpcendpointconnectionnotification.json", "aws-codepipeline-pipeline.json", @@ -841,7 +850,7 @@ "aws-s3-accessgrant.json", "aws-appconfig-deploymentstrategy.json", "aws-glue-devendpoint.json", - "aws-elasticache-usergroup.json", + "aws-sagemaker-modelpackage.json", "aws-iot-thinggroup.json", "aws-imagebuilder-imagerecipe.json", "aws-iot-softwarepackage.json", @@ -877,7 +886,6 @@ "aws-iam-role.json", "aws-dms-endpoint.json", "aws-iotsitewise-project.json", - "aws-elasticache-serverlesscache.json", "aws-sagemaker-endpointconfig.json", "aws-appmesh-gatewayroute.json", "aws-apigateway-apikey.json", @@ -888,16 +896,14 @@ "aws-ec2-transitgatewaymulticastdomainassociation.json", "aws-s3outposts-endpoint.json", "aws-waf-sizeconstraintset.json", - "aws-ec2-transitgatewayroutetableassociation.json", - "aws-appconfig-environment.json", "aws-imagebuilder-image.json", "aws-elasticache-securitygroupingress.json", "aws-cloudwatch-dashboard.json", - "aws-cloudwatch-alarm.json", "aws-iot-thingtype.json", "aws-cloudformation-customresource.json", "aws-fis-targetaccountconfiguration.json", "aws-kinesisanalytics-applicationoutput.json", + "aws-sagemaker-modelpackagegroup.json", "aws-ses-configurationset.json", "aws-elasticache-parametergroup.json", "aws-networkfirewall-loggingconfiguration.json", @@ -965,7 +971,6 @@ "aws-appstream-stackfleetassociation.json", "aws-ec2-transitgatewaymulticastgroupmember.json", "aws-glue-securityconfiguration.json", - "aws-networkfirewall-tlsinspectionconfiguration.json", "aws-databrew-ruleset.json", "aws-applicationinsights-application.json", "aws-ecs-clustercapacityproviderassociations.json", @@ -984,6 +989,7 @@ "aws-config-organizationconformancepack.json", "aws-connect-quickconnect.json", "aws-logs-querydefinition.json", + "aws-securityhub-productsubscription.json", "aws-iot-billinggroup.json", "aws-appstream-application.json", "aws-datasync-locationnfs.json", @@ -1094,6 +1100,7 @@ "aws-servicediscovery-publicdnsnamespace.json", "aws-emr-instancegroupconfig.json", "aws-synthetics-group.json", + "aws-sagemaker-project.json", "aws-ec2-localgatewayroutetablevirtualinterfacegroupassociation.json", "aws-s3-bucketpolicy.json", "aws-iot-custommetric.json", @@ -1117,16 +1124,15 @@ "aws-appconfig-hostedconfigurationversion.json", "aws-datasync-locationefs.json", "aws-ec2-localgatewayroutetable.json", - "aws-sagemaker-appimageconfig.json", "aws-elasticloadbalancingv2-targetgroup.json", "aws-applicationautoscaling-scalingpolicy.json", + "aws-iotsitewise-gateway.json", "aws-emr-studiosessionmapping.json", "aws-cloudformation-macro.json", "aws-robomaker-robotapplication.json", "aws-sagemaker-workteam.json", "aws-secretsmanager-secret.json", "aws-route53resolver-resolverconfig.json", - "aws-elasticache-user.json", "aws-sagemaker-image.json", "aws-logs-subscriptionfilter.json", "aws-codedeploy-application.json", @@ -1135,6 +1141,7 @@ "aws-datasync-locations3.json", "aws-fsx-datarepositoryassociation.json", "aws-ec2-networkinterface.json", + "aws-controltower-landingzone.json", "aws-route53resolver-resolverqueryloggingconfigassociation.json", "aws-lambda-eventinvokeconfig.json", "aws-kinesisvideo-stream.json", @@ -1179,8 +1186,9 @@ "aws-servicecatalogappregistry-attributegroup.json", "aws-ec2-clientvpntargetnetworkassociation.json", "aws-ec2-egressonlyinternetgateway.json", + "aws-securityhub-insight.json", + "aws-config-conformancepack.json", "aws-iam-virtualmfadevice.json", - "aws-acmpca-certificateauthority.json", "aws-cognito-identitypoolprincipaltag.json", "aws-lakeformation-resource.json", "aws-detective-memberinvitation.json", @@ -1192,6 +1200,7 @@ "aws-location-tracker.json", "aws-iot-dimension.json", "aws-logs-loggroup.json", + "aws-ecs-cluster.json", "aws-ec2-trafficmirrorfilterrule.json", "aws-ec2-placementgroup.json", "aws-ecr-repository.json", @@ -1242,6 +1251,7 @@ "aws-connect-routingprofile.json", "aws-ec2-flowlog.json", "aws-amazonmq-broker.json", + "aws-ssm-association.json", "aws-ec2-clientvpnendpoint.json", "aws-securityhub-automationrule.json", "aws-msk-clusterpolicy.json", @@ -1268,6 +1278,7 @@ "aws-eks-nodegroup.json", "aws-organizations-organizationalunit.json", "aws-sqs-queue.json", + "aws-guardduty-detector.json", "aws-iot-provisioningtemplate.json", "aws-batch-computeenvironment.json", "aws-connect-instancestorageconfig.json", @@ -1290,6 +1301,7 @@ "aws-timestream-table.json", "aws-resourcegroups-group.json", "aws-cloudformation-resourcedefaultversion.json", + "aws-signer-profilepermission.json", "aws-greengrass-loggerdefinitionversion.json", "aws-quicksight-dashboard.json", "aws-ec2-ipam.json", @@ -1301,6 +1313,7 @@ "aws-rds-dbsubnetgroup.json", "aws-secretsmanager-secrettargetattachment.json", "aws-amazonmq-configuration.json", + "aws-appconfig-deployment.json", "aws-accessanalyzer-analyzer.json", "aws-ec2-ec2fleet.json", "aws-pinpoint-inapptemplate.json", diff --git a/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-acmpca-certificateauthority.json b/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-acmpca-certificateauthority.json new file mode 100644 index 0000000000..08ec85e5fa --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-acmpca-certificateauthority.json @@ -0,0 +1,429 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Type", + "/properties/KeyAlgorithm", + "/properties/SigningAlgorithm", + "/properties/Subject", + "/properties/CsrExtensions", + "/properties/KeyStorageSecurityStandard", + "/properties/UsageMode" + ], + "definitions": { + "AccessDescription": { + "additionalProperties": false, + "properties": { + "AccessLocation": { + "$ref": "#/definitions/GeneralName" + }, + "AccessMethod": { + "$ref": "#/definitions/AccessMethod" + } + }, + "required": [ + "AccessMethod", + "AccessLocation" + ], + "type": "object" + }, + "AccessMethod": { + "additionalProperties": false, + "properties": { + "AccessMethodType": { + "$ref": "#/definitions/AccessMethodType" + }, + "CustomObjectIdentifier": { + "$ref": "#/definitions/CustomObjectIdentifier" + } + }, + "type": "object" + }, + "AccessMethodType": { + "type": "string" + }, + "Arn": { + "type": "string" + }, + "CrlConfiguration": { + "additionalProperties": false, + "properties": { + "CrlDistributionPointExtensionConfiguration": { + "$ref": "#/definitions/CrlDistributionPointExtensionConfiguration" + }, + "CustomCname": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + }, + "ExpirationInDays": { + "type": "integer" + }, + "S3BucketName": { + "type": "string" + }, + "S3ObjectAcl": { + "type": "string" + } + }, + "type": "object" + }, + "CrlDistributionPointExtensionConfiguration": { + "additionalProperties": false, + "properties": { + "OmitExtension": { + "type": "boolean" + } + }, + "required": [ + "OmitExtension" + ], + "type": "object" + }, + "CsrExtensions": { + "additionalProperties": false, + "properties": { + "KeyUsage": { + "$ref": "#/definitions/KeyUsage" + }, + "SubjectInformationAccess": { + "$ref": "#/definitions/SubjectInformationAccess" + } + }, + "type": "object" + }, + "CustomAttribute": { + "additionalProperties": false, + "properties": { + "ObjectIdentifier": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "ObjectIdentifier", + "Value" + ], + "type": "object" + }, + "CustomAttributeList": { + "items": { + "$ref": "#/definitions/CustomAttribute" + }, + "type": "array" + }, + "CustomObjectIdentifier": { + "type": "string" + }, + "DnsName": { + "type": "string" + }, + "EdiPartyName": { + "additionalProperties": false, + "properties": { + "NameAssigner": { + "type": "string" + }, + "PartyName": { + "type": "string" + } + }, + "required": [ + "PartyName", + "NameAssigner" + ], + "type": "object" + }, + "GeneralName": { + "additionalProperties": false, + "properties": { + "DirectoryName": { + "$ref": "#/definitions/Subject" + }, + "DnsName": { + "$ref": "#/definitions/DnsName" + }, + "EdiPartyName": { + "$ref": "#/definitions/EdiPartyName" + }, + "IpAddress": { + "$ref": "#/definitions/IpAddress" + }, + "OtherName": { + "$ref": "#/definitions/OtherName" + }, + "RegisteredId": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Rfc822Name": { + "$ref": "#/definitions/Rfc822Name" + }, + "UniformResourceIdentifier": { + "$ref": "#/definitions/UniformResourceIdentifier" + } + }, + "type": "object" + }, + "IpAddress": { + "type": "string" + }, + "KeyUsage": { + "additionalProperties": false, + "properties": { + "CRLSign": { + "default": false, + "type": "boolean" + }, + "DataEncipherment": { + "default": false, + "type": "boolean" + }, + "DecipherOnly": { + "default": false, + "type": "boolean" + }, + "DigitalSignature": { + "default": false, + "type": "boolean" + }, + "EncipherOnly": { + "default": false, + "type": "boolean" + }, + "KeyAgreement": { + "default": false, + "type": "boolean" + }, + "KeyCertSign": { + "default": false, + "type": "boolean" + }, + "KeyEncipherment": { + "default": false, + "type": "boolean" + }, + "NonRepudiation": { + "default": false, + "type": "boolean" + } + }, + "type": "object" + }, + "OcspConfiguration": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + }, + "OcspCustomCname": { + "type": "string" + } + }, + "type": "object" + }, + "OtherName": { + "additionalProperties": false, + "properties": { + "TypeId": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "TypeId", + "Value" + ], + "type": "object" + }, + "RevocationConfiguration": { + "additionalProperties": false, + "properties": { + "CrlConfiguration": { + "$ref": "#/definitions/CrlConfiguration" + }, + "OcspConfiguration": { + "$ref": "#/definitions/OcspConfiguration" + } + }, + "type": "object" + }, + "Rfc822Name": { + "type": "string" + }, + "Subject": { + "additionalProperties": false, + "properties": { + "CommonName": { + "type": "string" + }, + "Country": { + "type": "string" + }, + "CustomAttributes": { + "$ref": "#/definitions/CustomAttributeList" + }, + "DistinguishedNameQualifier": { + "type": "string" + }, + "GenerationQualifier": { + "type": "string" + }, + "GivenName": { + "type": "string" + }, + "Initials": { + "type": "string" + }, + "Locality": { + "type": "string" + }, + "Organization": { + "type": "string" + }, + "OrganizationalUnit": { + "type": "string" + }, + "Pseudonym": { + "type": "string" + }, + "SerialNumber": { + "type": "string" + }, + "State": { + "type": "string" + }, + "Surname": { + "type": "string" + }, + "Title": { + "type": "string" + } + }, + "type": "object" + }, + "SubjectInformationAccess": { + "items": { + "$ref": "#/definitions/AccessDescription" + }, + "type": "array" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "UniformResourceIdentifier": { + "type": "string" + } + }, + "handlers": { + "create": { + "permissions": [ + "acm-pca:CreateCertificateAuthority", + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr" + ] + }, + "delete": { + "permissions": [ + "acm-pca:DeleteCertificateAuthority", + "acm-pca:DescribeCertificateAuthority" + ] + }, + "list": { + "permissions": [ + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr", + "acm-pca:ListCertificateAuthorities", + "acm-pca:ListTags" + ] + }, + "read": { + "permissions": [ + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr", + "acm-pca:ListTags" + ] + }, + "update": { + "permissions": [ + "acm-pca:ListTags", + "acm-pca:TagCertificateAuthority", + "acm-pca:UntagCertificateAuthority", + "acm-pca:UpdateCertificateAuthority" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "$ref": "#/definitions/Arn" + }, + "CertificateSigningRequest": { + "type": "string" + }, + "CsrExtensions": { + "$ref": "#/definitions/CsrExtensions" + }, + "KeyAlgorithm": { + "type": "string" + }, + "KeyStorageSecurityStandard": { + "type": "string" + }, + "RevocationConfiguration": { + "$ref": "#/definitions/RevocationConfiguration" + }, + "SigningAlgorithm": { + "type": "string" + }, + "Subject": { + "$ref": "#/definitions/Subject" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "Type": { + "type": "string" + }, + "UsageMode": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CertificateSigningRequest" + ], + "required": [ + "Type", + "KeyAlgorithm", + "SigningAlgorithm", + "Subject" + ], + "sourceUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_ACMPCA.html", + "typeName": "AWS::ACMPCA::CertificateAuthority", + "writeOnlyProperties": [ + "/properties/Subject", + "/properties/Subject", + "/properties/CsrExtensions", + "/properties/Tags", + "/properties/RevocationConfiguration", + "/properties/KeyStorageSecurityStandard" + ] +} diff --git a/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-appconfig-deployment.json b/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-appconfig-deployment.json deleted file mode 100644 index 231f321d6b..0000000000 --- a/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-appconfig-deployment.json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/KmsKeyIdentifier", - "/properties/DeploymentStrategyId", - "/properties/ConfigurationVersion", - "/properties/ApplicationId", - "/properties/ConfigurationProfileId", - "/properties/Tags", - "/properties/EnvironmentId", - "/properties/Description" - ], - "definitions": { - "Tags": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "type": "object" - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "ApplicationId": { - "type": "string" - }, - "ConfigurationProfileId": { - "type": "string" - }, - "ConfigurationVersion": { - "type": "string" - }, - "DeploymentStrategyId": { - "type": "string" - }, - "Description": { - "type": "string" - }, - "EnvironmentId": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "KmsKeyIdentifier": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tags" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "DeploymentStrategyId", - "ConfigurationProfileId", - "EnvironmentId", - "ConfigurationVersion", - "ApplicationId" - ], - "typeName": "AWS::AppConfig::Deployment" -} diff --git a/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-appconfig-environment.json b/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-appconfig-environment.json new file mode 100644 index 0000000000..1b1444bd23 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-appconfig-environment.json @@ -0,0 +1,152 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplicationId" + ], + "definitions": { + "Monitor": { + "additionalProperties": false, + "properties": { + "AlarmArn": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "AlarmRoleArn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^((arn):(aws|aws-cn|aws-iso|aws-iso-[a-z]{1}|aws-us-gov):(iam)::\\d{12}:role[/].*)$", + "type": "string" + } + }, + "required": [ + "AlarmArn" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:.)[a-zA-Z1-9+=._:/-]*$", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "appconfig:CreateEnvironment", + "appconfig:GetEnvironment", + "appconfig:ListTagsForResource", + "appconfig:TagResource", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "appconfig:GetEnvironment", + "appconfig:DeleteEnvironment" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "ApplicationId": { + "$ref": "resource-schema.json#/properties/ApplicationId" + } + }, + "required": [ + "ApplicationId" + ] + }, + "permissions": [ + "appconfig:ListEnvironments" + ] + }, + "read": { + "permissions": [ + "appconfig:GetEnvironment", + "appconfig:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "appconfig:UpdateEnvironment", + "appconfig:TagResource", + "appconfig:UntagResource", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/ApplicationId", + "/properties/EnvironmentId" + ], + "properties": { + "ApplicationId": { + "pattern": "[a-z0-9]{4,7}", + "type": "string" + }, + "Description": { + "maxLength": 1024, + "minLength": 0, + "type": "string" + }, + "EnvironmentId": { + "pattern": "[a-z0-9]{4,7}", + "type": "string" + }, + "Monitors": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Monitor" + }, + "maxItems": 5, + "minItems": 0, + "type": "array" + }, + "Name": { + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/EnvironmentId" + ], + "required": [ + "Name", + "ApplicationId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-appconfig.git", + "tagging": { + "cloudFormationSystemTags": true, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::AppConfig::Environment" +} diff --git a/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-cloudwatch-alarm.json b/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-cloudwatch-alarm.json new file mode 100644 index 0000000000..613fbe51c1 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-cloudwatch-alarm.json @@ -0,0 +1,318 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::CloudWatch::Alarm/Properties" + ], + "createOnlyProperties": [ + "/properties/AlarmName" + ], + "definitions": { + "Dimension": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Name" + ], + "type": "object" + }, + "Metric": { + "additionalProperties": false, + "properties": { + "Dimensions": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Dimension" + }, + "type": "array", + "uniqueItems": false + }, + "MetricName": { + "type": "string" + }, + "Namespace": { + "type": "string" + } + }, + "type": "object" + }, + "MetricDataQuery": { + "additionalProperties": false, + "properties": { + "AccountId": { + "type": "string" + }, + "Expression": { + "type": "string" + }, + "Id": { + "pattern": "^([a-z])([A-Za-z0-9\\_]*)$", + "type": "string" + }, + "Label": { + "type": "string" + }, + "MetricStat": { + "$ref": "#/definitions/MetricStat" + }, + "Period": { + "type": "integer" + }, + "ReturnData": { + "type": "boolean" + } + }, + "required": [ + "Id" + ], + "type": "object" + }, + "MetricStat": { + "additionalProperties": false, + "properties": { + "Metric": { + "$ref": "#/definitions/Metric" + }, + "Period": { + "type": "integer" + }, + "Stat": { + "type": "string" + }, + "Unit": { + "type": "string" + } + }, + "required": [ + "Stat", + "Period", + "Metric" + ], + "type": "object" + } + }, + "dependentExcluded": { + "ExtendedStatistic": [ + "Statistic" + ], + "Metrics": [ + "MetricName", + "Dimensions", + "Period", + "Namespace", + "Statistic", + "ExtendedStatistic", + "Unit" + ], + "Statistic": [ + "ExtendedStatistic" + ], + "Threshold": [ + "ThresholdMetricId" + ], + "ThresholdMetricId": [ + "Threshold" + ] + }, + "handlers": { + "create": { + "permissions": [ + "cloudwatch:PutMetricAlarm", + "cloudwatch:DescribeAlarms" + ] + }, + "delete": { + "permissions": [ + "cloudwatch:DeleteAlarms", + "cloudwatch:DescribeAlarms" + ] + }, + "list": { + "permissions": [ + "cloudwatch:DescribeAlarms" + ] + }, + "read": { + "permissions": [ + "cloudwatch:DescribeAlarms" + ] + }, + "update": { + "permissions": [ + "cloudwatch:PutMetricAlarm", + "cloudwatch:DescribeAlarms" + ] + } + }, + "primaryIdentifier": [ + "/properties/AlarmName" + ], + "properties": { + "ActionsEnabled": { + "default": true, + "type": "boolean" + }, + "AlarmActions": { + "items": { + "maximum": 1024, + "minimum": 1, + "type": "string" + }, + "maxItems": 5, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "AlarmDescription": { + "type": "string" + }, + "AlarmName": { + "type": "string" + }, + "Arn": { + "type": "string" + }, + "ComparisonOperator": { + "enum": [ + "GreaterThanOrEqualToThreshold", + "GreaterThanThreshold", + "LessThanThreshold", + "LessThanOrEqualToThreshold", + "LessThanLowerOrGreaterThanUpperThreshold", + "LessThanLowerThreshold", + "GreaterThanUpperThreshold" + ], + "type": "string" + }, + "DatapointsToAlarm": { + "type": "integer" + }, + "Dimensions": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Dimension" + }, + "type": "array", + "uniqueItems": false + }, + "EvaluateLowSampleCountPercentile": { + "type": "string" + }, + "EvaluationPeriods": { + "type": "integer" + }, + "ExtendedStatistic": { + "type": "string" + }, + "InsufficientDataActions": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "MetricName": { + "type": "string" + }, + "Metrics": { + "items": { + "$ref": "#/definitions/MetricDataQuery" + }, + "type": "array", + "uniqueItems": true + }, + "Namespace": { + "type": "string" + }, + "OKActions": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Period": { + "type": "integer" + }, + "Statistic": { + "enum": [ + "SampleCount", + "Average", + "Sum", + "Minimum", + "Maximum" + ], + "type": "string" + }, + "Threshold": { + "type": "number" + }, + "ThresholdMetricId": { + "type": "string" + }, + "TreatMissingData": { + "enum": [ + "breaching", + "ignore", + "missing", + "notBreaching" + ], + "type": "string" + }, + "Unit": { + "enum": [ + "Seconds", + "Microseconds", + "Milliseconds", + "Bytes", + "Kilobytes", + "Megabytes", + "Gigabytes", + "Terabytes", + "Bits", + "Kilobits", + "Megabits", + "Gigabits", + "Terabits", + "Percent", + "Count", + "Bytes/Second", + "Kilobytes/Second", + "Megabytes/Second", + "Gigabytes/Second", + "Terabytes/Second", + "Bits/Second", + "Kilobits/Second", + "Megabits/Second", + "Gigabits/Second", + "Terabits/Second", + "Count/Second", + "None" + ], + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "ComparisonOperator", + "EvaluationPeriods" + ], + "requiredXor": [ + "Metrics", + "MetricName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cloudwatch.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::CloudWatch::Alarm" +} diff --git a/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-cloudwatch-compositealarm.json b/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-cloudwatch-compositealarm.json new file mode 100644 index 0000000000..6503a56146 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-cloudwatch-compositealarm.json @@ -0,0 +1,115 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AlarmName" + ], + "handlers": { + "create": { + "permissions": [ + "cloudwatch:DescribeAlarms", + "cloudwatch:PutCompositeAlarm" + ] + }, + "delete": { + "permissions": [ + "cloudwatch:DescribeAlarms", + "cloudwatch:DeleteAlarms" + ] + }, + "list": { + "permissions": [ + "cloudwatch:DescribeAlarms" + ] + }, + "read": { + "permissions": [ + "cloudwatch:DescribeAlarms" + ] + }, + "update": { + "permissions": [ + "cloudwatch:DescribeAlarms", + "cloudwatch:PutCompositeAlarm" + ] + } + }, + "primaryIdentifier": [ + "/properties/AlarmName" + ], + "properties": { + "ActionsEnabled": { + "type": "boolean" + }, + "ActionsSuppressor": { + "maxLength": 1600, + "minLength": 1, + "type": "string" + }, + "ActionsSuppressorExtensionPeriod": { + "minimum": 0, + "type": "integer" + }, + "ActionsSuppressorWaitPeriod": { + "minimum": 0, + "type": "integer" + }, + "AlarmActions": { + "items": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "maxItems": 5, + "type": "array" + }, + "AlarmDescription": { + "maxLength": 1024, + "minLength": 0, + "type": "string" + }, + "AlarmName": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "AlarmRule": { + "maxLength": 10240, + "minLength": 1, + "type": "string" + }, + "Arn": { + "maxLength": 1600, + "minLength": 1, + "type": "string" + }, + "InsufficientDataActions": { + "items": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "maxItems": 5, + "type": "array" + }, + "OKActions": { + "items": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "maxItems": 5, + "type": "array" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "AlarmRule" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-cloudwatch.git", + "tagging": { + "taggable": false + }, + "typeName": "AWS::CloudWatch::CompositeAlarm" +} diff --git a/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-config-conformancepack.json b/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-config-conformancepack.json deleted file mode 100644 index cc35e80876..0000000000 --- a/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-config-conformancepack.json +++ /dev/null @@ -1,140 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ConformancePackName" - ], - "definitions": { - "ConformancePackInputParameter": { - "additionalProperties": false, - "properties": { - "ParameterName": { - "$ref": "#/definitions/ParameterName" - }, - "ParameterValue": { - "$ref": "#/definitions/ParameterValue" - } - }, - "required": [ - "ParameterName", - "ParameterValue" - ], - "type": "object" - }, - "ParameterName": { - "maxLength": 255, - "minLength": 0, - "type": "string" - }, - "ParameterValue": { - "maxLength": 4096, - "minLength": 0, - "type": "string" - } - }, - "documentationUrl": "https://docs.aws.amazon.com/config/latest/developerguide/conformance-packs.html", - "handlers": { - "create": { - "permissions": [ - "config:PutConformancePack", - "config:DescribeConformancePackStatus", - "config:DescribeConformancePacks", - "s3:GetObject", - "s3:GetBucketAcl", - "iam:CreateServiceLinkedRole", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "config:DeleteConformancePack", - "config:DescribeConformancePackStatus" - ] - }, - "list": { - "permissions": [ - "config:DescribeConformancePacks" - ] - }, - "read": { - "permissions": [ - "config:DescribeConformancePacks" - ] - }, - "update": { - "permissions": [ - "config:PutConformancePack", - "config:DescribeConformancePackStatus", - "s3:GetObject", - "s3:GetBucketAcl", - "iam:CreateServiceLinkedRole", - "iam:PassRole" - ] - } - }, - "primaryIdentifier": [ - "/properties/ConformancePackName" - ], - "properties": { - "ConformancePackInputParameters": { - "items": { - "$ref": "#/definitions/ConformancePackInputParameter" - }, - "maxItems": 60, - "minItems": 0, - "type": "array" - }, - "ConformancePackName": { - "maxLength": 256, - "minLength": 1, - "pattern": "[a-zA-Z][-a-zA-Z0-9]*", - "type": "string" - }, - "DeliveryS3Bucket": { - "maxLength": 63, - "minLength": 0, - "type": "string" - }, - "DeliveryS3KeyPrefix": { - "maxLength": 1024, - "minLength": 0, - "type": "string" - }, - "TemplateBody": { - "maxLength": 51200, - "minLength": 1, - "type": "string" - }, - "TemplateS3Uri": { - "maxLength": 1024, - "minLength": 1, - "pattern": "s3://.*", - "type": "string" - }, - "TemplateSSMDocumentDetails": { - "additionalProperties": false, - "properties": { - "DocumentName": { - "maxLength": 128, - "minLength": 3, - "type": "string" - }, - "DocumentVersion": { - "maxLength": 128, - "minLength": 1, - "type": "string" - } - }, - "type": "object" - } - }, - "required": [ - "ConformancePackName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-config.git", - "typeName": "AWS::Config::ConformancePack", - "writeOnlyProperties": [ - "/properties/TemplateBody", - "/properties/TemplateS3Uri", - "/properties/TemplateSSMDocumentDetails" - ] -} diff --git a/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-dynamodb-globaltable.json b/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-dynamodb-globaltable.json index 4e5ba995cb..ae37e9142b 100644 --- a/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-dynamodb-globaltable.json +++ b/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-dynamodb-globaltable.json @@ -8,6 +8,27 @@ ] ], "additionalProperties": false, + "allOf": [ + { + "if": { + "required": [ + "LocalSecondaryIndexes" + ], + "type": "object" + }, + "then": { + "properties": { + "AttributeDefinitions": { + "minItems": 2 + }, + "KeySchema": { + "minItems": 2 + } + }, + "type": "object" + } + } + ], "createOnlyProperties": [ "/properties/LocalSecondaryIndexes", "/properties/TableName", @@ -79,13 +100,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "minItems": 1, - "type": "array", - "uniqueItems": true + "minItems": 1 }, "Projection": { "$ref": "#/definitions/Projection" @@ -102,22 +119,60 @@ "type": "object" }, "KeySchema": { - "additionalProperties": false, - "properties": { - "AttributeName": { - "maxLength": 255, - "minLength": 1, - "type": "string" + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "KeyType": { + "enum": [ + "HASH", + "RANGE" + ], + "type": "string" + } }, - "KeyType": { - "type": "string" - } + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" }, - "required": [ - "KeyType", - "AttributeName" + "prefixItems": [ + { + "additionalProperties": false, + "properties": { + "KeyType": { + "const": "HASH", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + }, + { + "properties": { + "KeyType": { + "const": "RANGE", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + } ], - "type": "object" + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "KinesisStreamSpecification": { "additionalProperties": false, @@ -147,12 +202,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "type": "array", - "uniqueItems": true + "minItems": 2 }, "Projection": { "$ref": "#/definitions/Projection" @@ -511,7 +563,10 @@ }, "minItems": 1, "type": "array", - "uniqueItems": true + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "BillingMode": { "type": "string" @@ -525,13 +580,9 @@ "uniqueItems": true }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "minItems": 1, - "type": "array", - "uniqueItems": true + "minItems": 1 }, "LocalSecondaryIndexes": { "insertionOrder": false, diff --git a/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-dynamodb-table.json b/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-dynamodb-table.json index efc82f1d70..f21d084b10 100644 --- a/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-dynamodb-table.json +++ b/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-dynamodb-table.json @@ -1,5 +1,26 @@ { "additionalProperties": false, + "allOf": [ + { + "if": { + "required": [ + "LocalSecondaryIndexes" + ], + "type": "object" + }, + "then": { + "properties": { + "AttributeDefinitions": { + "minItems": 2 + }, + "KeySchema": { + "minItems": 2 + } + }, + "type": "object" + } + } + ], "cfnLint": [ "AWS::DynamoDB::Table/Properties" ], @@ -95,11 +116,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 }, "Projection": { "$ref": "#/definitions/Projection" @@ -147,24 +166,57 @@ "type": "object" }, "KeySchema": { - "additionalProperties": false, - "properties": { - "AttributeName": { - "type": "string" + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "type": "string" + }, + "KeyType": { + "enum": [ + "HASH", + "RANGE" + ], + "type": "string" + } }, - "KeyType": { - "enum": [ - "HASH", - "RANGE" + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" + }, + "prefixItems": [ + { + "properties": { + "KeyType": { + "const": "HASH", + "type": "string" + } + }, + "required": [ + "KeyType" ], - "type": "string" + "type": "object" + }, + { + "properties": { + "KeyType": { + "const": "RANGE", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" } - }, - "required": [ - "KeyType", - "AttributeName" ], - "type": "object" + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "KinesisStreamSpecification": { "additionalProperties": false, @@ -192,11 +244,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 2 }, "Projection": { "$ref": "#/definitions/Projection" @@ -451,7 +501,10 @@ "$ref": "#/definitions/AttributeDefinition" }, "type": "array", - "uniqueItems": true + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "BillingMode": { "enum": [ @@ -479,11 +532,9 @@ "KeySchema": { "oneOf": [ { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 }, { "type": "object" diff --git a/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-ec2-securitygroupegress.json b/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-ec2-securitygroupegress.json new file mode 100644 index 0000000000..f94631dad2 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-ec2-securitygroupegress.json @@ -0,0 +1,98 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::EC2::SecurityGroupEgress/Properties" + ], + "createOnlyProperties": [ + "/properties/IpProtocol", + "/properties/DestinationSecurityGroupId", + "/properties/ToPort", + "/properties/CidrIp", + "/properties/FromPort", + "/properties/GroupId", + "/properties/CidrIpv6", + "/properties/DestinationPrefixListId" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:AuthorizeSecurityGroupEgress", + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "delete": { + "permissions": [ + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "update": { + "permissions": [ + "ec2:UpdateSecurityGroupRuleDescriptionsEgress" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CidrIp": { + "type": "string" + }, + "CidrIpv6": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "DestinationPrefixListId": { + "type": "string" + }, + "DestinationSecurityGroupId": { + "type": "string" + }, + "FromPort": { + "minimum": -1, + "type": "integer" + }, + "GroupId": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "IpProtocol": { + "type": "string" + }, + "ToPort": { + "minimum": -1, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IpProtocol", + "GroupId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SecurityGroupEgress" +} diff --git a/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-ec2-transitgatewayroutetableassociation.json b/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-ec2-transitgatewayroutetableassociation.json new file mode 100644 index 0000000000..890b2c4be2 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-ec2-transitgatewayroutetableassociation.json @@ -0,0 +1,29 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/TransitGatewayRouteTableId", + "/properties/TransitGatewayAttachmentId" + ], + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "Id": { + "type": "string" + }, + "TransitGatewayAttachmentId": { + "type": "string" + }, + "TransitGatewayRouteTableId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "TransitGatewayRouteTableId", + "TransitGatewayAttachmentId" + ], + "typeName": "AWS::EC2::TransitGatewayRouteTableAssociation" +} diff --git a/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-ecs-cluster.json b/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-ecs-cluster.json deleted file mode 100644 index 5e5707bc05..0000000000 --- a/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-ecs-cluster.json +++ /dev/null @@ -1,173 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ClusterName" - ], - "definitions": { - "CapacityProviderStrategyItem": { - "additionalProperties": false, - "properties": { - "Base": { - "type": "integer" - }, - "CapacityProvider": { - "type": "string" - }, - "Weight": { - "type": "integer" - } - }, - "type": "object" - }, - "ClusterConfiguration": { - "additionalProperties": false, - "properties": { - "ExecuteCommandConfiguration": { - "$ref": "#/definitions/ExecuteCommandConfiguration" - } - }, - "type": "object" - }, - "ClusterSettings": { - "additionalProperties": false, - "properties": { - "Name": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "type": "object" - }, - "ExecuteCommandConfiguration": { - "additionalProperties": false, - "properties": { - "KmsKeyId": { - "type": "string" - }, - "LogConfiguration": { - "$ref": "#/definitions/ExecuteCommandLogConfiguration" - }, - "Logging": { - "type": "string" - } - }, - "type": "object" - }, - "ExecuteCommandLogConfiguration": { - "additionalProperties": false, - "properties": { - "CloudWatchEncryptionEnabled": { - "type": "boolean" - }, - "CloudWatchLogGroupName": { - "type": "string" - }, - "S3BucketName": { - "type": "string" - }, - "S3EncryptionEnabled": { - "type": "boolean" - }, - "S3KeyPrefix": { - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "ecs:CreateCluster", - "ecs:DescribeClusters", - "iam:CreateServiceLinkedRole" - ] - }, - "delete": { - "permissions": [ - "ecs:DeleteCluster", - "ecs:DescribeClusters" - ] - }, - "list": { - "permissions": [ - "ecs:DescribeClusters", - "ecs:ListClusters" - ] - }, - "read": { - "permissions": [ - "ecs:DescribeClusters" - ] - }, - "update": { - "permissions": [ - "ecs:PutAccountSettingDefault", - "ecs:DescribeClusters", - "ecs:TagResource", - "ecs:UntagResource", - "ecs:PutAccountSetting", - "ecs:ListTagsForResource", - "ecs:UpdateCluster", - "ecs:UpdateClusterSettings", - "ecs:PutClusterCapacityProviders" - ] - } - }, - "primaryIdentifier": [ - "/properties/ClusterName" - ], - "properties": { - "Arn": { - "type": "string" - }, - "CapacityProviders": { - "items": { - "type": "string" - }, - "type": "array" - }, - "ClusterName": { - "type": "string" - }, - "ClusterSettings": { - "items": { - "$ref": "#/definitions/ClusterSettings" - }, - "type": "array" - }, - "Configuration": { - "$ref": "#/definitions/ClusterConfiguration" - }, - "DefaultCapacityProviderStrategy": { - "items": { - "$ref": "#/definitions/CapacityProviderStrategyItem" - }, - "type": "array" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "typeName": "AWS::ECS::Cluster" -} diff --git a/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-elasticache-serverlesscache.json b/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-elasticache-serverlesscache.json new file mode 100644 index 0000000000..7ad43dccf2 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-elasticache-serverlesscache.json @@ -0,0 +1,243 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ServerlessCacheName", + "/properties/Engine", + "/properties/MajorEngineVersion", + "/properties/KmsKeyId", + "/properties/SnapshotArnsToRestore", + "/properties/SubnetIds" + ], + "definitions": { + "CacheUsageLimits": { + "additionalProperties": false, + "properties": { + "DataStorage": { + "$ref": "#/definitions/DataStorage" + }, + "ECPUPerSecond": { + "$ref": "#/definitions/ECPUPerSecond" + } + }, + "type": "object" + }, + "DataStorage": { + "additionalProperties": false, + "properties": { + "Maximum": { + "type": "integer" + }, + "Unit": { + "enum": [ + "GB" + ], + "type": "string" + } + }, + "required": [ + "Maximum", + "Unit" + ], + "type": "object" + }, + "ECPUPerSecond": { + "additionalProperties": false, + "properties": { + "Maximum": { + "type": "integer" + } + }, + "required": [ + "Maximum" + ], + "type": "object" + }, + "Endpoint": { + "additionalProperties": false, + "properties": { + "Address": { + "type": "string" + }, + "Port": { + "type": "string" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)[a-zA-Z0-9 _\\.\\/=+:\\-@]*$", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "pattern": "^[a-zA-Z0-9 _\\.\\/=+:\\-@]*$", + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "elasticache:CreateServerlessCache", + "elasticache:DescribeServerlessCaches", + "elasticache:AddTagsToResource", + "elasticache:ListTagsForResource", + "ec2:CreateTags", + "ec2:CreateVpcEndpoint", + "kms:CreateGrant", + "kms:DescribeKey" + ] + }, + "delete": { + "permissions": [ + "elasticache:DeleteServerlessCache", + "elasticache:DescribeServerlessCaches", + "elasticache:ListTagsForResource" + ] + }, + "list": { + "permissions": [ + "elasticache:DescribeServerlessCaches", + "elasticache:ListTagsForResource" + ] + }, + "read": { + "permissions": [ + "elasticache:DescribeServerlessCaches", + "elasticache:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "elasticache:ModifyServerlessCache", + "elasticache:DescribeServerlessCaches", + "elasticache:AddTagsToResource", + "elasticache:ListTagsForResource", + "elasticache:RemoveTagsFromResource" + ] + } + }, + "primaryIdentifier": [ + "/properties/ServerlessCacheName" + ], + "properties": { + "ARN": { + "type": "string" + }, + "CacheUsageLimits": { + "$ref": "#/definitions/CacheUsageLimits" + }, + "CreateTime": { + "type": "string" + }, + "DailySnapshotTime": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "Endpoint": { + "$ref": "#/definitions/Endpoint" + }, + "Engine": { + "type": "string" + }, + "FinalSnapshotName": { + "type": "string" + }, + "FullEngineVersion": { + "type": "string" + }, + "KmsKeyId": { + "type": "string" + }, + "MajorEngineVersion": { + "type": "string" + }, + "ReaderEndpoint": { + "$ref": "#/definitions/Endpoint" + }, + "SecurityGroupIds": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "ServerlessCacheName": { + "type": "string" + }, + "SnapshotArnsToRestore": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "SnapshotRetentionLimit": { + "type": "integer" + }, + "Status": { + "type": "string" + }, + "SubnetIds": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": true + }, + "UserGroupId": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/FullEngineVersion", + "/properties/CreateTime", + "/properties/Status", + "/properties/Endpoint/Address", + "/properties/Endpoint/Port", + "/properties/ReaderEndpoint/Address", + "/properties/ReaderEndpoint/Port", + "/properties/ARN" + ], + "required": [ + "ServerlessCacheName", + "Engine" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticache", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ElastiCache::ServerlessCache", + "writeOnlyProperties": [ + "/properties/SnapshotArnsToRestore", + "/properties/FinalSnapshotName" + ] +} diff --git a/src/cfnlint/data/schemas/providers/af_south_1/aws-elasticache-user.json b/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-elasticache-user.json similarity index 97% rename from src/cfnlint/data/schemas/providers/af_south_1/aws-elasticache-user.json rename to src/cfnlint/data/schemas/providers/us_gov_west_1/aws-elasticache-user.json index 0775783108..5247af8ac3 100644 --- a/src/cfnlint/data/schemas/providers/af_south_1/aws-elasticache-user.json +++ b/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-elasticache-user.json @@ -33,8 +33,7 @@ "permissions": [ "elasticache:CreateUser", "elasticache:DescribeUsers", - "elasticache:ListTagsForResource", - "elasticache:AddTagsToResource" + "elasticache:ListTagsForResource" ] }, "delete": { diff --git a/src/cfnlint/data/schemas/providers/ap_south_2/aws-elasticache-usergroup.json b/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-elasticache-usergroup.json similarity index 96% rename from src/cfnlint/data/schemas/providers/ap_south_2/aws-elasticache-usergroup.json rename to src/cfnlint/data/schemas/providers/us_gov_west_1/aws-elasticache-usergroup.json index 285e73b7c4..0a33952e4f 100644 --- a/src/cfnlint/data/schemas/providers/ap_south_2/aws-elasticache-usergroup.json +++ b/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-elasticache-usergroup.json @@ -32,8 +32,7 @@ "permissions": [ "elasticache:CreateUserGroup", "elasticache:DescribeUserGroups", - "elasticache:ListTagsForResource", - "elasticache:AddTagsToResource" + "elasticache:ListTagsForResource" ] }, "delete": { diff --git a/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-gammadilithium-jobdefinition.json b/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-gammadilithium-jobdefinition.json index ac35ac594b..349bfa79f7 100644 --- a/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-gammadilithium-jobdefinition.json +++ b/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-gammadilithium-jobdefinition.json @@ -308,6 +308,9 @@ "EksContainerSecurityContext": { "additionalProperties": false, "properties": { + "AllowPrivilegeEscalation": { + "type": "boolean" + }, "Privileged": { "type": "boolean" }, @@ -461,6 +464,18 @@ }, "type": "object" }, + "ImagePullSecret": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, "LinuxParameters": { "additionalProperties": false, "properties": { @@ -613,6 +628,13 @@ "HostNetwork": { "type": "boolean" }, + "ImagePullSecrets": { + "items": { + "$ref": "#/definitions/ImagePullSecret" + }, + "type": "array", + "uniqueItems": false + }, "InitContainers": { "items": { "$ref": "#/definitions/EksContainer" diff --git a/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-guardduty-detector.json b/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-guardduty-detector.json deleted file mode 100644 index 60b06ade42..0000000000 --- a/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-guardduty-detector.json +++ /dev/null @@ -1,155 +0,0 @@ -{ - "additionalProperties": false, - "definitions": { - "CFNDataSourceConfigurations": { - "additionalProperties": false, - "properties": { - "Kubernetes": { - "$ref": "#/definitions/CFNKubernetesConfiguration" - }, - "MalwareProtection": { - "$ref": "#/definitions/CFNMalwareProtectionConfiguration" - }, - "S3Logs": { - "$ref": "#/definitions/CFNS3LogsConfiguration" - } - }, - "type": "object" - }, - "CFNKubernetesAuditLogsConfiguration": { - "additionalProperties": false, - "properties": { - "Enable": { - "type": "boolean" - } - }, - "type": "object" - }, - "CFNKubernetesConfiguration": { - "additionalProperties": false, - "properties": { - "AuditLogs": { - "$ref": "#/definitions/CFNKubernetesAuditLogsConfiguration" - } - }, - "type": "object" - }, - "CFNMalwareProtectionConfiguration": { - "additionalProperties": false, - "properties": { - "ScanEc2InstanceWithFindings": { - "$ref": "#/definitions/CFNScanEc2InstanceWithFindingsConfiguration" - } - }, - "type": "object" - }, - "CFNS3LogsConfiguration": { - "additionalProperties": false, - "properties": { - "Enable": { - "type": "boolean" - } - }, - "type": "object" - }, - "CFNScanEc2InstanceWithFindingsConfiguration": { - "additionalProperties": false, - "properties": { - "EbsVolumes": { - "type": "boolean" - } - }, - "type": "object" - }, - "FeatureAdditionalConfiguration": { - "additionalProperties": false, - "properties": { - "Name": { - "type": "string" - }, - "Status": { - "type": "string" - } - }, - "type": "object" - }, - "FeatureConfigurations": { - "additionalProperties": false, - "properties": { - "AdditionalConfiguration": { - "items": { - "$ref": "#/definitions/FeatureAdditionalConfiguration" - }, - "type": "array", - "uniqueItems": false - }, - "Name": { - "type": "string" - }, - "Status": { - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "DataSources": { - "$ref": "#/definitions/CFNDataSourceConfigurations" - }, - "Enable": { - "type": "boolean" - }, - "Features": { - "items": { - "$ref": "#/definitions/FeatureConfigurations" - }, - "type": "array", - "uniqueItems": false - }, - "FindingPublishingFrequency": { - "enum": [ - "FIFTEEN_MINUTES", - "ONE_HOUR", - "SIX_HOURS" - ], - "type": "string" - }, - "Id": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Enable" - ], - "typeName": "AWS::GuardDuty::Detector" -} diff --git a/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-iotsitewise-gateway.json b/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-iotsitewise-gateway.json deleted file mode 100644 index 20b0ba8baa..0000000000 --- a/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-iotsitewise-gateway.json +++ /dev/null @@ -1,179 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/GatewayPlatform" - ], - "definitions": { - "CapabilityConfiguration": { - "type": "string" - }, - "CapabilityNamespace": { - "type": "string" - }, - "GatewayCapabilitySummary": { - "additionalProperties": false, - "properties": { - "CapabilityConfiguration": { - "$ref": "#/definitions/CapabilityConfiguration" - }, - "CapabilityNamespace": { - "$ref": "#/definitions/CapabilityNamespace" - } - }, - "required": [ - "CapabilityNamespace" - ], - "type": "object" - }, - "GatewayPlatform": { - "additionalProperties": false, - "oneOf": [ - { - "required": [ - "Greengrass" - ] - }, - { - "required": [ - "GreengrassV2" - ] - } - ], - "properties": { - "Greengrass": { - "$ref": "#/definitions/Greengrass" - }, - "GreengrassV2": { - "$ref": "#/definitions/GreengrassV2" - } - }, - "type": "object" - }, - "Greengrass": { - "additionalProperties": false, - "properties": { - "GroupArn": { - "type": "string" - } - }, - "required": [ - "GroupArn" - ], - "type": "object" - }, - "GreengrassV2": { - "additionalProperties": false, - "properties": { - "CoreDeviceThingName": { - "type": "string" - } - }, - "required": [ - "CoreDeviceThingName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "iotsitewise:CreateGateway", - "iotsitewise:DescribeGateway", - "iotsitewise:DescribeGatewayCapabilityConfiguration", - "iotsitewise:UpdateGatewayCapabilityConfiguration", - "iam:PassRole", - "iam:GetRole", - "greengrass:GetCoreDevice", - "iotsitewise:ListTagsForResource", - "iotsitewise:TagResource", - "iot:DescribeThing" - ] - }, - "delete": { - "permissions": [ - "iotsitewise:DescribeGateway", - "iotsitewise:DescribeGatewayCapabilityConfiguration", - "iotsitewise:DeleteGateway" - ] - }, - "list": { - "permissions": [ - "iotsitewise:ListGateways" - ] - }, - "read": { - "permissions": [ - "iotsitewise:DescribeGateway", - "iotsitewise:DescribeGatewayCapabilityConfiguration", - "iotsitewise:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "iotsitewise:UpdateGateway", - "iotsitewise:UpdateGatewayCapabilityConfiguration", - "iotsitewise:TagResource", - "iotsitewise:UntagResource", - "iotsitewise:DescribeGateway", - "iotsitewise:DescribeGatewayCapabilityConfiguration", - "iotsitewise:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/GatewayId" - ], - "properties": { - "GatewayCapabilitySummaries": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/GatewayCapabilitySummary" - }, - "type": "array", - "uniqueItems": true - }, - "GatewayId": { - "type": "string" - }, - "GatewayName": { - "type": "string" - }, - "GatewayPlatform": { - "$ref": "#/definitions/GatewayPlatform" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/GatewayId" - ], - "required": [ - "GatewayName", - "GatewayPlatform" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-IoTSiteWise.git", - "taggable": true, - "typeName": "AWS::IoTSiteWise::Gateway" -} diff --git a/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-lambda-eventsourcemapping.json b/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-lambda-eventsourcemapping.json new file mode 100644 index 0000000000..cb7599c139 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-lambda-eventsourcemapping.json @@ -0,0 +1,353 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::Lambda::EventSourceMapping/Properties" + ], + "createOnlyProperties": [ + "/properties/EventSourceArn", + "/properties/StartingPosition", + "/properties/StartingPositionTimestamp", + "/properties/SelfManagedEventSource", + "/properties/AmazonManagedKafkaEventSourceConfig", + "/properties/SelfManagedKafkaEventSourceConfig" + ], + "definitions": { + "AmazonManagedKafkaEventSourceConfig": { + "additionalProperties": false, + "properties": { + "ConsumerGroupId": { + "$ref": "#/definitions/ConsumerGroupId" + } + }, + "type": "object" + }, + "ConsumerGroupId": { + "maxLength": 200, + "minLength": 1, + "pattern": "[a-zA-Z0-9-\\/*:_+=.@-]*", + "type": "string" + }, + "DestinationConfig": { + "additionalProperties": false, + "properties": { + "OnFailure": { + "$ref": "#/definitions/OnFailure" + } + }, + "type": "object" + }, + "DocumentDBEventSourceConfig": { + "additionalProperties": false, + "properties": { + "CollectionName": { + "maxLength": 57, + "minLength": 1, + "type": "string" + }, + "DatabaseName": { + "maxLength": 63, + "minLength": 1, + "type": "string" + }, + "FullDocument": { + "enum": [ + "UpdateLookup", + "Default" + ], + "type": "string" + } + }, + "type": "object" + }, + "Endpoints": { + "additionalProperties": false, + "properties": { + "KafkaBootstrapServers": { + "items": { + "maxLength": 300, + "minLength": 1, + "pattern": "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9]):[0-9]{1,5}", + "type": "string" + }, + "maxItems": 10, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "Filter": { + "additionalProperties": false, + "properties": { + "Pattern": { + "maxLength": 4096, + "minLength": 0, + "pattern": ".*", + "type": "string" + } + }, + "type": "object" + }, + "FilterCriteria": { + "additionalProperties": false, + "properties": { + "Filters": { + "items": { + "$ref": "#/definitions/Filter" + }, + "maxItems": 20, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "MaximumConcurrency": { + "maximum": 1000, + "minimum": 2, + "type": "integer" + }, + "OnFailure": { + "additionalProperties": false, + "properties": { + "Destination": { + "maxLength": 1024, + "minLength": 12, + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "type": "string" + } + }, + "type": "object" + }, + "ScalingConfig": { + "additionalProperties": false, + "properties": { + "MaximumConcurrency": { + "$ref": "#/definitions/MaximumConcurrency" + } + }, + "type": "object" + }, + "SelfManagedEventSource": { + "additionalProperties": false, + "properties": { + "Endpoints": { + "$ref": "#/definitions/Endpoints" + } + }, + "type": "object" + }, + "SelfManagedKafkaEventSourceConfig": { + "additionalProperties": false, + "properties": { + "ConsumerGroupId": { + "$ref": "#/definitions/ConsumerGroupId" + } + }, + "type": "object" + }, + "SourceAccessConfiguration": { + "additionalProperties": false, + "properties": { + "Type": { + "enum": [ + "BASIC_AUTH", + "VPC_SUBNET", + "VPC_SECURITY_GROUP", + "SASL_SCRAM_512_AUTH", + "SASL_SCRAM_256_AUTH", + "VIRTUAL_HOST", + "CLIENT_CERTIFICATE_TLS_AUTH", + "SERVER_ROOT_CA_CERTIFICATE" + ], + "type": "string" + }, + "URI": { + "maxLength": 200, + "minLength": 1, + "pattern": "[a-zA-Z0-9-\\/*:_+=.@-]*", + "type": "string" + } + }, + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "lambda:CreateEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + }, + "delete": { + "permissions": [ + "lambda:DeleteEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + }, + "list": { + "permissions": [ + "lambda:ListEventSourceMappings" + ] + }, + "read": { + "permissions": [ + "lambda:GetEventSourceMapping" + ] + }, + "update": { + "permissions": [ + "lambda:UpdateEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AmazonManagedKafkaEventSourceConfig": { + "$ref": "#/definitions/AmazonManagedKafkaEventSourceConfig" + }, + "BatchSize": { + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "BisectBatchOnFunctionError": { + "type": "boolean" + }, + "DestinationConfig": { + "$ref": "#/definitions/DestinationConfig" + }, + "DocumentDBEventSourceConfig": { + "$ref": "#/definitions/DocumentDBEventSourceConfig" + }, + "Enabled": { + "type": "boolean" + }, + "EventSourceArn": { + "maxLength": 1024, + "minLength": 12, + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "type": "string" + }, + "FilterCriteria": { + "$ref": "#/definitions/FilterCriteria" + }, + "FunctionName": { + "maxLength": 140, + "minLength": 1, + "pattern": "(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?", + "type": "string" + }, + "FunctionResponseTypes": { + "items": { + "enum": [ + "ReportBatchItemFailures" + ], + "type": "string" + }, + "maxLength": 1, + "minLength": 0, + "type": "array", + "uniqueItems": true + }, + "Id": { + "maxLength": 36, + "minLength": 36, + "pattern": "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + "type": "string" + }, + "MaximumBatchingWindowInSeconds": { + "maximum": 300, + "minimum": 0, + "type": "integer" + }, + "MaximumRecordAgeInSeconds": { + "maximum": 604800, + "minimum": -1, + "type": "integer" + }, + "MaximumRetryAttempts": { + "maximum": 10000, + "minimum": -1, + "type": "integer" + }, + "ParallelizationFactor": { + "maximum": 10, + "minimum": 1, + "type": "integer" + }, + "Queues": { + "items": { + "maxLength": 1000, + "minLength": 1, + "pattern": "[\\s\\S]*", + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "ScalingConfig": { + "$ref": "#/definitions/ScalingConfig" + }, + "SelfManagedEventSource": { + "$ref": "#/definitions/SelfManagedEventSource" + }, + "SelfManagedKafkaEventSourceConfig": { + "$ref": "#/definitions/SelfManagedKafkaEventSourceConfig" + }, + "SourceAccessConfigurations": { + "items": { + "$ref": "#/definitions/SourceAccessConfiguration" + }, + "maxItems": 22, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "StartingPosition": { + "enum": [ + "TRIM_HORIZON", + "LATEST", + "AT_TIMESTAMP" + ], + "maxLength": 12, + "minLength": 6, + "pattern": "(LATEST|TRIM_HORIZON|AT_TIMESTAMP)+", + "type": "string" + }, + "StartingPositionTimestamp": { + "type": "number" + }, + "Topics": { + "items": { + "maxLength": 249, + "minLength": 1, + "pattern": "^[^.]([a-zA-Z0-9\\-_.]+)", + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "TumblingWindowInSeconds": { + "maximum": 900, + "minimum": 0, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "FunctionName" + ], + "typeName": "AWS::Lambda::EventSourceMapping" +} diff --git a/src/cfnlint/data/schemas/providers/eu_central_1/aws-networkfirewall-tlsinspectionconfiguration.json b/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-networkfirewall-tlsinspectionconfiguration.json similarity index 99% rename from src/cfnlint/data/schemas/providers/eu_central_1/aws-networkfirewall-tlsinspectionconfiguration.json rename to src/cfnlint/data/schemas/providers/us_gov_west_1/aws-networkfirewall-tlsinspectionconfiguration.json index ea743fee48..00f466915a 100644 --- a/src/cfnlint/data/schemas/providers/eu_central_1/aws-networkfirewall-tlsinspectionconfiguration.json +++ b/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-networkfirewall-tlsinspectionconfiguration.json @@ -199,7 +199,6 @@ "handlers": { "create": { "permissions": [ - "iam:CreateServiceLinkedRole", "network-firewall:CreateTLSInspectionConfiguration", "network-firewall:DescribeTLSInspectionConfiguration", "network-firewall:TagResource" diff --git a/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-sagemaker-appimageconfig.json b/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-sagemaker-appimageconfig.json new file mode 100644 index 0000000000..01116f524b --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-sagemaker-appimageconfig.json @@ -0,0 +1,238 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AppImageConfigName", + "/properties/Tags" + ], + "definitions": { + "ContainerConfig": { + "additionalProperties": false, + "properties": { + "ContainerArguments": { + "items": { + "$ref": "#/definitions/CustomImageContainerArguments" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "ContainerEntrypoint": { + "items": { + "$ref": "#/definitions/CustomImageContainerEntrypoint" + }, + "maxItems": 1, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "ContainerEnvironmentVariables": { + "items": { + "$ref": "#/definitions/CustomImageContainerEnvironmentVariable" + }, + "maxItems": 25, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "CustomImageContainerArguments": { + "maxLength": 64, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "CustomImageContainerEntrypoint": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "CustomImageContainerEnvironmentVariable": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "FileSystemConfig": { + "additionalProperties": false, + "properties": { + "DefaultGid": { + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "DefaultUid": { + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "MountPath": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^/.*", + "type": "string" + } + }, + "type": "object" + }, + "JupyterLabAppImageConfig": { + "additionalProperties": false, + "properties": { + "ContainerConfig": { + "$ref": "#/definitions/ContainerConfig" + } + }, + "type": "object" + }, + "KernelGatewayImageConfig": { + "additionalProperties": false, + "properties": { + "FileSystemConfig": { + "$ref": "#/definitions/FileSystemConfig" + }, + "KernelSpecs": { + "items": { + "$ref": "#/definitions/KernelSpec" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "KernelSpecs" + ], + "type": "object" + }, + "KernelSpec": { + "additionalProperties": false, + "properties": { + "DisplayName": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Name": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "sagemaker:CreateAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + }, + "delete": { + "permissions": [ + "sagemaker:DeleteAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + }, + "list": { + "permissions": [ + "sagemaker:ListAppImageConfigs" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeAppImageConfig" + ] + }, + "update": { + "permissions": [ + "sagemaker:UpdateAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + } + }, + "primaryIdentifier": [ + "/properties/AppImageConfigName" + ], + "properties": { + "AppImageConfigArn": { + "maxLength": 256, + "minLength": 1, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:app-image-config/.*", + "type": "string" + }, + "AppImageConfigName": { + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", + "type": "string" + }, + "JupyterLabAppImageConfig": { + "$ref": "#/definitions/JupyterLabAppImageConfig" + }, + "KernelGatewayImageConfig": { + "$ref": "#/definitions/KernelGatewayImageConfig" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/AppImageConfigArn" + ], + "required": [ + "AppImageConfigName" + ], + "typeName": "AWS::SageMaker::AppImageConfig", + "writeOnlyProperties": [ + "/properties/Tags" + ] +} diff --git a/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-signer-profilepermission.json b/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-signer-profilepermission.json deleted file mode 100644 index 0f8d81fad7..0000000000 --- a/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-signer-profilepermission.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ProfileName", - "/properties/Action", - "/properties/Principal", - "/properties/StatementId", - "/properties/ProfileVersion" - ], - "handlers": { - "create": { - "permissions": [ - "signer:AddProfilePermission", - "signer:ListProfilePermissions" - ] - }, - "delete": { - "permissions": [ - "signer:RemoveProfilePermission", - "signer:ListProfilePermissions" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "ProfileName": { - "$ref": "resource-schema.json#/properties/ProfileName" - }, - "StatementId": { - "$ref": "resource-schema.json#/properties/StatementId" - } - } - }, - "permissions": [ - "signer:ListProfilePermissions", - "signer:GetSigningProfile" - ] - }, - "read": { - "permissions": [ - "signer:ListProfilePermissions" - ] - } - }, - "primaryIdentifier": [ - "/properties/StatementId", - "/properties/ProfileName" - ], - "properties": { - "Action": { - "type": "string" - }, - "Principal": { - "type": "string" - }, - "ProfileName": { - "type": "string" - }, - "ProfileVersion": { - "pattern": "^[0-9a-zA-Z]{10}$", - "type": "string" - }, - "StatementId": { - "type": "string" - } - }, - "required": [ - "ProfileName", - "Action", - "Principal", - "StatementId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "typeName": "AWS::Signer::ProfilePermission" -} diff --git a/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-ssm-association.json b/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-ssm-association.json deleted file mode 100644 index a5d36d67b7..0000000000 --- a/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-ssm-association.json +++ /dev/null @@ -1,260 +0,0 @@ -{ - "additionalProperties": false, - "definitions": { - "InstanceAssociationOutputLocation": { - "additionalProperties": false, - "properties": { - "S3Location": { - "$ref": "#/definitions/S3OutputLocation" - } - }, - "type": "object" - }, - "ParameterValues": { - "items": { - "type": "string" - }, - "type": "array" - }, - "S3BucketName": { - "maxLength": 63, - "minLength": 3, - "type": "string" - }, - "S3KeyPrefix": { - "maxLength": 1024, - "type": "string" - }, - "S3OutputLocation": { - "additionalProperties": false, - "properties": { - "OutputS3BucketName": { - "$ref": "#/definitions/S3BucketName" - }, - "OutputS3KeyPrefix": { - "$ref": "#/definitions/S3KeyPrefix" - }, - "OutputS3Region": { - "$ref": "#/definitions/S3Region" - } - }, - "type": "object" - }, - "S3Region": { - "maxLength": 20, - "minLength": 3, - "type": "string" - }, - "Target": { - "additionalProperties": false, - "properties": { - "Key": { - "pattern": "^[\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]{1,128}$|resource-groups:Name", - "type": "string" - }, - "Values": { - "items": { - "type": "string" - }, - "maxItems": 50, - "minItems": 0, - "type": "array" - } - }, - "required": [ - "Key", - "Values" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "ec2:DescribeInstanceStatus", - "iam:PassRole", - "iam:CreateServiceLinkedRole", - "ssm:CreateAssociation", - "ssm:DescribeAssociation", - "ssm:GetCalendarState" - ] - }, - "delete": { - "permissions": [ - "ssm:DeleteAssociation" - ] - }, - "list": { - "permissions": [ - "ssm:ListAssociations" - ] - }, - "read": { - "permissions": [ - "ssm:DescribeAssociation", - "resource-groups:GetGroupQuery", - "resource-groups:ListGroups", - "resource-groups:ListGroupResources" - ] - }, - "update": { - "permissions": [ - "iam:PassRole", - "ssm:UpdateAssociation", - "ssm:GetCalendarState" - ] - } - }, - "primaryIdentifier": [ - "/properties/AssociationId" - ], - "properties": { - "ApplyOnlyAtCronInterval": { - "type": "boolean" - }, - "AssociationId": { - "examples": [ - "88df7b09-95e8-48c4-a3cb-08c2c20d5110", - "203dd0ec-0055-4bf0-a872-707f72ef06aa" - ], - "pattern": "[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}", - "type": "string" - }, - "AssociationName": { - "pattern": "^[a-zA-Z0-9_\\-.]{3,128}$", - "type": "string" - }, - "AutomationTargetParameterName": { - "maxLength": 50, - "minLength": 1, - "type": "string" - }, - "CalendarNames": { - "examples": [ - [ - "calendar1", - "calendar2" - ], - [ - "calendar3" - ] - ], - "items": { - "type": "string" - }, - "type": "array" - }, - "ComplianceSeverity": { - "enum": [ - "CRITICAL", - "HIGH", - "MEDIUM", - "LOW", - "UNSPECIFIED" - ], - "type": "string" - }, - "DocumentVersion": { - "pattern": "([$]LATEST|[$]DEFAULT|^[1-9][0-9]*$)", - "type": "string" - }, - "InstanceId": { - "examples": [ - "i-0e60836d21cf313c4", - "mi-0532c22e49636ee13" - ], - "pattern": "(^i-(\\w{8}|\\w{17})$)|(^mi-\\w{17}$)", - "type": "string" - }, - "MaxConcurrency": { - "examples": [ - "1%", - "10%", - "50%", - "1" - ], - "pattern": "^([1-9][0-9]{0,6}|[1-9][0-9]%|[1-9]%|100%)$", - "type": "string" - }, - "MaxErrors": { - "examples": [ - "1%", - "10%", - "50%", - "1" - ], - "pattern": "^([1-9][0-9]{0,6}|[0]|[1-9][0-9]%|[0-9]%|100%)$", - "type": "string" - }, - "Name": { - "examples": [ - "AWS-GatherSoftwareInventory", - "MyCustomSSMDocument" - ], - "pattern": "^[a-zA-Z0-9_\\-.:/]{3,200}$", - "type": "string" - }, - "OutputLocation": { - "$ref": "#/definitions/InstanceAssociationOutputLocation" - }, - "Parameters": { - "additionalProperties": false, - "patternProperties": { - ".{1,255}": { - "$ref": "#/definitions/ParameterValues" - } - }, - "type": "object" - }, - "ScheduleExpression": { - "examples": [ - "cron(0 0 */1 * * ? *)", - "cron(0 16 ? * TUE *)", - "rate(30 minutes)", - "rate(7 days)" - ], - "maxLength": 256, - "minLength": 1, - "type": "string" - }, - "ScheduleOffset": { - "maximum": 6, - "minimum": 1, - "type": "integer" - }, - "SyncCompliance": { - "enum": [ - "AUTO", - "MANUAL" - ], - "type": "string" - }, - "Targets": { - "items": { - "$ref": "#/definitions/Target" - }, - "maxItems": 5, - "minItems": 0, - "type": "array" - }, - "WaitForSuccessTimeoutSeconds": { - "maximum": 172800, - "minimum": 15, - "type": "integer" - } - }, - "readOnlyProperties": [ - "/properties/AssociationId" - ], - "required": [ - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ssm", - "tagging": { - "taggable": false - }, - "typeName": "AWS::SSM::Association", - "writeOnlyProperties": [ - "/properties/WaitForSuccessTimeoutSeconds" - ] -} 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 455f273305..74b9962416 100644 --- a/src/cfnlint/data/schemas/providers/us_west_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/us_west_1/__init__.py @@ -316,6 +316,7 @@ "AWS::IAM::ServerCertificate", "AWS::CodeStarConnections::Connection", "AWS::IoT::SecurityProfile", + "AWS::GlobalAccelerator::CrossAccountAttachment", "AWS::Events::EventBus", "AWS::SQS::QueueInlinePolicy", "AWS::Organizations::Organization", @@ -369,6 +370,7 @@ "AWS::Cognito::UserPoolUICustomizationAttachment", "AWS::SageMaker::NotebookInstanceLifecycleConfig", "AWS::ImageBuilder::ContainerRecipe", + "AWS::CodeConnections::Connection", "AWS::EFS::AccessPoint", "AWS::Redshift::ClusterSecurityGroupIngress", "AWS::ServiceCatalogAppRegistry::AttributeGroupAssociation", @@ -396,6 +398,7 @@ "AWS::EC2::ClientVpnRoute", "AWS::ImageBuilder::Workflow", "AWS::ECS::TaskSet", + "AWS::SecurityLake::AwsLogSource", "AWS::AppSync::ApiKey", "AWS::CloudFormation::TypeActivation", "AWS::ACMPCA::CertificateAuthorityActivation", @@ -525,6 +528,7 @@ "AWS::CodeBuild::SourceCredential", "AWS::EMR::InstanceFleetConfig", "AWS::EMR::Cluster", + "AWS::SecurityLake::DataLake", "AWS::CodePipeline::Webhook", "AWS::ApiGatewayV2::DomainName", "AWS::RDS::DBCluster", @@ -609,6 +613,7 @@ "AWS::IoT::ScheduledAudit", "AWS::DevOpsGuru::LogAnomalyDetectionIntegration", "AWS::NetworkManager::Link", + "AWS::SecurityLake::Subscriber", "AWS::SageMaker::NotebookInstance", "AWS::SSO::InstanceAccessControlAttributeConfiguration", "AWS::WAFRegional::ByteMatchSet", @@ -907,7 +912,6 @@ "aws-amazonmq-configurationassociation.json", "aws-wafregional-ipset.json", "aws-redshiftserverless-namespace.json", - "aws-ec2-securitygroupegress.json", "aws-ec2-localgatewayroutetablevpcassociation.json", "aws-config-organizationconfigrule.json", "aws-glue-dataqualityruleset.json", @@ -931,7 +935,6 @@ "aws-apigateway-model.json", "aws-apigatewayv2-integrationresponse.json", "aws-ec2-networkacl.json", - "aws-lambda-eventsourcemapping.json", "aws-budgets-budgetsaction.json", "aws-logs-resourcepolicy.json", "aws-servicecatalog-launchnotificationconstraint.json", @@ -1011,6 +1014,7 @@ "aws-datasync-locationhdfs.json", "aws-events-archive.json", "aws-msk-cluster.json", + "aws-securityhub-delegatedadmin.json", "aws-controltower-enabledbaseline.json", "aws-ec2-vpcendpointconnectionnotification.json", "aws-codepipeline-pipeline.json", @@ -1187,6 +1191,7 @@ "aws-iam-servercertificate.json", "aws-codestarconnections-connection.json", "aws-iot-securityprofile.json", + "aws-globalaccelerator-crossaccountattachment.json", "aws-events-eventbus.json", "aws-sqs-queueinlinepolicy.json", "aws-organizations-organization.json", @@ -1224,6 +1229,7 @@ "aws-efs-filesystem.json", "aws-config-organizationconformancepack.json", "aws-logs-querydefinition.json", + "aws-securityhub-productsubscription.json", "aws-iam-instanceprofile.json", "aws-iot-billinggroup.json", "aws-datasync-locationnfs.json", @@ -1238,6 +1244,7 @@ "aws-servicecatalog-serviceactionassociation.json", "aws-sagemaker-notebookinstancelifecycleconfig.json", "aws-imagebuilder-containerrecipe.json", + "aws-codeconnections-connection.json", "aws-efs-accesspoint.json", "aws-redshift-clustersecuritygroupingress.json", "aws-servicecatalogappregistry-attributegroupassociation.json", @@ -1264,6 +1271,7 @@ "aws-ec2-clientvpnroute.json", "aws-imagebuilder-workflow.json", "aws-ecs-taskset.json", + "aws-securitylake-awslogsource.json", "aws-appsync-apikey.json", "aws-cloudformation-typeactivation.json", "aws-acmpca-certificateauthorityactivation.json", @@ -1388,6 +1396,7 @@ "aws-codebuild-sourcecredential.json", "aws-emr-instancefleetconfig.json", "aws-emr-cluster.json", + "aws-securitylake-datalake.json", "aws-codepipeline-webhook.json", "aws-apigatewayv2-domainname.json", "aws-rds-dbcluster.json", @@ -1416,8 +1425,6 @@ "aws-datasync-locationefs.json", "aws-ec2-localgatewayroutetable.json", "aws-apigateway-resource.json", - "aws-sagemaker-appimageconfig.json", - "aws-verifiedpermissions-identitysource.json", "aws-macie-session.json", "aws-elasticloadbalancingv2-targetgroup.json", "aws-applicationautoscaling-scalingpolicy.json", @@ -1470,6 +1477,7 @@ "aws-iot-scheduledaudit.json", "aws-devopsguru-loganomalydetectionintegration.json", "aws-networkmanager-link.json", + "aws-securitylake-subscriber.json", "aws-sagemaker-notebookinstance.json", "aws-sso-instanceaccesscontrolattributeconfiguration.json", "aws-wafregional-bytematchset.json", @@ -1496,6 +1504,7 @@ "aws-appsync-graphqlapi.json", "aws-gamelift-matchmakingruleset.json", "aws-ec2-egressonlyinternetgateway.json", + "aws-securityhub-insight.json", "aws-config-conformancepack.json", "aws-ec2-vpccidrblock.json", "aws-gamelift-script.json", @@ -1571,6 +1580,7 @@ "aws-iot-accountauditconfiguration.json", "aws-sagemaker-userprofile.json", "aws-ec2-prefixlist.json", + "aws-ec2-instance.json", "aws-networkmanager-device.json", "aws-ec2-subnetcidrblock.json", "aws-mediapackage-asset.json", diff --git a/src/cfnlint/data/schemas/providers/us_west_1/aws-dynamodb-globaltable.json b/src/cfnlint/data/schemas/providers/us_west_1/aws-dynamodb-globaltable.json index 4e5ba995cb..ae37e9142b 100644 --- a/src/cfnlint/data/schemas/providers/us_west_1/aws-dynamodb-globaltable.json +++ b/src/cfnlint/data/schemas/providers/us_west_1/aws-dynamodb-globaltable.json @@ -8,6 +8,27 @@ ] ], "additionalProperties": false, + "allOf": [ + { + "if": { + "required": [ + "LocalSecondaryIndexes" + ], + "type": "object" + }, + "then": { + "properties": { + "AttributeDefinitions": { + "minItems": 2 + }, + "KeySchema": { + "minItems": 2 + } + }, + "type": "object" + } + } + ], "createOnlyProperties": [ "/properties/LocalSecondaryIndexes", "/properties/TableName", @@ -79,13 +100,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "minItems": 1, - "type": "array", - "uniqueItems": true + "minItems": 1 }, "Projection": { "$ref": "#/definitions/Projection" @@ -102,22 +119,60 @@ "type": "object" }, "KeySchema": { - "additionalProperties": false, - "properties": { - "AttributeName": { - "maxLength": 255, - "minLength": 1, - "type": "string" + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "KeyType": { + "enum": [ + "HASH", + "RANGE" + ], + "type": "string" + } }, - "KeyType": { - "type": "string" - } + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" }, - "required": [ - "KeyType", - "AttributeName" + "prefixItems": [ + { + "additionalProperties": false, + "properties": { + "KeyType": { + "const": "HASH", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + }, + { + "properties": { + "KeyType": { + "const": "RANGE", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" + } ], - "type": "object" + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "KinesisStreamSpecification": { "additionalProperties": false, @@ -147,12 +202,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "type": "array", - "uniqueItems": true + "minItems": 2 }, "Projection": { "$ref": "#/definitions/Projection" @@ -511,7 +563,10 @@ }, "minItems": 1, "type": "array", - "uniqueItems": true + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "BillingMode": { "type": "string" @@ -525,13 +580,9 @@ "uniqueItems": true }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, + "$ref": "#/definitions/KeySchema", "maxItems": 2, - "minItems": 1, - "type": "array", - "uniqueItems": true + "minItems": 1 }, "LocalSecondaryIndexes": { "insertionOrder": false, diff --git a/src/cfnlint/data/schemas/providers/us_west_1/aws-dynamodb-table.json b/src/cfnlint/data/schemas/providers/us_west_1/aws-dynamodb-table.json index efc82f1d70..f21d084b10 100644 --- a/src/cfnlint/data/schemas/providers/us_west_1/aws-dynamodb-table.json +++ b/src/cfnlint/data/schemas/providers/us_west_1/aws-dynamodb-table.json @@ -1,5 +1,26 @@ { "additionalProperties": false, + "allOf": [ + { + "if": { + "required": [ + "LocalSecondaryIndexes" + ], + "type": "object" + }, + "then": { + "properties": { + "AttributeDefinitions": { + "minItems": 2 + }, + "KeySchema": { + "minItems": 2 + } + }, + "type": "object" + } + } + ], "cfnLint": [ "AWS::DynamoDB::Table/Properties" ], @@ -95,11 +116,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 }, "Projection": { "$ref": "#/definitions/Projection" @@ -147,24 +166,57 @@ "type": "object" }, "KeySchema": { - "additionalProperties": false, - "properties": { - "AttributeName": { - "type": "string" + "items": { + "additionalProperties": false, + "properties": { + "AttributeName": { + "type": "string" + }, + "KeyType": { + "enum": [ + "HASH", + "RANGE" + ], + "type": "string" + } }, - "KeyType": { - "enum": [ - "HASH", - "RANGE" + "required": [ + "KeyType", + "AttributeName" + ], + "type": "object" + }, + "prefixItems": [ + { + "properties": { + "KeyType": { + "const": "HASH", + "type": "string" + } + }, + "required": [ + "KeyType" ], - "type": "string" + "type": "object" + }, + { + "properties": { + "KeyType": { + "const": "RANGE", + "type": "string" + } + }, + "required": [ + "KeyType" + ], + "type": "object" } - }, - "required": [ - "KeyType", - "AttributeName" ], - "type": "object" + "type": "array", + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "KinesisStreamSpecification": { "additionalProperties": false, @@ -192,11 +244,9 @@ "type": "string" }, "KeySchema": { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 2 }, "Projection": { "$ref": "#/definitions/Projection" @@ -451,7 +501,10 @@ "$ref": "#/definitions/AttributeDefinition" }, "type": "array", - "uniqueItems": true + "uniqueItems": true, + "uniqueKeys": [ + "AttributeName" + ] }, "BillingMode": { "enum": [ @@ -479,11 +532,9 @@ "KeySchema": { "oneOf": [ { - "items": { - "$ref": "#/definitions/KeySchema" - }, - "type": "array", - "uniqueItems": true + "$ref": "#/definitions/KeySchema", + "maxItems": 2, + "minItems": 1 }, { "type": "object" diff --git a/src/cfnlint/data/schemas/providers/us_west_1/aws-ec2-instance.json b/src/cfnlint/data/schemas/providers/us_west_1/aws-ec2-instance.json deleted file mode 100644 index 7b3bfed595..0000000000 --- a/src/cfnlint/data/schemas/providers/us_west_1/aws-ec2-instance.json +++ /dev/null @@ -1,571 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ElasticGpuSpecifications", - "/properties/Ipv6Addresses", - "/properties/PlacementGroupName", - "/properties/HostResourceGroupArn", - "/properties/ImageId", - "/properties/CpuOptions", - "/properties/PrivateIpAddress", - "/properties/ElasticInferenceAccelerators", - "/properties/EnclaveOptions", - "/properties/HibernationOptions", - "/properties/KeyName", - "/properties/LicenseSpecifications", - "/properties/NetworkInterfaces", - "/properties/AvailabilityZone", - "/properties/SubnetId", - "/properties/LaunchTemplate", - "/properties/SecurityGroups", - "/properties/Ipv6AddressCount" - ], - "definitions": { - "AssociationParameter": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "BlockDeviceMapping": { - "additionalProperties": false, - "properties": { - "DeviceName": { - "type": "string" - }, - "Ebs": { - "$ref": "#/definitions/Ebs" - }, - "NoDevice": { - "$ref": "#/definitions/NoDevice" - }, - "VirtualName": { - "type": "string" - } - }, - "required": [ - "DeviceName" - ], - "requiredXor": [ - "VirtualName", - "Ebs", - "NoDevice" - ], - "type": "object" - }, - "CpuOptions": { - "additionalProperties": false, - "properties": { - "CoreCount": { - "type": "integer" - }, - "ThreadsPerCore": { - "type": "integer" - } - }, - "type": "object" - }, - "CreditSpecification": { - "additionalProperties": false, - "properties": { - "CPUCredits": { - "type": "string" - } - }, - "type": "object" - }, - "Ebs": { - "additionalProperties": false, - "properties": { - "DeleteOnTermination": { - "type": "boolean" - }, - "Encrypted": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "KmsKeyId": { - "type": "string" - }, - "SnapshotId": { - "type": "string" - }, - "VolumeSize": { - "type": "integer" - }, - "VolumeType": { - "type": "string" - } - }, - "type": "object" - }, - "ElasticGpuSpecification": { - "additionalProperties": false, - "properties": { - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "ElasticInferenceAccelerator": { - "additionalProperties": false, - "properties": { - "Count": { - "type": "integer" - }, - "Type": { - "type": "string" - } - }, - "required": [ - "Type" - ], - "type": "object" - }, - "EnclaveOptions": { - "additionalProperties": false, - "properties": { - "Enabled": { - "type": "boolean" - } - }, - "type": "object" - }, - "HibernationOptions": { - "additionalProperties": false, - "properties": { - "Configured": { - "type": "boolean" - } - }, - "type": "object" - }, - "InstanceIpv6Address": { - "additionalProperties": false, - "properties": { - "Ipv6Address": { - "type": "string" - } - }, - "required": [ - "Ipv6Address" - ], - "type": "object" - }, - "LaunchTemplateSpecification": { - "additionalProperties": false, - "properties": { - "LaunchTemplateId": { - "type": "string" - }, - "LaunchTemplateName": { - "type": "string" - }, - "Version": { - "type": "string" - } - }, - "required": [ - "Version" - ], - "type": "object" - }, - "LicenseSpecification": { - "additionalProperties": false, - "properties": { - "LicenseConfigurationArn": { - "type": "string" - } - }, - "required": [ - "LicenseConfigurationArn" - ], - "type": "object" - }, - "NetworkInterface": { - "additionalProperties": false, - "properties": { - "AssociateCarrierIpAddress": { - "type": "boolean" - }, - "AssociatePublicIpAddress": { - "type": "boolean" - }, - "DeleteOnTermination": { - "type": "boolean" - }, - "Description": { - "type": "string" - }, - "DeviceIndex": { - "type": "string" - }, - "GroupSet": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": false - }, - "NetworkInterfaceId": { - "type": "string" - }, - "PrivateIpAddress": { - "type": "string" - }, - "PrivateIpAddresses": { - "items": { - "$ref": "#/definitions/PrivateIpAddressSpecification" - }, - "type": "array", - "uniqueItems": false - }, - "SecondaryPrivateIpAddressCount": { - "type": "integer" - }, - "SubnetId": { - "type": "string" - } - }, - "required": [ - "DeviceIndex" - ], - "type": "object" - }, - "NoDevice": { - "additionalProperties": false, - "type": "object" - }, - "PrivateDnsNameOptions": { - "additionalProperties": false, - "properties": { - "EnableResourceNameDnsAAAARecord": { - "type": "boolean" - }, - "EnableResourceNameDnsARecord": { - "type": "boolean" - }, - "HostnameType": { - "type": "string" - } - }, - "type": "object" - }, - "PrivateIpAddressSpecification": { - "additionalProperties": false, - "properties": { - "Primary": { - "type": "boolean" - }, - "PrivateIpAddress": { - "type": "string" - } - }, - "required": [ - "PrivateIpAddress", - "Primary" - ], - "type": "object" - }, - "SsmAssociation": { - "additionalProperties": false, - "properties": { - "AssociationParameters": { - "items": { - "$ref": "#/definitions/AssociationParameter" - }, - "type": "array", - "uniqueItems": false - }, - "DocumentName": { - "type": "string" - } - }, - "required": [ - "DocumentName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "Volume": { - "additionalProperties": false, - "properties": { - "Device": { - "type": "string" - }, - "VolumeId": { - "type": "string" - } - }, - "required": [ - "VolumeId", - "Device" - ], - "type": "object" - } - }, - "dependentExcluded": { - "NetworkInterfaces": [ - "SubnetId" - ], - "SubnetId": [ - "NetworkInterfaces" - ] - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AdditionalInfo": { - "type": "string" - }, - "Affinity": { - "enum": [ - "default", - "host" - ], - "type": "string" - }, - "AvailabilityZone": { - "cfnLint": [ - "AWS::EC2::Instance/Properties/AvailabilityZone" - ], - "type": "string" - }, - "BlockDeviceMappings": { - "items": { - "$ref": "#/definitions/BlockDeviceMapping" - }, - "type": "array", - "uniqueItems": false - }, - "CpuOptions": { - "$ref": "#/definitions/CpuOptions" - }, - "CreditSpecification": { - "$ref": "#/definitions/CreditSpecification" - }, - "DisableApiTermination": { - "type": "boolean" - }, - "EbsOptimized": { - "type": "boolean" - }, - "ElasticGpuSpecifications": { - "items": { - "$ref": "#/definitions/ElasticGpuSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "ElasticInferenceAccelerators": { - "items": { - "$ref": "#/definitions/ElasticInferenceAccelerator" - }, - "type": "array", - "uniqueItems": true - }, - "EnclaveOptions": { - "$ref": "#/definitions/EnclaveOptions" - }, - "HibernationOptions": { - "$ref": "#/definitions/HibernationOptions" - }, - "HostId": { - "type": "string" - }, - "HostResourceGroupArn": { - "type": "string" - }, - "IamInstanceProfile": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "ImageId": { - "type": "string" - }, - "InstanceInitiatedShutdownBehavior": { - "type": "string" - }, - "InstanceType": { - "cfnLint": [ - "AWS::EC2::Instance/Properties/InstanceType" - ], - "type": "string" - }, - "Ipv6AddressCount": { - "type": "integer" - }, - "Ipv6Addresses": { - "items": { - "$ref": "#/definitions/InstanceIpv6Address" - }, - "type": "array", - "uniqueItems": false - }, - "KernelId": { - "type": "string" - }, - "KeyName": { - "type": "string" - }, - "LaunchTemplate": { - "$ref": "#/definitions/LaunchTemplateSpecification" - }, - "LicenseSpecifications": { - "items": { - "$ref": "#/definitions/LicenseSpecification" - }, - "type": "array", - "uniqueItems": true - }, - "Monitoring": { - "type": "boolean" - }, - "NetworkInterfaces": { - "items": { - "$ref": "#/definitions/NetworkInterface" - }, - "type": "array", - "uniqueItems": false - }, - "PlacementGroupName": { - "type": "string" - }, - "PrivateDnsName": { - "type": "string" - }, - "PrivateDnsNameOptions": { - "$ref": "#/definitions/PrivateDnsNameOptions" - }, - "PrivateIp": { - "type": "string" - }, - "PrivateIpAddress": { - "type": "string" - }, - "PropagateTagsToVolumeOnCreation": { - "type": "boolean" - }, - "PublicDnsName": { - "type": "string" - }, - "PublicIp": { - "type": "string" - }, - "RamdiskId": { - "type": "string" - }, - "SecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SecurityGroups": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SourceDestCheck": { - "type": "boolean" - }, - "SsmAssociations": { - "items": { - "$ref": "#/definitions/SsmAssociation" - }, - "type": "array", - "uniqueItems": false - }, - "SubnetId": { - "type": "string" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "Tenancy": { - "enum": [ - "default", - "dedicated", - "host" - ], - "type": "string" - }, - "UserData": { - "type": "string" - }, - "Volumes": { - "items": { - "$ref": "#/definitions/Volume" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/PublicIp", - "/properties/Id", - "/properties/PublicDnsName", - "/properties/PrivateDnsName", - "/properties/PrivateIp" - ], - "requiredXor": [ - "ImageId", - "LaunchTemplate" - ], - "typeName": "AWS::EC2::Instance" -} diff --git a/src/cfnlint/data/schemas/providers/us_west_1/aws-ec2-securitygroupegress.json b/src/cfnlint/data/schemas/providers/us_west_1/aws-ec2-securitygroupegress.json new file mode 100644 index 0000000000..f94631dad2 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_west_1/aws-ec2-securitygroupegress.json @@ -0,0 +1,98 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::EC2::SecurityGroupEgress/Properties" + ], + "createOnlyProperties": [ + "/properties/IpProtocol", + "/properties/DestinationSecurityGroupId", + "/properties/ToPort", + "/properties/CidrIp", + "/properties/FromPort", + "/properties/GroupId", + "/properties/CidrIpv6", + "/properties/DestinationPrefixListId" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:AuthorizeSecurityGroupEgress", + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "delete": { + "permissions": [ + "ec2:RevokeSecurityGroupEgress", + "ec2:DescribeSecurityGroupRules" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "update": { + "permissions": [ + "ec2:UpdateSecurityGroupRuleDescriptionsEgress" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CidrIp": { + "type": "string" + }, + "CidrIpv6": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "DestinationPrefixListId": { + "type": "string" + }, + "DestinationSecurityGroupId": { + "type": "string" + }, + "FromPort": { + "minimum": -1, + "type": "integer" + }, + "GroupId": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "IpProtocol": { + "type": "string" + }, + "ToPort": { + "minimum": -1, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IpProtocol", + "GroupId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SecurityGroupEgress" +} diff --git a/src/cfnlint/data/schemas/providers/us_west_1/aws-gammadilithium-jobdefinition.json b/src/cfnlint/data/schemas/providers/us_west_1/aws-gammadilithium-jobdefinition.json index ac35ac594b..349bfa79f7 100644 --- a/src/cfnlint/data/schemas/providers/us_west_1/aws-gammadilithium-jobdefinition.json +++ b/src/cfnlint/data/schemas/providers/us_west_1/aws-gammadilithium-jobdefinition.json @@ -308,6 +308,9 @@ "EksContainerSecurityContext": { "additionalProperties": false, "properties": { + "AllowPrivilegeEscalation": { + "type": "boolean" + }, "Privileged": { "type": "boolean" }, @@ -461,6 +464,18 @@ }, "type": "object" }, + "ImagePullSecret": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, "LinuxParameters": { "additionalProperties": false, "properties": { @@ -613,6 +628,13 @@ "HostNetwork": { "type": "boolean" }, + "ImagePullSecrets": { + "items": { + "$ref": "#/definitions/ImagePullSecret" + }, + "type": "array", + "uniqueItems": false + }, "InitContainers": { "items": { "$ref": "#/definitions/EksContainer" diff --git a/src/cfnlint/data/schemas/providers/us_west_1/aws-lambda-eventsourcemapping.json b/src/cfnlint/data/schemas/providers/us_west_1/aws-lambda-eventsourcemapping.json new file mode 100644 index 0000000000..cb7599c139 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_west_1/aws-lambda-eventsourcemapping.json @@ -0,0 +1,353 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::Lambda::EventSourceMapping/Properties" + ], + "createOnlyProperties": [ + "/properties/EventSourceArn", + "/properties/StartingPosition", + "/properties/StartingPositionTimestamp", + "/properties/SelfManagedEventSource", + "/properties/AmazonManagedKafkaEventSourceConfig", + "/properties/SelfManagedKafkaEventSourceConfig" + ], + "definitions": { + "AmazonManagedKafkaEventSourceConfig": { + "additionalProperties": false, + "properties": { + "ConsumerGroupId": { + "$ref": "#/definitions/ConsumerGroupId" + } + }, + "type": "object" + }, + "ConsumerGroupId": { + "maxLength": 200, + "minLength": 1, + "pattern": "[a-zA-Z0-9-\\/*:_+=.@-]*", + "type": "string" + }, + "DestinationConfig": { + "additionalProperties": false, + "properties": { + "OnFailure": { + "$ref": "#/definitions/OnFailure" + } + }, + "type": "object" + }, + "DocumentDBEventSourceConfig": { + "additionalProperties": false, + "properties": { + "CollectionName": { + "maxLength": 57, + "minLength": 1, + "type": "string" + }, + "DatabaseName": { + "maxLength": 63, + "minLength": 1, + "type": "string" + }, + "FullDocument": { + "enum": [ + "UpdateLookup", + "Default" + ], + "type": "string" + } + }, + "type": "object" + }, + "Endpoints": { + "additionalProperties": false, + "properties": { + "KafkaBootstrapServers": { + "items": { + "maxLength": 300, + "minLength": 1, + "pattern": "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9]):[0-9]{1,5}", + "type": "string" + }, + "maxItems": 10, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "Filter": { + "additionalProperties": false, + "properties": { + "Pattern": { + "maxLength": 4096, + "minLength": 0, + "pattern": ".*", + "type": "string" + } + }, + "type": "object" + }, + "FilterCriteria": { + "additionalProperties": false, + "properties": { + "Filters": { + "items": { + "$ref": "#/definitions/Filter" + }, + "maxItems": 20, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "MaximumConcurrency": { + "maximum": 1000, + "minimum": 2, + "type": "integer" + }, + "OnFailure": { + "additionalProperties": false, + "properties": { + "Destination": { + "maxLength": 1024, + "minLength": 12, + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "type": "string" + } + }, + "type": "object" + }, + "ScalingConfig": { + "additionalProperties": false, + "properties": { + "MaximumConcurrency": { + "$ref": "#/definitions/MaximumConcurrency" + } + }, + "type": "object" + }, + "SelfManagedEventSource": { + "additionalProperties": false, + "properties": { + "Endpoints": { + "$ref": "#/definitions/Endpoints" + } + }, + "type": "object" + }, + "SelfManagedKafkaEventSourceConfig": { + "additionalProperties": false, + "properties": { + "ConsumerGroupId": { + "$ref": "#/definitions/ConsumerGroupId" + } + }, + "type": "object" + }, + "SourceAccessConfiguration": { + "additionalProperties": false, + "properties": { + "Type": { + "enum": [ + "BASIC_AUTH", + "VPC_SUBNET", + "VPC_SECURITY_GROUP", + "SASL_SCRAM_512_AUTH", + "SASL_SCRAM_256_AUTH", + "VIRTUAL_HOST", + "CLIENT_CERTIFICATE_TLS_AUTH", + "SERVER_ROOT_CA_CERTIFICATE" + ], + "type": "string" + }, + "URI": { + "maxLength": 200, + "minLength": 1, + "pattern": "[a-zA-Z0-9-\\/*:_+=.@-]*", + "type": "string" + } + }, + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "lambda:CreateEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + }, + "delete": { + "permissions": [ + "lambda:DeleteEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + }, + "list": { + "permissions": [ + "lambda:ListEventSourceMappings" + ] + }, + "read": { + "permissions": [ + "lambda:GetEventSourceMapping" + ] + }, + "update": { + "permissions": [ + "lambda:UpdateEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AmazonManagedKafkaEventSourceConfig": { + "$ref": "#/definitions/AmazonManagedKafkaEventSourceConfig" + }, + "BatchSize": { + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "BisectBatchOnFunctionError": { + "type": "boolean" + }, + "DestinationConfig": { + "$ref": "#/definitions/DestinationConfig" + }, + "DocumentDBEventSourceConfig": { + "$ref": "#/definitions/DocumentDBEventSourceConfig" + }, + "Enabled": { + "type": "boolean" + }, + "EventSourceArn": { + "maxLength": 1024, + "minLength": 12, + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "type": "string" + }, + "FilterCriteria": { + "$ref": "#/definitions/FilterCriteria" + }, + "FunctionName": { + "maxLength": 140, + "minLength": 1, + "pattern": "(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?", + "type": "string" + }, + "FunctionResponseTypes": { + "items": { + "enum": [ + "ReportBatchItemFailures" + ], + "type": "string" + }, + "maxLength": 1, + "minLength": 0, + "type": "array", + "uniqueItems": true + }, + "Id": { + "maxLength": 36, + "minLength": 36, + "pattern": "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + "type": "string" + }, + "MaximumBatchingWindowInSeconds": { + "maximum": 300, + "minimum": 0, + "type": "integer" + }, + "MaximumRecordAgeInSeconds": { + "maximum": 604800, + "minimum": -1, + "type": "integer" + }, + "MaximumRetryAttempts": { + "maximum": 10000, + "minimum": -1, + "type": "integer" + }, + "ParallelizationFactor": { + "maximum": 10, + "minimum": 1, + "type": "integer" + }, + "Queues": { + "items": { + "maxLength": 1000, + "minLength": 1, + "pattern": "[\\s\\S]*", + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "ScalingConfig": { + "$ref": "#/definitions/ScalingConfig" + }, + "SelfManagedEventSource": { + "$ref": "#/definitions/SelfManagedEventSource" + }, + "SelfManagedKafkaEventSourceConfig": { + "$ref": "#/definitions/SelfManagedKafkaEventSourceConfig" + }, + "SourceAccessConfigurations": { + "items": { + "$ref": "#/definitions/SourceAccessConfiguration" + }, + "maxItems": 22, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "StartingPosition": { + "enum": [ + "TRIM_HORIZON", + "LATEST", + "AT_TIMESTAMP" + ], + "maxLength": 12, + "minLength": 6, + "pattern": "(LATEST|TRIM_HORIZON|AT_TIMESTAMP)+", + "type": "string" + }, + "StartingPositionTimestamp": { + "type": "number" + }, + "Topics": { + "items": { + "maxLength": 249, + "minLength": 1, + "pattern": "^[^.]([a-zA-Z0-9\\-_.]+)", + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "TumblingWindowInSeconds": { + "maximum": 900, + "minimum": 0, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "FunctionName" + ], + "typeName": "AWS::Lambda::EventSourceMapping" +} diff --git a/src/cfnlint/data/schemas/providers/us_west_1/aws-sagemaker-appimageconfig.json b/src/cfnlint/data/schemas/providers/us_west_1/aws-sagemaker-appimageconfig.json new file mode 100644 index 0000000000..01116f524b --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_west_1/aws-sagemaker-appimageconfig.json @@ -0,0 +1,238 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/AppImageConfigName", + "/properties/Tags" + ], + "definitions": { + "ContainerConfig": { + "additionalProperties": false, + "properties": { + "ContainerArguments": { + "items": { + "$ref": "#/definitions/CustomImageContainerArguments" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "ContainerEntrypoint": { + "items": { + "$ref": "#/definitions/CustomImageContainerEntrypoint" + }, + "maxItems": 1, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "ContainerEnvironmentVariables": { + "items": { + "$ref": "#/definitions/CustomImageContainerEnvironmentVariable" + }, + "maxItems": 25, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "CustomImageContainerArguments": { + "maxLength": 64, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "CustomImageContainerEntrypoint": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "CustomImageContainerEnvironmentVariable": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!\\s*$).+", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "FileSystemConfig": { + "additionalProperties": false, + "properties": { + "DefaultGid": { + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "DefaultUid": { + "maximum": 65535, + "minimum": 0, + "type": "integer" + }, + "MountPath": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^/.*", + "type": "string" + } + }, + "type": "object" + }, + "JupyterLabAppImageConfig": { + "additionalProperties": false, + "properties": { + "ContainerConfig": { + "$ref": "#/definitions/ContainerConfig" + } + }, + "type": "object" + }, + "KernelGatewayImageConfig": { + "additionalProperties": false, + "properties": { + "FileSystemConfig": { + "$ref": "#/definitions/FileSystemConfig" + }, + "KernelSpecs": { + "items": { + "$ref": "#/definitions/KernelSpec" + }, + "maxItems": 1, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "KernelSpecs" + ], + "type": "object" + }, + "KernelSpec": { + "additionalProperties": false, + "properties": { + "DisplayName": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "Name": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "sagemaker:CreateAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + }, + "delete": { + "permissions": [ + "sagemaker:DeleteAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + }, + "list": { + "permissions": [ + "sagemaker:ListAppImageConfigs" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeAppImageConfig" + ] + }, + "update": { + "permissions": [ + "sagemaker:UpdateAppImageConfig", + "sagemaker:DescribeAppImageConfig" + ] + } + }, + "primaryIdentifier": [ + "/properties/AppImageConfigName" + ], + "properties": { + "AppImageConfigArn": { + "maxLength": 256, + "minLength": 1, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:app-image-config/.*", + "type": "string" + }, + "AppImageConfigName": { + "maxLength": 63, + "minLength": 1, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", + "type": "string" + }, + "JupyterLabAppImageConfig": { + "$ref": "#/definitions/JupyterLabAppImageConfig" + }, + "KernelGatewayImageConfig": { + "$ref": "#/definitions/KernelGatewayImageConfig" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/AppImageConfigArn" + ], + "required": [ + "AppImageConfigName" + ], + "typeName": "AWS::SageMaker::AppImageConfig", + "writeOnlyProperties": [ + "/properties/Tags" + ] +} diff --git a/src/cfnlint/data/schemas/providers/us_west_1/aws-securityhub-delegatedadmin.json b/src/cfnlint/data/schemas/providers/us_west_1/aws-securityhub-delegatedadmin.json deleted file mode 100644 index 12b73dd551..0000000000 --- a/src/cfnlint/data/schemas/providers/us_west_1/aws-securityhub-delegatedadmin.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AdminAccountId" - ], - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AdminAccountId": { - "type": "string" - }, - "DelegatedAdminIdentifier": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "Status": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/DelegatedAdminIdentifier", - "/properties/Status" - ], - "required": [ - "AdminAccountId" - ], - "typeName": "AWS::SecurityHub::DelegatedAdmin" -} diff --git a/src/cfnlint/data/schemas/providers/us_west_1/aws-securityhub-insight.json b/src/cfnlint/data/schemas/providers/us_west_1/aws-securityhub-insight.json deleted file mode 100644 index 3fc396909f..0000000000 --- a/src/cfnlint/data/schemas/providers/us_west_1/aws-securityhub-insight.json +++ /dev/null @@ -1,844 +0,0 @@ -{ - "additionalProperties": false, - "definitions": { - "AwsSecurityFindingFilters": { - "additionalProperties": false, - "properties": { - "AwsAccountId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "AwsAccountName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "CompanyName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ComplianceAssociatedStandardsId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ComplianceSecurityControlId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ComplianceSecurityControlParametersName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ComplianceSecurityControlParametersValue": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ComplianceStatus": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "Confidence": { - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "type": "array", - "uniqueItems": true - }, - "CreatedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "Criticality": { - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "type": "array", - "uniqueItems": true - }, - "Description": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "FindingProviderFieldsConfidence": { - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "type": "array", - "uniqueItems": true - }, - "FindingProviderFieldsCriticality": { - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "type": "array", - "uniqueItems": true - }, - "FindingProviderFieldsRelatedFindingsId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "FindingProviderFieldsRelatedFindingsProductArn": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "FindingProviderFieldsSeverityLabel": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "FindingProviderFieldsSeverityOriginal": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "FindingProviderFieldsTypes": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "FirstObservedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "GeneratorId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "Id": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "LastObservedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "MalwareName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "MalwarePath": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "MalwareState": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "MalwareType": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkDestinationDomain": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkDestinationIpV4": { - "items": { - "$ref": "#/definitions/IpFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkDestinationIpV6": { - "items": { - "$ref": "#/definitions/IpFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkDestinationPort": { - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkDirection": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkProtocol": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkSourceDomain": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkSourceIpV4": { - "items": { - "$ref": "#/definitions/IpFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkSourceIpV6": { - "items": { - "$ref": "#/definitions/IpFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkSourceMac": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NetworkSourcePort": { - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NoteText": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NoteUpdatedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "NoteUpdatedBy": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ProcessLaunchedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ProcessName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ProcessParentPid": { - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ProcessPath": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ProcessPid": { - "items": { - "$ref": "#/definitions/NumberFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ProcessTerminatedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ProductArn": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ProductFields": { - "items": { - "$ref": "#/definitions/MapFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ProductName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "RecommendationText": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "RecordState": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "Region": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "RelatedFindingsId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "RelatedFindingsProductArn": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceApplicationArn": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceApplicationName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceIamInstanceProfileArn": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceImageId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceIpV4Addresses": { - "items": { - "$ref": "#/definitions/IpFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceIpV6Addresses": { - "items": { - "$ref": "#/definitions/IpFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceKeyName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceLaunchedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceSubnetId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceType": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsEc2InstanceVpcId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsIamAccessKeyCreatedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsIamAccessKeyPrincipalName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsIamAccessKeyStatus": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsIamUserUserName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsS3BucketOwnerId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceAwsS3BucketOwnerName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceContainerImageId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceContainerImageName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceContainerLaunchedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceContainerName": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceDetailsOther": { - "items": { - "$ref": "#/definitions/MapFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceId": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourcePartition": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceRegion": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceTags": { - "items": { - "$ref": "#/definitions/MapFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ResourceType": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "Sample": { - "items": { - "$ref": "#/definitions/BooleanFilter" - }, - "type": "array", - "uniqueItems": true - }, - "SeverityLabel": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "SourceUrl": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ThreatIntelIndicatorCategory": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ThreatIntelIndicatorLastObservedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ThreatIntelIndicatorSource": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ThreatIntelIndicatorSourceUrl": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ThreatIntelIndicatorType": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "ThreatIntelIndicatorValue": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "Title": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "Type": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "UpdatedAt": { - "items": { - "$ref": "#/definitions/DateFilter" - }, - "type": "array", - "uniqueItems": true - }, - "UserDefinedFields": { - "items": { - "$ref": "#/definitions/MapFilter" - }, - "type": "array", - "uniqueItems": true - }, - "VerificationState": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "VulnerabilitiesExploitAvailable": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "VulnerabilitiesFixAvailable": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "WorkflowState": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - }, - "WorkflowStatus": { - "items": { - "$ref": "#/definitions/StringFilter" - }, - "type": "array", - "uniqueItems": true - } - }, - "type": "object" - }, - "BooleanFilter": { - "additionalProperties": false, - "properties": { - "Value": { - "type": "boolean" - } - }, - "required": [ - "Value" - ], - "type": "object" - }, - "DateFilter": { - "additionalProperties": false, - "properties": { - "DateRange": { - "$ref": "#/definitions/DateRange" - }, - "End": { - "type": "string" - }, - "Start": { - "type": "string" - } - }, - "type": "object" - }, - "DateRange": { - "additionalProperties": false, - "properties": { - "Unit": { - "type": "string" - }, - "Value": { - "type": "number" - } - }, - "required": [ - "Value", - "Unit" - ], - "type": "object" - }, - "IpFilter": { - "additionalProperties": false, - "properties": { - "Cidr": { - "type": "string" - } - }, - "type": "object" - }, - "MapFilter": { - "additionalProperties": false, - "properties": { - "Comparison": { - "type": "string" - }, - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Comparison", - "Value", - "Key" - ], - "type": "object" - }, - "NumberFilter": { - "additionalProperties": false, - "properties": { - "Eq": { - "type": "number" - }, - "Gte": { - "type": "number" - }, - "Lte": { - "type": "number" - } - }, - "type": "object" - }, - "StringFilter": { - "additionalProperties": false, - "properties": { - "Comparison": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Comparison", - "Value" - ], - "type": "object" - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Filters": { - "$ref": "#/definitions/AwsSecurityFindingFilters" - }, - "GroupByAttribute": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "InsightArn": { - "type": "string" - }, - "Name": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/InsightArn" - ], - "required": [ - "Filters", - "GroupByAttribute", - "Name" - ], - "typeName": "AWS::SecurityHub::Insight" -} diff --git a/src/cfnlint/data/schemas/providers/us_west_1/aws-securityhub-productsubscription.json b/src/cfnlint/data/schemas/providers/us_west_1/aws-securityhub-productsubscription.json deleted file mode 100644 index 4001045463..0000000000 --- a/src/cfnlint/data/schemas/providers/us_west_1/aws-securityhub-productsubscription.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ProductArn" - ], - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Id": { - "type": "string" - }, - "ProductArn": { - "type": "string" - }, - "ProductSubscriptionArn": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/ProductSubscriptionArn" - ], - "required": [ - "ProductArn" - ], - "typeName": "AWS::SecurityHub::ProductSubscription" -} diff --git a/src/cfnlint/data/schemas/providers/us_west_1/aws-verifiedpermissions-identitysource.json b/src/cfnlint/data/schemas/providers/us_west_1/aws-verifiedpermissions-identitysource.json new file mode 100644 index 0000000000..46a0ad88f1 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_west_1/aws-verifiedpermissions-identitysource.json @@ -0,0 +1,221 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PolicyStoreId" + ], + "definitions": { + "CognitoGroupConfiguration": { + "additionalProperties": false, + "properties": { + "GroupEntityType": { + "maxLength": 200, + "minLength": 1, + "pattern": "^([_a-zA-Z][_a-zA-Z0-9]*::)*[_a-zA-Z][_a-zA-Z0-9]*$", + "type": "string" + } + }, + "required": [ + "GroupEntityType" + ], + "type": "object" + }, + "CognitoUserPoolConfiguration": { + "additionalProperties": false, + "properties": { + "ClientIds": { + "insertionOrder": false, + "items": { + "maxLength": 255, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "maxItems": 1000, + "minItems": 0, + "type": "array" + }, + "GroupConfiguration": { + "$ref": "#/definitions/CognitoGroupConfiguration" + }, + "UserPoolArn": { + "maxLength": 255, + "minLength": 1, + "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", + "type": "string" + } + }, + "required": [ + "UserPoolArn" + ], + "type": "object" + }, + "IdentitySourceConfiguration": { + "additionalProperties": false, + "properties": { + "CognitoUserPoolConfiguration": { + "$ref": "#/definitions/CognitoUserPoolConfiguration" + } + }, + "required": [ + "CognitoUserPoolConfiguration" + ], + "title": "CognitoUserPoolConfiguration", + "type": "object" + }, + "IdentitySourceDetails": { + "additionalProperties": false, + "properties": { + "ClientIds": { + "insertionOrder": false, + "items": { + "maxLength": 255, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "maxItems": 1000, + "minItems": 0, + "type": "array" + }, + "DiscoveryUrl": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^https://.*$", + "type": "string" + }, + "OpenIdIssuer": { + "$ref": "#/definitions/OpenIdIssuer" + }, + "UserPoolArn": { + "maxLength": 255, + "minLength": 1, + "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", + "type": "string" + } + }, + "type": "object" + }, + "OpenIdIssuer": { + "enum": [ + "COGNITO" + ], + "type": "string" + } + }, + "deprecatedProperties": [ + "/properties/Details" + ], + "handlers": { + "create": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "delete": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "PolicyStoreId": { + "$ref": "resource-schema.json#/properties/PolicyStoreId" + } + }, + "required": [ + "PolicyStoreId" + ] + }, + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "read": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "update": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + } + }, + "primaryIdentifier": [ + "/properties/IdentitySourceId", + "/properties/PolicyStoreId" + ], + "properties": { + "Configuration": { + "$ref": "#/definitions/IdentitySourceConfiguration" + }, + "Details": { + "$ref": "#/definitions/IdentitySourceDetails" + }, + "IdentitySourceId": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]*$", + "type": "string" + }, + "PolicyStoreId": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]*$", + "type": "string" + }, + "PrincipalEntityType": { + "maxLength": 200, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Details", + "/properties/IdentitySourceId" + ], + "required": [ + "Configuration", + "PolicyStoreId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-avp", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::VerifiedPermissions::IdentitySource" +} 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 8c1d4267ab..e96062fe08 100644 --- a/src/cfnlint/data/schemas/providers/us_west_2/__init__.py +++ b/src/cfnlint/data/schemas/providers/us_west_2/__init__.py @@ -10,6 +10,7 @@ "AWS::ApiGatewayV2::ApiMapping", "AWS::CE::AnomalySubscription", "AWS::Shield::DRTAccess", + "AWS::Deadline::Farm", "AWS::SSO::Assignment", "AWS::Glue::Partition", "AWS::RDS::Integration", @@ -43,6 +44,7 @@ "AWS::EC2::NetworkPerformanceMetricSubscription", "AWS::MediaLive::Channel", "AWS::Greengrass::DeviceDefinition", + "AWS::CleanRoomsML::TrainingDataset", "AWS::CloudFront::ContinuousDeploymentPolicy", "AWS::QuickSight::Analysis", "AWS::Kendra::Faq", @@ -136,6 +138,7 @@ "AWS::CloudTrail::EventDataStore", "AWS::AppIntegrations::Application", "AWS::KinesisFirehose::DeliveryStream", + "AWS::Deadline::QueueFleetAssociation", "AWS::EC2::NetworkInsightsAccessScope", "AWS::Cognito::UserPoolUserToGroupAttachment", "AWS::PCAConnectorAD::DirectoryRegistration", @@ -177,6 +180,7 @@ "AWS::IoTSiteWise::Portal", "AWS::Events::Archive", "AWS::MSK::Cluster", + "AWS::SecurityHub::DelegatedAdmin", "AWS::ControlTower::EnabledBaseline", "AWS::AppStream::AppBlockBuilder", "AWS::Route53RecoveryControl::Cluster", @@ -230,6 +234,7 @@ "AWS::RoboMaker::SimulationApplication", "AWS::NetworkManager::TransitGatewayRegistration", "AWS::Amplify::App", + "AWS::EntityResolution::PolicyStatement", "AWS::InspectorV2::Filter", "AWS::ElastiCache::ReplicationGroup", "AWS::StepFunctions::StateMachineAlias", @@ -293,6 +298,7 @@ "AWS::Lambda::Alias", "AWS::Logs::LogAnomalyDetector", "AWS::WAF::IPSet", + "AWS::Deadline::Fleet", "AWS::IoTTwinMaker::Workspace", "AWS::VpcLattice::ServiceNetworkServiceAssociation", "AWS::EC2::TransitGatewayMulticastDomainAssociation", @@ -393,6 +399,7 @@ "AWS::IoT::PolicyPrincipalAttachment", "AWS::Timestream::ScheduledQuery", "AWS::FraudDetector::List", + "AWS::IVS::PlaybackRestrictionPolicy", "AWS::FMS::NotificationChannel", "AWS::MSK::BatchScramSecret", "AWS::Connect::HoursOfOperation", @@ -412,6 +419,7 @@ "AWS::MediaPackageV2::ChannelPolicy", "AWS::ApiGatewayV2::VpcLink", "AWS::IoT::JobTemplate", + "AWS::Deadline::Queue", "AWS::ServiceCatalog::PortfolioProductAssociation", "AWS::DataBrew::Project", "AWS::VpcLattice::TargetGroup", @@ -441,6 +449,7 @@ "AWS::Connect::PredefinedAttribute", "AWS::IAM::Policy", "AWS::DataBrew::Schedule", + "AWS::Bedrock::Agent", "AWS::AppRunner::Service", "AWS::Connect::ApprovedOrigin", "AWS::SES::ContactList", @@ -479,6 +488,7 @@ "AWS::Config::OrganizationConformancePack", "AWS::Connect::QuickConnect", "AWS::Logs::QueryDefinition", + "AWS::SecurityHub::ProductSubscription", "AWS::IAM::InstanceProfile", "AWS::IoT::BillingGroup", "AWS::AppStream::Application", @@ -498,6 +508,7 @@ "AWS::Cognito::UserPoolUICustomizationAttachment", "AWS::SageMaker::NotebookInstanceLifecycleConfig", "AWS::ImageBuilder::ContainerRecipe", + "AWS::CodeConnections::Connection", "AWS::Connect::Rule", "AWS::EFS::AccessPoint", "AWS::Omics::ReferenceStore", @@ -531,6 +542,7 @@ "AWS::ImageBuilder::Workflow", "AWS::ECS::TaskSet", "AWS::Omics::VariantStore", + "AWS::SecurityLake::AwsLogSource", "AWS::AppSync::ApiKey", "AWS::CloudFormation::TypeActivation", "AWS::GroundStation::DataflowEndpointGroup", @@ -595,6 +607,7 @@ "AWS::EC2::CustomerGateway", "AWS::IAM::GroupPolicy", "AWS::Scheduler::Schedule", + "AWS::Deadline::LicenseEndpoint", "AWS::WAF::ByteMatchSet", "AWS::AmplifyUIBuilder::Theme", "AWS::Neptune::DBClusterParameterGroup", @@ -623,6 +636,7 @@ "AWS::Glue::Trigger", "AWS::GlobalAccelerator::Listener", "AWS::VerifiedPermissions::PolicyStore", + "AWS::Deadline::QueueEnvironment", "AWS::Signer::SigningProfile", "AWS::KendraRanking::ExecutionPlan", "AWS::EC2::VPCPeeringConnection", @@ -694,6 +708,7 @@ "AWS::LookoutMetrics::Alert", "AWS::IoTWireless::TaskDefinition", "AWS::StepFunctions::Activity", + "AWS::IVS::EncoderConfiguration", "AWS::Synthetics::Group", "AWS::Forecast::Dataset", "AWS::SageMaker::Project", @@ -706,6 +721,7 @@ "AWS::CodeBuild::SourceCredential", "AWS::EMR::InstanceFleetConfig", "AWS::EMR::Cluster", + "AWS::SecurityLake::DataLake", "AWS::CodePipeline::Webhook", "AWS::ApiGatewayV2::DomainName", "AWS::CustomerProfiles::EventStream", @@ -798,10 +814,12 @@ "AWS::DataZone::Environment", "AWS::DocDB::DBSubnetGroup", "AWS::Logs::Delivery", + "AWS::Bedrock::DataSource", "AWS::ServiceCatalog::Portfolio", "AWS::WorkSpacesWeb::TrustStore", "AWS::CustomerProfiles::Domain", "AWS::IoT::Policy", + "AWS::APS::Scraper", "AWS::EC2::TransitGatewayRoute", "AWS::SSM::MaintenanceWindow", "AWS::DataZone::Domain", @@ -824,6 +842,7 @@ "AWS::DevOpsGuru::LogAnomalyDetectionIntegration", "AWS::NetworkManager::Link", "AWS::QLDB::Stream", + "AWS::SecurityLake::Subscriber", "AWS::SageMaker::NotebookInstance", "AWS::IoTSiteWise::Dashboard", "AWS::Pinpoint::APNSVoipChannel", @@ -860,6 +879,7 @@ "AWS::GameLift::MatchmakingRuleSet", "AWS::EC2::EgressOnlyInternetGateway", "AWS::Athena::CapacityReservation", + "AWS::SecurityHub::Insight", "AWS::Config::ConformancePack", "AWS::EC2::VPCCidrBlock", "AWS::APS::Workspace", @@ -946,6 +966,7 @@ "AWS::StepFunctions::StateMachine", "AWS::RDS::DBClusterParameterGroup", "AWS::WAF::XssMatchSet", + "AWS::IVS::StorageConfiguration", "AWS::Route53RecoveryReadiness::ReadinessCheck", "AWS::EC2::VerifiedAccessTrustProvider", "AWS::AppMesh::VirtualRouter", @@ -969,6 +990,7 @@ "AWS::SimSpaceWeaver::Simulation", "AWS::Events::Connection", "AWS::Athena::DataCatalog", + "AWS::Bedrock::AgentAlias", "AWS::DocDB::DBCluster", "AWS::MediaConnect::FlowVpcInterface", "AWS::Greengrass::FunctionDefinitionVersion", @@ -999,6 +1021,7 @@ "AWS::CleanRooms::Collaboration", "AWS::SSM::Association", "AWS::EC2::ClientVpnEndpoint", + "AWS::EntityResolution::IdNamespace", "AWS::CloudFront::ResponseHeadersPolicy", "AWS::SecurityHub::AutomationRule", "AWS::MSK::ClusterPolicy", @@ -1026,9 +1049,11 @@ "AWS::Route53Resolver::OutpostResolver", "AWS::ACMPCA::Certificate", "AWS::EC2::IPAMAllocation", + "AWS::Deadline::StorageProfile", "AWS::WorkSpaces::Workspace", "AWS::Inspector::AssessmentTemplate", "AWS::EMR::Studio", + "AWS::Deadline::MeteredProduct", "AWS::EC2::InstanceConnectEndpoint", "AWS::DAX::ParameterGroup", "AWS::DataZone::SubscriptionTarget", @@ -1063,6 +1088,7 @@ "AWS::DataPipeline::Pipeline", "AWS::IoTCoreDeviceAdvisor::SuiteDefinition", "AWS::IoT::Thing", + "AWS::Bedrock::KnowledgeBase", "AWS::Route53::HealthCheck", "AWS::Pinpoint::Segment", "AWS::Omics::RunGroup", @@ -1212,6 +1238,7 @@ "aws-apigatewayv2-apimapping.json", "aws-ce-anomalysubscription.json", "aws-shield-drtaccess.json", + "aws-deadline-farm.json", "aws-sso-assignment.json", "aws-glue-partition.json", "aws-rds-integration.json", @@ -1244,6 +1271,7 @@ "aws-ec2-networkperformancemetricsubscription.json", "aws-medialive-channel.json", "aws-greengrass-devicedefinition.json", + "aws-cleanroomsml-trainingdataset.json", "aws-cloudfront-continuousdeploymentpolicy.json", "aws-quicksight-analysis.json", "aws-kendra-faq.json", @@ -1264,7 +1292,6 @@ "aws-apigatewayv2-integrationresponse.json", "aws-iotevents-input.json", "aws-ec2-networkacl.json", - "aws-lambda-eventsourcemapping.json", "aws-budgets-budgetsaction.json", "aws-logs-resourcepolicy.json", "aws-lex-botversion.json", @@ -1337,6 +1364,7 @@ "aws-cloudtrail-eventdatastore.json", "aws-appintegrations-application.json", "aws-kinesisfirehose-deliverystream.json", + "aws-deadline-queuefleetassociation.json", "aws-ec2-networkinsightsaccessscope.json", "aws-cognito-userpoolusertogroupattachment.json", "aws-pcaconnectorad-directoryregistration.json", @@ -1378,6 +1406,7 @@ "aws-iotsitewise-portal.json", "aws-events-archive.json", "aws-msk-cluster.json", + "aws-securityhub-delegatedadmin.json", "aws-controltower-enabledbaseline.json", "aws-appstream-appblockbuilder.json", "aws-route53recoverycontrol-cluster.json", @@ -1431,6 +1460,7 @@ "aws-robomaker-simulationapplication.json", "aws-networkmanager-transitgatewayregistration.json", "aws-amplify-app.json", + "aws-entityresolution-policystatement.json", "aws-inspectorv2-filter.json", "aws-elasticache-replicationgroup.json", "aws-stepfunctions-statemachinealias.json", @@ -1493,6 +1523,7 @@ "aws-lambda-alias.json", "aws-logs-loganomalydetector.json", "aws-waf-ipset.json", + "aws-deadline-fleet.json", "aws-iottwinmaker-workspace.json", "aws-vpclattice-servicenetworkserviceassociation.json", "aws-ec2-transitgatewaymulticastdomainassociation.json", @@ -1592,6 +1623,7 @@ "aws-iot-policyprincipalattachment.json", "aws-timestream-scheduledquery.json", "aws-frauddetector-list.json", + "aws-ivs-playbackrestrictionpolicy.json", "aws-fms-notificationchannel.json", "aws-msk-batchscramsecret.json", "aws-connect-hoursofoperation.json", @@ -1610,6 +1642,7 @@ "aws-mediaconnect-bridgesource.json", "aws-mediapackagev2-channelpolicy.json", "aws-iot-jobtemplate.json", + "aws-deadline-queue.json", "aws-servicecatalog-portfolioproductassociation.json", "aws-databrew-project.json", "aws-vpclattice-targetgroup.json", @@ -1638,6 +1671,7 @@ "aws-connect-predefinedattribute.json", "aws-iam-policy.json", "aws-databrew-schedule.json", + "aws-bedrock-agent.json", "aws-apprunner-service.json", "aws-connect-approvedorigin.json", "aws-ses-contactlist.json", @@ -1659,6 +1693,7 @@ "aws-ecs-clustercapacityproviderassociations.json", "aws-appconfig-configurationprofile.json", "aws-route53resolver-firewallrulegroup.json", + "aws-docdbelastic-cluster.json", "aws-msk-configuration.json", "aws-ec2-transitgateway.json", "aws-cognito-userpoolgroup.json", @@ -1672,8 +1707,10 @@ "aws-codebuild-project.json", "aws-efs-filesystem.json", "aws-pinpoint-apnsvoipsandboxchannel.json", + "aws-config-organizationconformancepack.json", "aws-connect-quickconnect.json", "aws-logs-querydefinition.json", + "aws-securityhub-productsubscription.json", "aws-iam-instanceprofile.json", "aws-iot-billinggroup.json", "aws-appstream-application.json", @@ -1693,6 +1730,7 @@ "aws-cognito-userpooluicustomizationattachment.json", "aws-sagemaker-notebookinstancelifecycleconfig.json", "aws-imagebuilder-containerrecipe.json", + "aws-codeconnections-connection.json", "aws-connect-rule.json", "aws-efs-accesspoint.json", "aws-omics-referencestore.json", @@ -1726,6 +1764,7 @@ "aws-imagebuilder-workflow.json", "aws-ecs-taskset.json", "aws-omics-variantstore.json", + "aws-securitylake-awslogsource.json", "aws-appsync-apikey.json", "aws-cloudformation-typeactivation.json", "aws-groundstation-dataflowendpointgroup.json", @@ -1789,6 +1828,7 @@ "aws-ec2-customergateway.json", "aws-iam-grouppolicy.json", "aws-scheduler-schedule.json", + "aws-deadline-licenseendpoint.json", "aws-waf-bytematchset.json", "aws-amplifyuibuilder-theme.json", "aws-neptune-dbclusterparametergroup.json", @@ -1816,6 +1856,7 @@ "aws-glue-trigger.json", "aws-globalaccelerator-listener.json", "aws-verifiedpermissions-policystore.json", + "aws-deadline-queueenvironment.json", "aws-signer-signingprofile.json", "aws-kendraranking-executionplan.json", "aws-ec2-vpcpeeringconnection.json", @@ -1886,6 +1927,7 @@ "aws-lookoutmetrics-alert.json", "aws-iotwireless-taskdefinition.json", "aws-stepfunctions-activity.json", + "aws-ivs-encoderconfiguration.json", "aws-synthetics-group.json", "aws-forecast-dataset.json", "aws-sagemaker-project.json", @@ -1898,6 +1940,7 @@ "aws-codebuild-sourcecredential.json", "aws-emr-instancefleetconfig.json", "aws-emr-cluster.json", + "aws-securitylake-datalake.json", "aws-codepipeline-webhook.json", "aws-apigatewayv2-domainname.json", "aws-customerprofiles-eventstream.json", @@ -1938,7 +1981,6 @@ "aws-ec2-localgatewayroutetable.json", "aws-apigateway-resource.json", "aws-sagemaker-appimageconfig.json", - "aws-verifiedpermissions-identitysource.json", "aws-macie-session.json", "aws-elasticloadbalancingv2-targetgroup.json", "aws-applicationautoscaling-scalingpolicy.json", @@ -1989,10 +2031,12 @@ "aws-datazone-environment.json", "aws-docdb-dbsubnetgroup.json", "aws-logs-delivery.json", + "aws-bedrock-datasource.json", "aws-servicecatalog-portfolio.json", "aws-workspacesweb-truststore.json", "aws-customerprofiles-domain.json", "aws-iot-policy.json", + "aws-aps-scraper.json", "aws-ec2-transitgatewayroute.json", "aws-ssm-maintenancewindow.json", "aws-datazone-domain.json", @@ -2015,6 +2059,7 @@ "aws-devopsguru-loganomalydetectionintegration.json", "aws-networkmanager-link.json", "aws-qldb-stream.json", + "aws-securitylake-subscriber.json", "aws-sagemaker-notebookinstance.json", "aws-iotsitewise-dashboard.json", "aws-pinpoint-apnsvoipchannel.json", @@ -2051,6 +2096,7 @@ "aws-gamelift-matchmakingruleset.json", "aws-ec2-egressonlyinternetgateway.json", "aws-athena-capacityreservation.json", + "aws-securityhub-insight.json", "aws-config-conformancepack.json", "aws-ec2-vpccidrblock.json", "aws-aps-workspace.json", @@ -2062,7 +2108,6 @@ "aws-ec2-networkinsightspath.json", "aws-mediatailor-vodsource.json", "aws-neptune-dbparametergroup.json", - "aws-acmpca-certificateauthority.json", "aws-athena-preparedstatement.json", "aws-s3express-bucketpolicy.json", "aws-autoscaling-scheduledaction.json", @@ -2133,6 +2178,7 @@ "aws-stepfunctions-statemachine.json", "aws-rds-dbclusterparametergroup.json", "aws-waf-xssmatchset.json", + "aws-ivs-storageconfiguration.json", "aws-route53recoveryreadiness-readinesscheck.json", "aws-ec2-verifiedaccesstrustprovider.json", "aws-appmesh-virtualrouter.json", @@ -2155,6 +2201,7 @@ "aws-detective-organizationadmin.json", "aws-simspaceweaver-simulation.json", "aws-athena-datacatalog.json", + "aws-bedrock-agentalias.json", "aws-docdb-dbcluster.json", "aws-mediaconnect-flowvpcinterface.json", "aws-greengrass-functiondefinitionversion.json", @@ -2185,6 +2232,7 @@ "aws-cleanrooms-collaboration.json", "aws-ssm-association.json", "aws-ec2-clientvpnendpoint.json", + "aws-entityresolution-idnamespace.json", "aws-cloudfront-responseheaderspolicy.json", "aws-securityhub-automationrule.json", "aws-msk-clusterpolicy.json", @@ -2212,9 +2260,11 @@ "aws-route53resolver-outpostresolver.json", "aws-acmpca-certificate.json", "aws-ec2-ipamallocation.json", + "aws-deadline-storageprofile.json", "aws-workspaces-workspace.json", "aws-inspector-assessmenttemplate.json", "aws-emr-studio.json", + "aws-deadline-meteredproduct.json", "aws-ec2-instanceconnectendpoint.json", "aws-dax-parametergroup.json", "aws-datazone-subscriptiontarget.json", @@ -2231,7 +2281,6 @@ "aws-organizations-organizationalunit.json", "aws-appsync-datasource.json", "aws-sqs-queue.json", - "aws-ec2-securitygroupingress.json", "aws-guardduty-detector.json", "aws-sagemaker-modelqualityjobdefinition.json", "aws-iot-provisioningtemplate.json", @@ -2248,6 +2297,7 @@ "aws-datapipeline-pipeline.json", "aws-iotcoredeviceadvisor-suitedefinition.json", "aws-iot-thing.json", + "aws-bedrock-knowledgebase.json", "aws-route53-healthcheck.json", "aws-pinpoint-segment.json", "aws-omics-rungroup.json", @@ -2326,6 +2376,7 @@ "aws-s3-storagelens.json", "aws-ec2-verifiedaccessgroup.json", "aws-ec2-vpcendpointservice.json", + "aws-iam-managedpolicy.json", "aws-codeartifact-domain.json", "aws-ec2-launchtemplate.json", "aws-pinpoint-voicechannel.json", diff --git a/src/cfnlint/data/schemas/providers/us_west_2/aws-acmpca-certificateauthority.json b/src/cfnlint/data/schemas/providers/us_west_2/aws-acmpca-certificateauthority.json new file mode 100644 index 0000000000..08ec85e5fa --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_west_2/aws-acmpca-certificateauthority.json @@ -0,0 +1,429 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Type", + "/properties/KeyAlgorithm", + "/properties/SigningAlgorithm", + "/properties/Subject", + "/properties/CsrExtensions", + "/properties/KeyStorageSecurityStandard", + "/properties/UsageMode" + ], + "definitions": { + "AccessDescription": { + "additionalProperties": false, + "properties": { + "AccessLocation": { + "$ref": "#/definitions/GeneralName" + }, + "AccessMethod": { + "$ref": "#/definitions/AccessMethod" + } + }, + "required": [ + "AccessMethod", + "AccessLocation" + ], + "type": "object" + }, + "AccessMethod": { + "additionalProperties": false, + "properties": { + "AccessMethodType": { + "$ref": "#/definitions/AccessMethodType" + }, + "CustomObjectIdentifier": { + "$ref": "#/definitions/CustomObjectIdentifier" + } + }, + "type": "object" + }, + "AccessMethodType": { + "type": "string" + }, + "Arn": { + "type": "string" + }, + "CrlConfiguration": { + "additionalProperties": false, + "properties": { + "CrlDistributionPointExtensionConfiguration": { + "$ref": "#/definitions/CrlDistributionPointExtensionConfiguration" + }, + "CustomCname": { + "type": "string" + }, + "Enabled": { + "type": "boolean" + }, + "ExpirationInDays": { + "type": "integer" + }, + "S3BucketName": { + "type": "string" + }, + "S3ObjectAcl": { + "type": "string" + } + }, + "type": "object" + }, + "CrlDistributionPointExtensionConfiguration": { + "additionalProperties": false, + "properties": { + "OmitExtension": { + "type": "boolean" + } + }, + "required": [ + "OmitExtension" + ], + "type": "object" + }, + "CsrExtensions": { + "additionalProperties": false, + "properties": { + "KeyUsage": { + "$ref": "#/definitions/KeyUsage" + }, + "SubjectInformationAccess": { + "$ref": "#/definitions/SubjectInformationAccess" + } + }, + "type": "object" + }, + "CustomAttribute": { + "additionalProperties": false, + "properties": { + "ObjectIdentifier": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "ObjectIdentifier", + "Value" + ], + "type": "object" + }, + "CustomAttributeList": { + "items": { + "$ref": "#/definitions/CustomAttribute" + }, + "type": "array" + }, + "CustomObjectIdentifier": { + "type": "string" + }, + "DnsName": { + "type": "string" + }, + "EdiPartyName": { + "additionalProperties": false, + "properties": { + "NameAssigner": { + "type": "string" + }, + "PartyName": { + "type": "string" + } + }, + "required": [ + "PartyName", + "NameAssigner" + ], + "type": "object" + }, + "GeneralName": { + "additionalProperties": false, + "properties": { + "DirectoryName": { + "$ref": "#/definitions/Subject" + }, + "DnsName": { + "$ref": "#/definitions/DnsName" + }, + "EdiPartyName": { + "$ref": "#/definitions/EdiPartyName" + }, + "IpAddress": { + "$ref": "#/definitions/IpAddress" + }, + "OtherName": { + "$ref": "#/definitions/OtherName" + }, + "RegisteredId": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Rfc822Name": { + "$ref": "#/definitions/Rfc822Name" + }, + "UniformResourceIdentifier": { + "$ref": "#/definitions/UniformResourceIdentifier" + } + }, + "type": "object" + }, + "IpAddress": { + "type": "string" + }, + "KeyUsage": { + "additionalProperties": false, + "properties": { + "CRLSign": { + "default": false, + "type": "boolean" + }, + "DataEncipherment": { + "default": false, + "type": "boolean" + }, + "DecipherOnly": { + "default": false, + "type": "boolean" + }, + "DigitalSignature": { + "default": false, + "type": "boolean" + }, + "EncipherOnly": { + "default": false, + "type": "boolean" + }, + "KeyAgreement": { + "default": false, + "type": "boolean" + }, + "KeyCertSign": { + "default": false, + "type": "boolean" + }, + "KeyEncipherment": { + "default": false, + "type": "boolean" + }, + "NonRepudiation": { + "default": false, + "type": "boolean" + } + }, + "type": "object" + }, + "OcspConfiguration": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + }, + "OcspCustomCname": { + "type": "string" + } + }, + "type": "object" + }, + "OtherName": { + "additionalProperties": false, + "properties": { + "TypeId": { + "$ref": "#/definitions/CustomObjectIdentifier" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "TypeId", + "Value" + ], + "type": "object" + }, + "RevocationConfiguration": { + "additionalProperties": false, + "properties": { + "CrlConfiguration": { + "$ref": "#/definitions/CrlConfiguration" + }, + "OcspConfiguration": { + "$ref": "#/definitions/OcspConfiguration" + } + }, + "type": "object" + }, + "Rfc822Name": { + "type": "string" + }, + "Subject": { + "additionalProperties": false, + "properties": { + "CommonName": { + "type": "string" + }, + "Country": { + "type": "string" + }, + "CustomAttributes": { + "$ref": "#/definitions/CustomAttributeList" + }, + "DistinguishedNameQualifier": { + "type": "string" + }, + "GenerationQualifier": { + "type": "string" + }, + "GivenName": { + "type": "string" + }, + "Initials": { + "type": "string" + }, + "Locality": { + "type": "string" + }, + "Organization": { + "type": "string" + }, + "OrganizationalUnit": { + "type": "string" + }, + "Pseudonym": { + "type": "string" + }, + "SerialNumber": { + "type": "string" + }, + "State": { + "type": "string" + }, + "Surname": { + "type": "string" + }, + "Title": { + "type": "string" + } + }, + "type": "object" + }, + "SubjectInformationAccess": { + "items": { + "$ref": "#/definitions/AccessDescription" + }, + "type": "array" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "UniformResourceIdentifier": { + "type": "string" + } + }, + "handlers": { + "create": { + "permissions": [ + "acm-pca:CreateCertificateAuthority", + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr" + ] + }, + "delete": { + "permissions": [ + "acm-pca:DeleteCertificateAuthority", + "acm-pca:DescribeCertificateAuthority" + ] + }, + "list": { + "permissions": [ + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr", + "acm-pca:ListCertificateAuthorities", + "acm-pca:ListTags" + ] + }, + "read": { + "permissions": [ + "acm-pca:DescribeCertificateAuthority", + "acm-pca:GetCertificateAuthorityCsr", + "acm-pca:ListTags" + ] + }, + "update": { + "permissions": [ + "acm-pca:ListTags", + "acm-pca:TagCertificateAuthority", + "acm-pca:UntagCertificateAuthority", + "acm-pca:UpdateCertificateAuthority" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "$ref": "#/definitions/Arn" + }, + "CertificateSigningRequest": { + "type": "string" + }, + "CsrExtensions": { + "$ref": "#/definitions/CsrExtensions" + }, + "KeyAlgorithm": { + "type": "string" + }, + "KeyStorageSecurityStandard": { + "type": "string" + }, + "RevocationConfiguration": { + "$ref": "#/definitions/RevocationConfiguration" + }, + "SigningAlgorithm": { + "type": "string" + }, + "Subject": { + "$ref": "#/definitions/Subject" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "Type": { + "type": "string" + }, + "UsageMode": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/CertificateSigningRequest" + ], + "required": [ + "Type", + "KeyAlgorithm", + "SigningAlgorithm", + "Subject" + ], + "sourceUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_ACMPCA.html", + "typeName": "AWS::ACMPCA::CertificateAuthority", + "writeOnlyProperties": [ + "/properties/Subject", + "/properties/Subject", + "/properties/CsrExtensions", + "/properties/Tags", + "/properties/RevocationConfiguration", + "/properties/KeyStorageSecurityStandard" + ] +} diff --git a/src/cfnlint/data/schemas/providers/us_west_2/aws-config-organizationconformancepack.json b/src/cfnlint/data/schemas/providers/us_west_2/aws-config-organizationconformancepack.json deleted file mode 100644 index 884dc86cd9..0000000000 --- a/src/cfnlint/data/schemas/providers/us_west_2/aws-config-organizationconformancepack.json +++ /dev/null @@ -1,151 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/OrganizationConformancePackName" - ], - "definitions": { - "AccountId": { - "type": "string" - }, - "ConformancePackInputParameter": { - "properties": { - "ParameterName": { - "$ref": "#/definitions/ParameterName" - }, - "ParameterValue": { - "$ref": "#/definitions/ParameterValue" - } - }, - "required": [ - "ParameterName", - "ParameterValue" - ], - "type": "object" - }, - "ParameterName": { - "maxLength": 255, - "minLength": 0, - "type": "string" - }, - "ParameterValue": { - "maxLength": 4096, - "minLength": 0, - "type": "string" - } - }, - "documentationUrl": "https://docs.aws.amazon.com/config/latest/developerguide/conformance-pack-organization-apis.html", - "handlers": { - "create": { - "permissions": [ - "config:PutOrganizationConformancePack", - "config:DescribeOrganizationConformancePackStatuses", - "config:GetOrganizationConformancePackDetailedStatus", - "config:DescribeOrganizationConformancePacks", - "s3:GetObject", - "s3:GetBucketAcl", - "iam:CreateServiceLinkedRole", - "iam:PassRole", - "organizations:ListDelegatedAdministrators", - "organizations:EnableAWSServiceAccess" - ], - "timeoutInMinutes": 706 - }, - "delete": { - "permissions": [ - "config:DeleteOrganizationConformancePack", - "config:DescribeOrganizationConformancePackStatuses", - "config:GetOrganizationConformancePackDetailedStatus", - "organizations:ListDelegatedAdministrators" - ], - "timeoutInMinutes": 706 - }, - "list": { - "permissions": [ - "config:DescribeOrganizationConformancePacks" - ] - }, - "read": { - "permissions": [ - "config:DescribeOrganizationConformancePacks" - ] - }, - "update": { - "permissions": [ - "config:PutOrganizationConformancePack", - "config:DescribeOrganizationConformancePackStatuses", - "config:GetOrganizationConformancePackDetailedStatus", - "s3:GetObject", - "s3:GetBucketAcl", - "iam:CreateServiceLinkedRole", - "iam:PassRole", - "organizations:ListDelegatedAdministrators", - "organizations:EnableAWSServiceAccess" - ], - "timeoutInMinutes": 706 - } - }, - "primaryIdentifier": [ - "/properties/OrganizationConformancePackName" - ], - "properties": { - "ConformancePackInputParameters": { - "items": { - "$ref": "#/definitions/ConformancePackInputParameter" - }, - "maxItems": 60, - "minItems": 0, - "type": "array" - }, - "DeliveryS3Bucket": { - "maxLength": 63, - "minLength": 0, - "type": "string" - }, - "DeliveryS3KeyPrefix": { - "maxLength": 1024, - "minLength": 0, - "type": "string" - }, - "ExcludedAccounts": { - "items": { - "$ref": "#/definitions/AccountId" - }, - "maxItems": 1000, - "minItems": 0, - "type": "array" - }, - "OrganizationConformancePackName": { - "maxLength": 128, - "minLength": 1, - "pattern": "[a-zA-Z][-a-zA-Z0-9]*", - "type": "string" - }, - "TemplateBody": { - "maxLength": 51200, - "minLength": 1, - "type": "string" - }, - "TemplateS3Uri": { - "maxLength": 1024, - "minLength": 1, - "pattern": "s3://.*", - "type": "string" - } - }, - "required": [ - "OrganizationConformancePackName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-config.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagProperty": "/properties/Tags", - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::Config::OrganizationConformancePack", - "writeOnlyProperties": [ - "/properties/TemplateBody", - "/properties/TemplateS3Uri" - ] -} diff --git a/src/cfnlint/data/schemas/providers/us_west_2/aws-docdbelastic-cluster.json b/src/cfnlint/data/schemas/providers/us_west_2/aws-docdbelastic-cluster.json deleted file mode 100644 index ad772b7ace..0000000000 --- a/src/cfnlint/data/schemas/providers/us_west_2/aws-docdbelastic-cluster.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/AdminUserName", - "/properties/AuthType", - "/properties/ClusterName", - "/properties/KmsKeyId" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^(?!aws:)[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "docdb-elastic:CreateCluster", - "docdb-elastic:TagResource", - "docdb-elastic:GetCluster", - "docdb-elastic:ListTagsForResource", - "ec2:CreateVpcEndpoint", - "ec2:DescribeVpcEndpoints", - "ec2:DeleteVpcEndpoints", - "ec2:ModifyVpcEndpoint", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:DescribeVpcAttribute", - "ec2:DescribeVpcs", - "ec2:DescribeAvailabilityZones", - "secretsmanager:ListSecrets", - "secretsmanager:ListSecretVersionIds", - "secretsmanager:DescribeSecret", - "secretsmanager:GetSecretValue", - "secretsmanager:GetResourcePolicy", - "kms:DescribeKey", - "kms:CreateGrant", - "kms:GenerateDataKey", - "kms:Decrypt", - "iam:CreateServiceLinkedRole" - ] - }, - "delete": { - "permissions": [ - "docdb-elastic:DeleteCluster", - "docdb-elastic:GetCluster", - "ec2:DescribeVpcEndpoints", - "ec2:DeleteVpcEndpoints", - "ec2:ModifyVpcEndpoint", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:DescribeVpcAttribute", - "ec2:DescribeVpcs", - "ec2:DescribeAvailabilityZones" - ] - }, - "list": { - "permissions": [ - "docdb-elastic:ListClusters" - ] - }, - "read": { - "permissions": [ - "docdb-elastic:GetCluster", - "docdb-elastic:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "docdb-elastic:UpdateCluster", - "docdb-elastic:TagResource", - "docdb-elastic:UntagResource", - "docdb-elastic:GetCluster", - "docdb-elastic:ListTagsForResource", - "ec2:CreateVpcEndpoint", - "ec2:DescribeVpcEndpoints", - "ec2:DeleteVpcEndpoints", - "ec2:ModifyVpcEndpoint", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:DescribeVpcAttribute", - "ec2:DescribeVpcs", - "ec2:DescribeAvailabilityZones", - "secretsmanager:ListSecrets", - "secretsmanager:ListSecretVersionIds", - "secretsmanager:DescribeSecret", - "secretsmanager:GetSecretValue", - "secretsmanager:GetResourcePolicy", - "kms:DescribeKey", - "kms:CreateGrant", - "kms:GenerateDataKey", - "kms:Decrypt" - ] - } - }, - "primaryIdentifier": [ - "/properties/ClusterArn" - ], - "properties": { - "AdminUserName": { - "type": "string" - }, - "AdminUserPassword": { - "type": "string" - }, - "AuthType": { - "type": "string" - }, - "BackupRetentionPeriod": { - "type": "integer" - }, - "ClusterArn": { - "type": "string" - }, - "ClusterEndpoint": { - "type": "string" - }, - "ClusterName": { - "maxLength": 50, - "minLength": 1, - "pattern": "[a-zA-z][a-zA-Z0-9]*(-[a-zA-Z0-9]+)*", - "type": "string" - }, - "KmsKeyId": { - "type": "string" - }, - "PreferredBackupWindow": { - "type": "string" - }, - "PreferredMaintenanceWindow": { - "type": "string" - }, - "ShardCapacity": { - "type": "integer" - }, - "ShardCount": { - "type": "integer" - }, - "ShardInstanceCount": { - "type": "integer" - }, - "SubnetIds": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "minItems": 0, - "type": "array", - "uniqueItems": true - }, - "VpcSecurityGroupIds": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/ClusterArn", - "/properties/ClusterEndpoint" - ], - "required": [ - "ClusterName", - "AdminUserName", - "ShardCapacity", - "ShardCount", - "AuthType" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-docdbelastic/", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::DocDBElastic::Cluster", - "writeOnlyProperties": [ - "/properties/AdminUserPassword" - ] -} diff --git a/src/cfnlint/data/schemas/providers/us_west_2/aws-ec2-securitygroupingress.json b/src/cfnlint/data/schemas/providers/us_west_2/aws-ec2-securitygroupingress.json new file mode 100644 index 0000000000..83ebc2ae5c --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_west_2/aws-ec2-securitygroupingress.json @@ -0,0 +1,121 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::EC2::SecurityGroupIngress/Properties" + ], + "createOnlyProperties": [ + "/properties/GroupName", + "/properties/IpProtocol", + "/properties/SourceSecurityGroupId", + "/properties/SourcePrefixListId", + "/properties/ToPort", + "/properties/CidrIp", + "/properties/SourceSecurityGroupName", + "/properties/SourceSecurityGroupOwnerId", + "/properties/FromPort", + "/properties/GroupId", + "/properties/CidrIpv6" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeSecurityGroupRules", + "ec2:AuthorizeSecurityGroupIngress" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeSecurityGroupRules", + "ec2:RevokeSecurityGroupIngress" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroups", + "ec2:DescribeSecurityGroupRules" + ] + }, + "update": { + "permissions": [ + "ec2:UpdateSecurityGroupRuleDescriptionsIngress" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CidrIp": { + "type": "string" + }, + "CidrIpv6": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "FromPort": { + "minimum": -1, + "type": "integer" + }, + "GroupId": { + "type": "string" + }, + "GroupName": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "IpProtocol": { + "type": "string" + }, + "SourcePrefixListId": { + "type": "string" + }, + "SourceSecurityGroupId": { + "type": "string" + }, + "SourceSecurityGroupName": { + "type": "string" + }, + "SourceSecurityGroupOwnerId": { + "type": "string" + }, + "ToPort": { + "minimum": -1, + "type": "integer" + } + }, + "propertyTransform": { + "/properties/FromPort": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$ipProtocol := $mapVal ? $mapVal : $lowercase(IpProtocol);$ipProtocol in ['imcp', 'tcp', 'udp', 'imcp'] ? FromPort : -1)", + "/properties/IpProtocol": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$mapVal ? $mapVal : $lowercase(IpProtocol))", + "/properties/ToPort": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$ipProtocol := $mapVal ? $mapVal : $lowercase(IpProtocol);$ipProtocol in ['imcp', 'tcp', 'udp', 'imcp'] ? ToPort : -1)" + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IpProtocol" + ], + "requiredXor": [ + "CidrIp", + "CidrIpv6", + "SourcePrefixListId", + "SourceSecurityGroupId", + "SourceSecurityGroupName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SecurityGroupIngress" +} diff --git a/src/cfnlint/data/schemas/providers/us_west_2/aws-iam-managedpolicy.json b/src/cfnlint/data/schemas/providers/us_west_2/aws-iam-managedpolicy.json deleted file mode 100644 index d04c706f8e..0000000000 --- a/src/cfnlint/data/schemas/providers/us_west_2/aws-iam-managedpolicy.json +++ /dev/null @@ -1,150 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ManagedPolicyName", - "/properties/Description", - "/properties/Path" - ], - "handlers": { - "create": { - "permissions": [ - "iam:CreatePolicy", - "iam:AttachGroupPolicy", - "iam:AttachUserPolicy", - "iam:AttachRolePolicy" - ] - }, - "delete": { - "permissions": [ - "iam:DetachRolePolicy", - "iam:GetPolicy", - "iam:ListPolicyVersions", - "iam:DetachGroupPolicy", - "iam:DetachUserPolicy", - "iam:DeletePolicyVersion", - "iam:DeletePolicy", - "iam:ListEntitiesForPolicy" - ] - }, - "list": { - "permissions": [ - "iam:ListPolicies" - ] - }, - "read": { - "permissions": [ - "iam:GetPolicy", - "iam:ListEntitiesForPolicy", - "iam:GetPolicyVersion" - ] - }, - "update": { - "permissions": [ - "iam:DetachRolePolicy", - "iam:GetPolicy", - "iam:ListPolicyVersions", - "iam:DetachGroupPolicy", - "iam:DetachUserPolicy", - "iam:CreatePolicyVersion", - "iam:DeletePolicyVersion", - "iam:AttachGroupPolicy", - "iam:AttachUserPolicy", - "iam:AttachRolePolicy" - ] - } - }, - "primaryIdentifier": [ - "/properties/PolicyArn" - ], - "properties": { - "AttachmentCount": { - "type": "integer" - }, - "CreateDate": { - "type": "string" - }, - "DefaultVersionId": { - "type": "string" - }, - "Description": { - "type": "string" - }, - "Groups": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "IsAttachable": { - "type": "boolean" - }, - "ManagedPolicyName": { - "type": "string" - }, - "Path": { - "pattern": "^/(.+/)*$", - "type": "string" - }, - "PermissionsBoundaryUsageCount": { - "type": "integer" - }, - "PolicyArn": { - "type": "string" - }, - "PolicyDocument": { - "cfnLint": [ - "AWS::IAM::ManagedPolicy/Properties/PolicyDocument" - ], - "maxLength": 6144, - "type": [ - "object", - "string" - ] - }, - "PolicyId": { - "type": "string" - }, - "Roles": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "UpdateDate": { - "type": "string" - }, - "Users": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/PolicyArn", - "/properties/AttachmentCount", - "/properties/CreateDate", - "/properties/DefaultVersionId", - "/properties/IsAttachable", - "/properties/PermissionsBoundaryUsageCount", - "/properties/PolicyId", - "/properties/UpdateDate" - ], - "required": [ - "PolicyDocument" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-iam", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::IAM::ManagedPolicy" -} diff --git a/src/cfnlint/data/schemas/providers/us_west_2/aws-lambda-eventsourcemapping.json b/src/cfnlint/data/schemas/providers/us_west_2/aws-lambda-eventsourcemapping.json new file mode 100644 index 0000000000..cb7599c139 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_west_2/aws-lambda-eventsourcemapping.json @@ -0,0 +1,353 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::Lambda::EventSourceMapping/Properties" + ], + "createOnlyProperties": [ + "/properties/EventSourceArn", + "/properties/StartingPosition", + "/properties/StartingPositionTimestamp", + "/properties/SelfManagedEventSource", + "/properties/AmazonManagedKafkaEventSourceConfig", + "/properties/SelfManagedKafkaEventSourceConfig" + ], + "definitions": { + "AmazonManagedKafkaEventSourceConfig": { + "additionalProperties": false, + "properties": { + "ConsumerGroupId": { + "$ref": "#/definitions/ConsumerGroupId" + } + }, + "type": "object" + }, + "ConsumerGroupId": { + "maxLength": 200, + "minLength": 1, + "pattern": "[a-zA-Z0-9-\\/*:_+=.@-]*", + "type": "string" + }, + "DestinationConfig": { + "additionalProperties": false, + "properties": { + "OnFailure": { + "$ref": "#/definitions/OnFailure" + } + }, + "type": "object" + }, + "DocumentDBEventSourceConfig": { + "additionalProperties": false, + "properties": { + "CollectionName": { + "maxLength": 57, + "minLength": 1, + "type": "string" + }, + "DatabaseName": { + "maxLength": 63, + "minLength": 1, + "type": "string" + }, + "FullDocument": { + "enum": [ + "UpdateLookup", + "Default" + ], + "type": "string" + } + }, + "type": "object" + }, + "Endpoints": { + "additionalProperties": false, + "properties": { + "KafkaBootstrapServers": { + "items": { + "maxLength": 300, + "minLength": 1, + "pattern": "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9]):[0-9]{1,5}", + "type": "string" + }, + "maxItems": 10, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "Filter": { + "additionalProperties": false, + "properties": { + "Pattern": { + "maxLength": 4096, + "minLength": 0, + "pattern": ".*", + "type": "string" + } + }, + "type": "object" + }, + "FilterCriteria": { + "additionalProperties": false, + "properties": { + "Filters": { + "items": { + "$ref": "#/definitions/Filter" + }, + "maxItems": 20, + "minItems": 1, + "type": "array", + "uniqueItems": true + } + }, + "type": "object" + }, + "MaximumConcurrency": { + "maximum": 1000, + "minimum": 2, + "type": "integer" + }, + "OnFailure": { + "additionalProperties": false, + "properties": { + "Destination": { + "maxLength": 1024, + "minLength": 12, + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "type": "string" + } + }, + "type": "object" + }, + "ScalingConfig": { + "additionalProperties": false, + "properties": { + "MaximumConcurrency": { + "$ref": "#/definitions/MaximumConcurrency" + } + }, + "type": "object" + }, + "SelfManagedEventSource": { + "additionalProperties": false, + "properties": { + "Endpoints": { + "$ref": "#/definitions/Endpoints" + } + }, + "type": "object" + }, + "SelfManagedKafkaEventSourceConfig": { + "additionalProperties": false, + "properties": { + "ConsumerGroupId": { + "$ref": "#/definitions/ConsumerGroupId" + } + }, + "type": "object" + }, + "SourceAccessConfiguration": { + "additionalProperties": false, + "properties": { + "Type": { + "enum": [ + "BASIC_AUTH", + "VPC_SUBNET", + "VPC_SECURITY_GROUP", + "SASL_SCRAM_512_AUTH", + "SASL_SCRAM_256_AUTH", + "VIRTUAL_HOST", + "CLIENT_CERTIFICATE_TLS_AUTH", + "SERVER_ROOT_CA_CERTIFICATE" + ], + "type": "string" + }, + "URI": { + "maxLength": 200, + "minLength": 1, + "pattern": "[a-zA-Z0-9-\\/*:_+=.@-]*", + "type": "string" + } + }, + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "lambda:CreateEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + }, + "delete": { + "permissions": [ + "lambda:DeleteEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + }, + "list": { + "permissions": [ + "lambda:ListEventSourceMappings" + ] + }, + "read": { + "permissions": [ + "lambda:GetEventSourceMapping" + ] + }, + "update": { + "permissions": [ + "lambda:UpdateEventSourceMapping", + "lambda:GetEventSourceMapping" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AmazonManagedKafkaEventSourceConfig": { + "$ref": "#/definitions/AmazonManagedKafkaEventSourceConfig" + }, + "BatchSize": { + "maximum": 10000, + "minimum": 1, + "type": "integer" + }, + "BisectBatchOnFunctionError": { + "type": "boolean" + }, + "DestinationConfig": { + "$ref": "#/definitions/DestinationConfig" + }, + "DocumentDBEventSourceConfig": { + "$ref": "#/definitions/DocumentDBEventSourceConfig" + }, + "Enabled": { + "type": "boolean" + }, + "EventSourceArn": { + "maxLength": 1024, + "minLength": 12, + "pattern": "arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:([a-z]{2}(-gov)?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)", + "type": "string" + }, + "FilterCriteria": { + "$ref": "#/definitions/FilterCriteria" + }, + "FunctionName": { + "maxLength": 140, + "minLength": 1, + "pattern": "(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?", + "type": "string" + }, + "FunctionResponseTypes": { + "items": { + "enum": [ + "ReportBatchItemFailures" + ], + "type": "string" + }, + "maxLength": 1, + "minLength": 0, + "type": "array", + "uniqueItems": true + }, + "Id": { + "maxLength": 36, + "minLength": 36, + "pattern": "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", + "type": "string" + }, + "MaximumBatchingWindowInSeconds": { + "maximum": 300, + "minimum": 0, + "type": "integer" + }, + "MaximumRecordAgeInSeconds": { + "maximum": 604800, + "minimum": -1, + "type": "integer" + }, + "MaximumRetryAttempts": { + "maximum": 10000, + "minimum": -1, + "type": "integer" + }, + "ParallelizationFactor": { + "maximum": 10, + "minimum": 1, + "type": "integer" + }, + "Queues": { + "items": { + "maxLength": 1000, + "minLength": 1, + "pattern": "[\\s\\S]*", + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "ScalingConfig": { + "$ref": "#/definitions/ScalingConfig" + }, + "SelfManagedEventSource": { + "$ref": "#/definitions/SelfManagedEventSource" + }, + "SelfManagedKafkaEventSourceConfig": { + "$ref": "#/definitions/SelfManagedKafkaEventSourceConfig" + }, + "SourceAccessConfigurations": { + "items": { + "$ref": "#/definitions/SourceAccessConfiguration" + }, + "maxItems": 22, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "StartingPosition": { + "enum": [ + "TRIM_HORIZON", + "LATEST", + "AT_TIMESTAMP" + ], + "maxLength": 12, + "minLength": 6, + "pattern": "(LATEST|TRIM_HORIZON|AT_TIMESTAMP)+", + "type": "string" + }, + "StartingPositionTimestamp": { + "type": "number" + }, + "Topics": { + "items": { + "maxLength": 249, + "minLength": 1, + "pattern": "^[^.]([a-zA-Z0-9\\-_.]+)", + "type": "string" + }, + "maxItems": 1, + "minItems": 1, + "type": "array", + "uniqueItems": true + }, + "TumblingWindowInSeconds": { + "maximum": 900, + "minimum": 0, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "FunctionName" + ], + "typeName": "AWS::Lambda::EventSourceMapping" +} diff --git a/src/cfnlint/data/schemas/providers/us_west_2/aws-verifiedpermissions-identitysource.json b/src/cfnlint/data/schemas/providers/us_west_2/aws-verifiedpermissions-identitysource.json new file mode 100644 index 0000000000..46a0ad88f1 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_west_2/aws-verifiedpermissions-identitysource.json @@ -0,0 +1,221 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/PolicyStoreId" + ], + "definitions": { + "CognitoGroupConfiguration": { + "additionalProperties": false, + "properties": { + "GroupEntityType": { + "maxLength": 200, + "minLength": 1, + "pattern": "^([_a-zA-Z][_a-zA-Z0-9]*::)*[_a-zA-Z][_a-zA-Z0-9]*$", + "type": "string" + } + }, + "required": [ + "GroupEntityType" + ], + "type": "object" + }, + "CognitoUserPoolConfiguration": { + "additionalProperties": false, + "properties": { + "ClientIds": { + "insertionOrder": false, + "items": { + "maxLength": 255, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "maxItems": 1000, + "minItems": 0, + "type": "array" + }, + "GroupConfiguration": { + "$ref": "#/definitions/CognitoGroupConfiguration" + }, + "UserPoolArn": { + "maxLength": 255, + "minLength": 1, + "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", + "type": "string" + } + }, + "required": [ + "UserPoolArn" + ], + "type": "object" + }, + "IdentitySourceConfiguration": { + "additionalProperties": false, + "properties": { + "CognitoUserPoolConfiguration": { + "$ref": "#/definitions/CognitoUserPoolConfiguration" + } + }, + "required": [ + "CognitoUserPoolConfiguration" + ], + "title": "CognitoUserPoolConfiguration", + "type": "object" + }, + "IdentitySourceDetails": { + "additionalProperties": false, + "properties": { + "ClientIds": { + "insertionOrder": false, + "items": { + "maxLength": 255, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + }, + "maxItems": 1000, + "minItems": 0, + "type": "array" + }, + "DiscoveryUrl": { + "maxLength": 2048, + "minLength": 1, + "pattern": "^https://.*$", + "type": "string" + }, + "OpenIdIssuer": { + "$ref": "#/definitions/OpenIdIssuer" + }, + "UserPoolArn": { + "maxLength": 255, + "minLength": 1, + "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", + "type": "string" + } + }, + "type": "object" + }, + "OpenIdIssuer": { + "enum": [ + "COGNITO" + ], + "type": "string" + } + }, + "deprecatedProperties": [ + "/properties/Details" + ], + "handlers": { + "create": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "delete": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "list": { + "handlerSchema": { + "properties": { + "PolicyStoreId": { + "$ref": "resource-schema.json#/properties/PolicyStoreId" + } + }, + "required": [ + "PolicyStoreId" + ] + }, + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "read": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + }, + "update": { + "permissions": [ + "verifiedpermissions:CreateIdentitySource", + "verifiedpermissions:GetIdentitySource", + "verifiedpermissions:UpdateIdentitySource", + "verifiedpermissions:DeleteIdentitySource", + "verifiedpermissions:ListIdentitySources", + "cognito-idp:DescribeUserPool", + "cognito-idp:ListUserPoolClients" + ] + } + }, + "primaryIdentifier": [ + "/properties/IdentitySourceId", + "/properties/PolicyStoreId" + ], + "properties": { + "Configuration": { + "$ref": "#/definitions/IdentitySourceConfiguration" + }, + "Details": { + "$ref": "#/definitions/IdentitySourceDetails" + }, + "IdentitySourceId": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]*$", + "type": "string" + }, + "PolicyStoreId": { + "maxLength": 200, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]*$", + "type": "string" + }, + "PrincipalEntityType": { + "maxLength": 200, + "minLength": 1, + "pattern": "^.*$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Details", + "/properties/IdentitySourceId" + ], + "required": [ + "Configuration", + "PolicyStoreId" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-avp", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::VerifiedPermissions::IdentitySource" +} diff --git a/src/cfnlint/jsonschema/_validators.py b/src/cfnlint/jsonschema/_validators.py index b6a646d15b..ed4f426aa1 100644 --- a/src/cfnlint/jsonschema/_validators.py +++ b/src/cfnlint/jsonschema/_validators.py @@ -543,3 +543,16 @@ def type( if not any(validator.is_type(instance, type) for type in tS): reprs = ", ".join(repr(type) for type in tS) yield ValidationError(f"{instance!r} is not of type {reprs}") + + +def prefixItems(validator, prefixItems, instance, schema): + if not validator.is_type(instance, "array"): + return + + for (index, item), subschema in zip(enumerate(instance), prefixItems): + yield from validator.descend( + instance=item, + schema=subschema, + schema_path=index, + path=index, + ) diff --git a/src/cfnlint/jsonschema/validators.py b/src/cfnlint/jsonschema/validators.py index 0fd71912e0..b57168401b 100644 --- a/src/cfnlint/jsonschema/validators.py +++ b/src/cfnlint/jsonschema/validators.py @@ -334,6 +334,7 @@ def extend( "oneOf": _validators.oneOf, "pattern": _validators.pattern, "patternProperties": _validators.patternProperties, + "prefixItems": _validators.prefixItems, "properties": _validators.properties, "propertyNames": _validators.propertyNames, "required": _validators.required, diff --git a/src/cfnlint/rules/resources/properties/PrefixItems.py b/src/cfnlint/rules/resources/properties/PrefixItems.py new file mode 100644 index 0000000000..b9cdb8834e --- /dev/null +++ b/src/cfnlint/rules/resources/properties/PrefixItems.py @@ -0,0 +1,16 @@ +""" +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +SPDX-License-Identifier: MIT-0 +""" + +from cfnlint.rules import CloudFormationLintRule + + +class PrefixItems(CloudFormationLintRule): + """Check Required Resource Configuration""" + + id = "E3008" + shortdesc = "Validate an array in order" + description = "Will validate arrays in order for schema validation" + source_url = "https://github.com/aws-cloudformation/cfn-python-lint/blob/main/docs/cfn-resource-specification.md#required" + tags = ["resources"] diff --git a/src/cfnlint/rules/resources/properties/Properties.py b/src/cfnlint/rules/resources/properties/Properties.py index 91d7048fff..f0276df6da 100644 --- a/src/cfnlint/rules/resources/properties/Properties.py +++ b/src/cfnlint/rules/resources/properties/Properties.py @@ -47,6 +47,7 @@ def __init__(self): "maxItems": "E3032", "minItems": "E3032", "pattern": "E3031", + "prefixItems": "E3008", "oneOf": "E3018", "cfnLint": "E1101", "tagging": "E3024", diff --git a/src/cfnlint/template/transforms/_language_extensions.py b/src/cfnlint/template/transforms/_language_extensions.py index cca6d15351..d78c9f5869 100644 --- a/src/cfnlint/template/transforms/_language_extensions.py +++ b/src/cfnlint/template/transforms/_language_extensions.py @@ -153,8 +153,8 @@ def _walk(self, item: Any, params: MutableMapping[str, Any], cfn: Any): try: mapping = _ForEachValueFnFindInMap(get_hash(v), v) map_value = mapping.value(cfn, params, True, False) - # if we get None this means its all strings but couldn't be resolved - # we will pass this forward + # if we get None this means its all strings + # but couldn't be resolved we will pass this forward if map_value is None: continue # if we can resolve it we will return it diff --git a/test/fixtures/schemas/providers/base.definition.schema.v1.json b/test/fixtures/schemas/providers/base.definition.schema.v1.json index a54282c7b7..c3b464bec6 100644 --- a/test/fixtures/schemas/providers/base.definition.schema.v1.json +++ b/test/fixtures/schemas/providers/base.definition.schema.v1.json @@ -149,6 +149,12 @@ "$ref": "#/definitions/properties", "default": {} }, + "prefixItems": { + "type": "array", + "items": { + "$ref": "#/definitions/properties" + } + }, "maxItems": { "$ref": "http://json-schema.org/draft-07/schema#/properties/maxItems" }, From c4069ce44d8df967b82e661dbee186dfb27a8e2c Mon Sep 17 00:00:00 2001 From: Kevin DeJong Date: Fri, 5 Apr 2024 08:23:32 -0700 Subject: [PATCH 2/3] Switch to keywords and add prefixItems --- .../{_validators.py => _keywords.py} | 0 .../{_validators_cfn.py => _keywords_cfn.py} | 2 +- src/cfnlint/jsonschema/validators.py | 78 +++++++++---------- src/cfnlint/rules/conditions/Configuration.py | 2 +- .../rules/jsonschema/CfnLintJsonSchema.py | 2 +- .../rules/parameters/AllowedPattern.py | 2 +- src/cfnlint/rules/parameters/AllowedValue.py | 2 +- .../rules/resources/properties/Enum.py | 2 +- .../rules/resources/properties/MinMax.py | 2 +- .../rules/resources/properties/Pattern.py | 2 +- .../rules/resources/properties/Type.py | 2 +- ...validators_cfn.py => test_keywords_cfn.py} | 2 +- test/unit/module/jsonschema/test_validator.py | 14 ++++ test/unit/rules/functions/test_ref.py | 2 +- 14 files changed, 64 insertions(+), 50 deletions(-) rename src/cfnlint/jsonschema/{_validators.py => _keywords.py} (100%) rename src/cfnlint/jsonschema/{_validators_cfn.py => _keywords_cfn.py} (98%) rename test/unit/module/jsonschema/{test_validators_cfn.py => test_keywords_cfn.py} (98%) diff --git a/src/cfnlint/jsonschema/_validators.py b/src/cfnlint/jsonschema/_keywords.py similarity index 100% rename from src/cfnlint/jsonschema/_validators.py rename to src/cfnlint/jsonschema/_keywords.py diff --git a/src/cfnlint/jsonschema/_validators_cfn.py b/src/cfnlint/jsonschema/_keywords_cfn.py similarity index 98% rename from src/cfnlint/jsonschema/_validators_cfn.py rename to src/cfnlint/jsonschema/_keywords_cfn.py index 432436cc5b..6753478ec5 100644 --- a/src/cfnlint/jsonschema/_validators_cfn.py +++ b/src/cfnlint/jsonschema/_keywords_cfn.py @@ -22,7 +22,7 @@ import regex as re -import cfnlint.jsonschema._validators as validators_standard +import cfnlint.jsonschema._keywords as validators_standard from cfnlint.jsonschema import ValidationError, Validator from cfnlint.jsonschema._typing import V, ValidationResult from cfnlint.jsonschema._utils import ensure_list diff --git a/src/cfnlint/jsonschema/validators.py b/src/cfnlint/jsonschema/validators.py index b57168401b..782c7a8448 100644 --- a/src/cfnlint/jsonschema/validators.py +++ b/src/cfnlint/jsonschema/validators.py @@ -23,7 +23,7 @@ from typing import Any, Callable, Dict from cfnlint.context import Context -from cfnlint.jsonschema import _resolvers_cfn, _validators, _validators_cfn +from cfnlint.jsonschema import _keywords, _keywords_cfn, _resolvers_cfn from cfnlint.jsonschema._filter import FunctionFilter from cfnlint.jsonschema._format import FormatChecker, cfn_format_checker from cfnlint.jsonschema._resolver import RefResolver @@ -306,49 +306,49 @@ def extend( _standard_validators: Dict[str, V] = { - "$ref": _validators.ref, - "additionalProperties": _validators.additionalProperties, - "allOf": _validators.allOf, - "anyOf": _validators.anyOf, - "const": _validators.const, - "contains": _validators.contains, - "dependencies": _validators.dependencies, - "dependentRequired": _validators.dependentRequired, - "dependentExcluded": _validators.dependentExcluded, - "enum": _validators.enum, - "exclusiveMaximum": _validators.exclusiveMaximum, - "exclusiveMinimum": _validators.exclusiveMinimum, - "format": _validators.format, - "if": _validators.if_, - "items": _validators.items, - "maxItems": _validators.maxItems, - "maxLength": _validators.maxLength, - "maxProperties": _validators.maxProperties, - "maximum": _validators.maximum, - "minItems": _validators.minItems, - "minLength": _validators.minLength, - "minProperties": _validators.minProperties, - "minimum": _validators.minimum, - "multipleOf": _validators.multipleOf, - "not": _validators.not_, - "oneOf": _validators.oneOf, - "pattern": _validators.pattern, - "patternProperties": _validators.patternProperties, - "prefixItems": _validators.prefixItems, - "properties": _validators.properties, - "propertyNames": _validators.propertyNames, - "required": _validators.required, - "requiredXor": _validators.requiredXor, - "requiredOr": _validators.requiredOr, - "type": _validators.type, - "uniqueItems": _validators.uniqueItems, - "uniqueKeys": _validators.uniqueKeys, + "$ref": _keywords.ref, + "additionalProperties": _keywords.additionalProperties, + "allOf": _keywords.allOf, + "anyOf": _keywords.anyOf, + "const": _keywords.const, + "contains": _keywords.contains, + "dependencies": _keywords.dependencies, + "dependentRequired": _keywords.dependentRequired, + "dependentExcluded": _keywords.dependentExcluded, + "enum": _keywords.enum, + "exclusiveMaximum": _keywords.exclusiveMaximum, + "exclusiveMinimum": _keywords.exclusiveMinimum, + "format": _keywords.format, + "if": _keywords.if_, + "items": _keywords.items, + "maxItems": _keywords.maxItems, + "maxLength": _keywords.maxLength, + "maxProperties": _keywords.maxProperties, + "maximum": _keywords.maximum, + "minItems": _keywords.minItems, + "minLength": _keywords.minLength, + "minProperties": _keywords.minProperties, + "minimum": _keywords.minimum, + "multipleOf": _keywords.multipleOf, + "not": _keywords.not_, + "oneOf": _keywords.oneOf, + "pattern": _keywords.pattern, + "patternProperties": _keywords.patternProperties, + "prefixItems": _keywords.prefixItems, + "properties": _keywords.properties, + "propertyNames": _keywords.propertyNames, + "required": _keywords.required, + "requiredXor": _keywords.requiredXor, + "requiredOr": _keywords.requiredOr, + "type": _keywords.type, + "uniqueItems": _keywords.uniqueItems, + "uniqueKeys": _keywords.uniqueKeys, } CfnTemplateValidator = create( validators={ **_standard_validators, - **_validators_cfn.cfn_validators, + **_keywords_cfn.cfn_validators, }, function_filter=FunctionFilter(), fn_resolvers=_resolvers_cfn.fn_resolvers, diff --git a/src/cfnlint/rules/conditions/Configuration.py b/src/cfnlint/rules/conditions/Configuration.py index e03a9b8e39..50fb4f6ded 100644 --- a/src/cfnlint/rules/conditions/Configuration.py +++ b/src/cfnlint/rules/conditions/Configuration.py @@ -8,7 +8,7 @@ from cfnlint.data.schemas.other import conditions as schema_conditions from cfnlint.helpers import FUNCTION_CONDITIONS, load_resource from cfnlint.jsonschema import Validator -from cfnlint.jsonschema._validators_cfn import cfn_type +from cfnlint.jsonschema._keywords_cfn import cfn_type from cfnlint.rules.jsonschema.Base import BaseJsonSchema diff --git a/src/cfnlint/rules/jsonschema/CfnLintJsonSchema.py b/src/cfnlint/rules/jsonschema/CfnLintJsonSchema.py index fe0f8762c8..fca3ffe75f 100644 --- a/src/cfnlint/rules/jsonschema/CfnLintJsonSchema.py +++ b/src/cfnlint/rules/jsonschema/CfnLintJsonSchema.py @@ -10,7 +10,7 @@ from cfnlint.helpers import load_resource from cfnlint.jsonschema import ValidationError -from cfnlint.jsonschema._validators import type +from cfnlint.jsonschema._keywords import type from cfnlint.jsonschema.exceptions import best_match from cfnlint.rules.jsonschema.Base import BaseJsonSchema diff --git a/src/cfnlint/rules/parameters/AllowedPattern.py b/src/cfnlint/rules/parameters/AllowedPattern.py index 0bf1ef23b4..0054b329e6 100644 --- a/src/cfnlint/rules/parameters/AllowedPattern.py +++ b/src/cfnlint/rules/parameters/AllowedPattern.py @@ -3,7 +3,7 @@ SPDX-License-Identifier: MIT-0 """ -from cfnlint.jsonschema._validators import pattern +from cfnlint.jsonschema._keywords import pattern from cfnlint.rules import CloudFormationLintRule diff --git a/src/cfnlint/rules/parameters/AllowedValue.py b/src/cfnlint/rules/parameters/AllowedValue.py index 695035b98c..af5adf66e6 100644 --- a/src/cfnlint/rules/parameters/AllowedValue.py +++ b/src/cfnlint/rules/parameters/AllowedValue.py @@ -3,7 +3,7 @@ SPDX-License-Identifier: MIT-0 """ -from cfnlint.jsonschema._validators import enum +from cfnlint.jsonschema._keywords import enum from cfnlint.rules import CloudFormationLintRule diff --git a/src/cfnlint/rules/resources/properties/Enum.py b/src/cfnlint/rules/resources/properties/Enum.py index 190287a78c..88d0ab1cc0 100644 --- a/src/cfnlint/rules/resources/properties/Enum.py +++ b/src/cfnlint/rules/resources/properties/Enum.py @@ -3,7 +3,7 @@ SPDX-License-Identifier: MIT-0 """ -from cfnlint.jsonschema._validators import enum +from cfnlint.jsonschema._keywords import enum from cfnlint.rules import CloudFormationLintRule diff --git a/src/cfnlint/rules/resources/properties/MinMax.py b/src/cfnlint/rules/resources/properties/MinMax.py index f2130066b0..3167738191 100644 --- a/src/cfnlint/rules/resources/properties/MinMax.py +++ b/src/cfnlint/rules/resources/properties/MinMax.py @@ -3,7 +3,7 @@ SPDX-License-Identifier: MIT-0 """ -from cfnlint.jsonschema._validators import ( +from cfnlint.jsonschema._keywords import ( exclusiveMaximum, exclusiveMinimum, maximum, diff --git a/src/cfnlint/rules/resources/properties/Pattern.py b/src/cfnlint/rules/resources/properties/Pattern.py index d1fcbf7f47..3fb75a1405 100644 --- a/src/cfnlint/rules/resources/properties/Pattern.py +++ b/src/cfnlint/rules/resources/properties/Pattern.py @@ -5,7 +5,7 @@ import regex as re -from cfnlint.jsonschema._validators import pattern +from cfnlint.jsonschema._keywords import pattern from cfnlint.rules import CloudFormationLintRule diff --git a/src/cfnlint/rules/resources/properties/Type.py b/src/cfnlint/rules/resources/properties/Type.py index 27f5ddf5af..5c575b6cc0 100644 --- a/src/cfnlint/rules/resources/properties/Type.py +++ b/src/cfnlint/rules/resources/properties/Type.py @@ -3,8 +3,8 @@ SPDX-License-Identifier: MIT-0 """ +from cfnlint.jsonschema._keywords_cfn import cfn_type from cfnlint.jsonschema._utils import ensure_list -from cfnlint.jsonschema._validators_cfn import cfn_type from cfnlint.rules import CloudFormationLintRule diff --git a/test/unit/module/jsonschema/test_validators_cfn.py b/test/unit/module/jsonschema/test_keywords_cfn.py similarity index 98% rename from test/unit/module/jsonschema/test_validators_cfn.py rename to test/unit/module/jsonschema/test_keywords_cfn.py index ffab05c973..a6c71f6ef1 100644 --- a/test/unit/module/jsonschema/test_validators_cfn.py +++ b/test/unit/module/jsonschema/test_keywords_cfn.py @@ -8,7 +8,7 @@ from typing import List from cfnlint.context import Context -from cfnlint.jsonschema._validators_cfn import cfn_type +from cfnlint.jsonschema._keywords_cfn import cfn_type from cfnlint.jsonschema.exceptions import UnknownType from cfnlint.jsonschema.validators import CfnTemplateValidator diff --git a/test/unit/module/jsonschema/test_validator.py b/test/unit/module/jsonschema/test_validator.py index b3a10bad1c..963f757e30 100644 --- a/test/unit/module/jsonschema/test_validator.py +++ b/test/unit/module/jsonschema/test_validator.py @@ -1102,6 +1102,20 @@ def test_validator(name, schema, instance, expected, validator): [], [], ), + ( + "valid prefixItems", + {"prefixItems": [{"type": "string"}]}, + ["foo"], + [], + ), + ( + "invalid prefixItems with wrong type", + {"prefixItems": [{"type": "string"}]}, + [1], + [ + ValidationError("1 is not of type 'string'"), + ], + ), ], ) @patch.object(ValidationError, "__eq__", spec=True, new=_eq) diff --git a/test/unit/rules/functions/test_ref.py b/test/unit/rules/functions/test_ref.py index 747b3af0f5..5452176f54 100644 --- a/test/unit/rules/functions/test_ref.py +++ b/test/unit/rules/functions/test_ref.py @@ -10,7 +10,7 @@ from cfnlint.context import create_context_for_template from cfnlint.context.context import Transforms from cfnlint.jsonschema import CfnTemplateValidator, ValidationError -from cfnlint.jsonschema._validators_cfn import FnItems +from cfnlint.jsonschema._keywords_cfn import FnItems from cfnlint.rules.functions.Ref import Ref from cfnlint.template import Template From 0934250a98f3adc0146d602d75060f28348a1080 Mon Sep 17 00:00:00 2001 From: Kevin DeJong Date: Fri, 5 Apr 2024 08:44:44 -0700 Subject: [PATCH 3/3] Remove requiredOr for anyOf --- docs/cfn-schema-specification.md | 41 +- scripts/update_schemas_manually.py | 14 +- ...646b563d773e34b020d0ddeab2fe195b.meta.json | 2 +- ...6bb7f975b606f8db57532faddfcdd8c8.meta.json | 2 +- ...6cd7e4ced378cacdb93f76ed227b5c5d.meta.json | 2 +- ...41c64a9c91b2fa5b4928c0d9b2f780b0.meta.json | 2 +- .../extensions/all/aws_iam_policy/manual.json | 20 +- .../extensions/all/aws_s3_bucket/manual.json | 14 +- .../schemas/providers/af_south_1/__init__.py | 2 - .../aws-ec2-securitygroupingress.json | 5 - ...s-elasticloadbalancingv2-loadbalancer.json | 3 +- .../schemas/providers/ap_east_1/__init__.py | 2 - .../aws-ec2-securitygroupingress.json | 5 - ...s-elasticloadbalancingv2-loadbalancer.json | 193 ++++ .../providers/ap_northeast_1/__init__.py | 3 +- ...s-elasticloadbalancingv2-loadbalancer.json | 193 ++++ ...ws-verifiedpermissions-identitysource.json | 221 ---- .../providers/ap_northeast_2/__init__.py | 3 +- .../aws-ec2-securitygroupingress.json | 5 - ...s-elasticloadbalancingv2-loadbalancer.json | 193 ++++ ...ws-verifiedpermissions-identitysource.json | 221 ---- .../providers/ap_northeast_3/__init__.py | 2 - .../aws-ec2-securitygroupingress.json | 5 - ...s-elasticloadbalancingv2-loadbalancer.json | 193 ++++ .../schemas/providers/ap_south_1/__init__.py | 3 +- .../aws-ec2-securitygroupingress.json | 116 +++ ...s-elasticloadbalancingv2-loadbalancer.json | 193 ++++ ...ws-verifiedpermissions-identitysource.json | 221 ---- .../schemas/providers/ap_south_2/__init__.py | 2 - .../aws-ec2-securitygroupingress.json | 116 +++ ...s-elasticloadbalancingv2-loadbalancer.json | 193 ++++ .../providers/ap_southeast_1/__init__.py | 3 +- ...s-elasticloadbalancingv2-loadbalancer.json | 193 ++++ ...ws-verifiedpermissions-identitysource.json | 221 ---- .../providers/ap_southeast_2/__init__.py | 3 +- .../aws-ec2-securitygroupingress.json | 116 +++ ...s-elasticloadbalancingv2-loadbalancer.json | 193 ++++ ...ws-verifiedpermissions-identitysource.json | 221 ---- .../providers/ap_southeast_3/__init__.py | 2 - .../aws-ec2-securitygroupingress.json | 116 +++ ...s-elasticloadbalancingv2-loadbalancer.json | 193 ++++ .../providers/ap_southeast_4/__init__.py | 2 - .../aws-ec2-securitygroupingress.json | 116 +++ ...s-elasticloadbalancingv2-loadbalancer.json | 193 ++++ .../providers/ca_central_1/__init__.py | 3 +- .../aws-ec2-securitygroupingress.json | 116 +++ ...s-elasticloadbalancingv2-loadbalancer.json | 193 ++++ ...ws-verifiedpermissions-identitysource.json | 221 ---- .../schemas/providers/ca_west_1/__init__.py | 2 +- ...s-elasticloadbalancingv2-loadbalancer.json | 193 ++++ .../providers/ca_west_1/aws-iam-policy.json | 22 +- .../schemas/providers/cn_north_1/__init__.py | 1 + .../providers/cn_northwest_1/__init__.py | 2 - .../aws-ec2-securitygroupingress.json | 116 +++ ...s-elasticloadbalancingv2-loadbalancer.json | 193 ++++ .../providers/eu_central_1/__init__.py | 3 + ...ws-verifiedpermissions-identitysource.json | 221 ---- .../providers/eu_central_2/__init__.py | 2 - .../aws-ec2-securitygroupingress.json | 116 +++ ...s-elasticloadbalancingv2-loadbalancer.json | 193 ++++ .../schemas/providers/eu_north_1/__init__.py | 3 +- .../aws-ec2-securitygroupingress.json | 116 +++ ...s-elasticloadbalancingv2-loadbalancer.json | 193 ++++ ...ws-verifiedpermissions-identitysource.json | 221 ---- .../schemas/providers/eu_south_1/__init__.py | 3 +- .../aws-ec2-securitygroupingress.json | 116 +++ ...s-elasticloadbalancingv2-loadbalancer.json | 193 ++++ ...ws-verifiedpermissions-identitysource.json | 221 ---- .../schemas/providers/eu_south_2/__init__.py | 2 - .../aws-ec2-securitygroupingress.json | 116 +++ ...s-elasticloadbalancingv2-loadbalancer.json | 193 ++++ .../schemas/providers/eu_west_1/__init__.py | 3 +- .../aws-ec2-securitygroupingress.json | 116 +++ ...s-elasticloadbalancingv2-loadbalancer.json | 193 ++++ ...ws-verifiedpermissions-identitysource.json | 221 ---- .../schemas/providers/eu_west_2/__init__.py | 3 +- .../aws-ec2-securitygroupingress.json | 116 +++ ...s-elasticloadbalancingv2-loadbalancer.json | 193 ++++ ...ws-verifiedpermissions-identitysource.json | 221 ---- .../schemas/providers/eu_west_3/__init__.py | 3 +- .../aws-ec2-securitygroupingress.json | 116 +++ ...s-elasticloadbalancingv2-loadbalancer.json | 193 ++++ ...ws-verifiedpermissions-identitysource.json | 221 ---- .../providers/me_central_1/__init__.py | 2 - .../aws-ec2-securitygroupingress.json | 116 +++ ...s-elasticloadbalancingv2-loadbalancer.json | 193 ++++ .../schemas/providers/me_south_1/__init__.py | 3 +- .../aws-ec2-securitygroupingress.json | 116 +++ ...s-elasticloadbalancingv2-loadbalancer.json | 193 ++++ ...ws-verifiedpermissions-identitysource.json | 221 ---- .../schemas/providers/sa_east_1/__init__.py | 3 +- .../aws-ec2-securitygroupingress.json | 116 +++ ...s-elasticloadbalancingv2-loadbalancer.json | 193 ++++ ...ws-verifiedpermissions-identitysource.json | 221 ---- .../aws-ec2-securitygroupingress.json | 5 + ...s-elasticloadbalancingv2-loadbalancer.json | 3 +- .../providers/us_east_1/aws-iam-policy.json | 22 +- .../providers/us_east_1/aws-s3-bucket.json | 16 +- ...ws-verifiedpermissions-identitysource.json | 21 + .../schemas/providers/us_east_2/__init__.py | 3 +- .../aws-ec2-securitygroupingress.json | 116 +++ ...s-elasticloadbalancingv2-loadbalancer.json | 193 ++++ ...ws-verifiedpermissions-identitysource.json | 221 ---- .../providers/us_gov_east_1/__init__.py | 1 - ...s-elasticloadbalancingv2-loadbalancer.json | 193 ++++ .../us_gov_east_1/aws-iam-policy.json | 22 +- .../providers/us_gov_west_1/__init__.py | 1 - ...s-elasticloadbalancingv2-loadbalancer.json | 193 ++++ .../us_gov_west_1/aws-iam-policy.json | 22 +- .../schemas/providers/us_west_1/__init__.py | 3 +- .../aws-ec2-securitygroupingress.json | 116 +++ ...s-elasticloadbalancingv2-loadbalancer.json | 193 ++++ ...ws-verifiedpermissions-identitysource.json | 221 ---- .../schemas/providers/us_west_2/__init__.py | 5 +- .../aws-batch-jobdefinition.json} | 981 +++++++++--------- .../us_west_2/aws-ec2-customergateway.json | 113 ++ .../aws-ec2-securitygroupingress.json | 121 --- .../us_west_2/aws-gamelift-fleet.json | 523 ++++++++++ ...ws-verifiedpermissions-identitysource.json | 221 ---- src/cfnlint/jsonschema/_keywords.py | 10 - src/cfnlint/jsonschema/validators.py | 1 - .../rules/resources/properties/Properties.py | 1 - .../rules/resources/properties/RequiredOr.py | 16 - test/unit/module/jsonschema/test_validator.py | 28 - 124 files changed, 8735 insertions(+), 4562 deletions(-) rename src/cfnlint/data/schemas/providers/{ap_northeast_1 => af_south_1}/aws-ec2-securitygroupingress.json (77%) rename src/cfnlint/data/schemas/providers/{eu_central_1 => af_south_1}/aws-elasticloadbalancingv2-loadbalancer.json (99%) rename src/cfnlint/data/schemas/providers/{ap_southeast_1 => ap_east_1}/aws-ec2-securitygroupingress.json (77%) create mode 100644 src/cfnlint/data/schemas/providers/ap_east_1/aws-elasticloadbalancingv2-loadbalancer.json create mode 100644 src/cfnlint/data/schemas/providers/ap_northeast_1/aws-elasticloadbalancingv2-loadbalancer.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_northeast_1/aws-verifiedpermissions-identitysource.json rename src/cfnlint/data/schemas/providers/{cn_north_1 => ap_northeast_2}/aws-ec2-securitygroupingress.json (77%) create mode 100644 src/cfnlint/data/schemas/providers/ap_northeast_2/aws-elasticloadbalancingv2-loadbalancer.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_northeast_2/aws-verifiedpermissions-identitysource.json rename src/cfnlint/data/schemas/providers/{eu_central_1 => ap_northeast_3}/aws-ec2-securitygroupingress.json (77%) create mode 100644 src/cfnlint/data/schemas/providers/ap_northeast_3/aws-elasticloadbalancingv2-loadbalancer.json create mode 100644 src/cfnlint/data/schemas/providers/ap_south_1/aws-ec2-securitygroupingress.json create mode 100644 src/cfnlint/data/schemas/providers/ap_south_1/aws-elasticloadbalancingv2-loadbalancer.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_south_1/aws-verifiedpermissions-identitysource.json create mode 100644 src/cfnlint/data/schemas/providers/ap_south_2/aws-ec2-securitygroupingress.json create mode 100644 src/cfnlint/data/schemas/providers/ap_south_2/aws-elasticloadbalancingv2-loadbalancer.json create mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_1/aws-elasticloadbalancingv2-loadbalancer.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_1/aws-verifiedpermissions-identitysource.json create mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_2/aws-ec2-securitygroupingress.json create mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_2/aws-elasticloadbalancingv2-loadbalancer.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_2/aws-verifiedpermissions-identitysource.json create mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_3/aws-ec2-securitygroupingress.json create mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_3/aws-elasticloadbalancingv2-loadbalancer.json create mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_4/aws-ec2-securitygroupingress.json create mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_4/aws-elasticloadbalancingv2-loadbalancer.json create mode 100644 src/cfnlint/data/schemas/providers/ca_central_1/aws-ec2-securitygroupingress.json create mode 100644 src/cfnlint/data/schemas/providers/ca_central_1/aws-elasticloadbalancingv2-loadbalancer.json delete mode 100644 src/cfnlint/data/schemas/providers/ca_central_1/aws-verifiedpermissions-identitysource.json create mode 100644 src/cfnlint/data/schemas/providers/ca_west_1/aws-elasticloadbalancingv2-loadbalancer.json create mode 100644 src/cfnlint/data/schemas/providers/cn_northwest_1/aws-ec2-securitygroupingress.json create mode 100644 src/cfnlint/data/schemas/providers/cn_northwest_1/aws-elasticloadbalancingv2-loadbalancer.json delete mode 100644 src/cfnlint/data/schemas/providers/eu_central_1/aws-verifiedpermissions-identitysource.json create mode 100644 src/cfnlint/data/schemas/providers/eu_central_2/aws-ec2-securitygroupingress.json create mode 100644 src/cfnlint/data/schemas/providers/eu_central_2/aws-elasticloadbalancingv2-loadbalancer.json create mode 100644 src/cfnlint/data/schemas/providers/eu_north_1/aws-ec2-securitygroupingress.json create mode 100644 src/cfnlint/data/schemas/providers/eu_north_1/aws-elasticloadbalancingv2-loadbalancer.json delete mode 100644 src/cfnlint/data/schemas/providers/eu_north_1/aws-verifiedpermissions-identitysource.json create mode 100644 src/cfnlint/data/schemas/providers/eu_south_1/aws-ec2-securitygroupingress.json create mode 100644 src/cfnlint/data/schemas/providers/eu_south_1/aws-elasticloadbalancingv2-loadbalancer.json delete mode 100644 src/cfnlint/data/schemas/providers/eu_south_1/aws-verifiedpermissions-identitysource.json create mode 100644 src/cfnlint/data/schemas/providers/eu_south_2/aws-ec2-securitygroupingress.json create mode 100644 src/cfnlint/data/schemas/providers/eu_south_2/aws-elasticloadbalancingv2-loadbalancer.json create mode 100644 src/cfnlint/data/schemas/providers/eu_west_1/aws-ec2-securitygroupingress.json create mode 100644 src/cfnlint/data/schemas/providers/eu_west_1/aws-elasticloadbalancingv2-loadbalancer.json delete mode 100644 src/cfnlint/data/schemas/providers/eu_west_1/aws-verifiedpermissions-identitysource.json create mode 100644 src/cfnlint/data/schemas/providers/eu_west_2/aws-ec2-securitygroupingress.json create mode 100644 src/cfnlint/data/schemas/providers/eu_west_2/aws-elasticloadbalancingv2-loadbalancer.json delete mode 100644 src/cfnlint/data/schemas/providers/eu_west_2/aws-verifiedpermissions-identitysource.json create mode 100644 src/cfnlint/data/schemas/providers/eu_west_3/aws-ec2-securitygroupingress.json create mode 100644 src/cfnlint/data/schemas/providers/eu_west_3/aws-elasticloadbalancingv2-loadbalancer.json delete mode 100644 src/cfnlint/data/schemas/providers/eu_west_3/aws-verifiedpermissions-identitysource.json create mode 100644 src/cfnlint/data/schemas/providers/me_central_1/aws-ec2-securitygroupingress.json create mode 100644 src/cfnlint/data/schemas/providers/me_central_1/aws-elasticloadbalancingv2-loadbalancer.json create mode 100644 src/cfnlint/data/schemas/providers/me_south_1/aws-ec2-securitygroupingress.json create mode 100644 src/cfnlint/data/schemas/providers/me_south_1/aws-elasticloadbalancingv2-loadbalancer.json delete mode 100644 src/cfnlint/data/schemas/providers/me_south_1/aws-verifiedpermissions-identitysource.json create mode 100644 src/cfnlint/data/schemas/providers/sa_east_1/aws-ec2-securitygroupingress.json create mode 100644 src/cfnlint/data/schemas/providers/sa_east_1/aws-elasticloadbalancingv2-loadbalancer.json delete mode 100644 src/cfnlint/data/schemas/providers/sa_east_1/aws-verifiedpermissions-identitysource.json create mode 100644 src/cfnlint/data/schemas/providers/us_east_2/aws-ec2-securitygroupingress.json create mode 100644 src/cfnlint/data/schemas/providers/us_east_2/aws-elasticloadbalancingv2-loadbalancer.json delete mode 100644 src/cfnlint/data/schemas/providers/us_east_2/aws-verifiedpermissions-identitysource.json create mode 100644 src/cfnlint/data/schemas/providers/us_gov_east_1/aws-elasticloadbalancingv2-loadbalancer.json create mode 100644 src/cfnlint/data/schemas/providers/us_gov_west_1/aws-elasticloadbalancingv2-loadbalancer.json create mode 100644 src/cfnlint/data/schemas/providers/us_west_1/aws-ec2-securitygroupingress.json create mode 100644 src/cfnlint/data/schemas/providers/us_west_1/aws-elasticloadbalancingv2-loadbalancer.json delete mode 100644 src/cfnlint/data/schemas/providers/us_west_1/aws-verifiedpermissions-identitysource.json rename src/cfnlint/data/schemas/providers/{ca_west_1/aws-ecs-taskdefinition.json => us_west_2/aws-batch-jobdefinition.json} (50%) create mode 100644 src/cfnlint/data/schemas/providers/us_west_2/aws-ec2-customergateway.json delete mode 100644 src/cfnlint/data/schemas/providers/us_west_2/aws-ec2-securitygroupingress.json create mode 100644 src/cfnlint/data/schemas/providers/us_west_2/aws-gamelift-fleet.json delete mode 100644 src/cfnlint/data/schemas/providers/us_west_2/aws-verifiedpermissions-identitysource.json delete mode 100644 src/cfnlint/rules/resources/properties/RequiredOr.py diff --git a/docs/cfn-schema-specification.md b/docs/cfn-schema-specification.md index 276509bbad..1135ffc1cd 100644 --- a/docs/cfn-schema-specification.md +++ b/docs/cfn-schema-specification.md @@ -67,44 +67,6 @@ is equivalent to the JSON schema } ``` -#### requiredOr -*requiredOr* is used to define when at least one property from a set properties is required. - -On the following defined object -```json -{ - "properties": { - "a": true, - "b": true, - "c": true - }, - "additionalProperties": false -} -``` - -The cfn-lint schema -```json -{ - "requiredOr": ["a", "b", "c"] -} -``` -is equivalent to the JSON schema -```json -{ - "anyOf": [ - { - "required": ["a"] - }, - { - "required": ["b"] - }, - { - "required": ["c"] - } - ] -} -``` - #### propertiesNand *propertiesNand* is used to define when none or only one property from a set properties can be defined. @@ -189,3 +151,6 @@ is equivalent to the JSON schema } } ``` + +#### prefixItems +*prefixItems* is similar to the definition of [prefixItems](https://json-schema.org/understanding-json-schema/reference/array#tupleValidation) but doesn't actually do the prefix. The current resource schema doesn't support [items](https://json-schema.org/understanding-json-schema/reference/array#items) being an array. We use `prefixItems` to validate array items where ordering matters. diff --git a/scripts/update_schemas_manually.py b/scripts/update_schemas_manually.py index 21c28be984..88e5bec6d1 100755 --- a/scripts/update_schemas_manually.py +++ b/scripts/update_schemas_manually.py @@ -1069,7 +1069,13 @@ resource_type="AWS::IAM::Policy", patches=[ Patch( - values={"requiredOr": ["Users", "Groups", "Roles"]}, + values={ + "anyOf": [ + {"required": ["Users"]}, + {"required": ["Groups"]}, + {"required": ["Roles"]}, + ] + }, path="/", ), Patch( @@ -1413,9 +1419,9 @@ ), Patch( values={ - "requiredOr": [ - "HttpErrorCodeReturnedEquals", - "KeyPrefixEquals", + "anyOf": [ + {"required": ["HttpErrorCodeReturnedEquals"]}, + {"required": ["KeyPrefixEquals"]}, ], }, path="/definitions/RoutingRuleCondition", diff --git a/src/cfnlint/data/DownloadsMetadata/583721567eccd1d5855daa623819df1a646b563d773e34b020d0ddeab2fe195b.meta.json b/src/cfnlint/data/DownloadsMetadata/583721567eccd1d5855daa623819df1a646b563d773e34b020d0ddeab2fe195b.meta.json index b35f48ca92..6b9e2b09a8 100644 --- a/src/cfnlint/data/DownloadsMetadata/583721567eccd1d5855daa623819df1a646b563d773e34b020d0ddeab2fe195b.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/583721567eccd1d5855daa623819df1a646b563d773e34b020d0ddeab2fe195b.meta.json @@ -1 +1 @@ -{"etag": "\"8019a0070e5f1529dafb7259ca68c54b\"", "url": "https://schema.cloudformation.ap-southeast-4.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"8dd6c1f3b7329e57e4e29838e00c1666\"", "url": "https://schema.cloudformation.ap-southeast-4.amazonaws.com/CloudformationSchema.zip"} diff --git a/src/cfnlint/data/DownloadsMetadata/d85e2e061cacfcffe4902adb1074a04e6bb7f975b606f8db57532faddfcdd8c8.meta.json b/src/cfnlint/data/DownloadsMetadata/d85e2e061cacfcffe4902adb1074a04e6bb7f975b606f8db57532faddfcdd8c8.meta.json index 7f663912a4..6f9fea4274 100644 --- a/src/cfnlint/data/DownloadsMetadata/d85e2e061cacfcffe4902adb1074a04e6bb7f975b606f8db57532faddfcdd8c8.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/d85e2e061cacfcffe4902adb1074a04e6bb7f975b606f8db57532faddfcdd8c8.meta.json @@ -1 +1 @@ -{"etag": "\"ca8b6babd6f5e5fb59a4082a06108161\"", "url": "https://schema.cloudformation.ca-west-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"c75197f406b5d8927f0747a7a04d93bc\"", "url": "https://schema.cloudformation.ca-west-1.amazonaws.com/CloudformationSchema.zip"} diff --git a/src/cfnlint/data/DownloadsMetadata/f1896c9151984eec294af1eddf64260f6cd7e4ced378cacdb93f76ed227b5c5d.meta.json b/src/cfnlint/data/DownloadsMetadata/f1896c9151984eec294af1eddf64260f6cd7e4ced378cacdb93f76ed227b5c5d.meta.json index 1609876f25..046daec658 100644 --- a/src/cfnlint/data/DownloadsMetadata/f1896c9151984eec294af1eddf64260f6cd7e4ced378cacdb93f76ed227b5c5d.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/f1896c9151984eec294af1eddf64260f6cd7e4ced378cacdb93f76ed227b5c5d.meta.json @@ -1 +1 @@ -{"etag": "\"82cde0740ebe5c7ed1ffac6f8cde2a60\"", "url": "https://schema.cloudformation.us-west-2.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"2cbd6ee138716bec454cd73632d62cdb\"", "url": "https://schema.cloudformation.us-west-2.amazonaws.com/CloudformationSchema.zip"} diff --git a/src/cfnlint/data/DownloadsMetadata/f54eee6f8ad9619f41835b700369cdbb41c64a9c91b2fa5b4928c0d9b2f780b0.meta.json b/src/cfnlint/data/DownloadsMetadata/f54eee6f8ad9619f41835b700369cdbb41c64a9c91b2fa5b4928c0d9b2f780b0.meta.json index 32c3d02766..d3645291c0 100644 --- a/src/cfnlint/data/DownloadsMetadata/f54eee6f8ad9619f41835b700369cdbb41c64a9c91b2fa5b4928c0d9b2f780b0.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/f54eee6f8ad9619f41835b700369cdbb41c64a9c91b2fa5b4928c0d9b2f780b0.meta.json @@ -1 +1 @@ -{"etag": "\"50c25c47cc0bf5c52a61d1cc2c7deec1\"", "url": "https://schema.cloudformation.us-east-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"a404313c67027ffa74514704a92f8e7e\"", "url": "https://schema.cloudformation.us-east-1.amazonaws.com/CloudformationSchema.zip"} diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_iam_policy/manual.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_iam_policy/manual.json index afcd61fb12..527128b6ac 100644 --- a/src/cfnlint/data/schemas/patches/extensions/all/aws_iam_policy/manual.json +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_iam_policy/manual.json @@ -1,11 +1,23 @@ [ { "op": "add", - "path": "/requiredOr", + "path": "/anyOf", "value": [ - "Users", - "Groups", - "Roles" + { + "required": [ + "Users" + ] + }, + { + "required": [ + "Groups" + ] + }, + { + "required": [ + "Roles" + ] + } ] }, { diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_s3_bucket/manual.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_s3_bucket/manual.json index d0de46af29..8f5cdcf92e 100644 --- a/src/cfnlint/data/schemas/patches/extensions/all/aws_s3_bucket/manual.json +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_s3_bucket/manual.json @@ -16,10 +16,18 @@ }, { "op": "add", - "path": "/definitions/RoutingRuleCondition/requiredOr", + "path": "/definitions/RoutingRuleCondition/anyOf", "value": [ - "HttpErrorCodeReturnedEquals", - "KeyPrefixEquals" + { + "required": [ + "HttpErrorCodeReturnedEquals" + ] + }, + { + "required": [ + "KeyPrefixEquals" + ] + } ] }, { diff --git a/src/cfnlint/data/schemas/providers/af_south_1/__init__.py b/src/cfnlint/data/schemas/providers/af_south_1/__init__.py index 406f640a22..1ae1128133 100644 --- a/src/cfnlint/data/schemas/providers/af_south_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/af_south_1/__init__.py @@ -1067,7 +1067,6 @@ "aws-efs-accesspoint.json", "aws-redshift-clustersecuritygroupingress.json", "aws-servicecatalogappregistry-attributegroupassociation.json", - "aws-elasticloadbalancingv2-loadbalancer.json", "aws-opensearchservice-domain.json", "aws-servicediscovery-instance.json", "aws-elasticsearch-domain.json", @@ -1391,7 +1390,6 @@ "aws-organizations-organizationalunit.json", "aws-appsync-datasource.json", "aws-sqs-queue.json", - "aws-ec2-securitygroupingress.json", "aws-guardduty-detector.json", "aws-appflow-flow.json", "aws-apigateway-stage.json", diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-ec2-securitygroupingress.json b/src/cfnlint/data/schemas/providers/af_south_1/aws-ec2-securitygroupingress.json similarity index 77% rename from src/cfnlint/data/schemas/providers/ap_northeast_1/aws-ec2-securitygroupingress.json rename to src/cfnlint/data/schemas/providers/af_south_1/aws-ec2-securitygroupingress.json index 83ebc2ae5c..e127b28031 100644 --- a/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-ec2-securitygroupingress.json +++ b/src/cfnlint/data/schemas/providers/af_south_1/aws-ec2-securitygroupingress.json @@ -92,11 +92,6 @@ "type": "integer" } }, - "propertyTransform": { - "/properties/FromPort": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$ipProtocol := $mapVal ? $mapVal : $lowercase(IpProtocol);$ipProtocol in ['imcp', 'tcp', 'udp', 'imcp'] ? FromPort : -1)", - "/properties/IpProtocol": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$mapVal ? $mapVal : $lowercase(IpProtocol))", - "/properties/ToPort": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$ipProtocol := $mapVal ? $mapVal : $lowercase(IpProtocol);$ipProtocol in ['imcp', 'tcp', 'udp', 'imcp'] ? ToPort : -1)" - }, "readOnlyProperties": [ "/properties/Id" ], diff --git a/src/cfnlint/data/schemas/providers/eu_central_1/aws-elasticloadbalancingv2-loadbalancer.json b/src/cfnlint/data/schemas/providers/af_south_1/aws-elasticloadbalancingv2-loadbalancer.json similarity index 99% rename from src/cfnlint/data/schemas/providers/eu_central_1/aws-elasticloadbalancingv2-loadbalancer.json rename to src/cfnlint/data/schemas/providers/af_south_1/aws-elasticloadbalancingv2-loadbalancer.json index 90b3c53ec8..1f8152439a 100644 --- a/src/cfnlint/data/schemas/providers/eu_central_1/aws-elasticloadbalancingv2-loadbalancer.json +++ b/src/cfnlint/data/schemas/providers/af_south_1/aws-elasticloadbalancingv2-loadbalancer.json @@ -63,8 +63,7 @@ "elasticloadbalancing:DescribeLoadBalancers", "elasticloadbalancing:ModifyLoadBalancerAttributes", "elasticloadbalancing:AddTags" - ], - "timeoutInMinutes": 30 + ] }, "delete": { "permissions": [ 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 684449b5c7..0a157711f4 100644 --- a/src/cfnlint/data/schemas/providers/ap_east_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/ap_east_1/__init__.py @@ -1067,7 +1067,6 @@ "aws-efs-accesspoint.json", "aws-redshift-clustersecuritygroupingress.json", "aws-servicecatalogappregistry-attributegroupassociation.json", - "aws-elasticloadbalancingv2-loadbalancer.json", "aws-opensearchservice-domain.json", "aws-servicediscovery-instance.json", "aws-elasticsearch-domain.json", @@ -1396,7 +1395,6 @@ "aws-organizations-organizationalunit.json", "aws-appsync-datasource.json", "aws-sqs-queue.json", - "aws-ec2-securitygroupingress.json", "aws-guardduty-detector.json", "aws-sagemaker-modelqualityjobdefinition.json", "aws-iot-provisioningtemplate.json", diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-ec2-securitygroupingress.json b/src/cfnlint/data/schemas/providers/ap_east_1/aws-ec2-securitygroupingress.json similarity index 77% rename from src/cfnlint/data/schemas/providers/ap_southeast_1/aws-ec2-securitygroupingress.json rename to src/cfnlint/data/schemas/providers/ap_east_1/aws-ec2-securitygroupingress.json index 83ebc2ae5c..e127b28031 100644 --- a/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-ec2-securitygroupingress.json +++ b/src/cfnlint/data/schemas/providers/ap_east_1/aws-ec2-securitygroupingress.json @@ -92,11 +92,6 @@ "type": "integer" } }, - "propertyTransform": { - "/properties/FromPort": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$ipProtocol := $mapVal ? $mapVal : $lowercase(IpProtocol);$ipProtocol in ['imcp', 'tcp', 'udp', 'imcp'] ? FromPort : -1)", - "/properties/IpProtocol": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$mapVal ? $mapVal : $lowercase(IpProtocol))", - "/properties/ToPort": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$ipProtocol := $mapVal ? $mapVal : $lowercase(IpProtocol);$ipProtocol in ['imcp', 'tcp', 'udp', 'imcp'] ? ToPort : -1)" - }, "readOnlyProperties": [ "/properties/Id" ], diff --git a/src/cfnlint/data/schemas/providers/ap_east_1/aws-elasticloadbalancingv2-loadbalancer.json b/src/cfnlint/data/schemas/providers/ap_east_1/aws-elasticloadbalancingv2-loadbalancer.json new file mode 100644 index 0000000000..1f8152439a --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_east_1/aws-elasticloadbalancingv2-loadbalancer.json @@ -0,0 +1,193 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Type", + "/properties/Scheme" + ], + "definitions": { + "LoadBalancerAttribute": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "SubnetMapping": { + "additionalProperties": false, + "properties": { + "AllocationId": { + "type": "string" + }, + "IPv6Address": { + "type": "string" + }, + "PrivateIPv4Address": { + "type": "string" + }, + "SubnetId": { + "type": "string" + } + }, + "required": [ + "SubnetId" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "documentationUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html", + "handlers": { + "create": { + "permissions": [ + "elasticloadbalancing:CreateLoadBalancer", + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:AddTags" + ] + }, + "delete": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DeleteLoadBalancer" + ] + }, + "list": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers" + ] + }, + "read": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DescribeLoadBalancerAttributes", + "elasticloadbalancing:DescribeTags" + ] + }, + "update": { + "permissions": [ + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:SetSubnets", + "elasticloadbalancing:SetIpAddressType", + "elasticloadbalancing:SetSecurityGroups", + "elasticloadbalancing:AddTags", + "elasticloadbalancing:RemoveTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/LoadBalancerArn" + ], + "properties": { + "CanonicalHostedZoneID": { + "type": "string" + }, + "DNSName": { + "type": "string" + }, + "EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic": { + "type": "string" + }, + "IpAddressType": { + "type": "string" + }, + "LoadBalancerArn": { + "type": "string" + }, + "LoadBalancerAttributes": { + "arrayType": "AttributeList", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LoadBalancerAttribute" + }, + "type": "array", + "uniqueItems": true + }, + "LoadBalancerFullName": { + "type": "string" + }, + "LoadBalancerName": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Scheme": { + "type": "string" + }, + "SecurityGroups": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "SubnetMappings": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SubnetMapping" + }, + "type": "array", + "uniqueItems": true + }, + "Subnets": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Type": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/LoadBalancerName", + "/properties/LoadBalancerFullName", + "/properties/CanonicalHostedZoneID", + "/properties/LoadBalancerArn", + "/properties/DNSName" + ], + "requiredXor": [ + "SubnetMappings", + "Subnets" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticloadbalancingv2", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ElasticLoadBalancingV2::LoadBalancer" +} 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 ff45eb56b7..e6458094dd 100644 --- a/src/cfnlint/data/schemas/providers/ap_northeast_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/ap_northeast_1/__init__.py @@ -1671,7 +1671,6 @@ "aws-efs-accesspoint.json", "aws-redshift-clustersecuritygroupingress.json", "aws-servicecatalogappregistry-attributegroupassociation.json", - "aws-elasticloadbalancingv2-loadbalancer.json", "aws-opensearchservice-domain.json", "aws-timestream-database.json", "aws-servicediscovery-instance.json", @@ -1902,6 +1901,7 @@ "aws-datasync-locationefs.json", "aws-ec2-localgatewayroutetable.json", "aws-apigateway-resource.json", + "aws-verifiedpermissions-identitysource.json", "aws-macie-session.json", "aws-elasticloadbalancingv2-targetgroup.json", "aws-applicationautoscaling-scalingpolicy.json", @@ -2189,6 +2189,7 @@ "aws-organizations-organizationalunit.json", "aws-appsync-datasource.json", "aws-sqs-queue.json", + "aws-ec2-securitygroupingress.json", "aws-guardduty-detector.json", "aws-sagemaker-modelqualityjobdefinition.json", "aws-iot-provisioningtemplate.json", diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-elasticloadbalancingv2-loadbalancer.json b/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-elasticloadbalancingv2-loadbalancer.json new file mode 100644 index 0000000000..1f8152439a --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-elasticloadbalancingv2-loadbalancer.json @@ -0,0 +1,193 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Type", + "/properties/Scheme" + ], + "definitions": { + "LoadBalancerAttribute": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "SubnetMapping": { + "additionalProperties": false, + "properties": { + "AllocationId": { + "type": "string" + }, + "IPv6Address": { + "type": "string" + }, + "PrivateIPv4Address": { + "type": "string" + }, + "SubnetId": { + "type": "string" + } + }, + "required": [ + "SubnetId" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "documentationUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html", + "handlers": { + "create": { + "permissions": [ + "elasticloadbalancing:CreateLoadBalancer", + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:AddTags" + ] + }, + "delete": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DeleteLoadBalancer" + ] + }, + "list": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers" + ] + }, + "read": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DescribeLoadBalancerAttributes", + "elasticloadbalancing:DescribeTags" + ] + }, + "update": { + "permissions": [ + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:SetSubnets", + "elasticloadbalancing:SetIpAddressType", + "elasticloadbalancing:SetSecurityGroups", + "elasticloadbalancing:AddTags", + "elasticloadbalancing:RemoveTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/LoadBalancerArn" + ], + "properties": { + "CanonicalHostedZoneID": { + "type": "string" + }, + "DNSName": { + "type": "string" + }, + "EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic": { + "type": "string" + }, + "IpAddressType": { + "type": "string" + }, + "LoadBalancerArn": { + "type": "string" + }, + "LoadBalancerAttributes": { + "arrayType": "AttributeList", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LoadBalancerAttribute" + }, + "type": "array", + "uniqueItems": true + }, + "LoadBalancerFullName": { + "type": "string" + }, + "LoadBalancerName": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Scheme": { + "type": "string" + }, + "SecurityGroups": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "SubnetMappings": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SubnetMapping" + }, + "type": "array", + "uniqueItems": true + }, + "Subnets": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Type": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/LoadBalancerName", + "/properties/LoadBalancerFullName", + "/properties/CanonicalHostedZoneID", + "/properties/LoadBalancerArn", + "/properties/DNSName" + ], + "requiredXor": [ + "SubnetMappings", + "Subnets" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticloadbalancingv2", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ElasticLoadBalancingV2::LoadBalancer" +} diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-verifiedpermissions-identitysource.json b/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-verifiedpermissions-identitysource.json deleted file mode 100644 index 46a0ad88f1..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-verifiedpermissions-identitysource.json +++ /dev/null @@ -1,221 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/PolicyStoreId" - ], - "definitions": { - "CognitoGroupConfiguration": { - "additionalProperties": false, - "properties": { - "GroupEntityType": { - "maxLength": 200, - "minLength": 1, - "pattern": "^([_a-zA-Z][_a-zA-Z0-9]*::)*[_a-zA-Z][_a-zA-Z0-9]*$", - "type": "string" - } - }, - "required": [ - "GroupEntityType" - ], - "type": "object" - }, - "CognitoUserPoolConfiguration": { - "additionalProperties": false, - "properties": { - "ClientIds": { - "insertionOrder": false, - "items": { - "maxLength": 255, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "maxItems": 1000, - "minItems": 0, - "type": "array" - }, - "GroupConfiguration": { - "$ref": "#/definitions/CognitoGroupConfiguration" - }, - "UserPoolArn": { - "maxLength": 255, - "minLength": 1, - "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", - "type": "string" - } - }, - "required": [ - "UserPoolArn" - ], - "type": "object" - }, - "IdentitySourceConfiguration": { - "additionalProperties": false, - "properties": { - "CognitoUserPoolConfiguration": { - "$ref": "#/definitions/CognitoUserPoolConfiguration" - } - }, - "required": [ - "CognitoUserPoolConfiguration" - ], - "title": "CognitoUserPoolConfiguration", - "type": "object" - }, - "IdentitySourceDetails": { - "additionalProperties": false, - "properties": { - "ClientIds": { - "insertionOrder": false, - "items": { - "maxLength": 255, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "maxItems": 1000, - "minItems": 0, - "type": "array" - }, - "DiscoveryUrl": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^https://.*$", - "type": "string" - }, - "OpenIdIssuer": { - "$ref": "#/definitions/OpenIdIssuer" - }, - "UserPoolArn": { - "maxLength": 255, - "minLength": 1, - "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", - "type": "string" - } - }, - "type": "object" - }, - "OpenIdIssuer": { - "enum": [ - "COGNITO" - ], - "type": "string" - } - }, - "deprecatedProperties": [ - "/properties/Details" - ], - "handlers": { - "create": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "delete": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "PolicyStoreId": { - "$ref": "resource-schema.json#/properties/PolicyStoreId" - } - }, - "required": [ - "PolicyStoreId" - ] - }, - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "read": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "update": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - } - }, - "primaryIdentifier": [ - "/properties/IdentitySourceId", - "/properties/PolicyStoreId" - ], - "properties": { - "Configuration": { - "$ref": "#/definitions/IdentitySourceConfiguration" - }, - "Details": { - "$ref": "#/definitions/IdentitySourceDetails" - }, - "IdentitySourceId": { - "maxLength": 200, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]*$", - "type": "string" - }, - "PolicyStoreId": { - "maxLength": 200, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]*$", - "type": "string" - }, - "PrincipalEntityType": { - "maxLength": 200, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Details", - "/properties/IdentitySourceId" - ], - "required": [ - "Configuration", - "PolicyStoreId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-avp", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::VerifiedPermissions::IdentitySource" -} diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_2/__init__.py b/src/cfnlint/data/schemas/providers/ap_northeast_2/__init__.py index bfb77517e7..be51dfc165 100644 --- a/src/cfnlint/data/schemas/providers/ap_northeast_2/__init__.py +++ b/src/cfnlint/data/schemas/providers/ap_northeast_2/__init__.py @@ -1505,7 +1505,6 @@ "aws-efs-accesspoint.json", "aws-redshift-clustersecuritygroupingress.json", "aws-servicecatalogappregistry-attributegroupassociation.json", - "aws-elasticloadbalancingv2-loadbalancer.json", "aws-opensearchservice-domain.json", "aws-servicediscovery-instance.json", "aws-elasticsearch-domain.json", @@ -1723,6 +1722,7 @@ "aws-datasync-locationefs.json", "aws-ec2-localgatewayroutetable.json", "aws-apigateway-resource.json", + "aws-verifiedpermissions-identitysource.json", "aws-macie-session.json", "aws-elasticloadbalancingv2-targetgroup.json", "aws-applicationautoscaling-scalingpolicy.json", @@ -1977,7 +1977,6 @@ "aws-organizations-organizationalunit.json", "aws-appsync-datasource.json", "aws-sqs-queue.json", - "aws-ec2-securitygroupingress.json", "aws-guardduty-detector.json", "aws-sagemaker-modelqualityjobdefinition.json", "aws-iot-provisioningtemplate.json", diff --git a/src/cfnlint/data/schemas/providers/cn_north_1/aws-ec2-securitygroupingress.json b/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-ec2-securitygroupingress.json similarity index 77% rename from src/cfnlint/data/schemas/providers/cn_north_1/aws-ec2-securitygroupingress.json rename to src/cfnlint/data/schemas/providers/ap_northeast_2/aws-ec2-securitygroupingress.json index 83ebc2ae5c..e127b28031 100644 --- a/src/cfnlint/data/schemas/providers/cn_north_1/aws-ec2-securitygroupingress.json +++ b/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-ec2-securitygroupingress.json @@ -92,11 +92,6 @@ "type": "integer" } }, - "propertyTransform": { - "/properties/FromPort": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$ipProtocol := $mapVal ? $mapVal : $lowercase(IpProtocol);$ipProtocol in ['imcp', 'tcp', 'udp', 'imcp'] ? FromPort : -1)", - "/properties/IpProtocol": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$mapVal ? $mapVal : $lowercase(IpProtocol))", - "/properties/ToPort": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$ipProtocol := $mapVal ? $mapVal : $lowercase(IpProtocol);$ipProtocol in ['imcp', 'tcp', 'udp', 'imcp'] ? ToPort : -1)" - }, "readOnlyProperties": [ "/properties/Id" ], diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-elasticloadbalancingv2-loadbalancer.json b/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-elasticloadbalancingv2-loadbalancer.json new file mode 100644 index 0000000000..1f8152439a --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-elasticloadbalancingv2-loadbalancer.json @@ -0,0 +1,193 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Type", + "/properties/Scheme" + ], + "definitions": { + "LoadBalancerAttribute": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "SubnetMapping": { + "additionalProperties": false, + "properties": { + "AllocationId": { + "type": "string" + }, + "IPv6Address": { + "type": "string" + }, + "PrivateIPv4Address": { + "type": "string" + }, + "SubnetId": { + "type": "string" + } + }, + "required": [ + "SubnetId" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "documentationUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html", + "handlers": { + "create": { + "permissions": [ + "elasticloadbalancing:CreateLoadBalancer", + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:AddTags" + ] + }, + "delete": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DeleteLoadBalancer" + ] + }, + "list": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers" + ] + }, + "read": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DescribeLoadBalancerAttributes", + "elasticloadbalancing:DescribeTags" + ] + }, + "update": { + "permissions": [ + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:SetSubnets", + "elasticloadbalancing:SetIpAddressType", + "elasticloadbalancing:SetSecurityGroups", + "elasticloadbalancing:AddTags", + "elasticloadbalancing:RemoveTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/LoadBalancerArn" + ], + "properties": { + "CanonicalHostedZoneID": { + "type": "string" + }, + "DNSName": { + "type": "string" + }, + "EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic": { + "type": "string" + }, + "IpAddressType": { + "type": "string" + }, + "LoadBalancerArn": { + "type": "string" + }, + "LoadBalancerAttributes": { + "arrayType": "AttributeList", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LoadBalancerAttribute" + }, + "type": "array", + "uniqueItems": true + }, + "LoadBalancerFullName": { + "type": "string" + }, + "LoadBalancerName": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Scheme": { + "type": "string" + }, + "SecurityGroups": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "SubnetMappings": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SubnetMapping" + }, + "type": "array", + "uniqueItems": true + }, + "Subnets": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Type": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/LoadBalancerName", + "/properties/LoadBalancerFullName", + "/properties/CanonicalHostedZoneID", + "/properties/LoadBalancerArn", + "/properties/DNSName" + ], + "requiredXor": [ + "SubnetMappings", + "Subnets" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticloadbalancingv2", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ElasticLoadBalancingV2::LoadBalancer" +} diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-verifiedpermissions-identitysource.json b/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-verifiedpermissions-identitysource.json deleted file mode 100644 index 46a0ad88f1..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-verifiedpermissions-identitysource.json +++ /dev/null @@ -1,221 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/PolicyStoreId" - ], - "definitions": { - "CognitoGroupConfiguration": { - "additionalProperties": false, - "properties": { - "GroupEntityType": { - "maxLength": 200, - "minLength": 1, - "pattern": "^([_a-zA-Z][_a-zA-Z0-9]*::)*[_a-zA-Z][_a-zA-Z0-9]*$", - "type": "string" - } - }, - "required": [ - "GroupEntityType" - ], - "type": "object" - }, - "CognitoUserPoolConfiguration": { - "additionalProperties": false, - "properties": { - "ClientIds": { - "insertionOrder": false, - "items": { - "maxLength": 255, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "maxItems": 1000, - "minItems": 0, - "type": "array" - }, - "GroupConfiguration": { - "$ref": "#/definitions/CognitoGroupConfiguration" - }, - "UserPoolArn": { - "maxLength": 255, - "minLength": 1, - "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", - "type": "string" - } - }, - "required": [ - "UserPoolArn" - ], - "type": "object" - }, - "IdentitySourceConfiguration": { - "additionalProperties": false, - "properties": { - "CognitoUserPoolConfiguration": { - "$ref": "#/definitions/CognitoUserPoolConfiguration" - } - }, - "required": [ - "CognitoUserPoolConfiguration" - ], - "title": "CognitoUserPoolConfiguration", - "type": "object" - }, - "IdentitySourceDetails": { - "additionalProperties": false, - "properties": { - "ClientIds": { - "insertionOrder": false, - "items": { - "maxLength": 255, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "maxItems": 1000, - "minItems": 0, - "type": "array" - }, - "DiscoveryUrl": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^https://.*$", - "type": "string" - }, - "OpenIdIssuer": { - "$ref": "#/definitions/OpenIdIssuer" - }, - "UserPoolArn": { - "maxLength": 255, - "minLength": 1, - "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", - "type": "string" - } - }, - "type": "object" - }, - "OpenIdIssuer": { - "enum": [ - "COGNITO" - ], - "type": "string" - } - }, - "deprecatedProperties": [ - "/properties/Details" - ], - "handlers": { - "create": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "delete": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "PolicyStoreId": { - "$ref": "resource-schema.json#/properties/PolicyStoreId" - } - }, - "required": [ - "PolicyStoreId" - ] - }, - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "read": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "update": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - } - }, - "primaryIdentifier": [ - "/properties/IdentitySourceId", - "/properties/PolicyStoreId" - ], - "properties": { - "Configuration": { - "$ref": "#/definitions/IdentitySourceConfiguration" - }, - "Details": { - "$ref": "#/definitions/IdentitySourceDetails" - }, - "IdentitySourceId": { - "maxLength": 200, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]*$", - "type": "string" - }, - "PolicyStoreId": { - "maxLength": 200, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]*$", - "type": "string" - }, - "PrincipalEntityType": { - "maxLength": 200, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Details", - "/properties/IdentitySourceId" - ], - "required": [ - "Configuration", - "PolicyStoreId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-avp", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::VerifiedPermissions::IdentitySource" -} 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 1ce5db0177..426c4d40ec 100644 --- a/src/cfnlint/data/schemas/providers/ap_northeast_3/__init__.py +++ b/src/cfnlint/data/schemas/providers/ap_northeast_3/__init__.py @@ -1023,7 +1023,6 @@ "aws-efs-accesspoint.json", "aws-redshift-clustersecuritygroupingress.json", "aws-servicecatalogappregistry-attributegroupassociation.json", - "aws-elasticloadbalancingv2-loadbalancer.json", "aws-opensearchservice-domain.json", "aws-servicediscovery-instance.json", "aws-elasticsearch-domain.json", @@ -1333,7 +1332,6 @@ "aws-organizations-organizationalunit.json", "aws-appsync-datasource.json", "aws-sqs-queue.json", - "aws-ec2-securitygroupingress.json", "aws-guardduty-detector.json", "aws-sagemaker-modelqualityjobdefinition.json", "aws-networkmanager-corenetwork.json", diff --git a/src/cfnlint/data/schemas/providers/eu_central_1/aws-ec2-securitygroupingress.json b/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-ec2-securitygroupingress.json similarity index 77% rename from src/cfnlint/data/schemas/providers/eu_central_1/aws-ec2-securitygroupingress.json rename to src/cfnlint/data/schemas/providers/ap_northeast_3/aws-ec2-securitygroupingress.json index 83ebc2ae5c..e127b28031 100644 --- a/src/cfnlint/data/schemas/providers/eu_central_1/aws-ec2-securitygroupingress.json +++ b/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-ec2-securitygroupingress.json @@ -92,11 +92,6 @@ "type": "integer" } }, - "propertyTransform": { - "/properties/FromPort": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$ipProtocol := $mapVal ? $mapVal : $lowercase(IpProtocol);$ipProtocol in ['imcp', 'tcp', 'udp', 'imcp'] ? FromPort : -1)", - "/properties/IpProtocol": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$mapVal ? $mapVal : $lowercase(IpProtocol))", - "/properties/ToPort": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$ipProtocol := $mapVal ? $mapVal : $lowercase(IpProtocol);$ipProtocol in ['imcp', 'tcp', 'udp', 'imcp'] ? ToPort : -1)" - }, "readOnlyProperties": [ "/properties/Id" ], diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-elasticloadbalancingv2-loadbalancer.json b/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-elasticloadbalancingv2-loadbalancer.json new file mode 100644 index 0000000000..1f8152439a --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-elasticloadbalancingv2-loadbalancer.json @@ -0,0 +1,193 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Type", + "/properties/Scheme" + ], + "definitions": { + "LoadBalancerAttribute": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "SubnetMapping": { + "additionalProperties": false, + "properties": { + "AllocationId": { + "type": "string" + }, + "IPv6Address": { + "type": "string" + }, + "PrivateIPv4Address": { + "type": "string" + }, + "SubnetId": { + "type": "string" + } + }, + "required": [ + "SubnetId" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "documentationUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html", + "handlers": { + "create": { + "permissions": [ + "elasticloadbalancing:CreateLoadBalancer", + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:AddTags" + ] + }, + "delete": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DeleteLoadBalancer" + ] + }, + "list": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers" + ] + }, + "read": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DescribeLoadBalancerAttributes", + "elasticloadbalancing:DescribeTags" + ] + }, + "update": { + "permissions": [ + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:SetSubnets", + "elasticloadbalancing:SetIpAddressType", + "elasticloadbalancing:SetSecurityGroups", + "elasticloadbalancing:AddTags", + "elasticloadbalancing:RemoveTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/LoadBalancerArn" + ], + "properties": { + "CanonicalHostedZoneID": { + "type": "string" + }, + "DNSName": { + "type": "string" + }, + "EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic": { + "type": "string" + }, + "IpAddressType": { + "type": "string" + }, + "LoadBalancerArn": { + "type": "string" + }, + "LoadBalancerAttributes": { + "arrayType": "AttributeList", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LoadBalancerAttribute" + }, + "type": "array", + "uniqueItems": true + }, + "LoadBalancerFullName": { + "type": "string" + }, + "LoadBalancerName": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Scheme": { + "type": "string" + }, + "SecurityGroups": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "SubnetMappings": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SubnetMapping" + }, + "type": "array", + "uniqueItems": true + }, + "Subnets": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Type": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/LoadBalancerName", + "/properties/LoadBalancerFullName", + "/properties/CanonicalHostedZoneID", + "/properties/LoadBalancerArn", + "/properties/DNSName" + ], + "requiredXor": [ + "SubnetMappings", + "Subnets" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticloadbalancingv2", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ElasticLoadBalancingV2::LoadBalancer" +} 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 11e2c49c7b..ffda17ed23 100644 --- a/src/cfnlint/data/schemas/providers/ap_south_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/ap_south_1/__init__.py @@ -1499,7 +1499,6 @@ "aws-efs-accesspoint.json", "aws-redshift-clustersecuritygroupingress.json", "aws-servicecatalogappregistry-attributegroupassociation.json", - "aws-elasticloadbalancingv2-loadbalancer.json", "aws-opensearchservice-domain.json", "aws-servicediscovery-instance.json", "aws-elasticsearch-domain.json", @@ -1713,6 +1712,7 @@ "aws-datasync-locationefs.json", "aws-ec2-localgatewayroutetable.json", "aws-apigateway-resource.json", + "aws-verifiedpermissions-identitysource.json", "aws-macie-session.json", "aws-elasticloadbalancingv2-targetgroup.json", "aws-applicationautoscaling-scalingpolicy.json", @@ -1963,7 +1963,6 @@ "aws-organizations-organizationalunit.json", "aws-appsync-datasource.json", "aws-sqs-queue.json", - "aws-ec2-securitygroupingress.json", "aws-guardduty-detector.json", "aws-sagemaker-modelqualityjobdefinition.json", "aws-iot-provisioningtemplate.json", diff --git a/src/cfnlint/data/schemas/providers/ap_south_1/aws-ec2-securitygroupingress.json b/src/cfnlint/data/schemas/providers/ap_south_1/aws-ec2-securitygroupingress.json new file mode 100644 index 0000000000..e127b28031 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_south_1/aws-ec2-securitygroupingress.json @@ -0,0 +1,116 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::EC2::SecurityGroupIngress/Properties" + ], + "createOnlyProperties": [ + "/properties/GroupName", + "/properties/IpProtocol", + "/properties/SourceSecurityGroupId", + "/properties/SourcePrefixListId", + "/properties/ToPort", + "/properties/CidrIp", + "/properties/SourceSecurityGroupName", + "/properties/SourceSecurityGroupOwnerId", + "/properties/FromPort", + "/properties/GroupId", + "/properties/CidrIpv6" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeSecurityGroupRules", + "ec2:AuthorizeSecurityGroupIngress" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeSecurityGroupRules", + "ec2:RevokeSecurityGroupIngress" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroups", + "ec2:DescribeSecurityGroupRules" + ] + }, + "update": { + "permissions": [ + "ec2:UpdateSecurityGroupRuleDescriptionsIngress" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CidrIp": { + "type": "string" + }, + "CidrIpv6": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "FromPort": { + "minimum": -1, + "type": "integer" + }, + "GroupId": { + "type": "string" + }, + "GroupName": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "IpProtocol": { + "type": "string" + }, + "SourcePrefixListId": { + "type": "string" + }, + "SourceSecurityGroupId": { + "type": "string" + }, + "SourceSecurityGroupName": { + "type": "string" + }, + "SourceSecurityGroupOwnerId": { + "type": "string" + }, + "ToPort": { + "minimum": -1, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IpProtocol" + ], + "requiredXor": [ + "CidrIp", + "CidrIpv6", + "SourcePrefixListId", + "SourceSecurityGroupId", + "SourceSecurityGroupName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SecurityGroupIngress" +} diff --git a/src/cfnlint/data/schemas/providers/ap_south_1/aws-elasticloadbalancingv2-loadbalancer.json b/src/cfnlint/data/schemas/providers/ap_south_1/aws-elasticloadbalancingv2-loadbalancer.json new file mode 100644 index 0000000000..1f8152439a --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_south_1/aws-elasticloadbalancingv2-loadbalancer.json @@ -0,0 +1,193 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Type", + "/properties/Scheme" + ], + "definitions": { + "LoadBalancerAttribute": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "SubnetMapping": { + "additionalProperties": false, + "properties": { + "AllocationId": { + "type": "string" + }, + "IPv6Address": { + "type": "string" + }, + "PrivateIPv4Address": { + "type": "string" + }, + "SubnetId": { + "type": "string" + } + }, + "required": [ + "SubnetId" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "documentationUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html", + "handlers": { + "create": { + "permissions": [ + "elasticloadbalancing:CreateLoadBalancer", + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:AddTags" + ] + }, + "delete": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DeleteLoadBalancer" + ] + }, + "list": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers" + ] + }, + "read": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DescribeLoadBalancerAttributes", + "elasticloadbalancing:DescribeTags" + ] + }, + "update": { + "permissions": [ + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:SetSubnets", + "elasticloadbalancing:SetIpAddressType", + "elasticloadbalancing:SetSecurityGroups", + "elasticloadbalancing:AddTags", + "elasticloadbalancing:RemoveTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/LoadBalancerArn" + ], + "properties": { + "CanonicalHostedZoneID": { + "type": "string" + }, + "DNSName": { + "type": "string" + }, + "EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic": { + "type": "string" + }, + "IpAddressType": { + "type": "string" + }, + "LoadBalancerArn": { + "type": "string" + }, + "LoadBalancerAttributes": { + "arrayType": "AttributeList", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LoadBalancerAttribute" + }, + "type": "array", + "uniqueItems": true + }, + "LoadBalancerFullName": { + "type": "string" + }, + "LoadBalancerName": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Scheme": { + "type": "string" + }, + "SecurityGroups": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "SubnetMappings": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SubnetMapping" + }, + "type": "array", + "uniqueItems": true + }, + "Subnets": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Type": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/LoadBalancerName", + "/properties/LoadBalancerFullName", + "/properties/CanonicalHostedZoneID", + "/properties/LoadBalancerArn", + "/properties/DNSName" + ], + "requiredXor": [ + "SubnetMappings", + "Subnets" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticloadbalancingv2", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ElasticLoadBalancingV2::LoadBalancer" +} diff --git a/src/cfnlint/data/schemas/providers/ap_south_1/aws-verifiedpermissions-identitysource.json b/src/cfnlint/data/schemas/providers/ap_south_1/aws-verifiedpermissions-identitysource.json deleted file mode 100644 index 46a0ad88f1..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_south_1/aws-verifiedpermissions-identitysource.json +++ /dev/null @@ -1,221 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/PolicyStoreId" - ], - "definitions": { - "CognitoGroupConfiguration": { - "additionalProperties": false, - "properties": { - "GroupEntityType": { - "maxLength": 200, - "minLength": 1, - "pattern": "^([_a-zA-Z][_a-zA-Z0-9]*::)*[_a-zA-Z][_a-zA-Z0-9]*$", - "type": "string" - } - }, - "required": [ - "GroupEntityType" - ], - "type": "object" - }, - "CognitoUserPoolConfiguration": { - "additionalProperties": false, - "properties": { - "ClientIds": { - "insertionOrder": false, - "items": { - "maxLength": 255, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "maxItems": 1000, - "minItems": 0, - "type": "array" - }, - "GroupConfiguration": { - "$ref": "#/definitions/CognitoGroupConfiguration" - }, - "UserPoolArn": { - "maxLength": 255, - "minLength": 1, - "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", - "type": "string" - } - }, - "required": [ - "UserPoolArn" - ], - "type": "object" - }, - "IdentitySourceConfiguration": { - "additionalProperties": false, - "properties": { - "CognitoUserPoolConfiguration": { - "$ref": "#/definitions/CognitoUserPoolConfiguration" - } - }, - "required": [ - "CognitoUserPoolConfiguration" - ], - "title": "CognitoUserPoolConfiguration", - "type": "object" - }, - "IdentitySourceDetails": { - "additionalProperties": false, - "properties": { - "ClientIds": { - "insertionOrder": false, - "items": { - "maxLength": 255, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "maxItems": 1000, - "minItems": 0, - "type": "array" - }, - "DiscoveryUrl": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^https://.*$", - "type": "string" - }, - "OpenIdIssuer": { - "$ref": "#/definitions/OpenIdIssuer" - }, - "UserPoolArn": { - "maxLength": 255, - "minLength": 1, - "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", - "type": "string" - } - }, - "type": "object" - }, - "OpenIdIssuer": { - "enum": [ - "COGNITO" - ], - "type": "string" - } - }, - "deprecatedProperties": [ - "/properties/Details" - ], - "handlers": { - "create": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "delete": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "PolicyStoreId": { - "$ref": "resource-schema.json#/properties/PolicyStoreId" - } - }, - "required": [ - "PolicyStoreId" - ] - }, - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "read": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "update": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - } - }, - "primaryIdentifier": [ - "/properties/IdentitySourceId", - "/properties/PolicyStoreId" - ], - "properties": { - "Configuration": { - "$ref": "#/definitions/IdentitySourceConfiguration" - }, - "Details": { - "$ref": "#/definitions/IdentitySourceDetails" - }, - "IdentitySourceId": { - "maxLength": 200, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]*$", - "type": "string" - }, - "PolicyStoreId": { - "maxLength": 200, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]*$", - "type": "string" - }, - "PrincipalEntityType": { - "maxLength": 200, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Details", - "/properties/IdentitySourceId" - ], - "required": [ - "Configuration", - "PolicyStoreId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-avp", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::VerifiedPermissions::IdentitySource" -} 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 e8fa865f5c..4678d66c5d 100644 --- a/src/cfnlint/data/schemas/providers/ap_south_2/__init__.py +++ b/src/cfnlint/data/schemas/providers/ap_south_2/__init__.py @@ -717,7 +717,6 @@ "aws-efs-accesspoint.json", "aws-redshift-clustersecuritygroupingress.json", "aws-servicecatalogappregistry-attributegroupassociation.json", - "aws-elasticloadbalancingv2-loadbalancer.json", "aws-opensearchservice-domain.json", "aws-elasticsearch-domain.json", "aws-servicecatalog-stacksetconstraint.json", @@ -925,7 +924,6 @@ "aws-organizations-organizationalunit.json", "aws-appsync-datasource.json", "aws-sqs-queue.json", - "aws-ec2-securitygroupingress.json", "aws-guardduty-detector.json", "aws-batch-computeenvironment.json", "aws-athena-namedquery.json", diff --git a/src/cfnlint/data/schemas/providers/ap_south_2/aws-ec2-securitygroupingress.json b/src/cfnlint/data/schemas/providers/ap_south_2/aws-ec2-securitygroupingress.json new file mode 100644 index 0000000000..e127b28031 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_south_2/aws-ec2-securitygroupingress.json @@ -0,0 +1,116 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::EC2::SecurityGroupIngress/Properties" + ], + "createOnlyProperties": [ + "/properties/GroupName", + "/properties/IpProtocol", + "/properties/SourceSecurityGroupId", + "/properties/SourcePrefixListId", + "/properties/ToPort", + "/properties/CidrIp", + "/properties/SourceSecurityGroupName", + "/properties/SourceSecurityGroupOwnerId", + "/properties/FromPort", + "/properties/GroupId", + "/properties/CidrIpv6" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeSecurityGroupRules", + "ec2:AuthorizeSecurityGroupIngress" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeSecurityGroupRules", + "ec2:RevokeSecurityGroupIngress" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroups", + "ec2:DescribeSecurityGroupRules" + ] + }, + "update": { + "permissions": [ + "ec2:UpdateSecurityGroupRuleDescriptionsIngress" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CidrIp": { + "type": "string" + }, + "CidrIpv6": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "FromPort": { + "minimum": -1, + "type": "integer" + }, + "GroupId": { + "type": "string" + }, + "GroupName": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "IpProtocol": { + "type": "string" + }, + "SourcePrefixListId": { + "type": "string" + }, + "SourceSecurityGroupId": { + "type": "string" + }, + "SourceSecurityGroupName": { + "type": "string" + }, + "SourceSecurityGroupOwnerId": { + "type": "string" + }, + "ToPort": { + "minimum": -1, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IpProtocol" + ], + "requiredXor": [ + "CidrIp", + "CidrIpv6", + "SourcePrefixListId", + "SourceSecurityGroupId", + "SourceSecurityGroupName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SecurityGroupIngress" +} diff --git a/src/cfnlint/data/schemas/providers/ap_south_2/aws-elasticloadbalancingv2-loadbalancer.json b/src/cfnlint/data/schemas/providers/ap_south_2/aws-elasticloadbalancingv2-loadbalancer.json new file mode 100644 index 0000000000..1f8152439a --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_south_2/aws-elasticloadbalancingv2-loadbalancer.json @@ -0,0 +1,193 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Type", + "/properties/Scheme" + ], + "definitions": { + "LoadBalancerAttribute": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "SubnetMapping": { + "additionalProperties": false, + "properties": { + "AllocationId": { + "type": "string" + }, + "IPv6Address": { + "type": "string" + }, + "PrivateIPv4Address": { + "type": "string" + }, + "SubnetId": { + "type": "string" + } + }, + "required": [ + "SubnetId" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "documentationUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html", + "handlers": { + "create": { + "permissions": [ + "elasticloadbalancing:CreateLoadBalancer", + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:AddTags" + ] + }, + "delete": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DeleteLoadBalancer" + ] + }, + "list": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers" + ] + }, + "read": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DescribeLoadBalancerAttributes", + "elasticloadbalancing:DescribeTags" + ] + }, + "update": { + "permissions": [ + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:SetSubnets", + "elasticloadbalancing:SetIpAddressType", + "elasticloadbalancing:SetSecurityGroups", + "elasticloadbalancing:AddTags", + "elasticloadbalancing:RemoveTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/LoadBalancerArn" + ], + "properties": { + "CanonicalHostedZoneID": { + "type": "string" + }, + "DNSName": { + "type": "string" + }, + "EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic": { + "type": "string" + }, + "IpAddressType": { + "type": "string" + }, + "LoadBalancerArn": { + "type": "string" + }, + "LoadBalancerAttributes": { + "arrayType": "AttributeList", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LoadBalancerAttribute" + }, + "type": "array", + "uniqueItems": true + }, + "LoadBalancerFullName": { + "type": "string" + }, + "LoadBalancerName": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Scheme": { + "type": "string" + }, + "SecurityGroups": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "SubnetMappings": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SubnetMapping" + }, + "type": "array", + "uniqueItems": true + }, + "Subnets": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Type": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/LoadBalancerName", + "/properties/LoadBalancerFullName", + "/properties/CanonicalHostedZoneID", + "/properties/LoadBalancerArn", + "/properties/DNSName" + ], + "requiredXor": [ + "SubnetMappings", + "Subnets" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticloadbalancingv2", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ElasticLoadBalancingV2::LoadBalancer" +} 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 56ce30a46b..c39567770b 100644 --- a/src/cfnlint/data/schemas/providers/ap_southeast_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/ap_southeast_1/__init__.py @@ -1634,7 +1634,6 @@ "aws-omics-referencestore.json", "aws-redshift-clustersecuritygroupingress.json", "aws-servicecatalogappregistry-attributegroupassociation.json", - "aws-elasticloadbalancingv2-loadbalancer.json", "aws-opensearchservice-domain.json", "aws-servicediscovery-instance.json", "aws-elasticsearch-domain.json", @@ -1863,6 +1862,7 @@ "aws-datasync-locationefs.json", "aws-ec2-localgatewayroutetable.json", "aws-apigateway-resource.json", + "aws-verifiedpermissions-identitysource.json", "aws-macie-session.json", "aws-elasticloadbalancingv2-targetgroup.json", "aws-applicationautoscaling-scalingpolicy.json", @@ -2142,6 +2142,7 @@ "aws-organizations-organizationalunit.json", "aws-appsync-datasource.json", "aws-sqs-queue.json", + "aws-ec2-securitygroupingress.json", "aws-guardduty-detector.json", "aws-sagemaker-modelqualityjobdefinition.json", "aws-iot-provisioningtemplate.json", diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-elasticloadbalancingv2-loadbalancer.json b/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-elasticloadbalancingv2-loadbalancer.json new file mode 100644 index 0000000000..1f8152439a --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-elasticloadbalancingv2-loadbalancer.json @@ -0,0 +1,193 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Type", + "/properties/Scheme" + ], + "definitions": { + "LoadBalancerAttribute": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "SubnetMapping": { + "additionalProperties": false, + "properties": { + "AllocationId": { + "type": "string" + }, + "IPv6Address": { + "type": "string" + }, + "PrivateIPv4Address": { + "type": "string" + }, + "SubnetId": { + "type": "string" + } + }, + "required": [ + "SubnetId" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "documentationUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html", + "handlers": { + "create": { + "permissions": [ + "elasticloadbalancing:CreateLoadBalancer", + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:AddTags" + ] + }, + "delete": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DeleteLoadBalancer" + ] + }, + "list": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers" + ] + }, + "read": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DescribeLoadBalancerAttributes", + "elasticloadbalancing:DescribeTags" + ] + }, + "update": { + "permissions": [ + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:SetSubnets", + "elasticloadbalancing:SetIpAddressType", + "elasticloadbalancing:SetSecurityGroups", + "elasticloadbalancing:AddTags", + "elasticloadbalancing:RemoveTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/LoadBalancerArn" + ], + "properties": { + "CanonicalHostedZoneID": { + "type": "string" + }, + "DNSName": { + "type": "string" + }, + "EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic": { + "type": "string" + }, + "IpAddressType": { + "type": "string" + }, + "LoadBalancerArn": { + "type": "string" + }, + "LoadBalancerAttributes": { + "arrayType": "AttributeList", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LoadBalancerAttribute" + }, + "type": "array", + "uniqueItems": true + }, + "LoadBalancerFullName": { + "type": "string" + }, + "LoadBalancerName": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Scheme": { + "type": "string" + }, + "SecurityGroups": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "SubnetMappings": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SubnetMapping" + }, + "type": "array", + "uniqueItems": true + }, + "Subnets": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Type": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/LoadBalancerName", + "/properties/LoadBalancerFullName", + "/properties/CanonicalHostedZoneID", + "/properties/LoadBalancerArn", + "/properties/DNSName" + ], + "requiredXor": [ + "SubnetMappings", + "Subnets" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticloadbalancingv2", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ElasticLoadBalancingV2::LoadBalancer" +} diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-verifiedpermissions-identitysource.json b/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-verifiedpermissions-identitysource.json deleted file mode 100644 index 46a0ad88f1..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-verifiedpermissions-identitysource.json +++ /dev/null @@ -1,221 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/PolicyStoreId" - ], - "definitions": { - "CognitoGroupConfiguration": { - "additionalProperties": false, - "properties": { - "GroupEntityType": { - "maxLength": 200, - "minLength": 1, - "pattern": "^([_a-zA-Z][_a-zA-Z0-9]*::)*[_a-zA-Z][_a-zA-Z0-9]*$", - "type": "string" - } - }, - "required": [ - "GroupEntityType" - ], - "type": "object" - }, - "CognitoUserPoolConfiguration": { - "additionalProperties": false, - "properties": { - "ClientIds": { - "insertionOrder": false, - "items": { - "maxLength": 255, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "maxItems": 1000, - "minItems": 0, - "type": "array" - }, - "GroupConfiguration": { - "$ref": "#/definitions/CognitoGroupConfiguration" - }, - "UserPoolArn": { - "maxLength": 255, - "minLength": 1, - "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", - "type": "string" - } - }, - "required": [ - "UserPoolArn" - ], - "type": "object" - }, - "IdentitySourceConfiguration": { - "additionalProperties": false, - "properties": { - "CognitoUserPoolConfiguration": { - "$ref": "#/definitions/CognitoUserPoolConfiguration" - } - }, - "required": [ - "CognitoUserPoolConfiguration" - ], - "title": "CognitoUserPoolConfiguration", - "type": "object" - }, - "IdentitySourceDetails": { - "additionalProperties": false, - "properties": { - "ClientIds": { - "insertionOrder": false, - "items": { - "maxLength": 255, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "maxItems": 1000, - "minItems": 0, - "type": "array" - }, - "DiscoveryUrl": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^https://.*$", - "type": "string" - }, - "OpenIdIssuer": { - "$ref": "#/definitions/OpenIdIssuer" - }, - "UserPoolArn": { - "maxLength": 255, - "minLength": 1, - "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", - "type": "string" - } - }, - "type": "object" - }, - "OpenIdIssuer": { - "enum": [ - "COGNITO" - ], - "type": "string" - } - }, - "deprecatedProperties": [ - "/properties/Details" - ], - "handlers": { - "create": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "delete": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "PolicyStoreId": { - "$ref": "resource-schema.json#/properties/PolicyStoreId" - } - }, - "required": [ - "PolicyStoreId" - ] - }, - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "read": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "update": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - } - }, - "primaryIdentifier": [ - "/properties/IdentitySourceId", - "/properties/PolicyStoreId" - ], - "properties": { - "Configuration": { - "$ref": "#/definitions/IdentitySourceConfiguration" - }, - "Details": { - "$ref": "#/definitions/IdentitySourceDetails" - }, - "IdentitySourceId": { - "maxLength": 200, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]*$", - "type": "string" - }, - "PolicyStoreId": { - "maxLength": 200, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]*$", - "type": "string" - }, - "PrincipalEntityType": { - "maxLength": 200, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Details", - "/properties/IdentitySourceId" - ], - "required": [ - "Configuration", - "PolicyStoreId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-avp", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::VerifiedPermissions::IdentitySource" -} 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 8131b48bdc..449a5655c5 100644 --- a/src/cfnlint/data/schemas/providers/ap_southeast_2/__init__.py +++ b/src/cfnlint/data/schemas/providers/ap_southeast_2/__init__.py @@ -1652,7 +1652,6 @@ "aws-efs-accesspoint.json", "aws-redshift-clustersecuritygroupingress.json", "aws-servicecatalogappregistry-attributegroupassociation.json", - "aws-elasticloadbalancingv2-loadbalancer.json", "aws-opensearchservice-domain.json", "aws-timestream-database.json", "aws-servicediscovery-instance.json", @@ -1885,6 +1884,7 @@ "aws-datasync-locationefs.json", "aws-ec2-localgatewayroutetable.json", "aws-apigateway-resource.json", + "aws-verifiedpermissions-identitysource.json", "aws-macie-session.json", "aws-elasticloadbalancingv2-targetgroup.json", "aws-applicationautoscaling-scalingpolicy.json", @@ -2170,7 +2170,6 @@ "aws-organizations-organizationalunit.json", "aws-appsync-datasource.json", "aws-sqs-queue.json", - "aws-ec2-securitygroupingress.json", "aws-guardduty-detector.json", "aws-sagemaker-modelqualityjobdefinition.json", "aws-iot-provisioningtemplate.json", diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_2/aws-ec2-securitygroupingress.json b/src/cfnlint/data/schemas/providers/ap_southeast_2/aws-ec2-securitygroupingress.json new file mode 100644 index 0000000000..e127b28031 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_southeast_2/aws-ec2-securitygroupingress.json @@ -0,0 +1,116 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::EC2::SecurityGroupIngress/Properties" + ], + "createOnlyProperties": [ + "/properties/GroupName", + "/properties/IpProtocol", + "/properties/SourceSecurityGroupId", + "/properties/SourcePrefixListId", + "/properties/ToPort", + "/properties/CidrIp", + "/properties/SourceSecurityGroupName", + "/properties/SourceSecurityGroupOwnerId", + "/properties/FromPort", + "/properties/GroupId", + "/properties/CidrIpv6" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeSecurityGroupRules", + "ec2:AuthorizeSecurityGroupIngress" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeSecurityGroupRules", + "ec2:RevokeSecurityGroupIngress" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroups", + "ec2:DescribeSecurityGroupRules" + ] + }, + "update": { + "permissions": [ + "ec2:UpdateSecurityGroupRuleDescriptionsIngress" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CidrIp": { + "type": "string" + }, + "CidrIpv6": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "FromPort": { + "minimum": -1, + "type": "integer" + }, + "GroupId": { + "type": "string" + }, + "GroupName": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "IpProtocol": { + "type": "string" + }, + "SourcePrefixListId": { + "type": "string" + }, + "SourceSecurityGroupId": { + "type": "string" + }, + "SourceSecurityGroupName": { + "type": "string" + }, + "SourceSecurityGroupOwnerId": { + "type": "string" + }, + "ToPort": { + "minimum": -1, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IpProtocol" + ], + "requiredXor": [ + "CidrIp", + "CidrIpv6", + "SourcePrefixListId", + "SourceSecurityGroupId", + "SourceSecurityGroupName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SecurityGroupIngress" +} diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_2/aws-elasticloadbalancingv2-loadbalancer.json b/src/cfnlint/data/schemas/providers/ap_southeast_2/aws-elasticloadbalancingv2-loadbalancer.json new file mode 100644 index 0000000000..1f8152439a --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_southeast_2/aws-elasticloadbalancingv2-loadbalancer.json @@ -0,0 +1,193 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Type", + "/properties/Scheme" + ], + "definitions": { + "LoadBalancerAttribute": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "SubnetMapping": { + "additionalProperties": false, + "properties": { + "AllocationId": { + "type": "string" + }, + "IPv6Address": { + "type": "string" + }, + "PrivateIPv4Address": { + "type": "string" + }, + "SubnetId": { + "type": "string" + } + }, + "required": [ + "SubnetId" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "documentationUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html", + "handlers": { + "create": { + "permissions": [ + "elasticloadbalancing:CreateLoadBalancer", + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:AddTags" + ] + }, + "delete": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DeleteLoadBalancer" + ] + }, + "list": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers" + ] + }, + "read": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DescribeLoadBalancerAttributes", + "elasticloadbalancing:DescribeTags" + ] + }, + "update": { + "permissions": [ + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:SetSubnets", + "elasticloadbalancing:SetIpAddressType", + "elasticloadbalancing:SetSecurityGroups", + "elasticloadbalancing:AddTags", + "elasticloadbalancing:RemoveTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/LoadBalancerArn" + ], + "properties": { + "CanonicalHostedZoneID": { + "type": "string" + }, + "DNSName": { + "type": "string" + }, + "EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic": { + "type": "string" + }, + "IpAddressType": { + "type": "string" + }, + "LoadBalancerArn": { + "type": "string" + }, + "LoadBalancerAttributes": { + "arrayType": "AttributeList", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LoadBalancerAttribute" + }, + "type": "array", + "uniqueItems": true + }, + "LoadBalancerFullName": { + "type": "string" + }, + "LoadBalancerName": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Scheme": { + "type": "string" + }, + "SecurityGroups": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "SubnetMappings": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SubnetMapping" + }, + "type": "array", + "uniqueItems": true + }, + "Subnets": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Type": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/LoadBalancerName", + "/properties/LoadBalancerFullName", + "/properties/CanonicalHostedZoneID", + "/properties/LoadBalancerArn", + "/properties/DNSName" + ], + "requiredXor": [ + "SubnetMappings", + "Subnets" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticloadbalancingv2", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ElasticLoadBalancingV2::LoadBalancer" +} diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_2/aws-verifiedpermissions-identitysource.json b/src/cfnlint/data/schemas/providers/ap_southeast_2/aws-verifiedpermissions-identitysource.json deleted file mode 100644 index 46a0ad88f1..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_southeast_2/aws-verifiedpermissions-identitysource.json +++ /dev/null @@ -1,221 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/PolicyStoreId" - ], - "definitions": { - "CognitoGroupConfiguration": { - "additionalProperties": false, - "properties": { - "GroupEntityType": { - "maxLength": 200, - "minLength": 1, - "pattern": "^([_a-zA-Z][_a-zA-Z0-9]*::)*[_a-zA-Z][_a-zA-Z0-9]*$", - "type": "string" - } - }, - "required": [ - "GroupEntityType" - ], - "type": "object" - }, - "CognitoUserPoolConfiguration": { - "additionalProperties": false, - "properties": { - "ClientIds": { - "insertionOrder": false, - "items": { - "maxLength": 255, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "maxItems": 1000, - "minItems": 0, - "type": "array" - }, - "GroupConfiguration": { - "$ref": "#/definitions/CognitoGroupConfiguration" - }, - "UserPoolArn": { - "maxLength": 255, - "minLength": 1, - "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", - "type": "string" - } - }, - "required": [ - "UserPoolArn" - ], - "type": "object" - }, - "IdentitySourceConfiguration": { - "additionalProperties": false, - "properties": { - "CognitoUserPoolConfiguration": { - "$ref": "#/definitions/CognitoUserPoolConfiguration" - } - }, - "required": [ - "CognitoUserPoolConfiguration" - ], - "title": "CognitoUserPoolConfiguration", - "type": "object" - }, - "IdentitySourceDetails": { - "additionalProperties": false, - "properties": { - "ClientIds": { - "insertionOrder": false, - "items": { - "maxLength": 255, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "maxItems": 1000, - "minItems": 0, - "type": "array" - }, - "DiscoveryUrl": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^https://.*$", - "type": "string" - }, - "OpenIdIssuer": { - "$ref": "#/definitions/OpenIdIssuer" - }, - "UserPoolArn": { - "maxLength": 255, - "minLength": 1, - "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", - "type": "string" - } - }, - "type": "object" - }, - "OpenIdIssuer": { - "enum": [ - "COGNITO" - ], - "type": "string" - } - }, - "deprecatedProperties": [ - "/properties/Details" - ], - "handlers": { - "create": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "delete": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "PolicyStoreId": { - "$ref": "resource-schema.json#/properties/PolicyStoreId" - } - }, - "required": [ - "PolicyStoreId" - ] - }, - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "read": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "update": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - } - }, - "primaryIdentifier": [ - "/properties/IdentitySourceId", - "/properties/PolicyStoreId" - ], - "properties": { - "Configuration": { - "$ref": "#/definitions/IdentitySourceConfiguration" - }, - "Details": { - "$ref": "#/definitions/IdentitySourceDetails" - }, - "IdentitySourceId": { - "maxLength": 200, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]*$", - "type": "string" - }, - "PolicyStoreId": { - "maxLength": 200, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]*$", - "type": "string" - }, - "PrincipalEntityType": { - "maxLength": 200, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Details", - "/properties/IdentitySourceId" - ], - "required": [ - "Configuration", - "PolicyStoreId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-avp", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::VerifiedPermissions::IdentitySource" -} diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_3/__init__.py b/src/cfnlint/data/schemas/providers/ap_southeast_3/__init__.py index 20474ec7f4..06ccd7b883 100644 --- a/src/cfnlint/data/schemas/providers/ap_southeast_3/__init__.py +++ b/src/cfnlint/data/schemas/providers/ap_southeast_3/__init__.py @@ -830,7 +830,6 @@ "aws-efs-accesspoint.json", "aws-redshift-clustersecuritygroupingress.json", "aws-servicecatalogappregistry-attributegroupassociation.json", - "aws-elasticloadbalancingv2-loadbalancer.json", "aws-opensearchservice-domain.json", "aws-elasticsearch-domain.json", "aws-secretsmanager-resourcepolicy.json", @@ -1071,7 +1070,6 @@ "aws-organizations-organizationalunit.json", "aws-appsync-datasource.json", "aws-sqs-queue.json", - "aws-ec2-securitygroupingress.json", "aws-guardduty-detector.json", "aws-networkmanager-corenetwork.json", "aws-iotwireless-deviceprofile.json", diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-ec2-securitygroupingress.json b/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-ec2-securitygroupingress.json new file mode 100644 index 0000000000..e127b28031 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-ec2-securitygroupingress.json @@ -0,0 +1,116 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::EC2::SecurityGroupIngress/Properties" + ], + "createOnlyProperties": [ + "/properties/GroupName", + "/properties/IpProtocol", + "/properties/SourceSecurityGroupId", + "/properties/SourcePrefixListId", + "/properties/ToPort", + "/properties/CidrIp", + "/properties/SourceSecurityGroupName", + "/properties/SourceSecurityGroupOwnerId", + "/properties/FromPort", + "/properties/GroupId", + "/properties/CidrIpv6" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeSecurityGroupRules", + "ec2:AuthorizeSecurityGroupIngress" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeSecurityGroupRules", + "ec2:RevokeSecurityGroupIngress" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroups", + "ec2:DescribeSecurityGroupRules" + ] + }, + "update": { + "permissions": [ + "ec2:UpdateSecurityGroupRuleDescriptionsIngress" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CidrIp": { + "type": "string" + }, + "CidrIpv6": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "FromPort": { + "minimum": -1, + "type": "integer" + }, + "GroupId": { + "type": "string" + }, + "GroupName": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "IpProtocol": { + "type": "string" + }, + "SourcePrefixListId": { + "type": "string" + }, + "SourceSecurityGroupId": { + "type": "string" + }, + "SourceSecurityGroupName": { + "type": "string" + }, + "SourceSecurityGroupOwnerId": { + "type": "string" + }, + "ToPort": { + "minimum": -1, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IpProtocol" + ], + "requiredXor": [ + "CidrIp", + "CidrIpv6", + "SourcePrefixListId", + "SourceSecurityGroupId", + "SourceSecurityGroupName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SecurityGroupIngress" +} diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-elasticloadbalancingv2-loadbalancer.json b/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-elasticloadbalancingv2-loadbalancer.json new file mode 100644 index 0000000000..1f8152439a --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-elasticloadbalancingv2-loadbalancer.json @@ -0,0 +1,193 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Type", + "/properties/Scheme" + ], + "definitions": { + "LoadBalancerAttribute": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "SubnetMapping": { + "additionalProperties": false, + "properties": { + "AllocationId": { + "type": "string" + }, + "IPv6Address": { + "type": "string" + }, + "PrivateIPv4Address": { + "type": "string" + }, + "SubnetId": { + "type": "string" + } + }, + "required": [ + "SubnetId" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "documentationUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html", + "handlers": { + "create": { + "permissions": [ + "elasticloadbalancing:CreateLoadBalancer", + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:AddTags" + ] + }, + "delete": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DeleteLoadBalancer" + ] + }, + "list": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers" + ] + }, + "read": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DescribeLoadBalancerAttributes", + "elasticloadbalancing:DescribeTags" + ] + }, + "update": { + "permissions": [ + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:SetSubnets", + "elasticloadbalancing:SetIpAddressType", + "elasticloadbalancing:SetSecurityGroups", + "elasticloadbalancing:AddTags", + "elasticloadbalancing:RemoveTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/LoadBalancerArn" + ], + "properties": { + "CanonicalHostedZoneID": { + "type": "string" + }, + "DNSName": { + "type": "string" + }, + "EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic": { + "type": "string" + }, + "IpAddressType": { + "type": "string" + }, + "LoadBalancerArn": { + "type": "string" + }, + "LoadBalancerAttributes": { + "arrayType": "AttributeList", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LoadBalancerAttribute" + }, + "type": "array", + "uniqueItems": true + }, + "LoadBalancerFullName": { + "type": "string" + }, + "LoadBalancerName": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Scheme": { + "type": "string" + }, + "SecurityGroups": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "SubnetMappings": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SubnetMapping" + }, + "type": "array", + "uniqueItems": true + }, + "Subnets": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Type": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/LoadBalancerName", + "/properties/LoadBalancerFullName", + "/properties/CanonicalHostedZoneID", + "/properties/LoadBalancerArn", + "/properties/DNSName" + ], + "requiredXor": [ + "SubnetMappings", + "Subnets" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticloadbalancingv2", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ElasticLoadBalancingV2::LoadBalancer" +} 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 15f81eec76..1aea77c760 100644 --- a/src/cfnlint/data/schemas/providers/ap_southeast_4/__init__.py +++ b/src/cfnlint/data/schemas/providers/ap_southeast_4/__init__.py @@ -723,7 +723,6 @@ "aws-efs-accesspoint.json", "aws-redshift-clustersecuritygroupingress.json", "aws-servicecatalogappregistry-attributegroupassociation.json", - "aws-elasticloadbalancingv2-loadbalancer.json", "aws-opensearchservice-domain.json", "aws-servicediscovery-instance.json", "aws-elasticsearch-domain.json", @@ -932,7 +931,6 @@ "aws-eks-nodegroup.json", "aws-organizations-organizationalunit.json", "aws-sqs-queue.json", - "aws-ec2-securitygroupingress.json", "aws-guardduty-detector.json", "aws-batch-computeenvironment.json", "aws-athena-namedquery.json", diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-ec2-securitygroupingress.json b/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-ec2-securitygroupingress.json new file mode 100644 index 0000000000..e127b28031 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-ec2-securitygroupingress.json @@ -0,0 +1,116 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::EC2::SecurityGroupIngress/Properties" + ], + "createOnlyProperties": [ + "/properties/GroupName", + "/properties/IpProtocol", + "/properties/SourceSecurityGroupId", + "/properties/SourcePrefixListId", + "/properties/ToPort", + "/properties/CidrIp", + "/properties/SourceSecurityGroupName", + "/properties/SourceSecurityGroupOwnerId", + "/properties/FromPort", + "/properties/GroupId", + "/properties/CidrIpv6" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeSecurityGroupRules", + "ec2:AuthorizeSecurityGroupIngress" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeSecurityGroupRules", + "ec2:RevokeSecurityGroupIngress" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroups", + "ec2:DescribeSecurityGroupRules" + ] + }, + "update": { + "permissions": [ + "ec2:UpdateSecurityGroupRuleDescriptionsIngress" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CidrIp": { + "type": "string" + }, + "CidrIpv6": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "FromPort": { + "minimum": -1, + "type": "integer" + }, + "GroupId": { + "type": "string" + }, + "GroupName": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "IpProtocol": { + "type": "string" + }, + "SourcePrefixListId": { + "type": "string" + }, + "SourceSecurityGroupId": { + "type": "string" + }, + "SourceSecurityGroupName": { + "type": "string" + }, + "SourceSecurityGroupOwnerId": { + "type": "string" + }, + "ToPort": { + "minimum": -1, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IpProtocol" + ], + "requiredXor": [ + "CidrIp", + "CidrIpv6", + "SourcePrefixListId", + "SourceSecurityGroupId", + "SourceSecurityGroupName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SecurityGroupIngress" +} diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-elasticloadbalancingv2-loadbalancer.json b/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-elasticloadbalancingv2-loadbalancer.json new file mode 100644 index 0000000000..1f8152439a --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-elasticloadbalancingv2-loadbalancer.json @@ -0,0 +1,193 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Type", + "/properties/Scheme" + ], + "definitions": { + "LoadBalancerAttribute": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "SubnetMapping": { + "additionalProperties": false, + "properties": { + "AllocationId": { + "type": "string" + }, + "IPv6Address": { + "type": "string" + }, + "PrivateIPv4Address": { + "type": "string" + }, + "SubnetId": { + "type": "string" + } + }, + "required": [ + "SubnetId" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "documentationUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html", + "handlers": { + "create": { + "permissions": [ + "elasticloadbalancing:CreateLoadBalancer", + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:AddTags" + ] + }, + "delete": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DeleteLoadBalancer" + ] + }, + "list": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers" + ] + }, + "read": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DescribeLoadBalancerAttributes", + "elasticloadbalancing:DescribeTags" + ] + }, + "update": { + "permissions": [ + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:SetSubnets", + "elasticloadbalancing:SetIpAddressType", + "elasticloadbalancing:SetSecurityGroups", + "elasticloadbalancing:AddTags", + "elasticloadbalancing:RemoveTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/LoadBalancerArn" + ], + "properties": { + "CanonicalHostedZoneID": { + "type": "string" + }, + "DNSName": { + "type": "string" + }, + "EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic": { + "type": "string" + }, + "IpAddressType": { + "type": "string" + }, + "LoadBalancerArn": { + "type": "string" + }, + "LoadBalancerAttributes": { + "arrayType": "AttributeList", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LoadBalancerAttribute" + }, + "type": "array", + "uniqueItems": true + }, + "LoadBalancerFullName": { + "type": "string" + }, + "LoadBalancerName": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Scheme": { + "type": "string" + }, + "SecurityGroups": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "SubnetMappings": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SubnetMapping" + }, + "type": "array", + "uniqueItems": true + }, + "Subnets": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Type": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/LoadBalancerName", + "/properties/LoadBalancerFullName", + "/properties/CanonicalHostedZoneID", + "/properties/LoadBalancerArn", + "/properties/DNSName" + ], + "requiredXor": [ + "SubnetMappings", + "Subnets" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticloadbalancingv2", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ElasticLoadBalancingV2::LoadBalancer" +} 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 3b7183a347..5965c81491 100644 --- a/src/cfnlint/data/schemas/providers/ca_central_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/ca_central_1/__init__.py @@ -1467,7 +1467,6 @@ "aws-efs-accesspoint.json", "aws-redshift-clustersecuritygroupingress.json", "aws-servicecatalogappregistry-attributegroupassociation.json", - "aws-elasticloadbalancingv2-loadbalancer.json", "aws-opensearchservice-domain.json", "aws-servicediscovery-instance.json", "aws-elasticsearch-domain.json", @@ -1674,6 +1673,7 @@ "aws-ec2-localgatewayroutetable.json", "aws-apigateway-resource.json", "aws-sagemaker-appimageconfig.json", + "aws-verifiedpermissions-identitysource.json", "aws-macie-session.json", "aws-elasticloadbalancingv2-targetgroup.json", "aws-applicationautoscaling-scalingpolicy.json", @@ -1922,7 +1922,6 @@ "aws-organizations-organizationalunit.json", "aws-appsync-datasource.json", "aws-sqs-queue.json", - "aws-ec2-securitygroupingress.json", "aws-guardduty-detector.json", "aws-sagemaker-modelqualityjobdefinition.json", "aws-iot-provisioningtemplate.json", diff --git a/src/cfnlint/data/schemas/providers/ca_central_1/aws-ec2-securitygroupingress.json b/src/cfnlint/data/schemas/providers/ca_central_1/aws-ec2-securitygroupingress.json new file mode 100644 index 0000000000..e127b28031 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ca_central_1/aws-ec2-securitygroupingress.json @@ -0,0 +1,116 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::EC2::SecurityGroupIngress/Properties" + ], + "createOnlyProperties": [ + "/properties/GroupName", + "/properties/IpProtocol", + "/properties/SourceSecurityGroupId", + "/properties/SourcePrefixListId", + "/properties/ToPort", + "/properties/CidrIp", + "/properties/SourceSecurityGroupName", + "/properties/SourceSecurityGroupOwnerId", + "/properties/FromPort", + "/properties/GroupId", + "/properties/CidrIpv6" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeSecurityGroupRules", + "ec2:AuthorizeSecurityGroupIngress" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeSecurityGroupRules", + "ec2:RevokeSecurityGroupIngress" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroups", + "ec2:DescribeSecurityGroupRules" + ] + }, + "update": { + "permissions": [ + "ec2:UpdateSecurityGroupRuleDescriptionsIngress" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CidrIp": { + "type": "string" + }, + "CidrIpv6": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "FromPort": { + "minimum": -1, + "type": "integer" + }, + "GroupId": { + "type": "string" + }, + "GroupName": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "IpProtocol": { + "type": "string" + }, + "SourcePrefixListId": { + "type": "string" + }, + "SourceSecurityGroupId": { + "type": "string" + }, + "SourceSecurityGroupName": { + "type": "string" + }, + "SourceSecurityGroupOwnerId": { + "type": "string" + }, + "ToPort": { + "minimum": -1, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IpProtocol" + ], + "requiredXor": [ + "CidrIp", + "CidrIpv6", + "SourcePrefixListId", + "SourceSecurityGroupId", + "SourceSecurityGroupName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SecurityGroupIngress" +} diff --git a/src/cfnlint/data/schemas/providers/ca_central_1/aws-elasticloadbalancingv2-loadbalancer.json b/src/cfnlint/data/schemas/providers/ca_central_1/aws-elasticloadbalancingv2-loadbalancer.json new file mode 100644 index 0000000000..1f8152439a --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ca_central_1/aws-elasticloadbalancingv2-loadbalancer.json @@ -0,0 +1,193 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Type", + "/properties/Scheme" + ], + "definitions": { + "LoadBalancerAttribute": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "SubnetMapping": { + "additionalProperties": false, + "properties": { + "AllocationId": { + "type": "string" + }, + "IPv6Address": { + "type": "string" + }, + "PrivateIPv4Address": { + "type": "string" + }, + "SubnetId": { + "type": "string" + } + }, + "required": [ + "SubnetId" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "documentationUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html", + "handlers": { + "create": { + "permissions": [ + "elasticloadbalancing:CreateLoadBalancer", + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:AddTags" + ] + }, + "delete": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DeleteLoadBalancer" + ] + }, + "list": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers" + ] + }, + "read": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DescribeLoadBalancerAttributes", + "elasticloadbalancing:DescribeTags" + ] + }, + "update": { + "permissions": [ + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:SetSubnets", + "elasticloadbalancing:SetIpAddressType", + "elasticloadbalancing:SetSecurityGroups", + "elasticloadbalancing:AddTags", + "elasticloadbalancing:RemoveTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/LoadBalancerArn" + ], + "properties": { + "CanonicalHostedZoneID": { + "type": "string" + }, + "DNSName": { + "type": "string" + }, + "EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic": { + "type": "string" + }, + "IpAddressType": { + "type": "string" + }, + "LoadBalancerArn": { + "type": "string" + }, + "LoadBalancerAttributes": { + "arrayType": "AttributeList", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LoadBalancerAttribute" + }, + "type": "array", + "uniqueItems": true + }, + "LoadBalancerFullName": { + "type": "string" + }, + "LoadBalancerName": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Scheme": { + "type": "string" + }, + "SecurityGroups": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "SubnetMappings": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SubnetMapping" + }, + "type": "array", + "uniqueItems": true + }, + "Subnets": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Type": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/LoadBalancerName", + "/properties/LoadBalancerFullName", + "/properties/CanonicalHostedZoneID", + "/properties/LoadBalancerArn", + "/properties/DNSName" + ], + "requiredXor": [ + "SubnetMappings", + "Subnets" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticloadbalancingv2", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ElasticLoadBalancingV2::LoadBalancer" +} diff --git a/src/cfnlint/data/schemas/providers/ca_central_1/aws-verifiedpermissions-identitysource.json b/src/cfnlint/data/schemas/providers/ca_central_1/aws-verifiedpermissions-identitysource.json deleted file mode 100644 index 46a0ad88f1..0000000000 --- a/src/cfnlint/data/schemas/providers/ca_central_1/aws-verifiedpermissions-identitysource.json +++ /dev/null @@ -1,221 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/PolicyStoreId" - ], - "definitions": { - "CognitoGroupConfiguration": { - "additionalProperties": false, - "properties": { - "GroupEntityType": { - "maxLength": 200, - "minLength": 1, - "pattern": "^([_a-zA-Z][_a-zA-Z0-9]*::)*[_a-zA-Z][_a-zA-Z0-9]*$", - "type": "string" - } - }, - "required": [ - "GroupEntityType" - ], - "type": "object" - }, - "CognitoUserPoolConfiguration": { - "additionalProperties": false, - "properties": { - "ClientIds": { - "insertionOrder": false, - "items": { - "maxLength": 255, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "maxItems": 1000, - "minItems": 0, - "type": "array" - }, - "GroupConfiguration": { - "$ref": "#/definitions/CognitoGroupConfiguration" - }, - "UserPoolArn": { - "maxLength": 255, - "minLength": 1, - "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", - "type": "string" - } - }, - "required": [ - "UserPoolArn" - ], - "type": "object" - }, - "IdentitySourceConfiguration": { - "additionalProperties": false, - "properties": { - "CognitoUserPoolConfiguration": { - "$ref": "#/definitions/CognitoUserPoolConfiguration" - } - }, - "required": [ - "CognitoUserPoolConfiguration" - ], - "title": "CognitoUserPoolConfiguration", - "type": "object" - }, - "IdentitySourceDetails": { - "additionalProperties": false, - "properties": { - "ClientIds": { - "insertionOrder": false, - "items": { - "maxLength": 255, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "maxItems": 1000, - "minItems": 0, - "type": "array" - }, - "DiscoveryUrl": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^https://.*$", - "type": "string" - }, - "OpenIdIssuer": { - "$ref": "#/definitions/OpenIdIssuer" - }, - "UserPoolArn": { - "maxLength": 255, - "minLength": 1, - "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", - "type": "string" - } - }, - "type": "object" - }, - "OpenIdIssuer": { - "enum": [ - "COGNITO" - ], - "type": "string" - } - }, - "deprecatedProperties": [ - "/properties/Details" - ], - "handlers": { - "create": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "delete": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "PolicyStoreId": { - "$ref": "resource-schema.json#/properties/PolicyStoreId" - } - }, - "required": [ - "PolicyStoreId" - ] - }, - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "read": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "update": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - } - }, - "primaryIdentifier": [ - "/properties/IdentitySourceId", - "/properties/PolicyStoreId" - ], - "properties": { - "Configuration": { - "$ref": "#/definitions/IdentitySourceConfiguration" - }, - "Details": { - "$ref": "#/definitions/IdentitySourceDetails" - }, - "IdentitySourceId": { - "maxLength": 200, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]*$", - "type": "string" - }, - "PolicyStoreId": { - "maxLength": 200, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]*$", - "type": "string" - }, - "PrincipalEntityType": { - "maxLength": 200, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Details", - "/properties/IdentitySourceId" - ], - "required": [ - "Configuration", - "PolicyStoreId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-avp", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::VerifiedPermissions::IdentitySource" -} 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 d5a2b263a0..34cab90ede 100644 --- a/src/cfnlint/data/schemas/providers/ca_west_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/ca_west_1/__init__.py @@ -528,6 +528,7 @@ "aws-cloudfront-publickey.json", "aws-ram-permission.json", "aws-datasync-task.json", + "aws-ecs-taskdefinition.json", "aws-ec2-spotfleet.json", "aws-s3-bucket.json", "aws-guardduty-ipset.json", @@ -560,7 +561,6 @@ "aws-efs-accesspoint.json", "aws-redshift-clustersecuritygroupingress.json", "aws-servicecatalogappregistry-attributegroupassociation.json", - "aws-elasticloadbalancingv2-loadbalancer.json", "aws-opensearchservice-domain.json", "aws-servicediscovery-instance.json", "aws-elasticsearch-domain.json", diff --git a/src/cfnlint/data/schemas/providers/ca_west_1/aws-elasticloadbalancingv2-loadbalancer.json b/src/cfnlint/data/schemas/providers/ca_west_1/aws-elasticloadbalancingv2-loadbalancer.json new file mode 100644 index 0000000000..1f8152439a --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ca_west_1/aws-elasticloadbalancingv2-loadbalancer.json @@ -0,0 +1,193 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Type", + "/properties/Scheme" + ], + "definitions": { + "LoadBalancerAttribute": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "SubnetMapping": { + "additionalProperties": false, + "properties": { + "AllocationId": { + "type": "string" + }, + "IPv6Address": { + "type": "string" + }, + "PrivateIPv4Address": { + "type": "string" + }, + "SubnetId": { + "type": "string" + } + }, + "required": [ + "SubnetId" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "documentationUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html", + "handlers": { + "create": { + "permissions": [ + "elasticloadbalancing:CreateLoadBalancer", + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:AddTags" + ] + }, + "delete": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DeleteLoadBalancer" + ] + }, + "list": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers" + ] + }, + "read": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DescribeLoadBalancerAttributes", + "elasticloadbalancing:DescribeTags" + ] + }, + "update": { + "permissions": [ + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:SetSubnets", + "elasticloadbalancing:SetIpAddressType", + "elasticloadbalancing:SetSecurityGroups", + "elasticloadbalancing:AddTags", + "elasticloadbalancing:RemoveTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/LoadBalancerArn" + ], + "properties": { + "CanonicalHostedZoneID": { + "type": "string" + }, + "DNSName": { + "type": "string" + }, + "EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic": { + "type": "string" + }, + "IpAddressType": { + "type": "string" + }, + "LoadBalancerArn": { + "type": "string" + }, + "LoadBalancerAttributes": { + "arrayType": "AttributeList", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LoadBalancerAttribute" + }, + "type": "array", + "uniqueItems": true + }, + "LoadBalancerFullName": { + "type": "string" + }, + "LoadBalancerName": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Scheme": { + "type": "string" + }, + "SecurityGroups": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "SubnetMappings": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SubnetMapping" + }, + "type": "array", + "uniqueItems": true + }, + "Subnets": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Type": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/LoadBalancerName", + "/properties/LoadBalancerFullName", + "/properties/CanonicalHostedZoneID", + "/properties/LoadBalancerArn", + "/properties/DNSName" + ], + "requiredXor": [ + "SubnetMappings", + "Subnets" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticloadbalancingv2", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ElasticLoadBalancingV2::LoadBalancer" +} diff --git a/src/cfnlint/data/schemas/providers/ca_west_1/aws-iam-policy.json b/src/cfnlint/data/schemas/providers/ca_west_1/aws-iam-policy.json index acbff06120..ce0cfa5775 100644 --- a/src/cfnlint/data/schemas/providers/ca_west_1/aws-iam-policy.json +++ b/src/cfnlint/data/schemas/providers/ca_west_1/aws-iam-policy.json @@ -1,5 +1,22 @@ { "additionalProperties": false, + "anyOf": [ + { + "required": [ + "Users" + ] + }, + { + "required": [ + "Groups" + ] + }, + { + "required": [ + "Roles" + ] + } + ], "primaryIdentifier": [ "/properties/Id" ], @@ -48,10 +65,5 @@ "PolicyName", "PolicyDocument" ], - "requiredOr": [ - "Users", - "Groups", - "Roles" - ], "typeName": "AWS::IAM::Policy" } diff --git a/src/cfnlint/data/schemas/providers/cn_north_1/__init__.py b/src/cfnlint/data/schemas/providers/cn_north_1/__init__.py index 9a97586f8a..c1d98ba8a7 100644 --- a/src/cfnlint/data/schemas/providers/cn_north_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/cn_north_1/__init__.py @@ -1182,6 +1182,7 @@ "aws-organizations-organizationalunit.json", "aws-appsync-datasource.json", "aws-sqs-queue.json", + "aws-ec2-securitygroupingress.json", "aws-guardduty-detector.json", "aws-iot-provisioningtemplate.json", "aws-personalize-schema.json", diff --git a/src/cfnlint/data/schemas/providers/cn_northwest_1/__init__.py b/src/cfnlint/data/schemas/providers/cn_northwest_1/__init__.py index 50819196bd..8b5bbc94a2 100644 --- a/src/cfnlint/data/schemas/providers/cn_northwest_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/cn_northwest_1/__init__.py @@ -860,7 +860,6 @@ "aws-imagebuilder-containerrecipe.json", "aws-efs-accesspoint.json", "aws-redshift-clustersecuritygroupingress.json", - "aws-elasticloadbalancingv2-loadbalancer.json", "aws-opensearchservice-domain.json", "aws-servicediscovery-instance.json", "aws-elasticsearch-domain.json", @@ -1107,7 +1106,6 @@ "aws-organizations-organizationalunit.json", "aws-appsync-datasource.json", "aws-sqs-queue.json", - "aws-ec2-securitygroupingress.json", "aws-guardduty-detector.json", "aws-iot-provisioningtemplate.json", "aws-apigateway-stage.json", diff --git a/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-ec2-securitygroupingress.json b/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-ec2-securitygroupingress.json new file mode 100644 index 0000000000..e127b28031 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-ec2-securitygroupingress.json @@ -0,0 +1,116 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::EC2::SecurityGroupIngress/Properties" + ], + "createOnlyProperties": [ + "/properties/GroupName", + "/properties/IpProtocol", + "/properties/SourceSecurityGroupId", + "/properties/SourcePrefixListId", + "/properties/ToPort", + "/properties/CidrIp", + "/properties/SourceSecurityGroupName", + "/properties/SourceSecurityGroupOwnerId", + "/properties/FromPort", + "/properties/GroupId", + "/properties/CidrIpv6" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeSecurityGroupRules", + "ec2:AuthorizeSecurityGroupIngress" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeSecurityGroupRules", + "ec2:RevokeSecurityGroupIngress" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroups", + "ec2:DescribeSecurityGroupRules" + ] + }, + "update": { + "permissions": [ + "ec2:UpdateSecurityGroupRuleDescriptionsIngress" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CidrIp": { + "type": "string" + }, + "CidrIpv6": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "FromPort": { + "minimum": -1, + "type": "integer" + }, + "GroupId": { + "type": "string" + }, + "GroupName": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "IpProtocol": { + "type": "string" + }, + "SourcePrefixListId": { + "type": "string" + }, + "SourceSecurityGroupId": { + "type": "string" + }, + "SourceSecurityGroupName": { + "type": "string" + }, + "SourceSecurityGroupOwnerId": { + "type": "string" + }, + "ToPort": { + "minimum": -1, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IpProtocol" + ], + "requiredXor": [ + "CidrIp", + "CidrIpv6", + "SourcePrefixListId", + "SourceSecurityGroupId", + "SourceSecurityGroupName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SecurityGroupIngress" +} diff --git a/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-elasticloadbalancingv2-loadbalancer.json b/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-elasticloadbalancingv2-loadbalancer.json new file mode 100644 index 0000000000..1f8152439a --- /dev/null +++ b/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-elasticloadbalancingv2-loadbalancer.json @@ -0,0 +1,193 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Type", + "/properties/Scheme" + ], + "definitions": { + "LoadBalancerAttribute": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "SubnetMapping": { + "additionalProperties": false, + "properties": { + "AllocationId": { + "type": "string" + }, + "IPv6Address": { + "type": "string" + }, + "PrivateIPv4Address": { + "type": "string" + }, + "SubnetId": { + "type": "string" + } + }, + "required": [ + "SubnetId" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "documentationUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html", + "handlers": { + "create": { + "permissions": [ + "elasticloadbalancing:CreateLoadBalancer", + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:AddTags" + ] + }, + "delete": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DeleteLoadBalancer" + ] + }, + "list": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers" + ] + }, + "read": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DescribeLoadBalancerAttributes", + "elasticloadbalancing:DescribeTags" + ] + }, + "update": { + "permissions": [ + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:SetSubnets", + "elasticloadbalancing:SetIpAddressType", + "elasticloadbalancing:SetSecurityGroups", + "elasticloadbalancing:AddTags", + "elasticloadbalancing:RemoveTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/LoadBalancerArn" + ], + "properties": { + "CanonicalHostedZoneID": { + "type": "string" + }, + "DNSName": { + "type": "string" + }, + "EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic": { + "type": "string" + }, + "IpAddressType": { + "type": "string" + }, + "LoadBalancerArn": { + "type": "string" + }, + "LoadBalancerAttributes": { + "arrayType": "AttributeList", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LoadBalancerAttribute" + }, + "type": "array", + "uniqueItems": true + }, + "LoadBalancerFullName": { + "type": "string" + }, + "LoadBalancerName": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Scheme": { + "type": "string" + }, + "SecurityGroups": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "SubnetMappings": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SubnetMapping" + }, + "type": "array", + "uniqueItems": true + }, + "Subnets": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Type": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/LoadBalancerName", + "/properties/LoadBalancerFullName", + "/properties/CanonicalHostedZoneID", + "/properties/LoadBalancerArn", + "/properties/DNSName" + ], + "requiredXor": [ + "SubnetMappings", + "Subnets" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticloadbalancingv2", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ElasticLoadBalancingV2::LoadBalancer" +} 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 68d567c523..b430559618 100644 --- a/src/cfnlint/data/schemas/providers/eu_central_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/eu_central_1/__init__.py @@ -1683,6 +1683,7 @@ "aws-omics-referencestore.json", "aws-redshift-clustersecuritygroupingress.json", "aws-servicecatalogappregistry-attributegroupassociation.json", + "aws-elasticloadbalancingv2-loadbalancer.json", "aws-opensearchservice-domain.json", "aws-timestream-database.json", "aws-servicediscovery-instance.json", @@ -1913,6 +1914,7 @@ "aws-datasync-locationefs.json", "aws-ec2-localgatewayroutetable.json", "aws-apigateway-resource.json", + "aws-verifiedpermissions-identitysource.json", "aws-macie-session.json", "aws-elasticloadbalancingv2-targetgroup.json", "aws-applicationautoscaling-scalingpolicy.json", @@ -2199,6 +2201,7 @@ "aws-organizations-organizationalunit.json", "aws-appsync-datasource.json", "aws-sqs-queue.json", + "aws-ec2-securitygroupingress.json", "aws-guardduty-detector.json", "aws-sagemaker-modelqualityjobdefinition.json", "aws-iot-provisioningtemplate.json", diff --git a/src/cfnlint/data/schemas/providers/eu_central_1/aws-verifiedpermissions-identitysource.json b/src/cfnlint/data/schemas/providers/eu_central_1/aws-verifiedpermissions-identitysource.json deleted file mode 100644 index 46a0ad88f1..0000000000 --- a/src/cfnlint/data/schemas/providers/eu_central_1/aws-verifiedpermissions-identitysource.json +++ /dev/null @@ -1,221 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/PolicyStoreId" - ], - "definitions": { - "CognitoGroupConfiguration": { - "additionalProperties": false, - "properties": { - "GroupEntityType": { - "maxLength": 200, - "minLength": 1, - "pattern": "^([_a-zA-Z][_a-zA-Z0-9]*::)*[_a-zA-Z][_a-zA-Z0-9]*$", - "type": "string" - } - }, - "required": [ - "GroupEntityType" - ], - "type": "object" - }, - "CognitoUserPoolConfiguration": { - "additionalProperties": false, - "properties": { - "ClientIds": { - "insertionOrder": false, - "items": { - "maxLength": 255, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "maxItems": 1000, - "minItems": 0, - "type": "array" - }, - "GroupConfiguration": { - "$ref": "#/definitions/CognitoGroupConfiguration" - }, - "UserPoolArn": { - "maxLength": 255, - "minLength": 1, - "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", - "type": "string" - } - }, - "required": [ - "UserPoolArn" - ], - "type": "object" - }, - "IdentitySourceConfiguration": { - "additionalProperties": false, - "properties": { - "CognitoUserPoolConfiguration": { - "$ref": "#/definitions/CognitoUserPoolConfiguration" - } - }, - "required": [ - "CognitoUserPoolConfiguration" - ], - "title": "CognitoUserPoolConfiguration", - "type": "object" - }, - "IdentitySourceDetails": { - "additionalProperties": false, - "properties": { - "ClientIds": { - "insertionOrder": false, - "items": { - "maxLength": 255, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "maxItems": 1000, - "minItems": 0, - "type": "array" - }, - "DiscoveryUrl": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^https://.*$", - "type": "string" - }, - "OpenIdIssuer": { - "$ref": "#/definitions/OpenIdIssuer" - }, - "UserPoolArn": { - "maxLength": 255, - "minLength": 1, - "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", - "type": "string" - } - }, - "type": "object" - }, - "OpenIdIssuer": { - "enum": [ - "COGNITO" - ], - "type": "string" - } - }, - "deprecatedProperties": [ - "/properties/Details" - ], - "handlers": { - "create": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "delete": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "PolicyStoreId": { - "$ref": "resource-schema.json#/properties/PolicyStoreId" - } - }, - "required": [ - "PolicyStoreId" - ] - }, - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "read": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "update": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - } - }, - "primaryIdentifier": [ - "/properties/IdentitySourceId", - "/properties/PolicyStoreId" - ], - "properties": { - "Configuration": { - "$ref": "#/definitions/IdentitySourceConfiguration" - }, - "Details": { - "$ref": "#/definitions/IdentitySourceDetails" - }, - "IdentitySourceId": { - "maxLength": 200, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]*$", - "type": "string" - }, - "PolicyStoreId": { - "maxLength": 200, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]*$", - "type": "string" - }, - "PrincipalEntityType": { - "maxLength": 200, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Details", - "/properties/IdentitySourceId" - ], - "required": [ - "Configuration", - "PolicyStoreId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-avp", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::VerifiedPermissions::IdentitySource" -} 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 d9aea3a30d..bd7a699865 100644 --- a/src/cfnlint/data/schemas/providers/eu_central_2/__init__.py +++ b/src/cfnlint/data/schemas/providers/eu_central_2/__init__.py @@ -725,7 +725,6 @@ "aws-efs-accesspoint.json", "aws-redshift-clustersecuritygroupingress.json", "aws-servicecatalogappregistry-attributegroupassociation.json", - "aws-elasticloadbalancingv2-loadbalancer.json", "aws-opensearchservice-domain.json", "aws-elasticsearch-domain.json", "aws-servicecatalog-stacksetconstraint.json", @@ -929,7 +928,6 @@ "aws-organizations-organizationalunit.json", "aws-appsync-datasource.json", "aws-sqs-queue.json", - "aws-ec2-securitygroupingress.json", "aws-guardduty-detector.json", "aws-batch-computeenvironment.json", "aws-athena-namedquery.json", diff --git a/src/cfnlint/data/schemas/providers/eu_central_2/aws-ec2-securitygroupingress.json b/src/cfnlint/data/schemas/providers/eu_central_2/aws-ec2-securitygroupingress.json new file mode 100644 index 0000000000..e127b28031 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_central_2/aws-ec2-securitygroupingress.json @@ -0,0 +1,116 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::EC2::SecurityGroupIngress/Properties" + ], + "createOnlyProperties": [ + "/properties/GroupName", + "/properties/IpProtocol", + "/properties/SourceSecurityGroupId", + "/properties/SourcePrefixListId", + "/properties/ToPort", + "/properties/CidrIp", + "/properties/SourceSecurityGroupName", + "/properties/SourceSecurityGroupOwnerId", + "/properties/FromPort", + "/properties/GroupId", + "/properties/CidrIpv6" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeSecurityGroupRules", + "ec2:AuthorizeSecurityGroupIngress" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeSecurityGroupRules", + "ec2:RevokeSecurityGroupIngress" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroups", + "ec2:DescribeSecurityGroupRules" + ] + }, + "update": { + "permissions": [ + "ec2:UpdateSecurityGroupRuleDescriptionsIngress" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CidrIp": { + "type": "string" + }, + "CidrIpv6": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "FromPort": { + "minimum": -1, + "type": "integer" + }, + "GroupId": { + "type": "string" + }, + "GroupName": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "IpProtocol": { + "type": "string" + }, + "SourcePrefixListId": { + "type": "string" + }, + "SourceSecurityGroupId": { + "type": "string" + }, + "SourceSecurityGroupName": { + "type": "string" + }, + "SourceSecurityGroupOwnerId": { + "type": "string" + }, + "ToPort": { + "minimum": -1, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IpProtocol" + ], + "requiredXor": [ + "CidrIp", + "CidrIpv6", + "SourcePrefixListId", + "SourceSecurityGroupId", + "SourceSecurityGroupName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SecurityGroupIngress" +} diff --git a/src/cfnlint/data/schemas/providers/eu_central_2/aws-elasticloadbalancingv2-loadbalancer.json b/src/cfnlint/data/schemas/providers/eu_central_2/aws-elasticloadbalancingv2-loadbalancer.json new file mode 100644 index 0000000000..1f8152439a --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_central_2/aws-elasticloadbalancingv2-loadbalancer.json @@ -0,0 +1,193 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Type", + "/properties/Scheme" + ], + "definitions": { + "LoadBalancerAttribute": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "SubnetMapping": { + "additionalProperties": false, + "properties": { + "AllocationId": { + "type": "string" + }, + "IPv6Address": { + "type": "string" + }, + "PrivateIPv4Address": { + "type": "string" + }, + "SubnetId": { + "type": "string" + } + }, + "required": [ + "SubnetId" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "documentationUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html", + "handlers": { + "create": { + "permissions": [ + "elasticloadbalancing:CreateLoadBalancer", + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:AddTags" + ] + }, + "delete": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DeleteLoadBalancer" + ] + }, + "list": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers" + ] + }, + "read": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DescribeLoadBalancerAttributes", + "elasticloadbalancing:DescribeTags" + ] + }, + "update": { + "permissions": [ + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:SetSubnets", + "elasticloadbalancing:SetIpAddressType", + "elasticloadbalancing:SetSecurityGroups", + "elasticloadbalancing:AddTags", + "elasticloadbalancing:RemoveTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/LoadBalancerArn" + ], + "properties": { + "CanonicalHostedZoneID": { + "type": "string" + }, + "DNSName": { + "type": "string" + }, + "EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic": { + "type": "string" + }, + "IpAddressType": { + "type": "string" + }, + "LoadBalancerArn": { + "type": "string" + }, + "LoadBalancerAttributes": { + "arrayType": "AttributeList", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LoadBalancerAttribute" + }, + "type": "array", + "uniqueItems": true + }, + "LoadBalancerFullName": { + "type": "string" + }, + "LoadBalancerName": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Scheme": { + "type": "string" + }, + "SecurityGroups": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "SubnetMappings": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SubnetMapping" + }, + "type": "array", + "uniqueItems": true + }, + "Subnets": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Type": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/LoadBalancerName", + "/properties/LoadBalancerFullName", + "/properties/CanonicalHostedZoneID", + "/properties/LoadBalancerArn", + "/properties/DNSName" + ], + "requiredXor": [ + "SubnetMappings", + "Subnets" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticloadbalancingv2", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ElasticLoadBalancingV2::LoadBalancer" +} 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 a45bf9b1a4..983b6d866f 100644 --- a/src/cfnlint/data/schemas/providers/eu_north_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/eu_north_1/__init__.py @@ -1320,7 +1320,6 @@ "aws-efs-accesspoint.json", "aws-redshift-clustersecuritygroupingress.json", "aws-servicecatalogappregistry-attributegroupassociation.json", - "aws-elasticloadbalancingv2-loadbalancer.json", "aws-opensearchservice-domain.json", "aws-servicediscovery-instance.json", "aws-elasticsearch-domain.json", @@ -1507,6 +1506,7 @@ "aws-datasync-locationefs.json", "aws-ec2-localgatewayroutetable.json", "aws-apigateway-resource.json", + "aws-verifiedpermissions-identitysource.json", "aws-macie-session.json", "aws-elasticloadbalancingv2-targetgroup.json", "aws-applicationautoscaling-scalingpolicy.json", @@ -1731,7 +1731,6 @@ "aws-organizations-organizationalunit.json", "aws-appsync-datasource.json", "aws-sqs-queue.json", - "aws-ec2-securitygroupingress.json", "aws-guardduty-detector.json", "aws-sagemaker-modelqualityjobdefinition.json", "aws-iot-provisioningtemplate.json", diff --git a/src/cfnlint/data/schemas/providers/eu_north_1/aws-ec2-securitygroupingress.json b/src/cfnlint/data/schemas/providers/eu_north_1/aws-ec2-securitygroupingress.json new file mode 100644 index 0000000000..e127b28031 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_north_1/aws-ec2-securitygroupingress.json @@ -0,0 +1,116 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::EC2::SecurityGroupIngress/Properties" + ], + "createOnlyProperties": [ + "/properties/GroupName", + "/properties/IpProtocol", + "/properties/SourceSecurityGroupId", + "/properties/SourcePrefixListId", + "/properties/ToPort", + "/properties/CidrIp", + "/properties/SourceSecurityGroupName", + "/properties/SourceSecurityGroupOwnerId", + "/properties/FromPort", + "/properties/GroupId", + "/properties/CidrIpv6" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeSecurityGroupRules", + "ec2:AuthorizeSecurityGroupIngress" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeSecurityGroupRules", + "ec2:RevokeSecurityGroupIngress" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroups", + "ec2:DescribeSecurityGroupRules" + ] + }, + "update": { + "permissions": [ + "ec2:UpdateSecurityGroupRuleDescriptionsIngress" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CidrIp": { + "type": "string" + }, + "CidrIpv6": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "FromPort": { + "minimum": -1, + "type": "integer" + }, + "GroupId": { + "type": "string" + }, + "GroupName": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "IpProtocol": { + "type": "string" + }, + "SourcePrefixListId": { + "type": "string" + }, + "SourceSecurityGroupId": { + "type": "string" + }, + "SourceSecurityGroupName": { + "type": "string" + }, + "SourceSecurityGroupOwnerId": { + "type": "string" + }, + "ToPort": { + "minimum": -1, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IpProtocol" + ], + "requiredXor": [ + "CidrIp", + "CidrIpv6", + "SourcePrefixListId", + "SourceSecurityGroupId", + "SourceSecurityGroupName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SecurityGroupIngress" +} diff --git a/src/cfnlint/data/schemas/providers/eu_north_1/aws-elasticloadbalancingv2-loadbalancer.json b/src/cfnlint/data/schemas/providers/eu_north_1/aws-elasticloadbalancingv2-loadbalancer.json new file mode 100644 index 0000000000..1f8152439a --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_north_1/aws-elasticloadbalancingv2-loadbalancer.json @@ -0,0 +1,193 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Type", + "/properties/Scheme" + ], + "definitions": { + "LoadBalancerAttribute": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "SubnetMapping": { + "additionalProperties": false, + "properties": { + "AllocationId": { + "type": "string" + }, + "IPv6Address": { + "type": "string" + }, + "PrivateIPv4Address": { + "type": "string" + }, + "SubnetId": { + "type": "string" + } + }, + "required": [ + "SubnetId" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "documentationUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html", + "handlers": { + "create": { + "permissions": [ + "elasticloadbalancing:CreateLoadBalancer", + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:AddTags" + ] + }, + "delete": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DeleteLoadBalancer" + ] + }, + "list": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers" + ] + }, + "read": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DescribeLoadBalancerAttributes", + "elasticloadbalancing:DescribeTags" + ] + }, + "update": { + "permissions": [ + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:SetSubnets", + "elasticloadbalancing:SetIpAddressType", + "elasticloadbalancing:SetSecurityGroups", + "elasticloadbalancing:AddTags", + "elasticloadbalancing:RemoveTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/LoadBalancerArn" + ], + "properties": { + "CanonicalHostedZoneID": { + "type": "string" + }, + "DNSName": { + "type": "string" + }, + "EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic": { + "type": "string" + }, + "IpAddressType": { + "type": "string" + }, + "LoadBalancerArn": { + "type": "string" + }, + "LoadBalancerAttributes": { + "arrayType": "AttributeList", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LoadBalancerAttribute" + }, + "type": "array", + "uniqueItems": true + }, + "LoadBalancerFullName": { + "type": "string" + }, + "LoadBalancerName": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Scheme": { + "type": "string" + }, + "SecurityGroups": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "SubnetMappings": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SubnetMapping" + }, + "type": "array", + "uniqueItems": true + }, + "Subnets": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Type": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/LoadBalancerName", + "/properties/LoadBalancerFullName", + "/properties/CanonicalHostedZoneID", + "/properties/LoadBalancerArn", + "/properties/DNSName" + ], + "requiredXor": [ + "SubnetMappings", + "Subnets" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticloadbalancingv2", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ElasticLoadBalancingV2::LoadBalancer" +} diff --git a/src/cfnlint/data/schemas/providers/eu_north_1/aws-verifiedpermissions-identitysource.json b/src/cfnlint/data/schemas/providers/eu_north_1/aws-verifiedpermissions-identitysource.json deleted file mode 100644 index 46a0ad88f1..0000000000 --- a/src/cfnlint/data/schemas/providers/eu_north_1/aws-verifiedpermissions-identitysource.json +++ /dev/null @@ -1,221 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/PolicyStoreId" - ], - "definitions": { - "CognitoGroupConfiguration": { - "additionalProperties": false, - "properties": { - "GroupEntityType": { - "maxLength": 200, - "minLength": 1, - "pattern": "^([_a-zA-Z][_a-zA-Z0-9]*::)*[_a-zA-Z][_a-zA-Z0-9]*$", - "type": "string" - } - }, - "required": [ - "GroupEntityType" - ], - "type": "object" - }, - "CognitoUserPoolConfiguration": { - "additionalProperties": false, - "properties": { - "ClientIds": { - "insertionOrder": false, - "items": { - "maxLength": 255, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "maxItems": 1000, - "minItems": 0, - "type": "array" - }, - "GroupConfiguration": { - "$ref": "#/definitions/CognitoGroupConfiguration" - }, - "UserPoolArn": { - "maxLength": 255, - "minLength": 1, - "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", - "type": "string" - } - }, - "required": [ - "UserPoolArn" - ], - "type": "object" - }, - "IdentitySourceConfiguration": { - "additionalProperties": false, - "properties": { - "CognitoUserPoolConfiguration": { - "$ref": "#/definitions/CognitoUserPoolConfiguration" - } - }, - "required": [ - "CognitoUserPoolConfiguration" - ], - "title": "CognitoUserPoolConfiguration", - "type": "object" - }, - "IdentitySourceDetails": { - "additionalProperties": false, - "properties": { - "ClientIds": { - "insertionOrder": false, - "items": { - "maxLength": 255, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "maxItems": 1000, - "minItems": 0, - "type": "array" - }, - "DiscoveryUrl": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^https://.*$", - "type": "string" - }, - "OpenIdIssuer": { - "$ref": "#/definitions/OpenIdIssuer" - }, - "UserPoolArn": { - "maxLength": 255, - "minLength": 1, - "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", - "type": "string" - } - }, - "type": "object" - }, - "OpenIdIssuer": { - "enum": [ - "COGNITO" - ], - "type": "string" - } - }, - "deprecatedProperties": [ - "/properties/Details" - ], - "handlers": { - "create": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "delete": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "PolicyStoreId": { - "$ref": "resource-schema.json#/properties/PolicyStoreId" - } - }, - "required": [ - "PolicyStoreId" - ] - }, - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "read": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "update": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - } - }, - "primaryIdentifier": [ - "/properties/IdentitySourceId", - "/properties/PolicyStoreId" - ], - "properties": { - "Configuration": { - "$ref": "#/definitions/IdentitySourceConfiguration" - }, - "Details": { - "$ref": "#/definitions/IdentitySourceDetails" - }, - "IdentitySourceId": { - "maxLength": 200, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]*$", - "type": "string" - }, - "PolicyStoreId": { - "maxLength": 200, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]*$", - "type": "string" - }, - "PrincipalEntityType": { - "maxLength": 200, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Details", - "/properties/IdentitySourceId" - ], - "required": [ - "Configuration", - "PolicyStoreId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-avp", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::VerifiedPermissions::IdentitySource" -} diff --git a/src/cfnlint/data/schemas/providers/eu_south_1/__init__.py b/src/cfnlint/data/schemas/providers/eu_south_1/__init__.py index ab8c0fb7f5..d2fd0549a3 100644 --- a/src/cfnlint/data/schemas/providers/eu_south_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/eu_south_1/__init__.py @@ -1026,7 +1026,6 @@ "aws-efs-accesspoint.json", "aws-redshift-clustersecuritygroupingress.json", "aws-servicecatalogappregistry-attributegroupassociation.json", - "aws-elasticloadbalancingv2-loadbalancer.json", "aws-opensearchservice-domain.json", "aws-servicediscovery-instance.json", "aws-elasticsearch-domain.json", @@ -1176,6 +1175,7 @@ "aws-datasync-locationefs.json", "aws-ec2-localgatewayroutetable.json", "aws-apigateway-resource.json", + "aws-verifiedpermissions-identitysource.json", "aws-macie-session.json", "aws-elasticloadbalancingv2-targetgroup.json", "aws-applicationautoscaling-scalingpolicy.json", @@ -1336,7 +1336,6 @@ "aws-organizations-organizationalunit.json", "aws-appsync-datasource.json", "aws-sqs-queue.json", - "aws-ec2-securitygroupingress.json", "aws-guardduty-detector.json", "aws-apigateway-stage.json", "aws-networkmanager-corenetwork.json", diff --git a/src/cfnlint/data/schemas/providers/eu_south_1/aws-ec2-securitygroupingress.json b/src/cfnlint/data/schemas/providers/eu_south_1/aws-ec2-securitygroupingress.json new file mode 100644 index 0000000000..e127b28031 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_south_1/aws-ec2-securitygroupingress.json @@ -0,0 +1,116 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::EC2::SecurityGroupIngress/Properties" + ], + "createOnlyProperties": [ + "/properties/GroupName", + "/properties/IpProtocol", + "/properties/SourceSecurityGroupId", + "/properties/SourcePrefixListId", + "/properties/ToPort", + "/properties/CidrIp", + "/properties/SourceSecurityGroupName", + "/properties/SourceSecurityGroupOwnerId", + "/properties/FromPort", + "/properties/GroupId", + "/properties/CidrIpv6" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeSecurityGroupRules", + "ec2:AuthorizeSecurityGroupIngress" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeSecurityGroupRules", + "ec2:RevokeSecurityGroupIngress" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroups", + "ec2:DescribeSecurityGroupRules" + ] + }, + "update": { + "permissions": [ + "ec2:UpdateSecurityGroupRuleDescriptionsIngress" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CidrIp": { + "type": "string" + }, + "CidrIpv6": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "FromPort": { + "minimum": -1, + "type": "integer" + }, + "GroupId": { + "type": "string" + }, + "GroupName": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "IpProtocol": { + "type": "string" + }, + "SourcePrefixListId": { + "type": "string" + }, + "SourceSecurityGroupId": { + "type": "string" + }, + "SourceSecurityGroupName": { + "type": "string" + }, + "SourceSecurityGroupOwnerId": { + "type": "string" + }, + "ToPort": { + "minimum": -1, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IpProtocol" + ], + "requiredXor": [ + "CidrIp", + "CidrIpv6", + "SourcePrefixListId", + "SourceSecurityGroupId", + "SourceSecurityGroupName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SecurityGroupIngress" +} diff --git a/src/cfnlint/data/schemas/providers/eu_south_1/aws-elasticloadbalancingv2-loadbalancer.json b/src/cfnlint/data/schemas/providers/eu_south_1/aws-elasticloadbalancingv2-loadbalancer.json new file mode 100644 index 0000000000..1f8152439a --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_south_1/aws-elasticloadbalancingv2-loadbalancer.json @@ -0,0 +1,193 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Type", + "/properties/Scheme" + ], + "definitions": { + "LoadBalancerAttribute": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "SubnetMapping": { + "additionalProperties": false, + "properties": { + "AllocationId": { + "type": "string" + }, + "IPv6Address": { + "type": "string" + }, + "PrivateIPv4Address": { + "type": "string" + }, + "SubnetId": { + "type": "string" + } + }, + "required": [ + "SubnetId" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "documentationUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html", + "handlers": { + "create": { + "permissions": [ + "elasticloadbalancing:CreateLoadBalancer", + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:AddTags" + ] + }, + "delete": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DeleteLoadBalancer" + ] + }, + "list": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers" + ] + }, + "read": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DescribeLoadBalancerAttributes", + "elasticloadbalancing:DescribeTags" + ] + }, + "update": { + "permissions": [ + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:SetSubnets", + "elasticloadbalancing:SetIpAddressType", + "elasticloadbalancing:SetSecurityGroups", + "elasticloadbalancing:AddTags", + "elasticloadbalancing:RemoveTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/LoadBalancerArn" + ], + "properties": { + "CanonicalHostedZoneID": { + "type": "string" + }, + "DNSName": { + "type": "string" + }, + "EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic": { + "type": "string" + }, + "IpAddressType": { + "type": "string" + }, + "LoadBalancerArn": { + "type": "string" + }, + "LoadBalancerAttributes": { + "arrayType": "AttributeList", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LoadBalancerAttribute" + }, + "type": "array", + "uniqueItems": true + }, + "LoadBalancerFullName": { + "type": "string" + }, + "LoadBalancerName": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Scheme": { + "type": "string" + }, + "SecurityGroups": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "SubnetMappings": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SubnetMapping" + }, + "type": "array", + "uniqueItems": true + }, + "Subnets": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Type": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/LoadBalancerName", + "/properties/LoadBalancerFullName", + "/properties/CanonicalHostedZoneID", + "/properties/LoadBalancerArn", + "/properties/DNSName" + ], + "requiredXor": [ + "SubnetMappings", + "Subnets" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticloadbalancingv2", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ElasticLoadBalancingV2::LoadBalancer" +} diff --git a/src/cfnlint/data/schemas/providers/eu_south_1/aws-verifiedpermissions-identitysource.json b/src/cfnlint/data/schemas/providers/eu_south_1/aws-verifiedpermissions-identitysource.json deleted file mode 100644 index 46a0ad88f1..0000000000 --- a/src/cfnlint/data/schemas/providers/eu_south_1/aws-verifiedpermissions-identitysource.json +++ /dev/null @@ -1,221 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/PolicyStoreId" - ], - "definitions": { - "CognitoGroupConfiguration": { - "additionalProperties": false, - "properties": { - "GroupEntityType": { - "maxLength": 200, - "minLength": 1, - "pattern": "^([_a-zA-Z][_a-zA-Z0-9]*::)*[_a-zA-Z][_a-zA-Z0-9]*$", - "type": "string" - } - }, - "required": [ - "GroupEntityType" - ], - "type": "object" - }, - "CognitoUserPoolConfiguration": { - "additionalProperties": false, - "properties": { - "ClientIds": { - "insertionOrder": false, - "items": { - "maxLength": 255, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "maxItems": 1000, - "minItems": 0, - "type": "array" - }, - "GroupConfiguration": { - "$ref": "#/definitions/CognitoGroupConfiguration" - }, - "UserPoolArn": { - "maxLength": 255, - "minLength": 1, - "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", - "type": "string" - } - }, - "required": [ - "UserPoolArn" - ], - "type": "object" - }, - "IdentitySourceConfiguration": { - "additionalProperties": false, - "properties": { - "CognitoUserPoolConfiguration": { - "$ref": "#/definitions/CognitoUserPoolConfiguration" - } - }, - "required": [ - "CognitoUserPoolConfiguration" - ], - "title": "CognitoUserPoolConfiguration", - "type": "object" - }, - "IdentitySourceDetails": { - "additionalProperties": false, - "properties": { - "ClientIds": { - "insertionOrder": false, - "items": { - "maxLength": 255, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "maxItems": 1000, - "minItems": 0, - "type": "array" - }, - "DiscoveryUrl": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^https://.*$", - "type": "string" - }, - "OpenIdIssuer": { - "$ref": "#/definitions/OpenIdIssuer" - }, - "UserPoolArn": { - "maxLength": 255, - "minLength": 1, - "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", - "type": "string" - } - }, - "type": "object" - }, - "OpenIdIssuer": { - "enum": [ - "COGNITO" - ], - "type": "string" - } - }, - "deprecatedProperties": [ - "/properties/Details" - ], - "handlers": { - "create": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "delete": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "PolicyStoreId": { - "$ref": "resource-schema.json#/properties/PolicyStoreId" - } - }, - "required": [ - "PolicyStoreId" - ] - }, - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "read": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "update": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - } - }, - "primaryIdentifier": [ - "/properties/IdentitySourceId", - "/properties/PolicyStoreId" - ], - "properties": { - "Configuration": { - "$ref": "#/definitions/IdentitySourceConfiguration" - }, - "Details": { - "$ref": "#/definitions/IdentitySourceDetails" - }, - "IdentitySourceId": { - "maxLength": 200, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]*$", - "type": "string" - }, - "PolicyStoreId": { - "maxLength": 200, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]*$", - "type": "string" - }, - "PrincipalEntityType": { - "maxLength": 200, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Details", - "/properties/IdentitySourceId" - ], - "required": [ - "Configuration", - "PolicyStoreId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-avp", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::VerifiedPermissions::IdentitySource" -} diff --git a/src/cfnlint/data/schemas/providers/eu_south_2/__init__.py b/src/cfnlint/data/schemas/providers/eu_south_2/__init__.py index 9f84ad3440..cac138b9ec 100644 --- a/src/cfnlint/data/schemas/providers/eu_south_2/__init__.py +++ b/src/cfnlint/data/schemas/providers/eu_south_2/__init__.py @@ -726,7 +726,6 @@ "aws-efs-accesspoint.json", "aws-redshift-clustersecuritygroupingress.json", "aws-servicecatalogappregistry-attributegroupassociation.json", - "aws-elasticloadbalancingv2-loadbalancer.json", "aws-opensearchservice-domain.json", "aws-elasticsearch-domain.json", "aws-servicecatalog-stacksetconstraint.json", @@ -937,7 +936,6 @@ "aws-organizations-organizationalunit.json", "aws-appsync-datasource.json", "aws-sqs-queue.json", - "aws-ec2-securitygroupingress.json", "aws-guardduty-detector.json", "aws-batch-computeenvironment.json", "aws-athena-namedquery.json", diff --git a/src/cfnlint/data/schemas/providers/eu_south_2/aws-ec2-securitygroupingress.json b/src/cfnlint/data/schemas/providers/eu_south_2/aws-ec2-securitygroupingress.json new file mode 100644 index 0000000000..e127b28031 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_south_2/aws-ec2-securitygroupingress.json @@ -0,0 +1,116 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::EC2::SecurityGroupIngress/Properties" + ], + "createOnlyProperties": [ + "/properties/GroupName", + "/properties/IpProtocol", + "/properties/SourceSecurityGroupId", + "/properties/SourcePrefixListId", + "/properties/ToPort", + "/properties/CidrIp", + "/properties/SourceSecurityGroupName", + "/properties/SourceSecurityGroupOwnerId", + "/properties/FromPort", + "/properties/GroupId", + "/properties/CidrIpv6" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeSecurityGroupRules", + "ec2:AuthorizeSecurityGroupIngress" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeSecurityGroupRules", + "ec2:RevokeSecurityGroupIngress" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroups", + "ec2:DescribeSecurityGroupRules" + ] + }, + "update": { + "permissions": [ + "ec2:UpdateSecurityGroupRuleDescriptionsIngress" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CidrIp": { + "type": "string" + }, + "CidrIpv6": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "FromPort": { + "minimum": -1, + "type": "integer" + }, + "GroupId": { + "type": "string" + }, + "GroupName": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "IpProtocol": { + "type": "string" + }, + "SourcePrefixListId": { + "type": "string" + }, + "SourceSecurityGroupId": { + "type": "string" + }, + "SourceSecurityGroupName": { + "type": "string" + }, + "SourceSecurityGroupOwnerId": { + "type": "string" + }, + "ToPort": { + "minimum": -1, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IpProtocol" + ], + "requiredXor": [ + "CidrIp", + "CidrIpv6", + "SourcePrefixListId", + "SourceSecurityGroupId", + "SourceSecurityGroupName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SecurityGroupIngress" +} diff --git a/src/cfnlint/data/schemas/providers/eu_south_2/aws-elasticloadbalancingv2-loadbalancer.json b/src/cfnlint/data/schemas/providers/eu_south_2/aws-elasticloadbalancingv2-loadbalancer.json new file mode 100644 index 0000000000..1f8152439a --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_south_2/aws-elasticloadbalancingv2-loadbalancer.json @@ -0,0 +1,193 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Type", + "/properties/Scheme" + ], + "definitions": { + "LoadBalancerAttribute": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "SubnetMapping": { + "additionalProperties": false, + "properties": { + "AllocationId": { + "type": "string" + }, + "IPv6Address": { + "type": "string" + }, + "PrivateIPv4Address": { + "type": "string" + }, + "SubnetId": { + "type": "string" + } + }, + "required": [ + "SubnetId" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "documentationUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html", + "handlers": { + "create": { + "permissions": [ + "elasticloadbalancing:CreateLoadBalancer", + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:AddTags" + ] + }, + "delete": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DeleteLoadBalancer" + ] + }, + "list": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers" + ] + }, + "read": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DescribeLoadBalancerAttributes", + "elasticloadbalancing:DescribeTags" + ] + }, + "update": { + "permissions": [ + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:SetSubnets", + "elasticloadbalancing:SetIpAddressType", + "elasticloadbalancing:SetSecurityGroups", + "elasticloadbalancing:AddTags", + "elasticloadbalancing:RemoveTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/LoadBalancerArn" + ], + "properties": { + "CanonicalHostedZoneID": { + "type": "string" + }, + "DNSName": { + "type": "string" + }, + "EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic": { + "type": "string" + }, + "IpAddressType": { + "type": "string" + }, + "LoadBalancerArn": { + "type": "string" + }, + "LoadBalancerAttributes": { + "arrayType": "AttributeList", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LoadBalancerAttribute" + }, + "type": "array", + "uniqueItems": true + }, + "LoadBalancerFullName": { + "type": "string" + }, + "LoadBalancerName": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Scheme": { + "type": "string" + }, + "SecurityGroups": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "SubnetMappings": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SubnetMapping" + }, + "type": "array", + "uniqueItems": true + }, + "Subnets": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Type": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/LoadBalancerName", + "/properties/LoadBalancerFullName", + "/properties/CanonicalHostedZoneID", + "/properties/LoadBalancerArn", + "/properties/DNSName" + ], + "requiredXor": [ + "SubnetMappings", + "Subnets" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticloadbalancingv2", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ElasticLoadBalancingV2::LoadBalancer" +} 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 a460ab3214..538340fa1f 100644 --- a/src/cfnlint/data/schemas/providers/eu_west_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/eu_west_1/__init__.py @@ -1648,7 +1648,6 @@ "aws-omics-referencestore.json", "aws-redshift-clustersecuritygroupingress.json", "aws-servicecatalogappregistry-attributegroupassociation.json", - "aws-elasticloadbalancingv2-loadbalancer.json", "aws-opensearchservice-domain.json", "aws-timestream-database.json", "aws-servicediscovery-instance.json", @@ -1884,6 +1883,7 @@ "aws-datasync-locationefs.json", "aws-ec2-localgatewayroutetable.json", "aws-apigateway-resource.json", + "aws-verifiedpermissions-identitysource.json", "aws-macie-session.json", "aws-elasticloadbalancingv2-targetgroup.json", "aws-applicationautoscaling-scalingpolicy.json", @@ -2172,7 +2172,6 @@ "aws-organizations-organizationalunit.json", "aws-appsync-datasource.json", "aws-sqs-queue.json", - "aws-ec2-securitygroupingress.json", "aws-guardduty-detector.json", "aws-sagemaker-modelqualityjobdefinition.json", "aws-iot-provisioningtemplate.json", diff --git a/src/cfnlint/data/schemas/providers/eu_west_1/aws-ec2-securitygroupingress.json b/src/cfnlint/data/schemas/providers/eu_west_1/aws-ec2-securitygroupingress.json new file mode 100644 index 0000000000..e127b28031 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_west_1/aws-ec2-securitygroupingress.json @@ -0,0 +1,116 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::EC2::SecurityGroupIngress/Properties" + ], + "createOnlyProperties": [ + "/properties/GroupName", + "/properties/IpProtocol", + "/properties/SourceSecurityGroupId", + "/properties/SourcePrefixListId", + "/properties/ToPort", + "/properties/CidrIp", + "/properties/SourceSecurityGroupName", + "/properties/SourceSecurityGroupOwnerId", + "/properties/FromPort", + "/properties/GroupId", + "/properties/CidrIpv6" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeSecurityGroupRules", + "ec2:AuthorizeSecurityGroupIngress" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeSecurityGroupRules", + "ec2:RevokeSecurityGroupIngress" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroups", + "ec2:DescribeSecurityGroupRules" + ] + }, + "update": { + "permissions": [ + "ec2:UpdateSecurityGroupRuleDescriptionsIngress" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CidrIp": { + "type": "string" + }, + "CidrIpv6": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "FromPort": { + "minimum": -1, + "type": "integer" + }, + "GroupId": { + "type": "string" + }, + "GroupName": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "IpProtocol": { + "type": "string" + }, + "SourcePrefixListId": { + "type": "string" + }, + "SourceSecurityGroupId": { + "type": "string" + }, + "SourceSecurityGroupName": { + "type": "string" + }, + "SourceSecurityGroupOwnerId": { + "type": "string" + }, + "ToPort": { + "minimum": -1, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IpProtocol" + ], + "requiredXor": [ + "CidrIp", + "CidrIpv6", + "SourcePrefixListId", + "SourceSecurityGroupId", + "SourceSecurityGroupName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SecurityGroupIngress" +} diff --git a/src/cfnlint/data/schemas/providers/eu_west_1/aws-elasticloadbalancingv2-loadbalancer.json b/src/cfnlint/data/schemas/providers/eu_west_1/aws-elasticloadbalancingv2-loadbalancer.json new file mode 100644 index 0000000000..1f8152439a --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_west_1/aws-elasticloadbalancingv2-loadbalancer.json @@ -0,0 +1,193 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Type", + "/properties/Scheme" + ], + "definitions": { + "LoadBalancerAttribute": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "SubnetMapping": { + "additionalProperties": false, + "properties": { + "AllocationId": { + "type": "string" + }, + "IPv6Address": { + "type": "string" + }, + "PrivateIPv4Address": { + "type": "string" + }, + "SubnetId": { + "type": "string" + } + }, + "required": [ + "SubnetId" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "documentationUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html", + "handlers": { + "create": { + "permissions": [ + "elasticloadbalancing:CreateLoadBalancer", + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:AddTags" + ] + }, + "delete": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DeleteLoadBalancer" + ] + }, + "list": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers" + ] + }, + "read": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DescribeLoadBalancerAttributes", + "elasticloadbalancing:DescribeTags" + ] + }, + "update": { + "permissions": [ + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:SetSubnets", + "elasticloadbalancing:SetIpAddressType", + "elasticloadbalancing:SetSecurityGroups", + "elasticloadbalancing:AddTags", + "elasticloadbalancing:RemoveTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/LoadBalancerArn" + ], + "properties": { + "CanonicalHostedZoneID": { + "type": "string" + }, + "DNSName": { + "type": "string" + }, + "EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic": { + "type": "string" + }, + "IpAddressType": { + "type": "string" + }, + "LoadBalancerArn": { + "type": "string" + }, + "LoadBalancerAttributes": { + "arrayType": "AttributeList", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LoadBalancerAttribute" + }, + "type": "array", + "uniqueItems": true + }, + "LoadBalancerFullName": { + "type": "string" + }, + "LoadBalancerName": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Scheme": { + "type": "string" + }, + "SecurityGroups": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "SubnetMappings": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SubnetMapping" + }, + "type": "array", + "uniqueItems": true + }, + "Subnets": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Type": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/LoadBalancerName", + "/properties/LoadBalancerFullName", + "/properties/CanonicalHostedZoneID", + "/properties/LoadBalancerArn", + "/properties/DNSName" + ], + "requiredXor": [ + "SubnetMappings", + "Subnets" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticloadbalancingv2", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ElasticLoadBalancingV2::LoadBalancer" +} diff --git a/src/cfnlint/data/schemas/providers/eu_west_1/aws-verifiedpermissions-identitysource.json b/src/cfnlint/data/schemas/providers/eu_west_1/aws-verifiedpermissions-identitysource.json deleted file mode 100644 index 46a0ad88f1..0000000000 --- a/src/cfnlint/data/schemas/providers/eu_west_1/aws-verifiedpermissions-identitysource.json +++ /dev/null @@ -1,221 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/PolicyStoreId" - ], - "definitions": { - "CognitoGroupConfiguration": { - "additionalProperties": false, - "properties": { - "GroupEntityType": { - "maxLength": 200, - "minLength": 1, - "pattern": "^([_a-zA-Z][_a-zA-Z0-9]*::)*[_a-zA-Z][_a-zA-Z0-9]*$", - "type": "string" - } - }, - "required": [ - "GroupEntityType" - ], - "type": "object" - }, - "CognitoUserPoolConfiguration": { - "additionalProperties": false, - "properties": { - "ClientIds": { - "insertionOrder": false, - "items": { - "maxLength": 255, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "maxItems": 1000, - "minItems": 0, - "type": "array" - }, - "GroupConfiguration": { - "$ref": "#/definitions/CognitoGroupConfiguration" - }, - "UserPoolArn": { - "maxLength": 255, - "minLength": 1, - "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", - "type": "string" - } - }, - "required": [ - "UserPoolArn" - ], - "type": "object" - }, - "IdentitySourceConfiguration": { - "additionalProperties": false, - "properties": { - "CognitoUserPoolConfiguration": { - "$ref": "#/definitions/CognitoUserPoolConfiguration" - } - }, - "required": [ - "CognitoUserPoolConfiguration" - ], - "title": "CognitoUserPoolConfiguration", - "type": "object" - }, - "IdentitySourceDetails": { - "additionalProperties": false, - "properties": { - "ClientIds": { - "insertionOrder": false, - "items": { - "maxLength": 255, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "maxItems": 1000, - "minItems": 0, - "type": "array" - }, - "DiscoveryUrl": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^https://.*$", - "type": "string" - }, - "OpenIdIssuer": { - "$ref": "#/definitions/OpenIdIssuer" - }, - "UserPoolArn": { - "maxLength": 255, - "minLength": 1, - "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", - "type": "string" - } - }, - "type": "object" - }, - "OpenIdIssuer": { - "enum": [ - "COGNITO" - ], - "type": "string" - } - }, - "deprecatedProperties": [ - "/properties/Details" - ], - "handlers": { - "create": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "delete": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "PolicyStoreId": { - "$ref": "resource-schema.json#/properties/PolicyStoreId" - } - }, - "required": [ - "PolicyStoreId" - ] - }, - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "read": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "update": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - } - }, - "primaryIdentifier": [ - "/properties/IdentitySourceId", - "/properties/PolicyStoreId" - ], - "properties": { - "Configuration": { - "$ref": "#/definitions/IdentitySourceConfiguration" - }, - "Details": { - "$ref": "#/definitions/IdentitySourceDetails" - }, - "IdentitySourceId": { - "maxLength": 200, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]*$", - "type": "string" - }, - "PolicyStoreId": { - "maxLength": 200, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]*$", - "type": "string" - }, - "PrincipalEntityType": { - "maxLength": 200, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Details", - "/properties/IdentitySourceId" - ], - "required": [ - "Configuration", - "PolicyStoreId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-avp", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::VerifiedPermissions::IdentitySource" -} diff --git a/src/cfnlint/data/schemas/providers/eu_west_2/__init__.py b/src/cfnlint/data/schemas/providers/eu_west_2/__init__.py index e878796cae..1d1b84bcf4 100644 --- a/src/cfnlint/data/schemas/providers/eu_west_2/__init__.py +++ b/src/cfnlint/data/schemas/providers/eu_west_2/__init__.py @@ -1544,7 +1544,6 @@ "aws-omics-referencestore.json", "aws-redshift-clustersecuritygroupingress.json", "aws-servicecatalogappregistry-attributegroupassociation.json", - "aws-elasticloadbalancingv2-loadbalancer.json", "aws-opensearchservice-domain.json", "aws-servicediscovery-instance.json", "aws-elasticsearch-domain.json", @@ -1751,6 +1750,7 @@ "aws-ec2-localgatewayroutetable.json", "aws-apigateway-resource.json", "aws-sagemaker-appimageconfig.json", + "aws-verifiedpermissions-identitysource.json", "aws-macie-session.json", "aws-elasticloadbalancingv2-targetgroup.json", "aws-applicationautoscaling-scalingpolicy.json", @@ -2014,7 +2014,6 @@ "aws-organizations-organizationalunit.json", "aws-appsync-datasource.json", "aws-sqs-queue.json", - "aws-ec2-securitygroupingress.json", "aws-guardduty-detector.json", "aws-sagemaker-modelqualityjobdefinition.json", "aws-iot-provisioningtemplate.json", diff --git a/src/cfnlint/data/schemas/providers/eu_west_2/aws-ec2-securitygroupingress.json b/src/cfnlint/data/schemas/providers/eu_west_2/aws-ec2-securitygroupingress.json new file mode 100644 index 0000000000..e127b28031 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_west_2/aws-ec2-securitygroupingress.json @@ -0,0 +1,116 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::EC2::SecurityGroupIngress/Properties" + ], + "createOnlyProperties": [ + "/properties/GroupName", + "/properties/IpProtocol", + "/properties/SourceSecurityGroupId", + "/properties/SourcePrefixListId", + "/properties/ToPort", + "/properties/CidrIp", + "/properties/SourceSecurityGroupName", + "/properties/SourceSecurityGroupOwnerId", + "/properties/FromPort", + "/properties/GroupId", + "/properties/CidrIpv6" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeSecurityGroupRules", + "ec2:AuthorizeSecurityGroupIngress" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeSecurityGroupRules", + "ec2:RevokeSecurityGroupIngress" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroups", + "ec2:DescribeSecurityGroupRules" + ] + }, + "update": { + "permissions": [ + "ec2:UpdateSecurityGroupRuleDescriptionsIngress" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CidrIp": { + "type": "string" + }, + "CidrIpv6": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "FromPort": { + "minimum": -1, + "type": "integer" + }, + "GroupId": { + "type": "string" + }, + "GroupName": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "IpProtocol": { + "type": "string" + }, + "SourcePrefixListId": { + "type": "string" + }, + "SourceSecurityGroupId": { + "type": "string" + }, + "SourceSecurityGroupName": { + "type": "string" + }, + "SourceSecurityGroupOwnerId": { + "type": "string" + }, + "ToPort": { + "minimum": -1, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IpProtocol" + ], + "requiredXor": [ + "CidrIp", + "CidrIpv6", + "SourcePrefixListId", + "SourceSecurityGroupId", + "SourceSecurityGroupName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SecurityGroupIngress" +} diff --git a/src/cfnlint/data/schemas/providers/eu_west_2/aws-elasticloadbalancingv2-loadbalancer.json b/src/cfnlint/data/schemas/providers/eu_west_2/aws-elasticloadbalancingv2-loadbalancer.json new file mode 100644 index 0000000000..1f8152439a --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_west_2/aws-elasticloadbalancingv2-loadbalancer.json @@ -0,0 +1,193 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Type", + "/properties/Scheme" + ], + "definitions": { + "LoadBalancerAttribute": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "SubnetMapping": { + "additionalProperties": false, + "properties": { + "AllocationId": { + "type": "string" + }, + "IPv6Address": { + "type": "string" + }, + "PrivateIPv4Address": { + "type": "string" + }, + "SubnetId": { + "type": "string" + } + }, + "required": [ + "SubnetId" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "documentationUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html", + "handlers": { + "create": { + "permissions": [ + "elasticloadbalancing:CreateLoadBalancer", + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:AddTags" + ] + }, + "delete": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DeleteLoadBalancer" + ] + }, + "list": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers" + ] + }, + "read": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DescribeLoadBalancerAttributes", + "elasticloadbalancing:DescribeTags" + ] + }, + "update": { + "permissions": [ + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:SetSubnets", + "elasticloadbalancing:SetIpAddressType", + "elasticloadbalancing:SetSecurityGroups", + "elasticloadbalancing:AddTags", + "elasticloadbalancing:RemoveTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/LoadBalancerArn" + ], + "properties": { + "CanonicalHostedZoneID": { + "type": "string" + }, + "DNSName": { + "type": "string" + }, + "EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic": { + "type": "string" + }, + "IpAddressType": { + "type": "string" + }, + "LoadBalancerArn": { + "type": "string" + }, + "LoadBalancerAttributes": { + "arrayType": "AttributeList", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LoadBalancerAttribute" + }, + "type": "array", + "uniqueItems": true + }, + "LoadBalancerFullName": { + "type": "string" + }, + "LoadBalancerName": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Scheme": { + "type": "string" + }, + "SecurityGroups": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "SubnetMappings": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SubnetMapping" + }, + "type": "array", + "uniqueItems": true + }, + "Subnets": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Type": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/LoadBalancerName", + "/properties/LoadBalancerFullName", + "/properties/CanonicalHostedZoneID", + "/properties/LoadBalancerArn", + "/properties/DNSName" + ], + "requiredXor": [ + "SubnetMappings", + "Subnets" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticloadbalancingv2", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ElasticLoadBalancingV2::LoadBalancer" +} diff --git a/src/cfnlint/data/schemas/providers/eu_west_2/aws-verifiedpermissions-identitysource.json b/src/cfnlint/data/schemas/providers/eu_west_2/aws-verifiedpermissions-identitysource.json deleted file mode 100644 index 46a0ad88f1..0000000000 --- a/src/cfnlint/data/schemas/providers/eu_west_2/aws-verifiedpermissions-identitysource.json +++ /dev/null @@ -1,221 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/PolicyStoreId" - ], - "definitions": { - "CognitoGroupConfiguration": { - "additionalProperties": false, - "properties": { - "GroupEntityType": { - "maxLength": 200, - "minLength": 1, - "pattern": "^([_a-zA-Z][_a-zA-Z0-9]*::)*[_a-zA-Z][_a-zA-Z0-9]*$", - "type": "string" - } - }, - "required": [ - "GroupEntityType" - ], - "type": "object" - }, - "CognitoUserPoolConfiguration": { - "additionalProperties": false, - "properties": { - "ClientIds": { - "insertionOrder": false, - "items": { - "maxLength": 255, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "maxItems": 1000, - "minItems": 0, - "type": "array" - }, - "GroupConfiguration": { - "$ref": "#/definitions/CognitoGroupConfiguration" - }, - "UserPoolArn": { - "maxLength": 255, - "minLength": 1, - "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", - "type": "string" - } - }, - "required": [ - "UserPoolArn" - ], - "type": "object" - }, - "IdentitySourceConfiguration": { - "additionalProperties": false, - "properties": { - "CognitoUserPoolConfiguration": { - "$ref": "#/definitions/CognitoUserPoolConfiguration" - } - }, - "required": [ - "CognitoUserPoolConfiguration" - ], - "title": "CognitoUserPoolConfiguration", - "type": "object" - }, - "IdentitySourceDetails": { - "additionalProperties": false, - "properties": { - "ClientIds": { - "insertionOrder": false, - "items": { - "maxLength": 255, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "maxItems": 1000, - "minItems": 0, - "type": "array" - }, - "DiscoveryUrl": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^https://.*$", - "type": "string" - }, - "OpenIdIssuer": { - "$ref": "#/definitions/OpenIdIssuer" - }, - "UserPoolArn": { - "maxLength": 255, - "minLength": 1, - "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", - "type": "string" - } - }, - "type": "object" - }, - "OpenIdIssuer": { - "enum": [ - "COGNITO" - ], - "type": "string" - } - }, - "deprecatedProperties": [ - "/properties/Details" - ], - "handlers": { - "create": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "delete": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "PolicyStoreId": { - "$ref": "resource-schema.json#/properties/PolicyStoreId" - } - }, - "required": [ - "PolicyStoreId" - ] - }, - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "read": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "update": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - } - }, - "primaryIdentifier": [ - "/properties/IdentitySourceId", - "/properties/PolicyStoreId" - ], - "properties": { - "Configuration": { - "$ref": "#/definitions/IdentitySourceConfiguration" - }, - "Details": { - "$ref": "#/definitions/IdentitySourceDetails" - }, - "IdentitySourceId": { - "maxLength": 200, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]*$", - "type": "string" - }, - "PolicyStoreId": { - "maxLength": 200, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]*$", - "type": "string" - }, - "PrincipalEntityType": { - "maxLength": 200, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Details", - "/properties/IdentitySourceId" - ], - "required": [ - "Configuration", - "PolicyStoreId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-avp", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::VerifiedPermissions::IdentitySource" -} diff --git a/src/cfnlint/data/schemas/providers/eu_west_3/__init__.py b/src/cfnlint/data/schemas/providers/eu_west_3/__init__.py index e1865ea8df..7d876f7d04 100644 --- a/src/cfnlint/data/schemas/providers/eu_west_3/__init__.py +++ b/src/cfnlint/data/schemas/providers/eu_west_3/__init__.py @@ -1248,7 +1248,6 @@ "aws-efs-accesspoint.json", "aws-redshift-clustersecuritygroupingress.json", "aws-servicecatalogappregistry-attributegroupassociation.json", - "aws-elasticloadbalancingv2-loadbalancer.json", "aws-opensearchservice-domain.json", "aws-servicediscovery-instance.json", "aws-elasticsearch-domain.json", @@ -1430,6 +1429,7 @@ "aws-datasync-locationefs.json", "aws-ec2-localgatewayroutetable.json", "aws-apigateway-resource.json", + "aws-verifiedpermissions-identitysource.json", "aws-macie-session.json", "aws-elasticloadbalancingv2-targetgroup.json", "aws-applicationautoscaling-scalingpolicy.json", @@ -1634,7 +1634,6 @@ "aws-organizations-organizationalunit.json", "aws-appsync-datasource.json", "aws-sqs-queue.json", - "aws-ec2-securitygroupingress.json", "aws-guardduty-detector.json", "aws-sagemaker-modelqualityjobdefinition.json", "aws-iot-provisioningtemplate.json", diff --git a/src/cfnlint/data/schemas/providers/eu_west_3/aws-ec2-securitygroupingress.json b/src/cfnlint/data/schemas/providers/eu_west_3/aws-ec2-securitygroupingress.json new file mode 100644 index 0000000000..e127b28031 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_west_3/aws-ec2-securitygroupingress.json @@ -0,0 +1,116 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::EC2::SecurityGroupIngress/Properties" + ], + "createOnlyProperties": [ + "/properties/GroupName", + "/properties/IpProtocol", + "/properties/SourceSecurityGroupId", + "/properties/SourcePrefixListId", + "/properties/ToPort", + "/properties/CidrIp", + "/properties/SourceSecurityGroupName", + "/properties/SourceSecurityGroupOwnerId", + "/properties/FromPort", + "/properties/GroupId", + "/properties/CidrIpv6" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeSecurityGroupRules", + "ec2:AuthorizeSecurityGroupIngress" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeSecurityGroupRules", + "ec2:RevokeSecurityGroupIngress" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroups", + "ec2:DescribeSecurityGroupRules" + ] + }, + "update": { + "permissions": [ + "ec2:UpdateSecurityGroupRuleDescriptionsIngress" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CidrIp": { + "type": "string" + }, + "CidrIpv6": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "FromPort": { + "minimum": -1, + "type": "integer" + }, + "GroupId": { + "type": "string" + }, + "GroupName": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "IpProtocol": { + "type": "string" + }, + "SourcePrefixListId": { + "type": "string" + }, + "SourceSecurityGroupId": { + "type": "string" + }, + "SourceSecurityGroupName": { + "type": "string" + }, + "SourceSecurityGroupOwnerId": { + "type": "string" + }, + "ToPort": { + "minimum": -1, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IpProtocol" + ], + "requiredXor": [ + "CidrIp", + "CidrIpv6", + "SourcePrefixListId", + "SourceSecurityGroupId", + "SourceSecurityGroupName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SecurityGroupIngress" +} diff --git a/src/cfnlint/data/schemas/providers/eu_west_3/aws-elasticloadbalancingv2-loadbalancer.json b/src/cfnlint/data/schemas/providers/eu_west_3/aws-elasticloadbalancingv2-loadbalancer.json new file mode 100644 index 0000000000..1f8152439a --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_west_3/aws-elasticloadbalancingv2-loadbalancer.json @@ -0,0 +1,193 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Type", + "/properties/Scheme" + ], + "definitions": { + "LoadBalancerAttribute": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "SubnetMapping": { + "additionalProperties": false, + "properties": { + "AllocationId": { + "type": "string" + }, + "IPv6Address": { + "type": "string" + }, + "PrivateIPv4Address": { + "type": "string" + }, + "SubnetId": { + "type": "string" + } + }, + "required": [ + "SubnetId" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "documentationUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html", + "handlers": { + "create": { + "permissions": [ + "elasticloadbalancing:CreateLoadBalancer", + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:AddTags" + ] + }, + "delete": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DeleteLoadBalancer" + ] + }, + "list": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers" + ] + }, + "read": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DescribeLoadBalancerAttributes", + "elasticloadbalancing:DescribeTags" + ] + }, + "update": { + "permissions": [ + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:SetSubnets", + "elasticloadbalancing:SetIpAddressType", + "elasticloadbalancing:SetSecurityGroups", + "elasticloadbalancing:AddTags", + "elasticloadbalancing:RemoveTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/LoadBalancerArn" + ], + "properties": { + "CanonicalHostedZoneID": { + "type": "string" + }, + "DNSName": { + "type": "string" + }, + "EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic": { + "type": "string" + }, + "IpAddressType": { + "type": "string" + }, + "LoadBalancerArn": { + "type": "string" + }, + "LoadBalancerAttributes": { + "arrayType": "AttributeList", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LoadBalancerAttribute" + }, + "type": "array", + "uniqueItems": true + }, + "LoadBalancerFullName": { + "type": "string" + }, + "LoadBalancerName": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Scheme": { + "type": "string" + }, + "SecurityGroups": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "SubnetMappings": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SubnetMapping" + }, + "type": "array", + "uniqueItems": true + }, + "Subnets": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Type": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/LoadBalancerName", + "/properties/LoadBalancerFullName", + "/properties/CanonicalHostedZoneID", + "/properties/LoadBalancerArn", + "/properties/DNSName" + ], + "requiredXor": [ + "SubnetMappings", + "Subnets" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticloadbalancingv2", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ElasticLoadBalancingV2::LoadBalancer" +} diff --git a/src/cfnlint/data/schemas/providers/eu_west_3/aws-verifiedpermissions-identitysource.json b/src/cfnlint/data/schemas/providers/eu_west_3/aws-verifiedpermissions-identitysource.json deleted file mode 100644 index 46a0ad88f1..0000000000 --- a/src/cfnlint/data/schemas/providers/eu_west_3/aws-verifiedpermissions-identitysource.json +++ /dev/null @@ -1,221 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/PolicyStoreId" - ], - "definitions": { - "CognitoGroupConfiguration": { - "additionalProperties": false, - "properties": { - "GroupEntityType": { - "maxLength": 200, - "minLength": 1, - "pattern": "^([_a-zA-Z][_a-zA-Z0-9]*::)*[_a-zA-Z][_a-zA-Z0-9]*$", - "type": "string" - } - }, - "required": [ - "GroupEntityType" - ], - "type": "object" - }, - "CognitoUserPoolConfiguration": { - "additionalProperties": false, - "properties": { - "ClientIds": { - "insertionOrder": false, - "items": { - "maxLength": 255, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "maxItems": 1000, - "minItems": 0, - "type": "array" - }, - "GroupConfiguration": { - "$ref": "#/definitions/CognitoGroupConfiguration" - }, - "UserPoolArn": { - "maxLength": 255, - "minLength": 1, - "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", - "type": "string" - } - }, - "required": [ - "UserPoolArn" - ], - "type": "object" - }, - "IdentitySourceConfiguration": { - "additionalProperties": false, - "properties": { - "CognitoUserPoolConfiguration": { - "$ref": "#/definitions/CognitoUserPoolConfiguration" - } - }, - "required": [ - "CognitoUserPoolConfiguration" - ], - "title": "CognitoUserPoolConfiguration", - "type": "object" - }, - "IdentitySourceDetails": { - "additionalProperties": false, - "properties": { - "ClientIds": { - "insertionOrder": false, - "items": { - "maxLength": 255, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "maxItems": 1000, - "minItems": 0, - "type": "array" - }, - "DiscoveryUrl": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^https://.*$", - "type": "string" - }, - "OpenIdIssuer": { - "$ref": "#/definitions/OpenIdIssuer" - }, - "UserPoolArn": { - "maxLength": 255, - "minLength": 1, - "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", - "type": "string" - } - }, - "type": "object" - }, - "OpenIdIssuer": { - "enum": [ - "COGNITO" - ], - "type": "string" - } - }, - "deprecatedProperties": [ - "/properties/Details" - ], - "handlers": { - "create": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "delete": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "PolicyStoreId": { - "$ref": "resource-schema.json#/properties/PolicyStoreId" - } - }, - "required": [ - "PolicyStoreId" - ] - }, - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "read": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "update": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - } - }, - "primaryIdentifier": [ - "/properties/IdentitySourceId", - "/properties/PolicyStoreId" - ], - "properties": { - "Configuration": { - "$ref": "#/definitions/IdentitySourceConfiguration" - }, - "Details": { - "$ref": "#/definitions/IdentitySourceDetails" - }, - "IdentitySourceId": { - "maxLength": 200, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]*$", - "type": "string" - }, - "PolicyStoreId": { - "maxLength": 200, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]*$", - "type": "string" - }, - "PrincipalEntityType": { - "maxLength": 200, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Details", - "/properties/IdentitySourceId" - ], - "required": [ - "Configuration", - "PolicyStoreId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-avp", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::VerifiedPermissions::IdentitySource" -} 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 8864f5ba40..49eb7f7d1b 100644 --- a/src/cfnlint/data/schemas/providers/me_central_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/me_central_1/__init__.py @@ -805,7 +805,6 @@ "aws-efs-accesspoint.json", "aws-redshift-clustersecuritygroupingress.json", "aws-servicecatalogappregistry-attributegroupassociation.json", - "aws-elasticloadbalancingv2-loadbalancer.json", "aws-opensearchservice-domain.json", "aws-servicediscovery-instance.json", "aws-elasticsearch-domain.json", @@ -1050,7 +1049,6 @@ "aws-organizations-organizationalunit.json", "aws-appsync-datasource.json", "aws-sqs-queue.json", - "aws-ec2-securitygroupingress.json", "aws-guardduty-detector.json", "aws-iot-provisioningtemplate.json", "aws-batch-computeenvironment.json", diff --git a/src/cfnlint/data/schemas/providers/me_central_1/aws-ec2-securitygroupingress.json b/src/cfnlint/data/schemas/providers/me_central_1/aws-ec2-securitygroupingress.json new file mode 100644 index 0000000000..e127b28031 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/me_central_1/aws-ec2-securitygroupingress.json @@ -0,0 +1,116 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::EC2::SecurityGroupIngress/Properties" + ], + "createOnlyProperties": [ + "/properties/GroupName", + "/properties/IpProtocol", + "/properties/SourceSecurityGroupId", + "/properties/SourcePrefixListId", + "/properties/ToPort", + "/properties/CidrIp", + "/properties/SourceSecurityGroupName", + "/properties/SourceSecurityGroupOwnerId", + "/properties/FromPort", + "/properties/GroupId", + "/properties/CidrIpv6" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeSecurityGroupRules", + "ec2:AuthorizeSecurityGroupIngress" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeSecurityGroupRules", + "ec2:RevokeSecurityGroupIngress" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroups", + "ec2:DescribeSecurityGroupRules" + ] + }, + "update": { + "permissions": [ + "ec2:UpdateSecurityGroupRuleDescriptionsIngress" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CidrIp": { + "type": "string" + }, + "CidrIpv6": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "FromPort": { + "minimum": -1, + "type": "integer" + }, + "GroupId": { + "type": "string" + }, + "GroupName": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "IpProtocol": { + "type": "string" + }, + "SourcePrefixListId": { + "type": "string" + }, + "SourceSecurityGroupId": { + "type": "string" + }, + "SourceSecurityGroupName": { + "type": "string" + }, + "SourceSecurityGroupOwnerId": { + "type": "string" + }, + "ToPort": { + "minimum": -1, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IpProtocol" + ], + "requiredXor": [ + "CidrIp", + "CidrIpv6", + "SourcePrefixListId", + "SourceSecurityGroupId", + "SourceSecurityGroupName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SecurityGroupIngress" +} diff --git a/src/cfnlint/data/schemas/providers/me_central_1/aws-elasticloadbalancingv2-loadbalancer.json b/src/cfnlint/data/schemas/providers/me_central_1/aws-elasticloadbalancingv2-loadbalancer.json new file mode 100644 index 0000000000..1f8152439a --- /dev/null +++ b/src/cfnlint/data/schemas/providers/me_central_1/aws-elasticloadbalancingv2-loadbalancer.json @@ -0,0 +1,193 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Type", + "/properties/Scheme" + ], + "definitions": { + "LoadBalancerAttribute": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "SubnetMapping": { + "additionalProperties": false, + "properties": { + "AllocationId": { + "type": "string" + }, + "IPv6Address": { + "type": "string" + }, + "PrivateIPv4Address": { + "type": "string" + }, + "SubnetId": { + "type": "string" + } + }, + "required": [ + "SubnetId" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "documentationUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html", + "handlers": { + "create": { + "permissions": [ + "elasticloadbalancing:CreateLoadBalancer", + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:AddTags" + ] + }, + "delete": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DeleteLoadBalancer" + ] + }, + "list": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers" + ] + }, + "read": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DescribeLoadBalancerAttributes", + "elasticloadbalancing:DescribeTags" + ] + }, + "update": { + "permissions": [ + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:SetSubnets", + "elasticloadbalancing:SetIpAddressType", + "elasticloadbalancing:SetSecurityGroups", + "elasticloadbalancing:AddTags", + "elasticloadbalancing:RemoveTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/LoadBalancerArn" + ], + "properties": { + "CanonicalHostedZoneID": { + "type": "string" + }, + "DNSName": { + "type": "string" + }, + "EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic": { + "type": "string" + }, + "IpAddressType": { + "type": "string" + }, + "LoadBalancerArn": { + "type": "string" + }, + "LoadBalancerAttributes": { + "arrayType": "AttributeList", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LoadBalancerAttribute" + }, + "type": "array", + "uniqueItems": true + }, + "LoadBalancerFullName": { + "type": "string" + }, + "LoadBalancerName": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Scheme": { + "type": "string" + }, + "SecurityGroups": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "SubnetMappings": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SubnetMapping" + }, + "type": "array", + "uniqueItems": true + }, + "Subnets": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Type": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/LoadBalancerName", + "/properties/LoadBalancerFullName", + "/properties/CanonicalHostedZoneID", + "/properties/LoadBalancerArn", + "/properties/DNSName" + ], + "requiredXor": [ + "SubnetMappings", + "Subnets" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticloadbalancingv2", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ElasticLoadBalancingV2::LoadBalancer" +} 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 8726b225a6..a5d2b751e8 100644 --- a/src/cfnlint/data/schemas/providers/me_south_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/me_south_1/__init__.py @@ -1065,7 +1065,6 @@ "aws-efs-accesspoint.json", "aws-redshift-clustersecuritygroupingress.json", "aws-servicecatalogappregistry-attributegroupassociation.json", - "aws-elasticloadbalancingv2-loadbalancer.json", "aws-opensearchservice-domain.json", "aws-servicediscovery-instance.json", "aws-elasticsearch-domain.json", @@ -1221,6 +1220,7 @@ "aws-ec2-localgatewayroutetable.json", "aws-apigateway-resource.json", "aws-sagemaker-appimageconfig.json", + "aws-verifiedpermissions-identitysource.json", "aws-macie-session.json", "aws-elasticloadbalancingv2-targetgroup.json", "aws-applicationautoscaling-scalingpolicy.json", @@ -1394,7 +1394,6 @@ "aws-organizations-organizationalunit.json", "aws-appsync-datasource.json", "aws-sqs-queue.json", - "aws-ec2-securitygroupingress.json", "aws-guardduty-detector.json", "aws-sagemaker-modelqualityjobdefinition.json", "aws-iot-provisioningtemplate.json", diff --git a/src/cfnlint/data/schemas/providers/me_south_1/aws-ec2-securitygroupingress.json b/src/cfnlint/data/schemas/providers/me_south_1/aws-ec2-securitygroupingress.json new file mode 100644 index 0000000000..e127b28031 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/me_south_1/aws-ec2-securitygroupingress.json @@ -0,0 +1,116 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::EC2::SecurityGroupIngress/Properties" + ], + "createOnlyProperties": [ + "/properties/GroupName", + "/properties/IpProtocol", + "/properties/SourceSecurityGroupId", + "/properties/SourcePrefixListId", + "/properties/ToPort", + "/properties/CidrIp", + "/properties/SourceSecurityGroupName", + "/properties/SourceSecurityGroupOwnerId", + "/properties/FromPort", + "/properties/GroupId", + "/properties/CidrIpv6" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeSecurityGroupRules", + "ec2:AuthorizeSecurityGroupIngress" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeSecurityGroupRules", + "ec2:RevokeSecurityGroupIngress" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroups", + "ec2:DescribeSecurityGroupRules" + ] + }, + "update": { + "permissions": [ + "ec2:UpdateSecurityGroupRuleDescriptionsIngress" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CidrIp": { + "type": "string" + }, + "CidrIpv6": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "FromPort": { + "minimum": -1, + "type": "integer" + }, + "GroupId": { + "type": "string" + }, + "GroupName": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "IpProtocol": { + "type": "string" + }, + "SourcePrefixListId": { + "type": "string" + }, + "SourceSecurityGroupId": { + "type": "string" + }, + "SourceSecurityGroupName": { + "type": "string" + }, + "SourceSecurityGroupOwnerId": { + "type": "string" + }, + "ToPort": { + "minimum": -1, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IpProtocol" + ], + "requiredXor": [ + "CidrIp", + "CidrIpv6", + "SourcePrefixListId", + "SourceSecurityGroupId", + "SourceSecurityGroupName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SecurityGroupIngress" +} diff --git a/src/cfnlint/data/schemas/providers/me_south_1/aws-elasticloadbalancingv2-loadbalancer.json b/src/cfnlint/data/schemas/providers/me_south_1/aws-elasticloadbalancingv2-loadbalancer.json new file mode 100644 index 0000000000..1f8152439a --- /dev/null +++ b/src/cfnlint/data/schemas/providers/me_south_1/aws-elasticloadbalancingv2-loadbalancer.json @@ -0,0 +1,193 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Type", + "/properties/Scheme" + ], + "definitions": { + "LoadBalancerAttribute": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "SubnetMapping": { + "additionalProperties": false, + "properties": { + "AllocationId": { + "type": "string" + }, + "IPv6Address": { + "type": "string" + }, + "PrivateIPv4Address": { + "type": "string" + }, + "SubnetId": { + "type": "string" + } + }, + "required": [ + "SubnetId" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "documentationUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html", + "handlers": { + "create": { + "permissions": [ + "elasticloadbalancing:CreateLoadBalancer", + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:AddTags" + ] + }, + "delete": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DeleteLoadBalancer" + ] + }, + "list": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers" + ] + }, + "read": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DescribeLoadBalancerAttributes", + "elasticloadbalancing:DescribeTags" + ] + }, + "update": { + "permissions": [ + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:SetSubnets", + "elasticloadbalancing:SetIpAddressType", + "elasticloadbalancing:SetSecurityGroups", + "elasticloadbalancing:AddTags", + "elasticloadbalancing:RemoveTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/LoadBalancerArn" + ], + "properties": { + "CanonicalHostedZoneID": { + "type": "string" + }, + "DNSName": { + "type": "string" + }, + "EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic": { + "type": "string" + }, + "IpAddressType": { + "type": "string" + }, + "LoadBalancerArn": { + "type": "string" + }, + "LoadBalancerAttributes": { + "arrayType": "AttributeList", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LoadBalancerAttribute" + }, + "type": "array", + "uniqueItems": true + }, + "LoadBalancerFullName": { + "type": "string" + }, + "LoadBalancerName": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Scheme": { + "type": "string" + }, + "SecurityGroups": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "SubnetMappings": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SubnetMapping" + }, + "type": "array", + "uniqueItems": true + }, + "Subnets": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Type": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/LoadBalancerName", + "/properties/LoadBalancerFullName", + "/properties/CanonicalHostedZoneID", + "/properties/LoadBalancerArn", + "/properties/DNSName" + ], + "requiredXor": [ + "SubnetMappings", + "Subnets" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticloadbalancingv2", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ElasticLoadBalancingV2::LoadBalancer" +} diff --git a/src/cfnlint/data/schemas/providers/me_south_1/aws-verifiedpermissions-identitysource.json b/src/cfnlint/data/schemas/providers/me_south_1/aws-verifiedpermissions-identitysource.json deleted file mode 100644 index 46a0ad88f1..0000000000 --- a/src/cfnlint/data/schemas/providers/me_south_1/aws-verifiedpermissions-identitysource.json +++ /dev/null @@ -1,221 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/PolicyStoreId" - ], - "definitions": { - "CognitoGroupConfiguration": { - "additionalProperties": false, - "properties": { - "GroupEntityType": { - "maxLength": 200, - "minLength": 1, - "pattern": "^([_a-zA-Z][_a-zA-Z0-9]*::)*[_a-zA-Z][_a-zA-Z0-9]*$", - "type": "string" - } - }, - "required": [ - "GroupEntityType" - ], - "type": "object" - }, - "CognitoUserPoolConfiguration": { - "additionalProperties": false, - "properties": { - "ClientIds": { - "insertionOrder": false, - "items": { - "maxLength": 255, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "maxItems": 1000, - "minItems": 0, - "type": "array" - }, - "GroupConfiguration": { - "$ref": "#/definitions/CognitoGroupConfiguration" - }, - "UserPoolArn": { - "maxLength": 255, - "minLength": 1, - "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", - "type": "string" - } - }, - "required": [ - "UserPoolArn" - ], - "type": "object" - }, - "IdentitySourceConfiguration": { - "additionalProperties": false, - "properties": { - "CognitoUserPoolConfiguration": { - "$ref": "#/definitions/CognitoUserPoolConfiguration" - } - }, - "required": [ - "CognitoUserPoolConfiguration" - ], - "title": "CognitoUserPoolConfiguration", - "type": "object" - }, - "IdentitySourceDetails": { - "additionalProperties": false, - "properties": { - "ClientIds": { - "insertionOrder": false, - "items": { - "maxLength": 255, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "maxItems": 1000, - "minItems": 0, - "type": "array" - }, - "DiscoveryUrl": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^https://.*$", - "type": "string" - }, - "OpenIdIssuer": { - "$ref": "#/definitions/OpenIdIssuer" - }, - "UserPoolArn": { - "maxLength": 255, - "minLength": 1, - "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", - "type": "string" - } - }, - "type": "object" - }, - "OpenIdIssuer": { - "enum": [ - "COGNITO" - ], - "type": "string" - } - }, - "deprecatedProperties": [ - "/properties/Details" - ], - "handlers": { - "create": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "delete": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "PolicyStoreId": { - "$ref": "resource-schema.json#/properties/PolicyStoreId" - } - }, - "required": [ - "PolicyStoreId" - ] - }, - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "read": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "update": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - } - }, - "primaryIdentifier": [ - "/properties/IdentitySourceId", - "/properties/PolicyStoreId" - ], - "properties": { - "Configuration": { - "$ref": "#/definitions/IdentitySourceConfiguration" - }, - "Details": { - "$ref": "#/definitions/IdentitySourceDetails" - }, - "IdentitySourceId": { - "maxLength": 200, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]*$", - "type": "string" - }, - "PolicyStoreId": { - "maxLength": 200, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]*$", - "type": "string" - }, - "PrincipalEntityType": { - "maxLength": 200, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Details", - "/properties/IdentitySourceId" - ], - "required": [ - "Configuration", - "PolicyStoreId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-avp", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::VerifiedPermissions::IdentitySource" -} 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 21d14f5df1..45f7952b1a 100644 --- a/src/cfnlint/data/schemas/providers/sa_east_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/sa_east_1/__init__.py @@ -1285,7 +1285,6 @@ "aws-efs-accesspoint.json", "aws-redshift-clustersecuritygroupingress.json", "aws-servicecatalogappregistry-attributegroupassociation.json", - "aws-elasticloadbalancingv2-loadbalancer.json", "aws-opensearchservice-domain.json", "aws-servicediscovery-instance.json", "aws-elasticsearch-domain.json", @@ -1466,6 +1465,7 @@ "aws-datasync-locationefs.json", "aws-ec2-localgatewayroutetable.json", "aws-apigateway-resource.json", + "aws-verifiedpermissions-identitysource.json", "aws-macie-session.json", "aws-elasticloadbalancingv2-targetgroup.json", "aws-applicationautoscaling-scalingpolicy.json", @@ -1684,7 +1684,6 @@ "aws-organizations-organizationalunit.json", "aws-appsync-datasource.json", "aws-sqs-queue.json", - "aws-ec2-securitygroupingress.json", "aws-guardduty-detector.json", "aws-sagemaker-modelqualityjobdefinition.json", "aws-iot-provisioningtemplate.json", diff --git a/src/cfnlint/data/schemas/providers/sa_east_1/aws-ec2-securitygroupingress.json b/src/cfnlint/data/schemas/providers/sa_east_1/aws-ec2-securitygroupingress.json new file mode 100644 index 0000000000..e127b28031 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/sa_east_1/aws-ec2-securitygroupingress.json @@ -0,0 +1,116 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::EC2::SecurityGroupIngress/Properties" + ], + "createOnlyProperties": [ + "/properties/GroupName", + "/properties/IpProtocol", + "/properties/SourceSecurityGroupId", + "/properties/SourcePrefixListId", + "/properties/ToPort", + "/properties/CidrIp", + "/properties/SourceSecurityGroupName", + "/properties/SourceSecurityGroupOwnerId", + "/properties/FromPort", + "/properties/GroupId", + "/properties/CidrIpv6" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeSecurityGroupRules", + "ec2:AuthorizeSecurityGroupIngress" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeSecurityGroupRules", + "ec2:RevokeSecurityGroupIngress" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroups", + "ec2:DescribeSecurityGroupRules" + ] + }, + "update": { + "permissions": [ + "ec2:UpdateSecurityGroupRuleDescriptionsIngress" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CidrIp": { + "type": "string" + }, + "CidrIpv6": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "FromPort": { + "minimum": -1, + "type": "integer" + }, + "GroupId": { + "type": "string" + }, + "GroupName": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "IpProtocol": { + "type": "string" + }, + "SourcePrefixListId": { + "type": "string" + }, + "SourceSecurityGroupId": { + "type": "string" + }, + "SourceSecurityGroupName": { + "type": "string" + }, + "SourceSecurityGroupOwnerId": { + "type": "string" + }, + "ToPort": { + "minimum": -1, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IpProtocol" + ], + "requiredXor": [ + "CidrIp", + "CidrIpv6", + "SourcePrefixListId", + "SourceSecurityGroupId", + "SourceSecurityGroupName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SecurityGroupIngress" +} diff --git a/src/cfnlint/data/schemas/providers/sa_east_1/aws-elasticloadbalancingv2-loadbalancer.json b/src/cfnlint/data/schemas/providers/sa_east_1/aws-elasticloadbalancingv2-loadbalancer.json new file mode 100644 index 0000000000..1f8152439a --- /dev/null +++ b/src/cfnlint/data/schemas/providers/sa_east_1/aws-elasticloadbalancingv2-loadbalancer.json @@ -0,0 +1,193 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Type", + "/properties/Scheme" + ], + "definitions": { + "LoadBalancerAttribute": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "SubnetMapping": { + "additionalProperties": false, + "properties": { + "AllocationId": { + "type": "string" + }, + "IPv6Address": { + "type": "string" + }, + "PrivateIPv4Address": { + "type": "string" + }, + "SubnetId": { + "type": "string" + } + }, + "required": [ + "SubnetId" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "documentationUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html", + "handlers": { + "create": { + "permissions": [ + "elasticloadbalancing:CreateLoadBalancer", + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:AddTags" + ] + }, + "delete": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DeleteLoadBalancer" + ] + }, + "list": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers" + ] + }, + "read": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DescribeLoadBalancerAttributes", + "elasticloadbalancing:DescribeTags" + ] + }, + "update": { + "permissions": [ + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:SetSubnets", + "elasticloadbalancing:SetIpAddressType", + "elasticloadbalancing:SetSecurityGroups", + "elasticloadbalancing:AddTags", + "elasticloadbalancing:RemoveTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/LoadBalancerArn" + ], + "properties": { + "CanonicalHostedZoneID": { + "type": "string" + }, + "DNSName": { + "type": "string" + }, + "EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic": { + "type": "string" + }, + "IpAddressType": { + "type": "string" + }, + "LoadBalancerArn": { + "type": "string" + }, + "LoadBalancerAttributes": { + "arrayType": "AttributeList", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LoadBalancerAttribute" + }, + "type": "array", + "uniqueItems": true + }, + "LoadBalancerFullName": { + "type": "string" + }, + "LoadBalancerName": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Scheme": { + "type": "string" + }, + "SecurityGroups": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "SubnetMappings": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SubnetMapping" + }, + "type": "array", + "uniqueItems": true + }, + "Subnets": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Type": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/LoadBalancerName", + "/properties/LoadBalancerFullName", + "/properties/CanonicalHostedZoneID", + "/properties/LoadBalancerArn", + "/properties/DNSName" + ], + "requiredXor": [ + "SubnetMappings", + "Subnets" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticloadbalancingv2", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ElasticLoadBalancingV2::LoadBalancer" +} diff --git a/src/cfnlint/data/schemas/providers/sa_east_1/aws-verifiedpermissions-identitysource.json b/src/cfnlint/data/schemas/providers/sa_east_1/aws-verifiedpermissions-identitysource.json deleted file mode 100644 index 46a0ad88f1..0000000000 --- a/src/cfnlint/data/schemas/providers/sa_east_1/aws-verifiedpermissions-identitysource.json +++ /dev/null @@ -1,221 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/PolicyStoreId" - ], - "definitions": { - "CognitoGroupConfiguration": { - "additionalProperties": false, - "properties": { - "GroupEntityType": { - "maxLength": 200, - "minLength": 1, - "pattern": "^([_a-zA-Z][_a-zA-Z0-9]*::)*[_a-zA-Z][_a-zA-Z0-9]*$", - "type": "string" - } - }, - "required": [ - "GroupEntityType" - ], - "type": "object" - }, - "CognitoUserPoolConfiguration": { - "additionalProperties": false, - "properties": { - "ClientIds": { - "insertionOrder": false, - "items": { - "maxLength": 255, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "maxItems": 1000, - "minItems": 0, - "type": "array" - }, - "GroupConfiguration": { - "$ref": "#/definitions/CognitoGroupConfiguration" - }, - "UserPoolArn": { - "maxLength": 255, - "minLength": 1, - "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", - "type": "string" - } - }, - "required": [ - "UserPoolArn" - ], - "type": "object" - }, - "IdentitySourceConfiguration": { - "additionalProperties": false, - "properties": { - "CognitoUserPoolConfiguration": { - "$ref": "#/definitions/CognitoUserPoolConfiguration" - } - }, - "required": [ - "CognitoUserPoolConfiguration" - ], - "title": "CognitoUserPoolConfiguration", - "type": "object" - }, - "IdentitySourceDetails": { - "additionalProperties": false, - "properties": { - "ClientIds": { - "insertionOrder": false, - "items": { - "maxLength": 255, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "maxItems": 1000, - "minItems": 0, - "type": "array" - }, - "DiscoveryUrl": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^https://.*$", - "type": "string" - }, - "OpenIdIssuer": { - "$ref": "#/definitions/OpenIdIssuer" - }, - "UserPoolArn": { - "maxLength": 255, - "minLength": 1, - "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", - "type": "string" - } - }, - "type": "object" - }, - "OpenIdIssuer": { - "enum": [ - "COGNITO" - ], - "type": "string" - } - }, - "deprecatedProperties": [ - "/properties/Details" - ], - "handlers": { - "create": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "delete": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "PolicyStoreId": { - "$ref": "resource-schema.json#/properties/PolicyStoreId" - } - }, - "required": [ - "PolicyStoreId" - ] - }, - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "read": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "update": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - } - }, - "primaryIdentifier": [ - "/properties/IdentitySourceId", - "/properties/PolicyStoreId" - ], - "properties": { - "Configuration": { - "$ref": "#/definitions/IdentitySourceConfiguration" - }, - "Details": { - "$ref": "#/definitions/IdentitySourceDetails" - }, - "IdentitySourceId": { - "maxLength": 200, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]*$", - "type": "string" - }, - "PolicyStoreId": { - "maxLength": 200, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]*$", - "type": "string" - }, - "PrincipalEntityType": { - "maxLength": 200, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Details", - "/properties/IdentitySourceId" - ], - "required": [ - "Configuration", - "PolicyStoreId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-avp", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::VerifiedPermissions::IdentitySource" -} diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-securitygroupingress.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-securitygroupingress.json index e127b28031..83ebc2ae5c 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-securitygroupingress.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-securitygroupingress.json @@ -92,6 +92,11 @@ "type": "integer" } }, + "propertyTransform": { + "/properties/FromPort": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$ipProtocol := $mapVal ? $mapVal : $lowercase(IpProtocol);$ipProtocol in ['imcp', 'tcp', 'udp', 'imcp'] ? FromPort : -1)", + "/properties/IpProtocol": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$mapVal ? $mapVal : $lowercase(IpProtocol))", + "/properties/ToPort": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$ipProtocol := $mapVal ? $mapVal : $lowercase(IpProtocol);$ipProtocol in ['imcp', 'tcp', 'udp', 'imcp'] ? ToPort : -1)" + }, "readOnlyProperties": [ "/properties/Id" ], 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 1f8152439a..90b3c53ec8 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 @@ -63,7 +63,8 @@ "elasticloadbalancing:DescribeLoadBalancers", "elasticloadbalancing:ModifyLoadBalancerAttributes", "elasticloadbalancing:AddTags" - ] + ], + "timeoutInMinutes": 30 }, "delete": { "permissions": [ diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-iam-policy.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-iam-policy.json index 06b52c62af..4e0750774c 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-iam-policy.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-iam-policy.json @@ -1,5 +1,22 @@ { "additionalProperties": false, + "anyOf": [ + { + "required": [ + "Users" + ] + }, + { + "required": [ + "Groups" + ] + }, + { + "required": [ + "Roles" + ] + } + ], "handlers": { "create": { "permissions": [ @@ -88,11 +105,6 @@ "PolicyDocument", "PolicyName" ], - "requiredOr": [ - "Users", - "Groups", - "Roles" - ], "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-iam.git", "taggable": false, "typeName": "AWS::IAM::Policy" diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-s3-bucket.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-s3-bucket.json index fb4f55bbb8..200f608857 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-s3-bucket.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-s3-bucket.json @@ -932,6 +932,18 @@ }, "RoutingRuleCondition": { "additionalProperties": false, + "anyOf": [ + { + "required": [ + "HttpErrorCodeReturnedEquals" + ] + }, + { + "required": [ + "KeyPrefixEquals" + ] + } + ], "properties": { "HttpErrorCodeReturnedEquals": { "type": "string" @@ -940,10 +952,6 @@ "type": "string" } }, - "requiredOr": [ - "HttpErrorCodeReturnedEquals", - "KeyPrefixEquals" - ], "type": "object" }, "Rule": { diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-verifiedpermissions-identitysource.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-verifiedpermissions-identitysource.json index 4945103add..46a0ad88f1 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-verifiedpermissions-identitysource.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-verifiedpermissions-identitysource.json @@ -4,6 +4,21 @@ "/properties/PolicyStoreId" ], "definitions": { + "CognitoGroupConfiguration": { + "additionalProperties": false, + "properties": { + "GroupEntityType": { + "maxLength": 200, + "minLength": 1, + "pattern": "^([_a-zA-Z][_a-zA-Z0-9]*::)*[_a-zA-Z][_a-zA-Z0-9]*$", + "type": "string" + } + }, + "required": [ + "GroupEntityType" + ], + "type": "object" + }, "CognitoUserPoolConfiguration": { "additionalProperties": false, "properties": { @@ -19,6 +34,9 @@ "minItems": 0, "type": "array" }, + "GroupConfiguration": { + "$ref": "#/definitions/CognitoGroupConfiguration" + }, "UserPoolArn": { "maxLength": 255, "minLength": 1, @@ -84,6 +102,9 @@ "type": "string" } }, + "deprecatedProperties": [ + "/properties/Details" + ], "handlers": { "create": { "permissions": [ 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 0bf609145a..b99714dc6e 100644 --- a/src/cfnlint/data/schemas/providers/us_east_2/__init__.py +++ b/src/cfnlint/data/schemas/providers/us_east_2/__init__.py @@ -1545,7 +1545,6 @@ "aws-efs-accesspoint.json", "aws-redshift-clustersecuritygroupingress.json", "aws-servicecatalogappregistry-attributegroupassociation.json", - "aws-elasticloadbalancingv2-loadbalancer.json", "aws-opensearchservice-domain.json", "aws-timestream-database.json", "aws-servicediscovery-instance.json", @@ -1763,6 +1762,7 @@ "aws-ec2-localgatewayroutetable.json", "aws-apigateway-resource.json", "aws-sagemaker-appimageconfig.json", + "aws-verifiedpermissions-identitysource.json", "aws-macie-session.json", "aws-elasticloadbalancingv2-targetgroup.json", "aws-applicationautoscaling-scalingpolicy.json", @@ -2035,7 +2035,6 @@ "aws-organizations-organizationalunit.json", "aws-appsync-datasource.json", "aws-sqs-queue.json", - "aws-ec2-securitygroupingress.json", "aws-guardduty-detector.json", "aws-sagemaker-modelqualityjobdefinition.json", "aws-iot-provisioningtemplate.json", diff --git a/src/cfnlint/data/schemas/providers/us_east_2/aws-ec2-securitygroupingress.json b/src/cfnlint/data/schemas/providers/us_east_2/aws-ec2-securitygroupingress.json new file mode 100644 index 0000000000..e127b28031 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_east_2/aws-ec2-securitygroupingress.json @@ -0,0 +1,116 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::EC2::SecurityGroupIngress/Properties" + ], + "createOnlyProperties": [ + "/properties/GroupName", + "/properties/IpProtocol", + "/properties/SourceSecurityGroupId", + "/properties/SourcePrefixListId", + "/properties/ToPort", + "/properties/CidrIp", + "/properties/SourceSecurityGroupName", + "/properties/SourceSecurityGroupOwnerId", + "/properties/FromPort", + "/properties/GroupId", + "/properties/CidrIpv6" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeSecurityGroupRules", + "ec2:AuthorizeSecurityGroupIngress" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeSecurityGroupRules", + "ec2:RevokeSecurityGroupIngress" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroups", + "ec2:DescribeSecurityGroupRules" + ] + }, + "update": { + "permissions": [ + "ec2:UpdateSecurityGroupRuleDescriptionsIngress" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CidrIp": { + "type": "string" + }, + "CidrIpv6": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "FromPort": { + "minimum": -1, + "type": "integer" + }, + "GroupId": { + "type": "string" + }, + "GroupName": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "IpProtocol": { + "type": "string" + }, + "SourcePrefixListId": { + "type": "string" + }, + "SourceSecurityGroupId": { + "type": "string" + }, + "SourceSecurityGroupName": { + "type": "string" + }, + "SourceSecurityGroupOwnerId": { + "type": "string" + }, + "ToPort": { + "minimum": -1, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IpProtocol" + ], + "requiredXor": [ + "CidrIp", + "CidrIpv6", + "SourcePrefixListId", + "SourceSecurityGroupId", + "SourceSecurityGroupName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SecurityGroupIngress" +} diff --git a/src/cfnlint/data/schemas/providers/us_east_2/aws-elasticloadbalancingv2-loadbalancer.json b/src/cfnlint/data/schemas/providers/us_east_2/aws-elasticloadbalancingv2-loadbalancer.json new file mode 100644 index 0000000000..1f8152439a --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_east_2/aws-elasticloadbalancingv2-loadbalancer.json @@ -0,0 +1,193 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Type", + "/properties/Scheme" + ], + "definitions": { + "LoadBalancerAttribute": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "SubnetMapping": { + "additionalProperties": false, + "properties": { + "AllocationId": { + "type": "string" + }, + "IPv6Address": { + "type": "string" + }, + "PrivateIPv4Address": { + "type": "string" + }, + "SubnetId": { + "type": "string" + } + }, + "required": [ + "SubnetId" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "documentationUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html", + "handlers": { + "create": { + "permissions": [ + "elasticloadbalancing:CreateLoadBalancer", + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:AddTags" + ] + }, + "delete": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DeleteLoadBalancer" + ] + }, + "list": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers" + ] + }, + "read": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DescribeLoadBalancerAttributes", + "elasticloadbalancing:DescribeTags" + ] + }, + "update": { + "permissions": [ + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:SetSubnets", + "elasticloadbalancing:SetIpAddressType", + "elasticloadbalancing:SetSecurityGroups", + "elasticloadbalancing:AddTags", + "elasticloadbalancing:RemoveTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/LoadBalancerArn" + ], + "properties": { + "CanonicalHostedZoneID": { + "type": "string" + }, + "DNSName": { + "type": "string" + }, + "EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic": { + "type": "string" + }, + "IpAddressType": { + "type": "string" + }, + "LoadBalancerArn": { + "type": "string" + }, + "LoadBalancerAttributes": { + "arrayType": "AttributeList", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LoadBalancerAttribute" + }, + "type": "array", + "uniqueItems": true + }, + "LoadBalancerFullName": { + "type": "string" + }, + "LoadBalancerName": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Scheme": { + "type": "string" + }, + "SecurityGroups": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "SubnetMappings": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SubnetMapping" + }, + "type": "array", + "uniqueItems": true + }, + "Subnets": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Type": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/LoadBalancerName", + "/properties/LoadBalancerFullName", + "/properties/CanonicalHostedZoneID", + "/properties/LoadBalancerArn", + "/properties/DNSName" + ], + "requiredXor": [ + "SubnetMappings", + "Subnets" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticloadbalancingv2", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ElasticLoadBalancingV2::LoadBalancer" +} diff --git a/src/cfnlint/data/schemas/providers/us_east_2/aws-verifiedpermissions-identitysource.json b/src/cfnlint/data/schemas/providers/us_east_2/aws-verifiedpermissions-identitysource.json deleted file mode 100644 index 46a0ad88f1..0000000000 --- a/src/cfnlint/data/schemas/providers/us_east_2/aws-verifiedpermissions-identitysource.json +++ /dev/null @@ -1,221 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/PolicyStoreId" - ], - "definitions": { - "CognitoGroupConfiguration": { - "additionalProperties": false, - "properties": { - "GroupEntityType": { - "maxLength": 200, - "minLength": 1, - "pattern": "^([_a-zA-Z][_a-zA-Z0-9]*::)*[_a-zA-Z][_a-zA-Z0-9]*$", - "type": "string" - } - }, - "required": [ - "GroupEntityType" - ], - "type": "object" - }, - "CognitoUserPoolConfiguration": { - "additionalProperties": false, - "properties": { - "ClientIds": { - "insertionOrder": false, - "items": { - "maxLength": 255, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "maxItems": 1000, - "minItems": 0, - "type": "array" - }, - "GroupConfiguration": { - "$ref": "#/definitions/CognitoGroupConfiguration" - }, - "UserPoolArn": { - "maxLength": 255, - "minLength": 1, - "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", - "type": "string" - } - }, - "required": [ - "UserPoolArn" - ], - "type": "object" - }, - "IdentitySourceConfiguration": { - "additionalProperties": false, - "properties": { - "CognitoUserPoolConfiguration": { - "$ref": "#/definitions/CognitoUserPoolConfiguration" - } - }, - "required": [ - "CognitoUserPoolConfiguration" - ], - "title": "CognitoUserPoolConfiguration", - "type": "object" - }, - "IdentitySourceDetails": { - "additionalProperties": false, - "properties": { - "ClientIds": { - "insertionOrder": false, - "items": { - "maxLength": 255, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "maxItems": 1000, - "minItems": 0, - "type": "array" - }, - "DiscoveryUrl": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^https://.*$", - "type": "string" - }, - "OpenIdIssuer": { - "$ref": "#/definitions/OpenIdIssuer" - }, - "UserPoolArn": { - "maxLength": 255, - "minLength": 1, - "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", - "type": "string" - } - }, - "type": "object" - }, - "OpenIdIssuer": { - "enum": [ - "COGNITO" - ], - "type": "string" - } - }, - "deprecatedProperties": [ - "/properties/Details" - ], - "handlers": { - "create": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "delete": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "PolicyStoreId": { - "$ref": "resource-schema.json#/properties/PolicyStoreId" - } - }, - "required": [ - "PolicyStoreId" - ] - }, - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "read": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "update": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - } - }, - "primaryIdentifier": [ - "/properties/IdentitySourceId", - "/properties/PolicyStoreId" - ], - "properties": { - "Configuration": { - "$ref": "#/definitions/IdentitySourceConfiguration" - }, - "Details": { - "$ref": "#/definitions/IdentitySourceDetails" - }, - "IdentitySourceId": { - "maxLength": 200, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]*$", - "type": "string" - }, - "PolicyStoreId": { - "maxLength": 200, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]*$", - "type": "string" - }, - "PrincipalEntityType": { - "maxLength": 200, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Details", - "/properties/IdentitySourceId" - ], - "required": [ - "Configuration", - "PolicyStoreId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-avp", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::VerifiedPermissions::IdentitySource" -} diff --git a/src/cfnlint/data/schemas/providers/us_gov_east_1/__init__.py b/src/cfnlint/data/schemas/providers/us_gov_east_1/__init__.py index c4e465d153..90c7641de4 100644 --- a/src/cfnlint/data/schemas/providers/us_gov_east_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/us_gov_east_1/__init__.py @@ -842,7 +842,6 @@ "aws-efs-accesspoint.json", "aws-redshift-clustersecuritygroupingress.json", "aws-servicecatalogappregistry-attributegroupassociation.json", - "aws-elasticloadbalancingv2-loadbalancer.json", "aws-opensearchservice-domain.json", "aws-servicediscovery-instance.json", "aws-elasticsearch-domain.json", diff --git a/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-elasticloadbalancingv2-loadbalancer.json b/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-elasticloadbalancingv2-loadbalancer.json new file mode 100644 index 0000000000..1f8152439a --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-elasticloadbalancingv2-loadbalancer.json @@ -0,0 +1,193 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Type", + "/properties/Scheme" + ], + "definitions": { + "LoadBalancerAttribute": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "SubnetMapping": { + "additionalProperties": false, + "properties": { + "AllocationId": { + "type": "string" + }, + "IPv6Address": { + "type": "string" + }, + "PrivateIPv4Address": { + "type": "string" + }, + "SubnetId": { + "type": "string" + } + }, + "required": [ + "SubnetId" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "documentationUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html", + "handlers": { + "create": { + "permissions": [ + "elasticloadbalancing:CreateLoadBalancer", + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:AddTags" + ] + }, + "delete": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DeleteLoadBalancer" + ] + }, + "list": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers" + ] + }, + "read": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DescribeLoadBalancerAttributes", + "elasticloadbalancing:DescribeTags" + ] + }, + "update": { + "permissions": [ + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:SetSubnets", + "elasticloadbalancing:SetIpAddressType", + "elasticloadbalancing:SetSecurityGroups", + "elasticloadbalancing:AddTags", + "elasticloadbalancing:RemoveTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/LoadBalancerArn" + ], + "properties": { + "CanonicalHostedZoneID": { + "type": "string" + }, + "DNSName": { + "type": "string" + }, + "EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic": { + "type": "string" + }, + "IpAddressType": { + "type": "string" + }, + "LoadBalancerArn": { + "type": "string" + }, + "LoadBalancerAttributes": { + "arrayType": "AttributeList", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LoadBalancerAttribute" + }, + "type": "array", + "uniqueItems": true + }, + "LoadBalancerFullName": { + "type": "string" + }, + "LoadBalancerName": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Scheme": { + "type": "string" + }, + "SecurityGroups": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "SubnetMappings": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SubnetMapping" + }, + "type": "array", + "uniqueItems": true + }, + "Subnets": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Type": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/LoadBalancerName", + "/properties/LoadBalancerFullName", + "/properties/CanonicalHostedZoneID", + "/properties/LoadBalancerArn", + "/properties/DNSName" + ], + "requiredXor": [ + "SubnetMappings", + "Subnets" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticloadbalancingv2", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ElasticLoadBalancingV2::LoadBalancer" +} diff --git a/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-iam-policy.json b/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-iam-policy.json index e4219180f3..928a6553c3 100644 --- a/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-iam-policy.json +++ b/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-iam-policy.json @@ -1,5 +1,22 @@ { "additionalProperties": false, + "anyOf": [ + { + "required": [ + "Users" + ] + }, + { + "required": [ + "Groups" + ] + }, + { + "required": [ + "Roles" + ] + } + ], "primaryIdentifier": [ "/properties/Id" ], @@ -48,10 +65,5 @@ "PolicyDocument", "PolicyName" ], - "requiredOr": [ - "Users", - "Groups", - "Roles" - ], "typeName": "AWS::IAM::Policy" } 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 15f5c1e841..98518afe92 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 @@ -1006,7 +1006,6 @@ "aws-efs-accesspoint.json", "aws-redshift-clustersecuritygroupingress.json", "aws-servicecatalogappregistry-attributegroupassociation.json", - "aws-elasticloadbalancingv2-loadbalancer.json", "aws-opensearchservice-domain.json", "aws-timestream-database.json", "aws-servicediscovery-instance.json", diff --git a/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-elasticloadbalancingv2-loadbalancer.json b/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-elasticloadbalancingv2-loadbalancer.json new file mode 100644 index 0000000000..1f8152439a --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-elasticloadbalancingv2-loadbalancer.json @@ -0,0 +1,193 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Type", + "/properties/Scheme" + ], + "definitions": { + "LoadBalancerAttribute": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "SubnetMapping": { + "additionalProperties": false, + "properties": { + "AllocationId": { + "type": "string" + }, + "IPv6Address": { + "type": "string" + }, + "PrivateIPv4Address": { + "type": "string" + }, + "SubnetId": { + "type": "string" + } + }, + "required": [ + "SubnetId" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "documentationUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html", + "handlers": { + "create": { + "permissions": [ + "elasticloadbalancing:CreateLoadBalancer", + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:AddTags" + ] + }, + "delete": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DeleteLoadBalancer" + ] + }, + "list": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers" + ] + }, + "read": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DescribeLoadBalancerAttributes", + "elasticloadbalancing:DescribeTags" + ] + }, + "update": { + "permissions": [ + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:SetSubnets", + "elasticloadbalancing:SetIpAddressType", + "elasticloadbalancing:SetSecurityGroups", + "elasticloadbalancing:AddTags", + "elasticloadbalancing:RemoveTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/LoadBalancerArn" + ], + "properties": { + "CanonicalHostedZoneID": { + "type": "string" + }, + "DNSName": { + "type": "string" + }, + "EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic": { + "type": "string" + }, + "IpAddressType": { + "type": "string" + }, + "LoadBalancerArn": { + "type": "string" + }, + "LoadBalancerAttributes": { + "arrayType": "AttributeList", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LoadBalancerAttribute" + }, + "type": "array", + "uniqueItems": true + }, + "LoadBalancerFullName": { + "type": "string" + }, + "LoadBalancerName": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Scheme": { + "type": "string" + }, + "SecurityGroups": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "SubnetMappings": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SubnetMapping" + }, + "type": "array", + "uniqueItems": true + }, + "Subnets": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Type": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/LoadBalancerName", + "/properties/LoadBalancerFullName", + "/properties/CanonicalHostedZoneID", + "/properties/LoadBalancerArn", + "/properties/DNSName" + ], + "requiredXor": [ + "SubnetMappings", + "Subnets" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticloadbalancingv2", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ElasticLoadBalancingV2::LoadBalancer" +} diff --git a/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-iam-policy.json b/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-iam-policy.json index e4219180f3..928a6553c3 100644 --- a/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-iam-policy.json +++ b/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-iam-policy.json @@ -1,5 +1,22 @@ { "additionalProperties": false, + "anyOf": [ + { + "required": [ + "Users" + ] + }, + { + "required": [ + "Groups" + ] + }, + { + "required": [ + "Roles" + ] + } + ], "primaryIdentifier": [ "/properties/Id" ], @@ -48,10 +65,5 @@ "PolicyDocument", "PolicyName" ], - "requiredOr": [ - "Users", - "Groups", - "Roles" - ], "typeName": "AWS::IAM::Policy" } 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 74b9962416..e1cb167c7c 100644 --- a/src/cfnlint/data/schemas/providers/us_west_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/us_west_1/__init__.py @@ -1248,7 +1248,6 @@ "aws-efs-accesspoint.json", "aws-redshift-clustersecuritygroupingress.json", "aws-servicecatalogappregistry-attributegroupassociation.json", - "aws-elasticloadbalancingv2-loadbalancer.json", "aws-opensearchservice-domain.json", "aws-servicediscovery-instance.json", "aws-elasticsearch-domain.json", @@ -1425,6 +1424,7 @@ "aws-datasync-locationefs.json", "aws-ec2-localgatewayroutetable.json", "aws-apigateway-resource.json", + "aws-verifiedpermissions-identitysource.json", "aws-macie-session.json", "aws-elasticloadbalancingv2-targetgroup.json", "aws-applicationautoscaling-scalingpolicy.json", @@ -1632,7 +1632,6 @@ "aws-organizations-organizationalunit.json", "aws-appsync-datasource.json", "aws-sqs-queue.json", - "aws-ec2-securitygroupingress.json", "aws-guardduty-detector.json", "aws-sagemaker-modelqualityjobdefinition.json", "aws-iot-provisioningtemplate.json", diff --git a/src/cfnlint/data/schemas/providers/us_west_1/aws-ec2-securitygroupingress.json b/src/cfnlint/data/schemas/providers/us_west_1/aws-ec2-securitygroupingress.json new file mode 100644 index 0000000000..e127b28031 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_west_1/aws-ec2-securitygroupingress.json @@ -0,0 +1,116 @@ +{ + "additionalProperties": false, + "cfnLint": [ + "AWS::EC2::SecurityGroupIngress/Properties" + ], + "createOnlyProperties": [ + "/properties/GroupName", + "/properties/IpProtocol", + "/properties/SourceSecurityGroupId", + "/properties/SourcePrefixListId", + "/properties/ToPort", + "/properties/CidrIp", + "/properties/SourceSecurityGroupName", + "/properties/SourceSecurityGroupOwnerId", + "/properties/FromPort", + "/properties/GroupId", + "/properties/CidrIpv6" + ], + "handlers": { + "create": { + "permissions": [ + "ec2:DescribeSecurityGroupRules", + "ec2:AuthorizeSecurityGroupIngress" + ] + }, + "delete": { + "permissions": [ + "ec2:DescribeSecurityGroupRules", + "ec2:RevokeSecurityGroupIngress" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeSecurityGroupRules" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeSecurityGroups", + "ec2:DescribeSecurityGroupRules" + ] + }, + "update": { + "permissions": [ + "ec2:UpdateSecurityGroupRuleDescriptionsIngress" + ] + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "CidrIp": { + "type": "string" + }, + "CidrIpv6": { + "type": "string" + }, + "Description": { + "type": "string" + }, + "FromPort": { + "minimum": -1, + "type": "integer" + }, + "GroupId": { + "type": "string" + }, + "GroupName": { + "type": "string" + }, + "Id": { + "type": "string" + }, + "IpProtocol": { + "type": "string" + }, + "SourcePrefixListId": { + "type": "string" + }, + "SourceSecurityGroupId": { + "type": "string" + }, + "SourceSecurityGroupName": { + "type": "string" + }, + "SourceSecurityGroupOwnerId": { + "type": "string" + }, + "ToPort": { + "minimum": -1, + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id" + ], + "required": [ + "IpProtocol" + ], + "requiredXor": [ + "CidrIp", + "CidrIpv6", + "SourcePrefixListId", + "SourceSecurityGroupId", + "SourceSecurityGroupName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": false, + "tagUpdatable": false, + "taggable": false + }, + "typeName": "AWS::EC2::SecurityGroupIngress" +} diff --git a/src/cfnlint/data/schemas/providers/us_west_1/aws-elasticloadbalancingv2-loadbalancer.json b/src/cfnlint/data/schemas/providers/us_west_1/aws-elasticloadbalancingv2-loadbalancer.json new file mode 100644 index 0000000000..1f8152439a --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_west_1/aws-elasticloadbalancingv2-loadbalancer.json @@ -0,0 +1,193 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name", + "/properties/Type", + "/properties/Scheme" + ], + "definitions": { + "LoadBalancerAttribute": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "type": "object" + }, + "SubnetMapping": { + "additionalProperties": false, + "properties": { + "AllocationId": { + "type": "string" + }, + "IPv6Address": { + "type": "string" + }, + "PrivateIPv4Address": { + "type": "string" + }, + "SubnetId": { + "type": "string" + } + }, + "required": [ + "SubnetId" + ], + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Key" + ], + "type": "object" + } + }, + "documentationUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html", + "handlers": { + "create": { + "permissions": [ + "elasticloadbalancing:CreateLoadBalancer", + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:AddTags" + ] + }, + "delete": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DeleteLoadBalancer" + ] + }, + "list": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers" + ] + }, + "read": { + "permissions": [ + "elasticloadbalancing:DescribeLoadBalancers", + "elasticloadbalancing:DescribeLoadBalancerAttributes", + "elasticloadbalancing:DescribeTags" + ] + }, + "update": { + "permissions": [ + "elasticloadbalancing:ModifyLoadBalancerAttributes", + "elasticloadbalancing:SetSubnets", + "elasticloadbalancing:SetIpAddressType", + "elasticloadbalancing:SetSecurityGroups", + "elasticloadbalancing:AddTags", + "elasticloadbalancing:RemoveTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/LoadBalancerArn" + ], + "properties": { + "CanonicalHostedZoneID": { + "type": "string" + }, + "DNSName": { + "type": "string" + }, + "EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic": { + "type": "string" + }, + "IpAddressType": { + "type": "string" + }, + "LoadBalancerArn": { + "type": "string" + }, + "LoadBalancerAttributes": { + "arrayType": "AttributeList", + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LoadBalancerAttribute" + }, + "type": "array", + "uniqueItems": true + }, + "LoadBalancerFullName": { + "type": "string" + }, + "LoadBalancerName": { + "type": "string" + }, + "Name": { + "type": "string" + }, + "Scheme": { + "type": "string" + }, + "SecurityGroups": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "SubnetMappings": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/SubnetMapping" + }, + "type": "array", + "uniqueItems": true + }, + "Subnets": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": true + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Type": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/LoadBalancerName", + "/properties/LoadBalancerFullName", + "/properties/CanonicalHostedZoneID", + "/properties/LoadBalancerArn", + "/properties/DNSName" + ], + "requiredXor": [ + "SubnetMappings", + "Subnets" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-elasticloadbalancingv2", + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::ElasticLoadBalancingV2::LoadBalancer" +} diff --git a/src/cfnlint/data/schemas/providers/us_west_1/aws-verifiedpermissions-identitysource.json b/src/cfnlint/data/schemas/providers/us_west_1/aws-verifiedpermissions-identitysource.json deleted file mode 100644 index 46a0ad88f1..0000000000 --- a/src/cfnlint/data/schemas/providers/us_west_1/aws-verifiedpermissions-identitysource.json +++ /dev/null @@ -1,221 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/PolicyStoreId" - ], - "definitions": { - "CognitoGroupConfiguration": { - "additionalProperties": false, - "properties": { - "GroupEntityType": { - "maxLength": 200, - "minLength": 1, - "pattern": "^([_a-zA-Z][_a-zA-Z0-9]*::)*[_a-zA-Z][_a-zA-Z0-9]*$", - "type": "string" - } - }, - "required": [ - "GroupEntityType" - ], - "type": "object" - }, - "CognitoUserPoolConfiguration": { - "additionalProperties": false, - "properties": { - "ClientIds": { - "insertionOrder": false, - "items": { - "maxLength": 255, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "maxItems": 1000, - "minItems": 0, - "type": "array" - }, - "GroupConfiguration": { - "$ref": "#/definitions/CognitoGroupConfiguration" - }, - "UserPoolArn": { - "maxLength": 255, - "minLength": 1, - "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", - "type": "string" - } - }, - "required": [ - "UserPoolArn" - ], - "type": "object" - }, - "IdentitySourceConfiguration": { - "additionalProperties": false, - "properties": { - "CognitoUserPoolConfiguration": { - "$ref": "#/definitions/CognitoUserPoolConfiguration" - } - }, - "required": [ - "CognitoUserPoolConfiguration" - ], - "title": "CognitoUserPoolConfiguration", - "type": "object" - }, - "IdentitySourceDetails": { - "additionalProperties": false, - "properties": { - "ClientIds": { - "insertionOrder": false, - "items": { - "maxLength": 255, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "maxItems": 1000, - "minItems": 0, - "type": "array" - }, - "DiscoveryUrl": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^https://.*$", - "type": "string" - }, - "OpenIdIssuer": { - "$ref": "#/definitions/OpenIdIssuer" - }, - "UserPoolArn": { - "maxLength": 255, - "minLength": 1, - "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", - "type": "string" - } - }, - "type": "object" - }, - "OpenIdIssuer": { - "enum": [ - "COGNITO" - ], - "type": "string" - } - }, - "deprecatedProperties": [ - "/properties/Details" - ], - "handlers": { - "create": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "delete": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "PolicyStoreId": { - "$ref": "resource-schema.json#/properties/PolicyStoreId" - } - }, - "required": [ - "PolicyStoreId" - ] - }, - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "read": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "update": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - } - }, - "primaryIdentifier": [ - "/properties/IdentitySourceId", - "/properties/PolicyStoreId" - ], - "properties": { - "Configuration": { - "$ref": "#/definitions/IdentitySourceConfiguration" - }, - "Details": { - "$ref": "#/definitions/IdentitySourceDetails" - }, - "IdentitySourceId": { - "maxLength": 200, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]*$", - "type": "string" - }, - "PolicyStoreId": { - "maxLength": 200, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]*$", - "type": "string" - }, - "PrincipalEntityType": { - "maxLength": 200, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Details", - "/properties/IdentitySourceId" - ], - "required": [ - "Configuration", - "PolicyStoreId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-avp", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::VerifiedPermissions::IdentitySource" -} 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 e96062fe08..e1ff530e77 100644 --- a/src/cfnlint/data/schemas/providers/us_west_2/__init__.py +++ b/src/cfnlint/data/schemas/providers/us_west_2/__init__.py @@ -1317,7 +1317,6 @@ "aws-mediatailor-channel.json", "aws-lambda-url.json", "aws-mediatailor-channelpolicy.json", - "aws-gamelift-fleet.json", "aws-datasync-locationfsxwindows.json", "aws-gamelift-build.json", "aws-apigateway-requestvalidator.json", @@ -1801,7 +1800,6 @@ "aws-backup-reportplan.json", "aws-b2bi-capability.json", "aws-pinpointemail-dedicatedippool.json", - "aws-batch-jobdefinition.json", "aws-iam-samlprovider.json", "aws-lightsail-database.json", "aws-appflow-connector.json", @@ -1825,7 +1823,6 @@ "aws-neptune-dbcluster.json", "aws-evidently-feature.json", "aws-backup-backupvault.json", - "aws-ec2-customergateway.json", "aws-iam-grouppolicy.json", "aws-scheduler-schedule.json", "aws-deadline-licenseendpoint.json", @@ -1981,6 +1978,7 @@ "aws-ec2-localgatewayroutetable.json", "aws-apigateway-resource.json", "aws-sagemaker-appimageconfig.json", + "aws-verifiedpermissions-identitysource.json", "aws-macie-session.json", "aws-elasticloadbalancingv2-targetgroup.json", "aws-applicationautoscaling-scalingpolicy.json", @@ -2281,6 +2279,7 @@ "aws-organizations-organizationalunit.json", "aws-appsync-datasource.json", "aws-sqs-queue.json", + "aws-ec2-securitygroupingress.json", "aws-guardduty-detector.json", "aws-sagemaker-modelqualityjobdefinition.json", "aws-iot-provisioningtemplate.json", diff --git a/src/cfnlint/data/schemas/providers/ca_west_1/aws-ecs-taskdefinition.json b/src/cfnlint/data/schemas/providers/us_west_2/aws-batch-jobdefinition.json similarity index 50% rename from src/cfnlint/data/schemas/providers/ca_west_1/aws-ecs-taskdefinition.json rename to src/cfnlint/data/schemas/providers/us_west_2/aws-batch-jobdefinition.json index f2828c8fcd..d678bc08cb 100644 --- a/src/cfnlint/data/schemas/providers/ca_west_1/aws-ecs-taskdefinition.json +++ b/src/cfnlint/data/schemas/providers/us_west_2/aws-batch-jobdefinition.json @@ -1,22 +1,8 @@ { "additionalProperties": false, "createOnlyProperties": [ - "/properties/Family", - "/properties/ContainerDefinitions", - "/properties/Cpu", - "/properties/ExecutionRoleArn", - "/properties/InferenceAccelerators", - "/properties/Memory", - "/properties/NetworkMode", - "/properties/PlacementConstraints", - "/properties/ProxyConfiguration", - "/properties/RequiresCompatibilities", - "/properties/RuntimePlatform", - "/properties/TaskRoleArn", - "/properties/Volumes", - "/properties/PidMode", - "/properties/IpcMode", - "/properties/EphemeralStorage" + "/properties/Tags", + "/properties/JobDefinitionName" ], "definitions": { "AuthorizationConfig": { @@ -25,133 +11,46 @@ "AccessPointId": { "type": "string" }, - "IAM": { - "enum": [ - "ENABLED", - "DISABLED" - ], + "Iam": { "type": "string" } }, "type": "object" }, - "ContainerDefinition": { + "ContainerProperties": { "additionalProperties": false, "properties": { "Command": { - "insertionOrder": true, "items": { "type": "string" }, - "type": "array" - }, - "Cpu": { - "type": "integer" - }, - "CredentialSpecs": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "DependsOn": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ContainerDependency" - }, - "type": "array" - }, - "DisableNetworking": { - "type": "boolean" - }, - "DnsSearchDomains": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "DnsServers": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "DockerLabels": { - "additionalProperties": false, - "patternProperties": { - ".{1,}": { - "type": "string" - } - }, - "type": "object" - }, - "DockerSecurityOptions": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" - }, - "EntryPoint": { - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array" + "type": "array", + "uniqueItems": false }, "Environment": { - "insertionOrder": false, "items": { - "$ref": "#/definitions/KeyValuePair" + "$ref": "#/definitions/Environment" }, "type": "array", - "uniqueItems": true, - "uniqueKeys": [ - "Name" - ] - }, - "EnvironmentFiles": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/EnvironmentFile" - }, - "type": "array" + "uniqueItems": false }, - "Essential": { - "type": "boolean" + "EphemeralStorage": { + "$ref": "#/definitions/EphemeralStorage" }, - "ExtraHosts": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/HostEntry" - }, - "type": "array" - }, - "FirelensConfiguration": { - "$ref": "#/definitions/FirelensConfiguration" - }, - "HealthCheck": { - "$ref": "#/definitions/HealthCheck" - }, - "Hostname": { + "ExecutionRoleArn": { "type": "string" }, + "FargatePlatformConfiguration": { + "$ref": "#/definitions/FargatePlatformConfiguration" + }, "Image": { "type": "string" }, - "Interactive": { - "type": "boolean" + "InstanceType": { + "type": "string" }, - "Links": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true + "JobRoleArn": { + "type": "string" }, "LinuxParameters": { "$ref": "#/definitions/LinuxParameters" @@ -162,34 +61,19 @@ "Memory": { "type": "integer" }, - "MemoryReservation": { - "type": "integer" - }, "MountPoints": { - "insertionOrder": true, "items": { - "$ref": "#/definitions/MountPoint" + "$ref": "#/definitions/MountPoints" }, "type": "array", - "uniqueItems": true - }, - "Name": { - "type": "string" + "uniqueItems": false }, - "PortMappings": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/PortMapping" - }, - "type": "array", - "uniqueItems": true + "NetworkConfiguration": { + "$ref": "#/definitions/NetworkConfiguration" }, "Privileged": { "type": "boolean" }, - "PseudoTerminal": { - "type": "boolean" - }, "ReadonlyRootFilesystem": { "type": "boolean" }, @@ -197,72 +81,48 @@ "$ref": "#/definitions/RepositoryCredentials" }, "ResourceRequirements": { - "insertionOrder": false, "items": { "$ref": "#/definitions/ResourceRequirement" }, - "type": "array" + "type": "array", + "uniqueItems": false + }, + "RuntimePlatform": { + "$ref": "#/definitions/RuntimePlatform" }, "Secrets": { - "insertionOrder": false, "items": { "$ref": "#/definitions/Secret" }, - "type": "array" - }, - "StartTimeout": { - "type": "integer" - }, - "StopTimeout": { - "type": "integer" - }, - "SystemControls": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/SystemControl" - }, - "type": "array" + "type": "array", + "uniqueItems": false }, "Ulimits": { - "insertionOrder": false, "items": { "$ref": "#/definitions/Ulimit" }, - "type": "array" + "type": "array", + "uniqueItems": false }, "User": { "type": "string" }, - "VolumesFrom": { - "insertionOrder": false, + "Vcpus": { + "type": "integer" + }, + "Volumes": { "items": { - "$ref": "#/definitions/VolumeFrom" + "$ref": "#/definitions/Volumes" }, "type": "array", - "uniqueItems": true - }, - "WorkingDirectory": { - "type": "string" + "uniqueItems": false } }, "required": [ - "Name", "Image" ], "type": "object" }, - "ContainerDependency": { - "additionalProperties": false, - "properties": { - "Condition": { - "type": "string" - }, - "ContainerName": { - "type": "string" - } - }, - "type": "object" - }, "Device": { "additionalProperties": false, "properties": { @@ -273,66 +133,88 @@ "type": "string" }, "Permissions": { - "insertionOrder": false, "items": { "type": "string" }, "type": "array", - "uniqueItems": true + "uniqueItems": false } }, "type": "object" }, - "DockerVolumeConfiguration": { + "EcsProperties": { "additionalProperties": false, "properties": { - "Autoprovision": { - "type": "boolean" + "TaskProperties": { + "items": { + "$ref": "#/definitions/EcsTaskProperties" + }, + "type": "array", + "uniqueItems": false + } + }, + "required": [ + "TaskProperties" + ], + "type": "object" + }, + "EcsTaskProperties": { + "additionalProperties": false, + "properties": { + "Containers": { + "items": { + "$ref": "#/definitions/TaskContainerProperties" + }, + "type": "array", + "uniqueItems": false }, - "Driver": { + "EphemeralStorage": { + "$ref": "#/definitions/EphemeralStorage" + }, + "ExecutionRoleArn": { "type": "string" }, - "DriverOpts": { - "additionalProperties": false, - "patternProperties": { - ".{1,}": { - "type": "string" - } - }, - "type": "object" + "IpcMode": { + "type": "string" }, - "Labels": { - "additionalProperties": false, - "patternProperties": { - ".{1,}": { - "type": "string" - } - }, - "type": "object" + "NetworkConfiguration": { + "$ref": "#/definitions/NetworkConfiguration" }, - "Scope": { + "PidMode": { "type": "string" + }, + "PlatformVersion": { + "type": "string" + }, + "RuntimePlatform": { + "$ref": "#/definitions/RuntimePlatform" + }, + "TaskRoleArn": { + "type": "string" + }, + "Volumes": { + "items": { + "$ref": "#/definitions/Volumes" + }, + "type": "array", + "uniqueItems": false } }, "type": "object" }, - "EFSVolumeConfiguration": { + "EfsVolumeConfiguration": { "additionalProperties": false, "properties": { "AuthorizationConfig": { "$ref": "#/definitions/AuthorizationConfig" }, - "FilesystemId": { + "FileSystemId": { "type": "string" }, "RootDirectory": { "type": "string" }, "TransitEncryption": { - "enum": [ - "ENABLED", - "DISABLED" - ], "type": "string" }, "TransitEncryptionPort": { @@ -340,128 +222,195 @@ } }, "required": [ - "FilesystemId" + "FileSystemId" ], "type": "object" }, - "EnvironmentFile": { + "EksContainer": { "additionalProperties": false, "properties": { - "Type": { + "Args": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Command": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "Env": { + "items": { + "$ref": "#/definitions/EksContainerEnvironmentVariable" + }, + "type": "array", + "uniqueItems": false + }, + "Image": { "type": "string" }, - "Value": { + "ImagePullPolicy": { + "type": "string" + }, + "Name": { "type": "string" + }, + "Resources": { + "$ref": "#/definitions/EksContainerResourceRequirements" + }, + "SecurityContext": { + "$ref": "#/definitions/EksContainerSecurityContext" + }, + "VolumeMounts": { + "items": { + "$ref": "#/definitions/EksContainerVolumeMount" + }, + "type": "array", + "uniqueItems": false } }, + "required": [ + "Image" + ], "type": "object" }, - "EphemeralStorage": { + "EksContainerEnvironmentVariable": { "additionalProperties": false, "properties": { - "SizeInGiB": { - "type": "integer" + "Name": { + "type": "string" + }, + "Value": { + "type": "string" } }, + "required": [ + "Name" + ], "type": "object" }, - "FirelensConfiguration": { + "EksContainerResourceRequirements": { "additionalProperties": false, "properties": { - "Options": { - "additionalProperties": false, - "patternProperties": { - ".{1,}": { - "type": "string" - } - }, + "Limits": { "type": "object" }, - "Type": { - "type": "string" + "Requests": { + "type": "object" } }, "type": "object" }, - "HealthCheck": { + "EksContainerSecurityContext": { "additionalProperties": false, "properties": { - "Command": { - "insertionOrder": true, - "items": { - "type": "string" - }, - "type": "array" + "AllowPrivilegeEscalation": { + "type": "boolean" }, - "Interval": { - "type": "integer" + "Privileged": { + "type": "boolean" }, - "Retries": { - "type": "integer" + "ReadOnlyRootFilesystem": { + "type": "boolean" }, - "StartPeriod": { + "RunAsGroup": { "type": "integer" }, - "Timeout": { + "RunAsNonRoot": { + "type": "boolean" + }, + "RunAsUser": { "type": "integer" } }, "type": "object" }, - "HostEntry": { + "EksContainerVolumeMount": { "additionalProperties": false, "properties": { - "Hostname": { + "MountPath": { "type": "string" }, - "IpAddress": { + "Name": { "type": "string" + }, + "ReadOnly": { + "type": "boolean" } }, "type": "object" }, - "HostVolumeProperties": { + "EksEmptyDir": { "additionalProperties": false, "properties": { - "SourcePath": { + "Medium": { + "type": "string" + }, + "SizeLimit": { "type": "string" } }, "type": "object" }, - "InferenceAccelerator": { + "EksHostPath": { "additionalProperties": false, "properties": { - "DeviceName": { + "Path": { "type": "string" + } + }, + "type": "object" + }, + "EksProperties": { + "additionalProperties": false, + "properties": { + "PodProperties": { + "$ref": "#/definitions/PodProperties" + } + }, + "type": "object" + }, + "EksSecret": { + "additionalProperties": false, + "properties": { + "Optional": { + "type": "boolean" }, - "DeviceType": { + "SecretName": { "type": "string" } }, + "required": [ + "SecretName" + ], "type": "object" }, - "KernelCapabilities": { + "EksVolume": { "additionalProperties": false, "properties": { - "Add": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" + "EmptyDir": { + "$ref": "#/definitions/EksEmptyDir" }, - "Drop": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array" + "HostPath": { + "$ref": "#/definitions/EksHostPath" + }, + "Name": { + "type": "string" + }, + "Secret": { + "$ref": "#/definitions/EksSecret" } }, + "required": [ + "Name" + ], "type": "object" }, - "KeyValuePair": { + "Environment": { "additionalProperties": false, "properties": { "Name": { @@ -473,18 +422,69 @@ }, "type": "object" }, - "LinuxParameters": { + "EphemeralStorage": { + "additionalProperties": false, + "properties": { + "SizeInGiB": { + "type": "integer" + } + }, + "required": [ + "SizeInGiB" + ], + "type": "object" + }, + "EvaluateOnExit": { "additionalProperties": false, "properties": { - "Capabilities": { - "$ref": "#/definitions/KernelCapabilities" + "Action": { + "type": "string" }, + "OnExitCode": { + "type": "string" + }, + "OnReason": { + "type": "string" + }, + "OnStatusReason": { + "type": "string" + } + }, + "required": [ + "Action" + ], + "type": "object" + }, + "FargatePlatformConfiguration": { + "additionalProperties": false, + "properties": { + "PlatformVersion": { + "type": "string" + } + }, + "type": "object" + }, + "ImagePullSecret": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + } + }, + "required": [ + "Name" + ], + "type": "object" + }, + "LinuxParameters": { + "additionalProperties": false, + "properties": { "Devices": { - "insertionOrder": false, "items": { "$ref": "#/definitions/Device" }, - "type": "array" + "type": "array", + "uniqueItems": false }, "InitProcessEnabled": { "type": "boolean" @@ -499,39 +499,30 @@ "type": "integer" }, "Tmpfs": { - "insertionOrder": false, "items": { "$ref": "#/definitions/Tmpfs" }, - "type": "array" + "type": "array", + "uniqueItems": false } }, "type": "object" }, "LogConfiguration": { "additionalProperties": false, - "cfnLint": [ - "AWS::ECS::TaskDefinition/Properties/ContainerDefinitions/LogConfiguration" - ], "properties": { "LogDriver": { "type": "string" }, "Options": { - "additionalProperties": false, - "patternProperties": { - ".{1,}": { - "type": "string" - } - }, "type": "object" }, "SecretOptions": { - "insertionOrder": false, "items": { "$ref": "#/definitions/Secret" }, - "type": "array" + "type": "array", + "uniqueItems": false } }, "required": [ @@ -539,7 +530,16 @@ ], "type": "object" }, - "MountPoint": { + "Metadata": { + "additionalProperties": false, + "properties": { + "Labels": { + "type": "object" + } + }, + "type": "object" + }, + "MountPoints": { "additionalProperties": false, "properties": { "ContainerPath": { @@ -554,59 +554,111 @@ }, "type": "object" }, - "PortMapping": { + "NetworkConfiguration": { "additionalProperties": false, "properties": { - "AppProtocol": { - "enum": [ - "http", - "http2", - "grpc" - ], + "AssignPublicIp": { "type": "string" - }, - "ContainerPort": { + } + }, + "type": "object" + }, + "NodeProperties": { + "additionalProperties": false, + "properties": { + "MainNode": { "type": "integer" }, - "ContainerPortRange": { - "type": "string" + "NodeRangeProperties": { + "items": { + "$ref": "#/definitions/NodeRangeProperty" + }, + "type": "array", + "uniqueItems": false }, - "HostPort": { + "NumNodes": { "type": "integer" + } + }, + "required": [ + "MainNode", + "NodeRangeProperties", + "NumNodes" + ], + "type": "object" + }, + "NodeRangeProperty": { + "additionalProperties": false, + "properties": { + "Container": { + "$ref": "#/definitions/ContainerProperties" }, - "Name": { - "type": "string" + "EcsProperties": { + "$ref": "#/definitions/EcsProperties" }, - "Protocol": { + "InstanceTypes": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "TargetNodes": { "type": "string" } }, + "required": [ + "TargetNodes" + ], "type": "object" }, - "ProxyConfiguration": { + "PodProperties": { "additionalProperties": false, "properties": { - "ContainerName": { + "Containers": { + "items": { + "$ref": "#/definitions/EksContainer" + }, + "type": "array", + "uniqueItems": false + }, + "DnsPolicy": { "type": "string" }, - "ProxyConfigurationProperties": { - "insertionOrder": false, + "HostNetwork": { + "type": "boolean" + }, + "ImagePullSecrets": { "items": { - "$ref": "#/definitions/KeyValuePair" + "$ref": "#/definitions/ImagePullSecret" }, "type": "array", - "uniqueItems": true + "uniqueItems": false }, - "Type": { - "enum": [ - "APPMESH" - ], + "InitContainers": { + "items": { + "$ref": "#/definitions/EksContainer" + }, + "type": "array", + "uniqueItems": false + }, + "Metadata": { + "$ref": "#/definitions/Metadata" + }, + "ServiceAccountName": { "type": "string" + }, + "ShareProcessNamespace": { + "type": "boolean" + }, + "Volumes": { + "items": { + "$ref": "#/definitions/EksVolume" + }, + "type": "array", + "uniqueItems": false } }, - "required": [ - "ContainerName" - ], "type": "object" }, "RepositoryCredentials": { @@ -616,6 +668,9 @@ "type": "string" } }, + "required": [ + "CredentialsParameter" + ], "type": "object" }, "ResourceRequirement": { @@ -628,10 +683,22 @@ "type": "string" } }, - "required": [ - "Type", - "Value" - ], + "type": "object" + }, + "RetryStrategy": { + "additionalProperties": false, + "properties": { + "Attempts": { + "type": "integer" + }, + "EvaluateOnExit": { + "items": { + "$ref": "#/definitions/EvaluateOnExit" + }, + "type": "array", + "uniqueItems": false + } + }, "type": "object" }, "RuntimePlatform": { @@ -657,48 +724,119 @@ } }, "required": [ - "Name", - "ValueFrom" + "ValueFrom", + "Name" ], "type": "object" }, - "SystemControl": { + "TaskContainerDependency": { "additionalProperties": false, "properties": { - "Namespace": { + "Condition": { "type": "string" }, - "Value": { + "ContainerName": { "type": "string" } }, + "required": [ + "Condition", + "ContainerName" + ], "type": "object" }, - "Tag": { + "TaskContainerProperties": { "additionalProperties": false, "properties": { - "Key": { + "Command": { + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "DependsOn": { + "items": { + "$ref": "#/definitions/TaskContainerDependency" + }, + "type": "array", + "uniqueItems": false + }, + "Environment": { + "items": { + "$ref": "#/definitions/Environment" + }, + "type": "array", + "uniqueItems": false + }, + "Essential": { + "type": "boolean" + }, + "Image": { "type": "string" }, - "Value": { + "LinuxParameters": { + "$ref": "#/definitions/LinuxParameters" + }, + "LogConfiguration": { + "$ref": "#/definitions/LogConfiguration" + }, + "MountPoints": { + "items": { + "$ref": "#/definitions/MountPoints" + }, + "type": "array", + "uniqueItems": false + }, + "Name": { + "type": "string" + }, + "Privileged": { + "type": "boolean" + }, + "ReadonlyRootFilesystem": { + "type": "boolean" + }, + "RepositoryCredentials": { + "$ref": "#/definitions/RepositoryCredentials" + }, + "ResourceRequirements": { + "items": { + "$ref": "#/definitions/ResourceRequirement" + }, + "type": "array", + "uniqueItems": false + }, + "Secrets": { + "items": { + "$ref": "#/definitions/Secret" + }, + "type": "array", + "uniqueItems": false + }, + "Ulimits": { + "items": { + "$ref": "#/definitions/Ulimit" + }, + "type": "array", + "uniqueItems": false + }, + "User": { "type": "string" } }, + "required": [ + "Image" + ], "type": "object" }, - "TaskDefinitionPlacementConstraint": { + "Timeout": { "additionalProperties": false, "properties": { - "Expression": { - "type": "string" - }, - "Type": { - "type": "string" + "AttemptDurationSeconds": { + "type": "integer" } }, - "required": [ - "Type" - ], "type": "object" }, "Tmpfs": { @@ -708,18 +846,19 @@ "type": "string" }, "MountOptions": { - "insertionOrder": false, "items": { "type": "string" }, - "type": "array" + "type": "array", + "uniqueItems": false }, "Size": { "type": "integer" } }, "required": [ - "Size" + "Size", + "ContainerPath" ], "type": "object" }, @@ -737,26 +876,20 @@ } }, "required": [ + "SoftLimit", "HardLimit", - "Name", - "SoftLimit" + "Name" ], "type": "object" }, - "Volume": { + "Volumes": { "additionalProperties": false, "properties": { - "ConfiguredAtLaunch": { - "type": "boolean" - }, - "DockerVolumeConfiguration": { - "$ref": "#/definitions/DockerVolumeConfiguration" - }, - "EFSVolumeConfiguration": { - "$ref": "#/definitions/EFSVolumeConfiguration" + "EfsVolumeConfiguration": { + "$ref": "#/definitions/EfsVolumeConfiguration" }, "Host": { - "$ref": "#/definitions/HostVolumeProperties" + "$ref": "#/definitions/VolumesHost" }, "Name": { "type": "string" @@ -764,172 +897,72 @@ }, "type": "object" }, - "VolumeFrom": { + "VolumesHost": { "additionalProperties": false, "properties": { - "ReadOnly": { - "type": "boolean" - }, - "SourceContainer": { + "SourcePath": { "type": "string" } }, "type": "object" } }, - "handlers": { - "create": { - "permissions": [ - "ecs:RegisterTaskDefinition", - "ecs:DescribeTaskDefinition", - "ecs:TagResource", - "iam:GetRole", - "iam:PassRole" - ] - }, - "delete": { - "permissions": [ - "ecs:DeregisterTaskDefinition", - "ecs:DescribeTaskDefinition", - "iam:GetRole", - "iam:PassRole" - ] - }, - "list": { - "permissions": [ - "ecs:ListTaskDefinitions", - "ecs:DescribeTaskDefinition" - ] - }, - "read": { - "permissions": [ - "ecs:DescribeTaskDefinition" - ] - }, - "update": { - "permissions": [ - "ecs:TagResource", - "ecs:UntagResource", - "ecs:ListTagsForResource", - "ecs:DescribeTaskDefinition", - "iam:GetRole", - "iam:PassRole" - ] - } - }, "primaryIdentifier": [ - "/properties/TaskDefinitionArn" + "/properties/Id" ], "properties": { - "ContainerDefinitions": { - "cfnLint": [ - "AWS::ECS::TaskDefinition/Properties/ContainerDefinitions" - ], - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ContainerDefinition" - }, - "type": "array", - "uniqueItems": true + "ContainerProperties": { + "$ref": "#/definitions/ContainerProperties" }, - "Cpu": { - "type": "string" + "EcsProperties": { + "$ref": "#/definitions/EcsProperties" }, - "EphemeralStorage": { - "$ref": "#/definitions/EphemeralStorage" + "EksProperties": { + "$ref": "#/definitions/EksProperties" }, - "ExecutionRoleArn": { - "cfnLint": [ - "AWS::ECS::TaskDefinition/Properties/ExecutionRoleArn" - ], + "Id": { "type": "string" }, - "Family": { + "JobDefinitionName": { "type": "string" }, - "InferenceAccelerators": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/InferenceAccelerator" - }, - "type": "array", - "uniqueItems": true - }, - "IpcMode": { - "type": "string" - }, - "Memory": { - "type": "string" - }, - "NetworkMode": { - "enum": [ - "bridge", - "host", - "awsvpc", - "none" - ], - "type": "string" + "NodeProperties": { + "$ref": "#/definitions/NodeProperties" }, - "PidMode": { - "type": "string" + "Parameters": { + "type": "object" }, - "PlacementConstraints": { - "insertionOrder": false, + "PlatformCapabilities": { "items": { - "$ref": "#/definitions/TaskDefinitionPlacementConstraint" + "type": "string" }, "type": "array", - "uniqueItems": true + "uniqueItems": false }, - "ProxyConfiguration": { - "$ref": "#/definitions/ProxyConfiguration" + "PropagateTags": { + "type": "boolean" }, - "RequiresCompatibilities": { - "insertionOrder": false, - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true + "RetryStrategy": { + "$ref": "#/definitions/RetryStrategy" }, - "RuntimePlatform": { - "$ref": "#/definitions/RuntimePlatform" + "SchedulingPriority": { + "type": "integer" }, "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" + "type": "object" }, - "TaskDefinitionArn": { - "type": "string" + "Timeout": { + "$ref": "#/definitions/Timeout" }, - "TaskRoleArn": { + "Type": { "type": "string" - }, - "Volumes": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Volume" - }, - "type": "array", - "uniqueItems": true } }, - "propertyTransform": { - "/properties/TaskRoleArn": "TaskRoleArn $OR $split(TaskRoleArn, \"role/\")[-1]" - }, "readOnlyProperties": [ - "/properties/TaskDefinitionArn" + "/properties/Id" ], - "sourceUrl": "https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::ECS::TaskDefinition" + "required": [ + "Type" + ], + "typeName": "AWS::Batch::JobDefinition" } diff --git a/src/cfnlint/data/schemas/providers/us_west_2/aws-ec2-customergateway.json b/src/cfnlint/data/schemas/providers/us_west_2/aws-ec2-customergateway.json new file mode 100644 index 0000000000..19e10fe34c --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_west_2/aws-ec2-customergateway.json @@ -0,0 +1,113 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/CertificateArn", + "/properties/BgpAsn", + "/properties/Type", + "/properties/IpAddress", + "/properties/DeviceName" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "ec2:CreateCustomerGateway", + "ec2:DescribeCustomerGateways", + "ec2:CreateTags" + ] + }, + "delete": { + "permissions": [ + "ec2:DeleteCustomerGateway", + "ec2:DescribeCustomerGateways", + "ec2:DeleteTags" + ] + }, + "list": { + "permissions": [ + "ec2:DescribeCustomerGateways" + ] + }, + "read": { + "permissions": [ + "ec2:DescribeCustomerGateways" + ] + }, + "update": { + "permissions": [ + "ec2:CreateTags", + "ec2:DeleteTags", + "ec2:DescribeCustomerGateways" + ] + } + }, + "primaryIdentifier": [ + "/properties/CustomerGatewayId" + ], + "properties": { + "BgpAsn": { + "default": 65000, + "type": "integer" + }, + "CertificateArn": { + "pattern": "^arn:(aws[a-zA-Z-]*)?:acm:[a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\\d{1}:\\d{12}:certificate\\/[a-zA-Z0-9-_]+$", + "type": "string" + }, + "CustomerGatewayId": { + "type": "string" + }, + "DeviceName": { + "type": "string" + }, + "IpAddress": { + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "Type": { + "enum": [ + "ipsec.1" + ], + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/CustomerGatewayId" + ], + "required": [ + "BgpAsn", + "IpAddress", + "Type" + ], + "tagging": { + "cloudFormationSystemTags": true, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::EC2::CustomerGateway" +} diff --git a/src/cfnlint/data/schemas/providers/us_west_2/aws-ec2-securitygroupingress.json b/src/cfnlint/data/schemas/providers/us_west_2/aws-ec2-securitygroupingress.json deleted file mode 100644 index 83ebc2ae5c..0000000000 --- a/src/cfnlint/data/schemas/providers/us_west_2/aws-ec2-securitygroupingress.json +++ /dev/null @@ -1,121 +0,0 @@ -{ - "additionalProperties": false, - "cfnLint": [ - "AWS::EC2::SecurityGroupIngress/Properties" - ], - "createOnlyProperties": [ - "/properties/GroupName", - "/properties/IpProtocol", - "/properties/SourceSecurityGroupId", - "/properties/SourcePrefixListId", - "/properties/ToPort", - "/properties/CidrIp", - "/properties/SourceSecurityGroupName", - "/properties/SourceSecurityGroupOwnerId", - "/properties/FromPort", - "/properties/GroupId", - "/properties/CidrIpv6" - ], - "handlers": { - "create": { - "permissions": [ - "ec2:DescribeSecurityGroupRules", - "ec2:AuthorizeSecurityGroupIngress" - ] - }, - "delete": { - "permissions": [ - "ec2:DescribeSecurityGroupRules", - "ec2:RevokeSecurityGroupIngress" - ] - }, - "list": { - "permissions": [ - "ec2:DescribeSecurityGroupRules" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeSecurityGroups", - "ec2:DescribeSecurityGroupRules" - ] - }, - "update": { - "permissions": [ - "ec2:UpdateSecurityGroupRuleDescriptionsIngress" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "CidrIp": { - "type": "string" - }, - "CidrIpv6": { - "type": "string" - }, - "Description": { - "type": "string" - }, - "FromPort": { - "minimum": -1, - "type": "integer" - }, - "GroupId": { - "type": "string" - }, - "GroupName": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "IpProtocol": { - "type": "string" - }, - "SourcePrefixListId": { - "type": "string" - }, - "SourceSecurityGroupId": { - "type": "string" - }, - "SourceSecurityGroupName": { - "type": "string" - }, - "SourceSecurityGroupOwnerId": { - "type": "string" - }, - "ToPort": { - "minimum": -1, - "type": "integer" - } - }, - "propertyTransform": { - "/properties/FromPort": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$ipProtocol := $mapVal ? $mapVal : $lowercase(IpProtocol);$ipProtocol in ['imcp', 'tcp', 'udp', 'imcp'] ? FromPort : -1)", - "/properties/IpProtocol": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$mapVal ? $mapVal : $lowercase(IpProtocol))", - "/properties/ToPort": "($mapVal := $lookup({'1': 'icmp','6': 'tcp','17': 'udp','58': 'icmpv6'}, IpProtocol);$ipProtocol := $mapVal ? $mapVal : $lowercase(IpProtocol);$ipProtocol in ['imcp', 'tcp', 'udp', 'imcp'] ? ToPort : -1)" - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "IpProtocol" - ], - "requiredXor": [ - "CidrIp", - "CidrIpv6", - "SourcePrefixListId", - "SourceSecurityGroupId", - "SourceSecurityGroupName" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ec2.git", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::EC2::SecurityGroupIngress" -} diff --git a/src/cfnlint/data/schemas/providers/us_west_2/aws-gamelift-fleet.json b/src/cfnlint/data/schemas/providers/us_west_2/aws-gamelift-fleet.json new file mode 100644 index 0000000000..fb6db12d8b --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_west_2/aws-gamelift-fleet.json @@ -0,0 +1,523 @@ +{ + "$schema": "https://schema.cloudformation.us-east-1.amazonaws.com/provider.definition.schema.v1.json", + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ApplyCapacity", + "/properties/BuildId", + "/properties/CertificateConfiguration", + "/properties/EC2InstanceType", + "/properties/FleetType", + "/properties/InstanceRoleARN", + "/properties/InstanceRoleCredentialsProvider", + "/properties/LogPaths", + "/properties/PeerVpcAwsAccountId", + "/properties/PeerVpcId", + "/properties/ScriptId", + "/properties/ServerLaunchParameters", + "/properties/ServerLaunchPath", + "/properties/ComputeType" + ], + "definitions": { + "AnywhereConfiguration": { + "additionalProperties": false, + "properties": { + "Cost": { + "maxLength": 11, + "minLength": 1, + "pattern": "^\\d{1,5}(?:\\.\\d{1,5})?$", + "type": "string" + } + }, + "required": [ + "Cost" + ] + }, + "CertificateConfiguration": { + "additionalProperties": false, + "properties": { + "CertificateType": { + "enum": [ + "DISABLED", + "GENERATED" + ], + "type": "string" + } + }, + "required": [ + "CertificateType" + ], + "type": "object" + }, + "IpPermission": { + "additionalProperties": false, + "properties": { + "FromPort": { + "maximum": 60000, + "minimum": 1, + "type": "integer" + }, + "IpRange": { + "pattern": "(^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(/([0-9]|[1-2][0-9]|3[0-2]))$)", + "type": "string" + }, + "Protocol": { + "enum": [ + "TCP", + "UDP" + ], + "type": "string" + }, + "ToPort": { + "maximum": 60000, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "FromPort", + "IpRange", + "Protocol", + "ToPort" + ], + "type": "object" + }, + "Location": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[A-Za-z0-9\\-]+", + "type": "string" + }, + "LocationCapacity": { + "additionalProperties": false, + "properties": { + "DesiredEC2Instances": { + "minimum": 0, + "type": "integer" + }, + "MaxSize": { + "minimum": 0, + "type": "integer" + }, + "MinSize": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "DesiredEC2Instances", + "MinSize", + "MaxSize" + ], + "type": "object" + }, + "LocationConfiguration": { + "additionalProperties": false, + "properties": { + "Location": { + "$ref": "#/definitions/Location" + }, + "LocationCapacity": { + "$ref": "#/definitions/LocationCapacity" + } + }, + "required": [ + "Location" + ], + "type": "object" + }, + "ResourceCreationLimitPolicy": { + "additionalProperties": false, + "properties": { + "NewGameSessionsPerCreator": { + "minimum": 0, + "type": "integer" + }, + "PolicyPeriodInMinutes": { + "minimum": 0, + "type": "integer" + } + }, + "type": "object" + }, + "RuntimeConfiguration": { + "additionalProperties": false, + "properties": { + "GameSessionActivationTimeoutSeconds": { + "maximum": 600, + "minimum": 1, + "type": "integer" + }, + "MaxConcurrentGameSessionActivations": { + "maximum": 2147483647, + "minimum": 1, + "type": "integer" + }, + "ServerProcesses": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ServerProcess" + }, + "maxItems": 50, + "type": "array" + } + }, + "type": "object" + }, + "ScalingPolicy": { + "additionalProperties": false, + "properties": { + "ComparisonOperator": { + "enum": [ + "GreaterThanOrEqualToThreshold", + "GreaterThanThreshold", + "LessThanThreshold", + "LessThanOrEqualToThreshold" + ], + "type": "string" + }, + "EvaluationPeriods": { + "minimum": 1, + "type": "integer" + }, + "Location": { + "$ref": "#/definitions/Location" + }, + "MetricName": { + "enum": [ + "ActivatingGameSessions", + "ActiveGameSessions", + "ActiveInstances", + "AvailableGameSessions", + "AvailablePlayerSessions", + "CurrentPlayerSessions", + "IdleInstances", + "PercentAvailableGameSessions", + "PercentIdleInstances", + "QueueDepth", + "WaitTime", + "ConcurrentActivatableGameSessions" + ], + "type": "string" + }, + "Name": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "PolicyType": { + "enum": [ + "RuleBased", + "TargetBased" + ], + "type": "string" + }, + "ScalingAdjustment": { + "type": "integer" + }, + "ScalingAdjustmentType": { + "enum": [ + "ChangeInCapacity", + "ExactCapacity", + "PercentChangeInCapacity" + ], + "type": "string" + }, + "Status": { + "enum": [ + "ACTIVE", + "UPDATE_REQUESTED", + "UPDATING", + "DELETE_REQUESTED", + "DELETING", + "DELETED", + "ERROR" + ], + "type": "string" + }, + "TargetConfiguration": { + "$ref": "#/definitions/TargetConfiguration" + }, + "Threshold": { + "type": "number" + }, + "UpdateStatus": { + "enum": [ + "PENDING_UPDATE" + ], + "type": "string" + } + }, + "required": [ + "MetricName", + "Name" + ], + "type": "object" + }, + "ServerProcess": { + "additionalProperties": false, + "properties": { + "ConcurrentExecutions": { + "minimum": 1, + "type": "integer" + }, + "LaunchPath": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^([Cc]:\\\\game\\S+|/local/game/\\S+)", + "type": "string" + }, + "Parameters": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "ConcurrentExecutions", + "LaunchPath" + ], + "type": "object" + }, + "TargetConfiguration": { + "additionalProperties": false, + "properties": { + "TargetValue": { + "type": "number" + } + }, + "required": [ + "TargetValue" + ], + "type": "object" + } + }, + "deprecatedProperties": [ + "/properties/LogPaths", + "/properties/ServerLaunchParameters", + "/properties/ServerLaunchPath" + ], + "handlers": { + "create": { + "permissions": [ + "gamelift:CreateFleet", + "gamelift:DescribeFleetAttributes", + "gamelift:DescribeFleetLocationAttributes", + "gamelift:UpdateFleetCapacity", + "gamelift:DescribeFleetLocationCapacity", + "gamelift:PutScalingPolicy", + "gamelift:DescribeScalingPolicies" + ] + }, + "delete": { + "permissions": [ + "gamelift:DeleteFleet", + "gamelift:DescribeFleetLocationCapacity", + "gamelift:DescribeScalingPolicies", + "gamelift:DeleteScalingPolicy" + ] + }, + "list": { + "permissions": [ + "gamelift:ListFleets" + ] + }, + "read": { + "permissions": [ + "gamelift:DescribeFleetAttributes", + "gamelift:DescribeFleetLocationAttributes", + "gamelift:DescribeFleetCapacity", + "gamelift:DescribeFleetPortSettings", + "gamelift:DescribeFleetUtilization", + "gamelift:DescribeRuntimeConfiguration", + "gamelift:DescribeEC2InstanceLimits", + "gamelift:DescribeFleetEvents", + "gamelift:DescribeScalingPolicies" + ] + }, + "update": { + "permissions": [ + "gamelift:UpdateFleetAttributes", + "gamelift:CreateFleetLocations", + "gamelift:DeleteFleetLocations", + "gamelift:UpdateFleetCapacity", + "gamelift:UpdateFleetPortSettings", + "gamelift:UpdateRuntimeConfiguration", + "gamelift:DescribeFleetLocationCapacity", + "gamelift:DescribeFleetPortSettings", + "gamelift:DescribeFleetLocationAttributes", + "gamelift:PutScalingPolicy", + "gamelift:DescribeScalingPolicies", + "gamelift:DeleteScalingPolicy" + ] + } + }, + "primaryIdentifier": [ + "/properties/FleetId" + ], + "properties": { + "AnywhereConfiguration": { + "$ref": "#/definitions/AnywhereConfiguration" + }, + "ApplyCapacity": { + "enum": [ + "ON_UPDATE", + "ON_CREATE_AND_UPDATE" + ], + "type": "string" + }, + "BuildId": { + "pattern": "^build-\\S+|^arn:.*:build/build-\\S+", + "type": "string" + }, + "CertificateConfiguration": { + "$ref": "#/definitions/CertificateConfiguration" + }, + "ComputeType": { + "enum": [ + "EC2", + "ANYWHERE" + ], + "type": "string" + }, + "Description": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "DesiredEC2Instances": { + "minimum": 0, + "type": "integer" + }, + "EC2InboundPermissions": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/IpPermission" + }, + "maxItems": 50, + "type": "array" + }, + "EC2InstanceType": { + "cfnLint": "AWS::GameLift::Fleet/EC2InstanceType", + "pattern": "^.*..*$", + "type": "string" + }, + "FleetId": { + "pattern": "^fleet-\\S+", + "type": "string" + }, + "FleetType": { + "enum": [ + "ON_DEMAND", + "SPOT" + ], + "type": "string" + }, + "InstanceRoleARN": { + "minLength": 1, + "pattern": "^arn:aws(-.*)?:[a-z-]+:(([a-z]+-)+[0-9])?:([0-9]{12})?:[^.]+$", + "type": "string" + }, + "InstanceRoleCredentialsProvider": { + "enum": [ + "SHARED_CREDENTIAL_FILE" + ], + "type": "string" + }, + "Locations": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LocationConfiguration" + }, + "maxItems": 100, + "minItems": 1, + "type": "array" + }, + "LogPaths": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array" + }, + "MaxSize": { + "minimum": 0, + "type": "integer" + }, + "MetricGroups": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "maxItems": 1, + "type": "array" + }, + "MinSize": { + "minimum": 0, + "type": "integer" + }, + "Name": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "NewGameSessionProtectionPolicy": { + "enum": [ + "FullProtection", + "NoProtection" + ], + "type": "string" + }, + "PeerVpcAwsAccountId": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^[0-9]{12}$", + "type": "string" + }, + "PeerVpcId": { + "maxLength": 1024, + "minLength": 1, + "pattern": "^vpc-\\S+", + "type": "string" + }, + "ResourceCreationLimitPolicy": { + "$ref": "#/definitions/ResourceCreationLimitPolicy" + }, + "RuntimeConfiguration": { + "$ref": "#/definitions/RuntimeConfiguration" + }, + "ScalingPolicies": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/ScalingPolicy" + }, + "maxItems": 50, + "type": "array" + }, + "ScriptId": { + "pattern": "^script-\\S+|^arn:.*:script/script-\\S+", + "type": "string" + }, + "ServerLaunchParameters": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + }, + "ServerLaunchPath": { + "maxLength": 1024, + "minLength": 1, + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/FleetId" + ], + "required": [ + "Name" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-gamelift.git", + "taggable": true, + "typeName": "AWS::GameLift::Fleet", + "writeOnlyProperties": [ + "/properties/ApplyCapacity" + ] +} diff --git a/src/cfnlint/data/schemas/providers/us_west_2/aws-verifiedpermissions-identitysource.json b/src/cfnlint/data/schemas/providers/us_west_2/aws-verifiedpermissions-identitysource.json deleted file mode 100644 index 46a0ad88f1..0000000000 --- a/src/cfnlint/data/schemas/providers/us_west_2/aws-verifiedpermissions-identitysource.json +++ /dev/null @@ -1,221 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/PolicyStoreId" - ], - "definitions": { - "CognitoGroupConfiguration": { - "additionalProperties": false, - "properties": { - "GroupEntityType": { - "maxLength": 200, - "minLength": 1, - "pattern": "^([_a-zA-Z][_a-zA-Z0-9]*::)*[_a-zA-Z][_a-zA-Z0-9]*$", - "type": "string" - } - }, - "required": [ - "GroupEntityType" - ], - "type": "object" - }, - "CognitoUserPoolConfiguration": { - "additionalProperties": false, - "properties": { - "ClientIds": { - "insertionOrder": false, - "items": { - "maxLength": 255, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "maxItems": 1000, - "minItems": 0, - "type": "array" - }, - "GroupConfiguration": { - "$ref": "#/definitions/CognitoGroupConfiguration" - }, - "UserPoolArn": { - "maxLength": 255, - "minLength": 1, - "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", - "type": "string" - } - }, - "required": [ - "UserPoolArn" - ], - "type": "object" - }, - "IdentitySourceConfiguration": { - "additionalProperties": false, - "properties": { - "CognitoUserPoolConfiguration": { - "$ref": "#/definitions/CognitoUserPoolConfiguration" - } - }, - "required": [ - "CognitoUserPoolConfiguration" - ], - "title": "CognitoUserPoolConfiguration", - "type": "object" - }, - "IdentitySourceDetails": { - "additionalProperties": false, - "properties": { - "ClientIds": { - "insertionOrder": false, - "items": { - "maxLength": 255, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - }, - "maxItems": 1000, - "minItems": 0, - "type": "array" - }, - "DiscoveryUrl": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^https://.*$", - "type": "string" - }, - "OpenIdIssuer": { - "$ref": "#/definitions/OpenIdIssuer" - }, - "UserPoolArn": { - "maxLength": 255, - "minLength": 1, - "pattern": "^arn:[a-zA-Z0-9-]+:cognito-idp:(([a-zA-Z0-9-]+:\\d{12}:userpool/[\\w-]+_[0-9a-zA-Z]+))$", - "type": "string" - } - }, - "type": "object" - }, - "OpenIdIssuer": { - "enum": [ - "COGNITO" - ], - "type": "string" - } - }, - "deprecatedProperties": [ - "/properties/Details" - ], - "handlers": { - "create": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "delete": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "list": { - "handlerSchema": { - "properties": { - "PolicyStoreId": { - "$ref": "resource-schema.json#/properties/PolicyStoreId" - } - }, - "required": [ - "PolicyStoreId" - ] - }, - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "read": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - }, - "update": { - "permissions": [ - "verifiedpermissions:CreateIdentitySource", - "verifiedpermissions:GetIdentitySource", - "verifiedpermissions:UpdateIdentitySource", - "verifiedpermissions:DeleteIdentitySource", - "verifiedpermissions:ListIdentitySources", - "cognito-idp:DescribeUserPool", - "cognito-idp:ListUserPoolClients" - ] - } - }, - "primaryIdentifier": [ - "/properties/IdentitySourceId", - "/properties/PolicyStoreId" - ], - "properties": { - "Configuration": { - "$ref": "#/definitions/IdentitySourceConfiguration" - }, - "Details": { - "$ref": "#/definitions/IdentitySourceDetails" - }, - "IdentitySourceId": { - "maxLength": 200, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]*$", - "type": "string" - }, - "PolicyStoreId": { - "maxLength": 200, - "minLength": 1, - "pattern": "^[a-zA-Z0-9-]*$", - "type": "string" - }, - "PrincipalEntityType": { - "maxLength": 200, - "minLength": 1, - "pattern": "^.*$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Details", - "/properties/IdentitySourceId" - ], - "required": [ - "Configuration", - "PolicyStoreId" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-avp", - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": false, - "tagUpdatable": false, - "taggable": false - }, - "typeName": "AWS::VerifiedPermissions::IdentitySource" -} diff --git a/src/cfnlint/jsonschema/_keywords.py b/src/cfnlint/jsonschema/_keywords.py index ed4f426aa1..1e6cada050 100644 --- a/src/cfnlint/jsonschema/_keywords.py +++ b/src/cfnlint/jsonschema/_keywords.py @@ -512,16 +512,6 @@ def requiredXor( ) -def requiredOr( - validator: Validator, required: Any, instance: Any, schema: Dict[str, Any] -) -> ValidationResult: - if not validator.is_type(instance, "object"): - return - matches = set(required).intersection(instance.keys()) - if not matches: - yield ValidationError(f"At least one of {required!r} is a required property") - - def uniqueItems( validator: Validator, uI: Any, instance: Any, schema: Dict[str, Any] ) -> ValidationResult: diff --git a/src/cfnlint/jsonschema/validators.py b/src/cfnlint/jsonschema/validators.py index 782c7a8448..b2397ce95e 100644 --- a/src/cfnlint/jsonschema/validators.py +++ b/src/cfnlint/jsonschema/validators.py @@ -339,7 +339,6 @@ def extend( "propertyNames": _keywords.propertyNames, "required": _keywords.required, "requiredXor": _keywords.requiredXor, - "requiredOr": _keywords.requiredOr, "type": _keywords.type, "uniqueItems": _keywords.uniqueItems, "uniqueKeys": _keywords.uniqueKeys, diff --git a/src/cfnlint/rules/resources/properties/Properties.py b/src/cfnlint/rules/resources/properties/Properties.py index f0276df6da..be3bb1e1d5 100644 --- a/src/cfnlint/rules/resources/properties/Properties.py +++ b/src/cfnlint/rules/resources/properties/Properties.py @@ -34,7 +34,6 @@ def __init__(self): "dependentRequired": "E3021", "required": "E3003", "requiredXor": "E3014", - "requiredOr": "E3015", "enum": "E3030", "type": "E3012", "minLength": "E3033", diff --git a/src/cfnlint/rules/resources/properties/RequiredOr.py b/src/cfnlint/rules/resources/properties/RequiredOr.py deleted file mode 100644 index 37cedba539..0000000000 --- a/src/cfnlint/rules/resources/properties/RequiredOr.py +++ /dev/null @@ -1,16 +0,0 @@ -""" -Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. -SPDX-License-Identifier: MIT-0 -""" - -from cfnlint.rules import CloudFormationLintRule - - -class RequiredOr(CloudFormationLintRule): - """Check Required Resource Configuration""" - - id = "E3015" - shortdesc = "Validate at least one of a set of required properties are specified" - description = "Making sure that required resource properties have just one" - source_url = "https://github.com/aws-cloudformation/cfn-python-lint/blob/main/docs/cfn-resource-specification.md#required" - tags = ["resources"] diff --git a/test/unit/module/jsonschema/test_validator.py b/test/unit/module/jsonschema/test_validator.py index 963f757e30..f981aadd58 100644 --- a/test/unit/module/jsonschema/test_validator.py +++ b/test/unit/module/jsonschema/test_validator.py @@ -947,34 +947,6 @@ def test_validator(name, schema, instance, expected, validator): ) ], ), - ( - "valid requiredOr", - {"requiredOr": ["foo", "bar"]}, - {"foo": {}}, - [], - ), - ( - "valid requiredOr with wrong type", - {"requiredOr": ["foo", "bar"]}, - [], - [], - ), - ( - "valid requiredOr with both items", - {"requiredOr": ["foo", "bar"]}, - {"foo": {}, "bar": {}}, - [], - ), - ( - "requiredOr", - {"requiredOr": ["bar"]}, - {}, - [ - ValidationError( - "At least one of ['bar'] is a required property", - ) - ], - ), ( "valid requiredXor", {"requiredXor": ["foo", "bar"]},