From 720435fa9d89bd2b5236221513e47a796f45b6bb Mon Sep 17 00:00:00 2001 From: Kevin DeJong Date: Mon, 6 May 2024 11:51:00 -0700 Subject: [PATCH] Update rule to E3013 to v1 logic --- ...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 +- ...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 +- ...6bb7f975b606f8db57532faddfcdd8c8.meta.json | 2 +- ...73ff097c685cda0a63c08a6416dc58ed.meta.json | 2 +- ...25c8d66a1f84939600616bab42579541.meta.json | 2 +- ...972142778e1ff452383ede2ad4bac3d7.meta.json | 2 +- ...cf908a34e6b4c3fb3e97e2b584f651ca.meta.json | 2 +- ...318c41c71c21b0a17d4f68d82c5aee21.meta.json | 2 +- ...6cd7e4ced378cacdb93f76ed227b5c5d.meta.json | 2 +- ...41c64a9c91b2fa5b4928c0d9b2f780b0.meta.json | 2 +- ...b2d398fe33547eed780b9b70f10eb4a2.meta.json | 2 +- .../cfn_lint.json | 7 - .../aws_cloudfront_distribution/cfn_lint.json | 9 + .../all/aws_ec2_spotfleet/cfn_lint.json | 2 +- .../all/aws_opsworks_instance/cfn_lint.json | 2 +- .../af_south_1/aws-opsworks-instance.json | 3 + .../providers/ap_northeast_2/__init__.py | 2 + .../schemas/providers/ap_south_1/__init__.py | 1 + .../ap_south_1/aws-location-apikey.json | 226 ------ .../ap_south_2/aws-ec2-spotfleet.json | 3 + .../ap_south_2/aws-opsworks-instance.json | 3 + .../ap_southeast_3/aws-opsworks-instance.json | 3 + .../ap_southeast_4/aws-ec2-spotfleet.json | 3 + .../ap_southeast_4/aws-opsworks-instance.json | 3 + .../schemas/providers/ca_west_1/__init__.py | 6 + .../ca_west_1/aws-opsworks-instance.json | 3 + .../schemas/providers/cn_north_1/__init__.py | 2 + .../providers/cn_northwest_1/__init__.py | 2 + .../eu_central_2/aws-opsworks-instance.json | 3 + .../eu_south_1/aws-opsworks-instance.json | 3 + .../schemas/providers/eu_south_2/__init__.py | 2 + .../eu_south_2/aws-dynamodb-globaltable.json | 697 ------------------ .../eu_south_2/aws-dynamodb-table.json | 653 ---------------- .../eu_south_2/aws-opsworks-instance.json | 3 + .../schemas/providers/eu_west_3/__init__.py | 2 + .../eu_west_3/aws-dynamodb-globaltable.json | 697 ------------------ .../eu_west_3/aws-dynamodb-table.json | 653 ---------------- .../il_central_1/aws-ec2-spotfleet.json | 3 + .../il_central_1/aws-opsworks-instance.json | 3 + .../providers/me_central_1/__init__.py | 2 + .../me_central_1/aws-opsworks-instance.json | 3 + .../aws-cloudfront-distribution.json | 3 + .../us_east_1/aws-ec2-spotfleet.json | 3 + .../us_east_1/aws-opsworks-instance.json | 3 + .../providers/us_gov_west_1/__init__.py | 6 + .../us_gov_west_1/aws-rds-dbcluster.json | 457 ------------ .../us_gov_west_1/aws-rds-dbinstance.json | 619 ---------------- .../schemas/providers/us_west_1/__init__.py | 9 + .../us_west_1/aws-dynamodb-globaltable.json | 697 ------------------ .../us_west_1/aws-dynamodb-table.json | 653 ---------------- ...aws-route53resolver-firewallrulegroup.json | 236 ------ .../rules/resources/cloudfront/Aliases.py | 69 +- src/cfnlint/rules/resources/ectwo/Ebs.py | 1 - .../resources/cloudfront/test_aliases.py | 205 +++++- 70 files changed, 339 insertions(+), 5680 deletions(-) create mode 100644 src/cfnlint/data/schemas/patches/extensions/all/aws_cloudfront_distribution/cfn_lint.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_south_1/aws-location-apikey.json delete mode 100644 src/cfnlint/data/schemas/providers/eu_south_2/aws-dynamodb-globaltable.json delete mode 100644 src/cfnlint/data/schemas/providers/eu_south_2/aws-dynamodb-table.json delete mode 100644 src/cfnlint/data/schemas/providers/eu_west_3/aws-dynamodb-globaltable.json delete mode 100644 src/cfnlint/data/schemas/providers/eu_west_3/aws-dynamodb-table.json delete mode 100644 src/cfnlint/data/schemas/providers/us_gov_west_1/aws-rds-dbcluster.json delete mode 100644 src/cfnlint/data/schemas/providers/us_gov_west_1/aws-rds-dbinstance.json delete mode 100644 src/cfnlint/data/schemas/providers/us_west_1/aws-dynamodb-globaltable.json delete mode 100644 src/cfnlint/data/schemas/providers/us_west_1/aws-dynamodb-table.json delete mode 100644 src/cfnlint/data/schemas/providers/us_west_1/aws-route53resolver-firewallrulegroup.json diff --git a/src/cfnlint/data/DownloadsMetadata/123ba181485ae293d5bd09722af0c19d5a0d14c62111ff864923fc7b7960dda6.meta.json b/src/cfnlint/data/DownloadsMetadata/123ba181485ae293d5bd09722af0c19d5a0d14c62111ff864923fc7b7960dda6.meta.json index ba72cb0aad..3bd89cd37a 100644 --- a/src/cfnlint/data/DownloadsMetadata/123ba181485ae293d5bd09722af0c19d5a0d14c62111ff864923fc7b7960dda6.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/123ba181485ae293d5bd09722af0c19d5a0d14c62111ff864923fc7b7960dda6.meta.json @@ -1 +1 @@ -{"etag": "\"87ecb09c34977f97745e9b9d1df416f2\"", "url": "https://schema.cloudformation.eu-south-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"3dd742de2ec80b745805f5f705447eef\"", "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 746e10a28e..b0519b2e68 100644 --- a/src/cfnlint/data/DownloadsMetadata/164e1bfc2823fbd49d8d0e7163ebf32b2b6653d7edfe98a64577daae0b481c38.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/164e1bfc2823fbd49d8d0e7163ebf32b2b6653d7edfe98a64577daae0b481c38.meta.json @@ -1 +1 @@ -{"etag": "\"3a5edd35329f6d2b995d02544e9dd2c7\"", "url": "https://schema.cloudformation.cn-north-1.amazonaws.com.cn/CloudformationSchema.zip"} +{"etag": "\"e07809d97ffae1441a2a5b2b1e5e866c\"", "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 de54980604..53b248882f 100644 --- a/src/cfnlint/data/DownloadsMetadata/18624fcc4a1c571691d10b2508e6be565e4752bbc10d9552de8df8f81348c42b.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/18624fcc4a1c571691d10b2508e6be565e4752bbc10d9552de8df8f81348c42b.meta.json @@ -1 +1 @@ -{"etag": "\"491a34104cb1bcaea7122eccef436ce2\"", "url": "https://schema.cloudformation.us-gov-east-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"1a3e345c600d71b579d0d82acffd77ca\"", "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 92ceff9fca..d9a08bb7bd 100644 --- a/src/cfnlint/data/DownloadsMetadata/227d6e59c86482f7153466759080e65963a1bf4413531ad420ff60a5a0d7965d.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/227d6e59c86482f7153466759080e65963a1bf4413531ad420ff60a5a0d7965d.meta.json @@ -1 +1 @@ -{"etag": "\"e32684919a480c783c824ff2f4b3b12b\"", "url": "https://schema.cloudformation.me-south-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"a839d54983fe419c855f2caf50942ec2\"", "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 28c58b89f2..401e13a458 100644 --- a/src/cfnlint/data/DownloadsMetadata/23be708e675cb6098b08969e4dbbc3f54cfc32461d10e077e7e5de1fc25d8b8f.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/23be708e675cb6098b08969e4dbbc3f54cfc32461d10e077e7e5de1fc25d8b8f.meta.json @@ -1 +1 @@ -{"etag": "\"90f3a468b4e4d0300ec14e6f990dbace\"", "url": "https://schema.cloudformation.us-gov-west-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"ea42b4f82a56b2e26ac70730d19c2c4e\"", "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 8080a5365b..24d068b0b6 100644 --- a/src/cfnlint/data/DownloadsMetadata/26cf4521b683d3267844178a6bcd1d0ad3fe2e7838c23f6acd054944cb2b1618.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/26cf4521b683d3267844178a6bcd1d0ad3fe2e7838c23f6acd054944cb2b1618.meta.json @@ -1 +1 @@ -{"etag": "\"3d643298527e6ccefd6efcbacc3e9847\"", "url": "https://schema.cloudformation.me-central-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"962be477eb92934af7da12e651d99acb\"", "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 45e159d785..1ecd7dc9e9 100644 --- a/src/cfnlint/data/DownloadsMetadata/276cecfeb1ec5e608e2aaa06925a2da57e9907e4a512c10ddae70b98b4dada43.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/276cecfeb1ec5e608e2aaa06925a2da57e9907e4a512c10ddae70b98b4dada43.meta.json @@ -1 +1 @@ -{"etag": "\"6ad1c53079b7bb6a2b759e112bf02d09\"", "url": "https://schema.cloudformation.eu-west-2.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"d136292da86d1107fb38944da119a85f\"", "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 7703e93894..cc4b1234b3 100644 --- a/src/cfnlint/data/DownloadsMetadata/371e40c90b2e47c99f6e275e060ee83a3fbf0a0fb76625ba46dbe42abd34333c.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/371e40c90b2e47c99f6e275e060ee83a3fbf0a0fb76625ba46dbe42abd34333c.meta.json @@ -1 +1 @@ -{"etag": "\"c3fd373604988124970568e162412033\"", "url": "https://schema.cloudformation.cn-northwest-1.amazonaws.com.cn/CloudformationSchema.zip"} +{"etag": "\"267889b2ace92a6fbaf41e3133707465\"", "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 7c51fee602..589ae78f8c 100644 --- a/src/cfnlint/data/DownloadsMetadata/42155835f382d82337be3d2bf832bada376aa3fe15197e3bb0e9290ff8719b4e.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/42155835f382d82337be3d2bf832bada376aa3fe15197e3bb0e9290ff8719b4e.meta.json @@ -1 +1 @@ -{"etag": "\"e5a3307edb2c1adadfe89a89283041e2\"", "url": "https://schema.cloudformation.af-south-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"71176a64c8e68ea6236d454556d1b6f9\"", "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 f59ba027a5..6dedfdefc2 100644 --- a/src/cfnlint/data/DownloadsMetadata/42e9df95722b6524cd001503b6750b86f60a7b5acfc406ebb10d5748cbb8ed41.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/42e9df95722b6524cd001503b6750b86f60a7b5acfc406ebb10d5748cbb8ed41.meta.json @@ -1 +1 @@ -{"etag": "\"bd76da37f4815a6ef15e2435d388e28f\"", "url": "https://schema.cloudformation.us-west-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"a3e08ddeb101a55d76c60ff89ba8711d\"", "url": "https://schema.cloudformation.us-west-1.amazonaws.com/CloudformationSchema.zip"} diff --git a/src/cfnlint/data/DownloadsMetadata/56584c7d00e444de640bef01fc2c630804470222e5e4c690bacef5312891581d.meta.json b/src/cfnlint/data/DownloadsMetadata/56584c7d00e444de640bef01fc2c630804470222e5e4c690bacef5312891581d.meta.json index f05026d861..dbfe4df5a6 100644 --- a/src/cfnlint/data/DownloadsMetadata/56584c7d00e444de640bef01fc2c630804470222e5e4c690bacef5312891581d.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/56584c7d00e444de640bef01fc2c630804470222e5e4c690bacef5312891581d.meta.json @@ -1 +1 @@ -{"etag": "\"5de1938c6a1a315637d0433528217171\"", "url": "https://schema.cloudformation.ap-south-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"6489176dd4bba1d1979c97e698bf6a69\"", "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 79000d8547..949980ce33 100644 --- a/src/cfnlint/data/DownloadsMetadata/583721567eccd1d5855daa623819df1a646b563d773e34b020d0ddeab2fe195b.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/583721567eccd1d5855daa623819df1a646b563d773e34b020d0ddeab2fe195b.meta.json @@ -1 +1 @@ -{"etag": "\"4466d5555dd06ff0733c1367914e77a2\"", "url": "https://schema.cloudformation.ap-southeast-4.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"1b05d262da282d4757cbd937874848a3\"", "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 d14ab2f3bd..6a42d90dcb 100644 --- a/src/cfnlint/data/DownloadsMetadata/6316ae24f21cb620947aa250bebbee69548d44cc32e246ec9d7742088a2c17f8.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/6316ae24f21cb620947aa250bebbee69548d44cc32e246ec9d7742088a2c17f8.meta.json @@ -1 +1 @@ -{"etag": "\"a75c8a73ee9a3d1f037480ba76a0a942\"", "url": "https://schema.cloudformation.us-east-2.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"faf4cd61db62f89e5e1058a2f7783da6\"", "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 08581dd3b8..310f24aa81 100644 --- a/src/cfnlint/data/DownloadsMetadata/81e1cc73ff2daf7d1e1eca393c2d1fdd98ac34d4109512e0e0947ef752dcb9c9.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/81e1cc73ff2daf7d1e1eca393c2d1fdd98ac34d4109512e0e0947ef752dcb9c9.meta.json @@ -1 +1 @@ -{"etag": "\"37d65c736f9bb13eb531ad408e7d3765\"", "url": "https://schema.cloudformation.ap-southeast-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"754e501de3902e1de87f2f57e61c4238\"", "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 0b2ba9c9bc..e1b687f173 100644 --- a/src/cfnlint/data/DownloadsMetadata/8adeabf0a09b37a8ed924aea799005947e4a4542365d35fd75466abcf306eeca.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/8adeabf0a09b37a8ed924aea799005947e4a4542365d35fd75466abcf306eeca.meta.json @@ -1 +1 @@ -{"etag": "\"35dbaed47f164a78f9bafaa4010696ae\"", "url": "https://schema.cloudformation.ap-northeast-2.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"a743a3ee9b3692c1bee0317b3f0b740f\"", "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 2fb0d2cb27..e5b603c6ac 100644 --- a/src/cfnlint/data/DownloadsMetadata/8b8b0cee4df1ef0947a8289e8ec0c67869b7533eabab32ecfc0a00cb19e55a5f.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/8b8b0cee4df1ef0947a8289e8ec0c67869b7533eabab32ecfc0a00cb19e55a5f.meta.json @@ -1 +1 @@ -{"etag": "\"0a5807abc14e8a376907922a4337fd17\"", "url": "https://schema.cloudformation.ap-southeast-3.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"f1517b109b7dad36b7b0feb350bedf49\"", "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 eb9d84dff4..12285e13bc 100644 --- a/src/cfnlint/data/DownloadsMetadata/b1f069477cd577cde04dfe1b323c0bb0e783fe32b6bb6b13774c32fcca1d303a.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/b1f069477cd577cde04dfe1b323c0bb0e783fe32b6bb6b13774c32fcca1d303a.meta.json @@ -1 +1 @@ -{"etag": "\"8a07305b334d31a40ec7b60d1ce389e2\"", "url": "https://schema.cloudformation.ap-east-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"d8c3a5c11e710f4ebb5fe1eee3b3f910\"", "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 03638e54a1..7f2eb19433 100644 --- a/src/cfnlint/data/DownloadsMetadata/c7ada205073390b33b7593ef8f304b9705f2567698dfdfa979bf0ccdb68cb856.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/c7ada205073390b33b7593ef8f304b9705f2567698dfdfa979bf0ccdb68cb856.meta.json @@ -1 +1 @@ -{"etag": "\"332c6c18239926763a973c511e2da921\"", "url": "https://schema.cloudformation.sa-east-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"a3222442280299facfd86f35ef14b6eb\"", "url": "https://schema.cloudformation.sa-east-1.amazonaws.com/CloudformationSchema.zip"} diff --git a/src/cfnlint/data/DownloadsMetadata/d85e2e061cacfcffe4902adb1074a04e6bb7f975b606f8db57532faddfcdd8c8.meta.json b/src/cfnlint/data/DownloadsMetadata/d85e2e061cacfcffe4902adb1074a04e6bb7f975b606f8db57532faddfcdd8c8.meta.json index 58aa240e66..a24748d63f 100644 --- a/src/cfnlint/data/DownloadsMetadata/d85e2e061cacfcffe4902adb1074a04e6bb7f975b606f8db57532faddfcdd8c8.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/d85e2e061cacfcffe4902adb1074a04e6bb7f975b606f8db57532faddfcdd8c8.meta.json @@ -1 +1 @@ -{"etag": "\"0425ebf6b36faf82701e6a67d09f93c0\"", "url": "https://schema.cloudformation.ca-west-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"d4e4dcbc4dadd679556c86241c1f18e7\"", "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 32dcc36845..c5ade3accf 100644 --- a/src/cfnlint/data/DownloadsMetadata/d8e41d35f4f8922b66525dea2c66d72a73ff097c685cda0a63c08a6416dc58ed.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/d8e41d35f4f8922b66525dea2c66d72a73ff097c685cda0a63c08a6416dc58ed.meta.json @@ -1 +1 @@ -{"etag": "\"11bab7cc0eaa878fb0929059a91a4f47\"", "url": "https://schema.cloudformation.eu-central-2.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"73ebb28713014e7e4b35f52aa06aa1cf\"", "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 db7809b874..53fae12b5e 100644 --- a/src/cfnlint/data/DownloadsMetadata/dd98171253ebc36f5b78e247f3132b5f25c8d66a1f84939600616bab42579541.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/dd98171253ebc36f5b78e247f3132b5f25c8d66a1f84939600616bab42579541.meta.json @@ -1 +1 @@ -{"etag": "\"156cd9a4c62af3e663c11d822f84c831\"", "url": "https://schema.cloudformation.eu-north-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"5829d5c557f814a26d5abacb675469b1\"", "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 51c5744db9..7029062085 100644 --- a/src/cfnlint/data/DownloadsMetadata/df4945435575c690a2651bb31e7a9b48972142778e1ff452383ede2ad4bac3d7.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/df4945435575c690a2651bb31e7a9b48972142778e1ff452383ede2ad4bac3d7.meta.json @@ -1 +1 @@ -{"etag": "\"462d41cac4c1019febcf5e416a092d37\"", "url": "https://schema.cloudformation.eu-south-2.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"e922e755a7c374ef57e65ea76aa9697d\"", "url": "https://schema.cloudformation.eu-south-2.amazonaws.com/CloudformationSchema.zip"} diff --git a/src/cfnlint/data/DownloadsMetadata/e8b3dacc1675b478e8c7392b51f41467cf908a34e6b4c3fb3e97e2b584f651ca.meta.json b/src/cfnlint/data/DownloadsMetadata/e8b3dacc1675b478e8c7392b51f41467cf908a34e6b4c3fb3e97e2b584f651ca.meta.json index a5172e8fd4..1eca840568 100644 --- a/src/cfnlint/data/DownloadsMetadata/e8b3dacc1675b478e8c7392b51f41467cf908a34e6b4c3fb3e97e2b584f651ca.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/e8b3dacc1675b478e8c7392b51f41467cf908a34e6b4c3fb3e97e2b584f651ca.meta.json @@ -1 +1 @@ -{"etag": "\"eec31ce6a6e65ce687c80f43463871c2\"", "url": "https://schema.cloudformation.eu-west-3.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"5e70338b6fb4db7882d6733dbc0b4299\"", "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 6193c14109..cea4c391d8 100644 --- a/src/cfnlint/data/DownloadsMetadata/ea0f7b8f144feb225afe73a24dfdf993318c41c71c21b0a17d4f68d82c5aee21.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/ea0f7b8f144feb225afe73a24dfdf993318c41c71c21b0a17d4f68d82c5aee21.meta.json @@ -1 +1 @@ -{"etag": "\"41f7e03d800683886b8a15617401cf65\"", "url": "https://schema.cloudformation.ap-northeast-3.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"7b65805e8574450beebe592e34b1bdb5\"", "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 c922667b4c..0c26b64252 100644 --- a/src/cfnlint/data/DownloadsMetadata/f1896c9151984eec294af1eddf64260f6cd7e4ced378cacdb93f76ed227b5c5d.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/f1896c9151984eec294af1eddf64260f6cd7e4ced378cacdb93f76ed227b5c5d.meta.json @@ -1 +1 @@ -{"etag": "\"7ecd1fb119c7096a0aa1ed2b347cc914\"", "url": "https://schema.cloudformation.us-west-2.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"6346217dd69678b380d76a34c8dcd55c\"", "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 a14f0bf001..318ec5312b 100644 --- a/src/cfnlint/data/DownloadsMetadata/f54eee6f8ad9619f41835b700369cdbb41c64a9c91b2fa5b4928c0d9b2f780b0.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/f54eee6f8ad9619f41835b700369cdbb41c64a9c91b2fa5b4928c0d9b2f780b0.meta.json @@ -1 +1 @@ -{"etag": "\"9992aea980ae84f265020ee2b43b8d64\"", "url": "https://schema.cloudformation.us-east-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"71a2b1013f69978557919514942992d4\"", "url": "https://schema.cloudformation.us-east-1.amazonaws.com/CloudformationSchema.zip"} diff --git a/src/cfnlint/data/DownloadsMetadata/f6f35a459759d6c132fa2fe798cefbd5b2d398fe33547eed780b9b70f10eb4a2.meta.json b/src/cfnlint/data/DownloadsMetadata/f6f35a459759d6c132fa2fe798cefbd5b2d398fe33547eed780b9b70f10eb4a2.meta.json index b237d79e36..66fc6fe2db 100644 --- a/src/cfnlint/data/DownloadsMetadata/f6f35a459759d6c132fa2fe798cefbd5b2d398fe33547eed780b9b70f10eb4a2.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/f6f35a459759d6c132fa2fe798cefbd5b2d398fe33547eed780b9b70f10eb4a2.meta.json @@ -1 +1 @@ -{"etag": "\"c0397c91d44030174da58236513b9ebc\"", "url": "https://schema.cloudformation.il-central-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"f37045c31ae98236e5d944dd8cec4778\"", "url": "https://schema.cloudformation.il-central-1.amazonaws.com/CloudformationSchema.zip"} diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_autoscaling_autoscalinggroup/cfn_lint.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_autoscaling_autoscalinggroup/cfn_lint.json index c58ffb78f2..210bc7d159 100644 --- a/src/cfnlint/data/schemas/patches/extensions/all/aws_autoscaling_autoscalinggroup/cfn_lint.json +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_autoscaling_autoscalinggroup/cfn_lint.json @@ -5,12 +5,5 @@ "value": [ "AWS::AutoScaling::AutoScalingGroup/Properties/AvailabilityZones" ] - }, - { - "op": "add", - "path": "/definitions/Ebs/cfnLint", - "value": [ - "AWS::AutoScaling::AutoScalingGroup/Properties/BlockDeviceMappings/Ebs" - ] } ] diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_cloudfront_distribution/cfn_lint.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_cloudfront_distribution/cfn_lint.json new file mode 100644 index 0000000000..4bf2b891e7 --- /dev/null +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_cloudfront_distribution/cfn_lint.json @@ -0,0 +1,9 @@ +[ + { + "op": "add", + "path": "/definitions/DistributionConfig/properties/Aliases/items/cfnLint", + "value": [ + "AWS::CloudFront::Distribution/Properties/DistributionConfig/Aliases/Alias" + ] + } +] diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_spotfleet/cfn_lint.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_spotfleet/cfn_lint.json index 489552b27f..ef09196588 100644 --- a/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_spotfleet/cfn_lint.json +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_spotfleet/cfn_lint.json @@ -22,7 +22,7 @@ }, { "op": "add", - "path": "/definitions/Ebs/cfnLint", + "path": "/definitions/EbsBlockDevice/cfnLint", "value": [ "AWS::EC2::SpotFleet/Properties/BlockDeviceMappings/Ebs" ] diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_opsworks_instance/cfn_lint.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_opsworks_instance/cfn_lint.json index 0a1bc04d0c..960389dc27 100644 --- a/src/cfnlint/data/schemas/patches/extensions/all/aws_opsworks_instance/cfn_lint.json +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_opsworks_instance/cfn_lint.json @@ -8,7 +8,7 @@ }, { "op": "add", - "path": "/definitions/Ebs/cfnLint", + "path": "/definitions/EbsBlockDevice/cfnLint", "value": [ "AWS::OpsWorks::Instance/Properties/BlockDeviceMappings/Ebs" ] diff --git a/src/cfnlint/data/schemas/providers/af_south_1/aws-opsworks-instance.json b/src/cfnlint/data/schemas/providers/af_south_1/aws-opsworks-instance.json index 5e3f6fb655..2df911f56c 100644 --- a/src/cfnlint/data/schemas/providers/af_south_1/aws-opsworks-instance.json +++ b/src/cfnlint/data/schemas/providers/af_south_1/aws-opsworks-instance.json @@ -39,6 +39,9 @@ }, "EbsBlockDevice": { "additionalProperties": false, + "cfnLint": [ + "AWS::OpsWorks::Instance/Properties/BlockDeviceMappings/Ebs" + ], "properties": { "DeleteOnTermination": { "type": "boolean" 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 d855c61d37..22ebe61e6b 100644 --- a/src/cfnlint/data/schemas/providers/ap_northeast_2/__init__.py +++ b/src/cfnlint/data/schemas/providers/ap_northeast_2/__init__.py @@ -148,6 +148,7 @@ "AWS::Lex::Bot", "AWS::Transfer::Profile", "AWS::DataBrew::Recipe", + "AWS::SSO::Instance", "AWS::GameLift::Alias", "AWS::AppSync::DomainName", "AWS::Pinpoint::PushTemplate", @@ -1218,6 +1219,7 @@ "aws-lex-bot.json", "aws-transfer-profile.json", "aws-databrew-recipe.json", + "aws-sso-instance.json", "aws-gamelift-alias.json", "aws-appsync-domainname.json", "aws-pinpoint-pushtemplate.json", 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 3efc72dcf6..b3b9b58a07 100644 --- a/src/cfnlint/data/schemas/providers/ap_south_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/ap_south_1/__init__.py @@ -2030,6 +2030,7 @@ "aws-ce-anomalymonitor.json", "aws-servicecatalogappregistry-resourceassociation.json", "aws-ec2-vpngateway.json", + "aws-location-apikey.json", "aws-cloudformation-stack.json", "aws-resourcegroups-group.json", "aws-cloudformation-resourcedefaultversion.json", diff --git a/src/cfnlint/data/schemas/providers/ap_south_1/aws-location-apikey.json b/src/cfnlint/data/schemas/providers/ap_south_1/aws-location-apikey.json deleted file mode 100644 index 3cfbf7cd5b..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_south_1/aws-location-apikey.json +++ /dev/null @@ -1,226 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/KeyName" - ], - "definitions": { - "ApiKeyRestrictions": { - "additionalProperties": false, - "properties": { - "AllowActions": { - "insertionOrder": false, - "items": { - "maxLength": 200, - "minLength": 5, - "pattern": "^geo:\\w*\\*?$", - "type": "string" - }, - "maxItems": 7, - "minItems": 1, - "type": "array" - }, - "AllowReferers": { - "insertionOrder": false, - "items": { - "maxLength": 253, - "pattern": "^([$\\-._+!*`(),;/?:@=&\\w]|%([0-9a-fA-F?]{2}|[0-9a-fA-F?]?[*]))+$", - "type": "string" - }, - "maxItems": 5, - "minItems": 1, - "type": "array" - }, - "AllowResources": { - "insertionOrder": false, - "items": { - "maxLength": 1600, - "pattern": "^arn(:[a-z0-9]+([.-][a-z0-9]+)*):geo(:([a-z0-9]+([.-][a-z0-9]+)*))(:[0-9]+):((\\*)|([-a-z]+[/][*-._\\w]+))$", - "type": "string" - }, - "maxItems": 5, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "AllowActions", - "AllowResources" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z+-=._:/]+$", - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "pattern": "^[A-Za-z0-9 _=@:.+-/]*$", - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "TagMap": { - "additionalProperties": false, - "maxProperties": 50, - "patternProperties": { - "^[a-zA-Z+-=._:/]+$": { - "maxLength": 256, - "minLength": 0, - "pattern": "^[A-Za-z0-9 _=@:.+-/]*$", - "type": "string" - } - }, - "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": [ - "geo:CreateKey", - "geo:DescribeKey", - "geo:TagResource", - "geo:UntagResource", - "geo:GetMapTile", - "geo:GetMapStyleDescriptor", - "geo:GetMapSprites", - "geo:GetMapGlyphs", - "geo:SearchPlaceIndexForText", - "geo:SearchPlaceIndexForPosition", - "geo:SearchPlaceIndexForSuggestions", - "geo:GetPlace", - "geo:CalculateRoute", - "geo:CalculateRouteMatrix" - ] - }, - "delete": { - "permissions": [ - "geo:DeleteKey", - "geo:DescribeKey" - ] - }, - "list": { - "permissions": [ - "geo:ListKeys" - ] - }, - "read": { - "permissions": [ - "geo:DescribeKey" - ] - }, - "update": { - "permissions": [ - "geo:CreateKey", - "geo:DescribeKey", - "geo:TagResource", - "geo:UntagResource", - "geo:GetMapTile", - "geo:GetMapStyleDescriptor", - "geo:GetMapSprites", - "geo:GetMapGlyphs", - "geo:SearchPlaceIndexForText", - "geo:SearchPlaceIndexForPosition", - "geo:SearchPlaceIndexForSuggestions", - "geo:GetPlace", - "geo:CalculateRoute", - "geo:CalculateRouteMatrix", - "geo:UpdateKey" - ] - } - }, - "primaryIdentifier": [ - "/properties/KeyName" - ], - "properties": { - "Arn": { - "maxLength": 1600, - "pattern": "^arn(:[a-z0-9]+([.-][a-z0-9]+)*){2}(:([a-z0-9]+([.-][a-z0-9]+)*)?){2}:([^/].*)?$", - "type": "string" - }, - "CreateTime": { - "$ref": "#/definitions/iso8601UTC" - }, - "Description": { - "maxLength": 1000, - "minLength": 0, - "type": "string" - }, - "ExpireTime": { - "$ref": "#/definitions/iso8601UTC" - }, - "ForceDelete": { - "type": "boolean" - }, - "ForceUpdate": { - "type": "boolean" - }, - "KeyArn": { - "maxLength": 1600, - "pattern": "^arn(:[a-z0-9]+([.-][a-z0-9]+)*){2}(:([a-z0-9]+([.-][a-z0-9]+)*)?){2}:([^/].*)?$", - "type": "string" - }, - "KeyName": { - "maxLength": 100, - "minLength": 1, - "pattern": "^[-._\\w]+$", - "type": "string" - }, - "NoExpiry": { - "type": "boolean" - }, - "Restrictions": { - "$ref": "#/definitions/ApiKeyRestrictions" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 200, - "minItems": 0, - "type": "array", - "uniqueItems": true - }, - "UpdateTime": { - "$ref": "#/definitions/iso8601UTC" - } - }, - "readOnlyProperties": [ - "/properties/CreateTime", - "/properties/Arn", - "/properties/KeyArn", - "/properties/UpdateTime" - ], - "required": [ - "KeyName", - "Restrictions" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Location::APIKey", - "writeOnlyProperties": [ - "/properties/ForceUpdate", - "/properties/ForceDelete", - "/properties/NoExpiry" - ] -} diff --git a/src/cfnlint/data/schemas/providers/ap_south_2/aws-ec2-spotfleet.json b/src/cfnlint/data/schemas/providers/ap_south_2/aws-ec2-spotfleet.json index 1da0c7f935..75b415f67f 100644 --- a/src/cfnlint/data/schemas/providers/ap_south_2/aws-ec2-spotfleet.json +++ b/src/cfnlint/data/schemas/providers/ap_south_2/aws-ec2-spotfleet.json @@ -58,6 +58,9 @@ }, "EbsBlockDevice": { "additionalProperties": false, + "cfnLint": [ + "AWS::EC2::SpotFleet/Properties/BlockDeviceMappings/Ebs" + ], "properties": { "DeleteOnTermination": { "type": "boolean" diff --git a/src/cfnlint/data/schemas/providers/ap_south_2/aws-opsworks-instance.json b/src/cfnlint/data/schemas/providers/ap_south_2/aws-opsworks-instance.json index 5e3f6fb655..2df911f56c 100644 --- a/src/cfnlint/data/schemas/providers/ap_south_2/aws-opsworks-instance.json +++ b/src/cfnlint/data/schemas/providers/ap_south_2/aws-opsworks-instance.json @@ -39,6 +39,9 @@ }, "EbsBlockDevice": { "additionalProperties": false, + "cfnLint": [ + "AWS::OpsWorks::Instance/Properties/BlockDeviceMappings/Ebs" + ], "properties": { "DeleteOnTermination": { "type": "boolean" diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-opsworks-instance.json b/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-opsworks-instance.json index 5e3f6fb655..2df911f56c 100644 --- a/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-opsworks-instance.json +++ b/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-opsworks-instance.json @@ -39,6 +39,9 @@ }, "EbsBlockDevice": { "additionalProperties": false, + "cfnLint": [ + "AWS::OpsWorks::Instance/Properties/BlockDeviceMappings/Ebs" + ], "properties": { "DeleteOnTermination": { "type": "boolean" diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-ec2-spotfleet.json b/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-ec2-spotfleet.json index 1da0c7f935..75b415f67f 100644 --- a/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-ec2-spotfleet.json +++ b/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-ec2-spotfleet.json @@ -58,6 +58,9 @@ }, "EbsBlockDevice": { "additionalProperties": false, + "cfnLint": [ + "AWS::EC2::SpotFleet/Properties/BlockDeviceMappings/Ebs" + ], "properties": { "DeleteOnTermination": { "type": "boolean" diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-opsworks-instance.json b/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-opsworks-instance.json index 5e3f6fb655..2df911f56c 100644 --- a/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-opsworks-instance.json +++ b/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-opsworks-instance.json @@ -39,6 +39,9 @@ }, "EbsBlockDevice": { "additionalProperties": false, + "cfnLint": [ + "AWS::OpsWorks::Instance/Properties/BlockDeviceMappings/Ebs" + ], "properties": { "DeleteOnTermination": { "type": "boolean" 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 30395a8a4f..b1e2b2ec12 100644 --- a/src/cfnlint/data/schemas/providers/ca_west_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/ca_west_1/__init__.py @@ -15,6 +15,7 @@ "AWS::EC2::SecurityGroupEgress", "AWS::Config::OrganizationConfigRule", "AWS::Glue::DataQualityRuleset", + "AWS::Route53Profiles::ProfileAssociation", "AWS::Config::ConfigurationRecorder", "AWS::CloudFront::ContinuousDeploymentPolicy", "AWS::ECR::ReplicationConfiguration", @@ -29,6 +30,7 @@ "AWS::Logs::ResourcePolicy", "AWS::EC2::NetworkAclEntry", "AWS::ApiGateway::DocumentationPart", + "AWS::Route53Profiles::Profile", "AWS::CloudWatch::CompositeAlarm", "AWS::Route53Resolver::FirewallDomainList", "AWS::Redshift::EndpointAccess", @@ -89,6 +91,7 @@ "AWS::S3ObjectLambda::AccessPointPolicy", "AWS::ElastiCache::ReplicationGroup", "AWS::StepFunctions::StateMachineAlias", + "AWS::Route53Profiles::ProfileResourceAssociation", "AWS::Glue::Job", "AWS::Route53::HostedZone", "AWS::EKS::PodIdentityAssociation", @@ -477,6 +480,7 @@ "aws-ec2-securitygroupegress.json", "aws-config-organizationconfigrule.json", "aws-glue-dataqualityruleset.json", + "aws-route53profiles-profileassociation.json", "aws-config-configurationrecorder.json", "aws-cloudfront-continuousdeploymentpolicy.json", "aws-ecr-replicationconfiguration.json", @@ -487,6 +491,7 @@ "aws-ec2-networkacl.json", "aws-lambda-eventsourcemapping.json", "aws-logs-resourcepolicy.json", + "aws-route53profiles-profile.json", "aws-cloudwatch-compositealarm.json", "aws-route53resolver-firewalldomainlist.json", "aws-redshift-endpointaccess.json", @@ -535,6 +540,7 @@ "aws-s3objectlambda-accesspointpolicy.json", "aws-elasticache-replicationgroup.json", "aws-stepfunctions-statemachinealias.json", + "aws-route53profiles-profileresourceassociation.json", "aws-glue-job.json", "aws-eks-podidentityassociation.json", "aws-resourceexplorer2-index.json", diff --git a/src/cfnlint/data/schemas/providers/ca_west_1/aws-opsworks-instance.json b/src/cfnlint/data/schemas/providers/ca_west_1/aws-opsworks-instance.json index 5e3f6fb655..2df911f56c 100644 --- a/src/cfnlint/data/schemas/providers/ca_west_1/aws-opsworks-instance.json +++ b/src/cfnlint/data/schemas/providers/ca_west_1/aws-opsworks-instance.json @@ -39,6 +39,9 @@ }, "EbsBlockDevice": { "additionalProperties": false, + "cfnLint": [ + "AWS::OpsWorks::Instance/Properties/BlockDeviceMappings/Ebs" + ], "properties": { "DeleteOnTermination": { "type": "boolean" 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 d80add62cf..f3f17d4384 100644 --- a/src/cfnlint/data/schemas/providers/cn_north_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/cn_north_1/__init__.py @@ -85,6 +85,7 @@ "AWS::EC2::TransitGatewayMulticastGroupSource", "AWS::Transfer::Profile", "AWS::DataBrew::Recipe", + "AWS::SSO::Instance", "AWS::GameLift::Alias", "AWS::ApiGateway::UsagePlanKey", "AWS::FMS::Policy", @@ -742,6 +743,7 @@ "aws-ec2-transitgatewaymulticastgroupsource.json", "aws-transfer-profile.json", "aws-databrew-recipe.json", + "aws-sso-instance.json", "aws-gamelift-alias.json", "aws-apigateway-usageplankey.json", "aws-fms-policy.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 21abbdf0ef..f6f3400b00 100644 --- a/src/cfnlint/data/schemas/providers/cn_northwest_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/cn_northwest_1/__init__.py @@ -78,6 +78,7 @@ "AWS::EC2::TransitGatewayMulticastGroupSource", "AWS::Transfer::Profile", "AWS::DataBrew::Recipe", + "AWS::SSO::Instance", "AWS::GameLift::Alias", "AWS::ApiGateway::UsagePlanKey", "AWS::FMS::Policy", @@ -698,6 +699,7 @@ "aws-ec2-transitgatewaymulticastgroupsource.json", "aws-transfer-profile.json", "aws-databrew-recipe.json", + "aws-sso-instance.json", "aws-gamelift-alias.json", "aws-apigateway-usageplankey.json", "aws-fms-policy.json", diff --git a/src/cfnlint/data/schemas/providers/eu_central_2/aws-opsworks-instance.json b/src/cfnlint/data/schemas/providers/eu_central_2/aws-opsworks-instance.json index 5e3f6fb655..2df911f56c 100644 --- a/src/cfnlint/data/schemas/providers/eu_central_2/aws-opsworks-instance.json +++ b/src/cfnlint/data/schemas/providers/eu_central_2/aws-opsworks-instance.json @@ -39,6 +39,9 @@ }, "EbsBlockDevice": { "additionalProperties": false, + "cfnLint": [ + "AWS::OpsWorks::Instance/Properties/BlockDeviceMappings/Ebs" + ], "properties": { "DeleteOnTermination": { "type": "boolean" diff --git a/src/cfnlint/data/schemas/providers/eu_south_1/aws-opsworks-instance.json b/src/cfnlint/data/schemas/providers/eu_south_1/aws-opsworks-instance.json index 5e3f6fb655..2df911f56c 100644 --- a/src/cfnlint/data/schemas/providers/eu_south_1/aws-opsworks-instance.json +++ b/src/cfnlint/data/schemas/providers/eu_south_1/aws-opsworks-instance.json @@ -39,6 +39,9 @@ }, "EbsBlockDevice": { "additionalProperties": false, + "cfnLint": [ + "AWS::OpsWorks::Instance/Properties/BlockDeviceMappings/Ebs" + ], "properties": { "DeleteOnTermination": { "type": "boolean" 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 42f014cda5..b4ebc80295 100644 --- a/src/cfnlint/data/schemas/providers/eu_south_2/__init__.py +++ b/src/cfnlint/data/schemas/providers/eu_south_2/__init__.py @@ -577,6 +577,7 @@ "aws-guardduty-filter.json", "aws-ecs-service.json", "aws-dms-replicationconfig.json", + "aws-dynamodb-table.json", "aws-ec2-securitygroupegress.json", "aws-glue-dataqualityruleset.json", "aws-route53profiles-profileassociation.json", @@ -712,6 +713,7 @@ "aws-xray-resourcepolicy.json", "aws-servicecatalog-launchtemplateconstraint.json", "aws-wafv2-loggingconfiguration.json", + "aws-dynamodb-globaltable.json", "aws-backup-backupplan.json", "aws-imagebuilder-distributionconfiguration.json", "aws-lakeformation-permissions.json", 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 deleted file mode 100644 index 2ae3432be1..0000000000 --- a/src/cfnlint/data/schemas/providers/eu_south_2/aws-dynamodb-globaltable.json +++ /dev/null @@ -1,697 +0,0 @@ -{ - "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": { - "relationshipRef": { - "propertyPath": "/properties/Arn", - "typeName": "AWS::Kinesis::Stream" - }, - "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": { - "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" - } - }, - "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_south_2/aws-dynamodb-table.json b/src/cfnlint/data/schemas/providers/eu_south_2/aws-dynamodb-table.json deleted file mode 100644 index b883ca8f0e..0000000000 --- a/src/cfnlint/data/schemas/providers/eu_south_2/aws-dynamodb-table.json +++ /dev/null @@ -1,653 +0,0 @@ -{ - "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": { - "relationshipRef": { - "propertyPath": "/properties/Arn", - "typeName": "AWS::Kinesis::Stream" - }, - "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": { - "relationshipRef": { - "propertyPath": "/properties/BucketName", - "typeName": "AWS::S3::Bucket" - }, - "type": "string" - }, - "S3BucketOwner": { - "type": "string" - }, - "S3KeyPrefix": { - "type": "string" - } - }, - "required": [ - "S3Bucket" - ], - "type": "object" - }, - "SSESpecification": { - "additionalProperties": false, - "cfnLint": [ - "AWS::DynamoDB::Table/Properties/SSESpecification" - ], - "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": { - "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_south_2/aws-opsworks-instance.json b/src/cfnlint/data/schemas/providers/eu_south_2/aws-opsworks-instance.json index 5e3f6fb655..2df911f56c 100644 --- a/src/cfnlint/data/schemas/providers/eu_south_2/aws-opsworks-instance.json +++ b/src/cfnlint/data/schemas/providers/eu_south_2/aws-opsworks-instance.json @@ -39,6 +39,9 @@ }, "EbsBlockDevice": { "additionalProperties": false, + "cfnLint": [ + "AWS::OpsWorks::Instance/Properties/BlockDeviceMappings/Ebs" + ], "properties": { "DeleteOnTermination": { "type": "boolean" 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 c7d0eca81a..9ee8ce7ab4 100644 --- a/src/cfnlint/data/schemas/providers/eu_west_3/__init__.py +++ b/src/cfnlint/data/schemas/providers/eu_west_3/__init__.py @@ -926,6 +926,7 @@ "aws-servicecatalog-portfolioprincipalassociation.json", "aws-ram-resourceshare.json", "aws-dms-replicationconfig.json", + "aws-dynamodb-table.json", "aws-amazonmq-configurationassociation.json", "aws-apprunner-observabilityconfiguration.json", "aws-ec2-securitygroupegress.json", @@ -1167,6 +1168,7 @@ "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", 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 deleted file mode 100644 index 2ae3432be1..0000000000 --- a/src/cfnlint/data/schemas/providers/eu_west_3/aws-dynamodb-globaltable.json +++ /dev/null @@ -1,697 +0,0 @@ -{ - "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": { - "relationshipRef": { - "propertyPath": "/properties/Arn", - "typeName": "AWS::Kinesis::Stream" - }, - "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": { - "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" - } - }, - "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_3/aws-dynamodb-table.json b/src/cfnlint/data/schemas/providers/eu_west_3/aws-dynamodb-table.json deleted file mode 100644 index b883ca8f0e..0000000000 --- a/src/cfnlint/data/schemas/providers/eu_west_3/aws-dynamodb-table.json +++ /dev/null @@ -1,653 +0,0 @@ -{ - "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": { - "relationshipRef": { - "propertyPath": "/properties/Arn", - "typeName": "AWS::Kinesis::Stream" - }, - "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": { - "relationshipRef": { - "propertyPath": "/properties/BucketName", - "typeName": "AWS::S3::Bucket" - }, - "type": "string" - }, - "S3BucketOwner": { - "type": "string" - }, - "S3KeyPrefix": { - "type": "string" - } - }, - "required": [ - "S3Bucket" - ], - "type": "object" - }, - "SSESpecification": { - "additionalProperties": false, - "cfnLint": [ - "AWS::DynamoDB::Table/Properties/SSESpecification" - ], - "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": { - "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/il_central_1/aws-ec2-spotfleet.json b/src/cfnlint/data/schemas/providers/il_central_1/aws-ec2-spotfleet.json index 1da0c7f935..75b415f67f 100644 --- a/src/cfnlint/data/schemas/providers/il_central_1/aws-ec2-spotfleet.json +++ b/src/cfnlint/data/schemas/providers/il_central_1/aws-ec2-spotfleet.json @@ -58,6 +58,9 @@ }, "EbsBlockDevice": { "additionalProperties": false, + "cfnLint": [ + "AWS::EC2::SpotFleet/Properties/BlockDeviceMappings/Ebs" + ], "properties": { "DeleteOnTermination": { "type": "boolean" diff --git a/src/cfnlint/data/schemas/providers/il_central_1/aws-opsworks-instance.json b/src/cfnlint/data/schemas/providers/il_central_1/aws-opsworks-instance.json index 5e3f6fb655..2df911f56c 100644 --- a/src/cfnlint/data/schemas/providers/il_central_1/aws-opsworks-instance.json +++ b/src/cfnlint/data/schemas/providers/il_central_1/aws-opsworks-instance.json @@ -39,6 +39,9 @@ }, "EbsBlockDevice": { "additionalProperties": false, + "cfnLint": [ + "AWS::OpsWorks::Instance/Properties/BlockDeviceMappings/Ebs" + ], "properties": { "DeleteOnTermination": { "type": "boolean" 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 a409083d01..d28bc13c85 100644 --- a/src/cfnlint/data/schemas/providers/me_central_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/me_central_1/__init__.py @@ -87,6 +87,7 @@ "AWS::Organizations::ResourcePolicy", "AWS::EC2::TransitGatewayMulticastGroupSource", "AWS::Transfer::Profile", + "AWS::SSO::Instance", "AWS::GameLift::Alias", "AWS::AppSync::DomainName", "AWS::ApiGateway::UsagePlanKey", @@ -717,6 +718,7 @@ "aws-organizations-resourcepolicy.json", "aws-ec2-transitgatewaymulticastgroupsource.json", "aws-transfer-profile.json", + "aws-sso-instance.json", "aws-appsync-domainname.json", "aws-fms-policy.json", "aws-cloudfront-realtimelogconfig.json", diff --git a/src/cfnlint/data/schemas/providers/me_central_1/aws-opsworks-instance.json b/src/cfnlint/data/schemas/providers/me_central_1/aws-opsworks-instance.json index 5e3f6fb655..2df911f56c 100644 --- a/src/cfnlint/data/schemas/providers/me_central_1/aws-opsworks-instance.json +++ b/src/cfnlint/data/schemas/providers/me_central_1/aws-opsworks-instance.json @@ -39,6 +39,9 @@ }, "EbsBlockDevice": { "additionalProperties": false, + "cfnLint": [ + "AWS::OpsWorks::Instance/Properties/BlockDeviceMappings/Ebs" + ], "properties": { "DeleteOnTermination": { "type": "boolean" diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-cloudfront-distribution.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-cloudfront-distribution.json index f0f6f92f20..41baedbc88 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-cloudfront-distribution.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-cloudfront-distribution.json @@ -347,6 +347,9 @@ "properties": { "Aliases": { "items": { + "cfnLint": [ + "AWS::CloudFront::Distribution/Properties/DistributionConfig/Aliases/Alias" + ], "type": "string" }, "type": "array", diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-spotfleet.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-spotfleet.json index 774c81fb72..d0053ed08f 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-spotfleet.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-spotfleet.json @@ -115,6 +115,9 @@ }, "EbsBlockDevice": { "additionalProperties": false, + "cfnLint": [ + "AWS::EC2::SpotFleet/Properties/BlockDeviceMappings/Ebs" + ], "properties": { "DeleteOnTermination": { "type": "boolean" diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-opsworks-instance.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-opsworks-instance.json index a79f100b0e..84f9d4780a 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-opsworks-instance.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-opsworks-instance.json @@ -39,6 +39,9 @@ }, "EbsBlockDevice": { "additionalProperties": false, + "cfnLint": [ + "AWS::OpsWorks::Instance/Properties/BlockDeviceMappings/Ebs" + ], "properties": { "DeleteOnTermination": { "type": "boolean" 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 2795b76a5b..1c4a98270b 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 @@ -637,6 +637,7 @@ "AWS::ApiGateway::GatewayResponse", "AWS::EC2::ClientVpnAuthorizationRule", "AWS::EC2::EnclaveCertificateIamRoleAssociation", + "AWS::SSO::Application", "AWS::FSx::Volume", "AWS::ACMPCA::Certificate", "AWS::EC2::IPAMAllocation", @@ -676,6 +677,7 @@ "AWS::Pinpoint::BaiduChannel", "AWS::ApiGatewayV2::RouteResponse", "AWS::CloudWatch::MetricStream", + "AWS::SSO::ApplicationAssignment", "AWS::Location::GeofenceCollection", "AWS::SSM::Parameter", "AWS::ApiGatewayV2::ApiGatewayManagedOverrides", @@ -778,6 +780,7 @@ "aws-ec2-ipampoolcidr.json", "aws-iot-topicruledestination.json", "aws-redshift-clustersubnetgroup.json", + "aws-rds-dbinstance.json", "aws-ec2-vpcdhcpoptionsassociation.json", "aws-iotevents-input.json", "aws-ec2-networkacl.json", @@ -1123,6 +1126,7 @@ "aws-emr-instancefleetconfig.json", "aws-emr-cluster.json", "aws-codepipeline-webhook.json", + "aws-rds-dbcluster.json", "aws-servicecatalog-resourceupdateconstraint.json", "aws-transfer-agreement.json", "aws-xray-group.json", @@ -1283,6 +1287,7 @@ "aws-wafv2-webaclassociation.json", "aws-codebuild-reportgroup.json", "aws-ec2-enclavecertificateiamroleassociation.json", + "aws-sso-application.json", "aws-fsx-volume.json", "aws-acmpca-certificate.json", "aws-ec2-ipamallocation.json", @@ -1309,6 +1314,7 @@ "aws-greengrassv2-deployment.json", "aws-rds-dbsecuritygroup.json", "aws-cloudwatch-metricstream.json", + "aws-sso-applicationassignment.json", "aws-location-geofencecollection.json", "aws-ssm-parameter.json", "aws-apigatewayv2-apigatewaymanagedoverrides.json", diff --git a/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-rds-dbcluster.json b/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-rds-dbcluster.json deleted file mode 100644 index 29d5cc515f..0000000000 --- a/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-rds-dbcluster.json +++ /dev/null @@ -1,457 +0,0 @@ -{ - "additionalProperties": false, - "cfnLint": [ - "AWS::RDS::DBCluster/Properties" - ], - "conditionalCreateOnlyProperties": [ - "/properties/Engine", - "/properties/GlobalClusterIdentifier", - "/properties/MasterUsername" - ], - "createOnlyProperties": [ - "/properties/AvailabilityZones", - "/properties/DBClusterIdentifier", - "/properties/DBSubnetGroupName", - "/properties/DBSystemId", - "/properties/DatabaseName", - "/properties/EngineMode", - "/properties/KmsKeyId", - "/properties/PubliclyAccessible", - "/properties/RestoreToTime", - "/properties/RestoreType", - "/properties/SnapshotIdentifier", - "/properties/SourceDBClusterIdentifier", - "/properties/SourceRegion", - "/properties/StorageEncrypted", - "/properties/UseLatestRestorableTime" - ], - "definitions": { - "DBClusterRole": { - "additionalProperties": false, - "properties": { - "FeatureName": { - "type": "string" - }, - "RoleArn": { - "type": "string" - } - }, - "required": [ - "RoleArn" - ], - "type": "object" - }, - "Endpoint": { - "additionalProperties": false, - "properties": { - "Address": { - "type": "string" - }, - "Port": { - "type": "string" - } - }, - "type": "object" - }, - "MasterUserSecret": { - "additionalProperties": false, - "properties": { - "KmsKeyId": { - "type": "string" - }, - "SecretArn": { - "type": "string" - } - }, - "type": "object" - }, - "ReadEndpoint": { - "additionalProperties": false, - "properties": { - "Address": { - "type": "string" - } - }, - "type": "object" - }, - "ScalingConfiguration": { - "additionalProperties": false, - "properties": { - "AutoPause": { - "type": "boolean" - }, - "MaxCapacity": { - "type": "integer" - }, - "MinCapacity": { - "type": "integer" - }, - "SecondsBeforeTimeout": { - "type": "integer" - }, - "SecondsUntilAutoPause": { - "type": "integer" - }, - "TimeoutAction": { - "type": "string" - } - }, - "type": "object" - }, - "ServerlessV2ScalingConfiguration": { - "additionalProperties": false, - "properties": { - "MaxCapacity": { - "type": "number" - }, - "MinCapacity": { - "type": "number" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "iam:CreateServiceLinkedRole", - "iam:PassRole", - "rds:AddRoleToDBCluster", - "rds:AddTagsToResource", - "rds:CreateDBCluster", - "rds:CreateDBInstance", - "rds:DescribeDBClusters", - "rds:DescribeEvents", - "rds:EnableHttpEndpoint", - "rds:ModifyDBCluster", - "rds:RestoreDBClusterFromSnapshot", - "rds:RestoreDBClusterToPointInTime", - "secretsmanager:CreateSecret", - "secretsmanager:TagResource" - ], - "timeoutInMinutes": 2160 - }, - "delete": { - "permissions": [ - "rds:CreateDBClusterSnapshot", - "rds:DeleteDBCluster", - "rds:DeleteDBInstance", - "rds:DescribeDBClusters", - "rds:DescribeGlobalClusters", - "rds:RemoveFromGlobalCluster" - ] - }, - "list": { - "permissions": [ - "rds:DescribeDBClusters" - ] - }, - "read": { - "permissions": [ - "rds:DescribeDBClusters" - ] - }, - "update": { - "permissions": [ - "ec2:DescribeSecurityGroups", - "iam:PassRole", - "rds:AddRoleToDBCluster", - "rds:AddTagsToResource", - "rds:DescribeDBClusters", - "rds:DescribeDBSubnetGroups", - "rds:DescribeEvents", - "rds:DescribeGlobalClusters", - "rds:DisableHttpEndpoint", - "rds:EnableHttpEndpoint", - "rds:ModifyDBCluster", - "rds:ModifyDBInstance", - "rds:RemoveFromGlobalCluster", - "rds:RemoveRoleFromDBCluster", - "rds:RemoveTagsFromResource", - "secretsmanager:CreateSecret", - "secretsmanager:TagResource" - ], - "timeoutInMinutes": 2160 - } - }, - "primaryIdentifier": [ - "/properties/DBClusterIdentifier" - ], - "properties": { - "AllocatedStorage": { - "type": "integer" - }, - "AssociatedRoles": { - "items": { - "$ref": "#/definitions/DBClusterRole" - }, - "type": "array", - "uniqueItems": true - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "AvailabilityZones": { - "cfnLint": [ - "AWS::RDS::DBCluster/Properties/AvailabilityZones" - ], - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "BacktrackWindow": { - "default": 0, - "minimum": 0, - "type": "integer" - }, - "BackupRetentionPeriod": { - "default": 1, - "maximum": 35, - "minimum": 1, - "type": "integer" - }, - "CopyTagsToSnapshot": { - "type": "boolean" - }, - "DBClusterArn": { - "type": "string" - }, - "DBClusterIdentifier": { - "maxLength": 63, - "minLength": 1, - "pattern": "^[a-zA-Z]{1}(?:-?[a-zA-Z0-9]){0,62}$", - "type": "string" - }, - "DBClusterInstanceClass": { - "type": "string" - }, - "DBClusterParameterGroupName": { - "default": "default.aurora5.6", - "type": "string" - }, - "DBClusterResourceId": { - "type": "string" - }, - "DBInstanceParameterGroupName": { - "type": "string" - }, - "DBSubnetGroupName": { - "type": "string" - }, - "DBSystemId": { - "type": "string" - }, - "DatabaseName": { - "type": "string" - }, - "DeletionProtection": { - "type": "boolean" - }, - "Domain": { - "type": "string" - }, - "DomainIAMRoleName": { - "type": "string" - }, - "EnableCloudwatchLogsExports": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "EnableGlobalWriteForwarding": { - "type": "boolean" - }, - "EnableHttpEndpoint": { - "type": "boolean" - }, - "EnableIAMDatabaseAuthentication": { - "type": "boolean" - }, - "Endpoint": { - "$ref": "#/definitions/Endpoint" - }, - "Engine": { - "type": "string" - }, - "EngineMode": { - "type": "string" - }, - "EngineVersion": { - "type": "string" - }, - "GlobalClusterIdentifier": { - "maxLength": 63, - "minLength": 0, - "pattern": "^$|^[a-zA-Z]{1}(?:-?[a-zA-Z0-9]){0,62}$", - "type": "string" - }, - "Iops": { - "type": "integer" - }, - "KmsKeyId": { - "type": "string" - }, - "ManageMasterUserPassword": { - "type": "boolean" - }, - "MasterUserPassword": { - "type": "string" - }, - "MasterUserSecret": { - "$ref": "#/definitions/MasterUserSecret" - }, - "MasterUsername": { - "minLength": 1, - "pattern": "^[a-zA-Z]{1}[a-zA-Z0-9_]*$", - "type": "string" - }, - "MonitoringInterval": { - "default": 0, - "type": "integer" - }, - "MonitoringRoleArn": { - "type": "string" - }, - "NetworkType": { - "type": "string" - }, - "PerformanceInsightsEnabled": { - "type": "boolean" - }, - "PerformanceInsightsKmsKeyId": { - "type": "string" - }, - "PerformanceInsightsRetentionPeriod": { - "type": "integer" - }, - "Port": { - "type": "integer" - }, - "PreferredBackupWindow": { - "type": "string" - }, - "PreferredMaintenanceWindow": { - "type": "string" - }, - "PubliclyAccessible": { - "type": "boolean" - }, - "ReadEndpoint": { - "$ref": "#/definitions/ReadEndpoint" - }, - "ReplicationSourceIdentifier": { - "type": "string" - }, - "RestoreToTime": { - "type": "string" - }, - "RestoreType": { - "default": "full-copy", - "type": "string" - }, - "ScalingConfiguration": { - "$ref": "#/definitions/ScalingConfiguration" - }, - "ServerlessV2ScalingConfiguration": { - "$ref": "#/definitions/ServerlessV2ScalingConfiguration" - }, - "SnapshotIdentifier": { - "type": "string" - }, - "SourceDBClusterIdentifier": { - "type": "string" - }, - "SourceRegion": { - "type": "string" - }, - "StorageEncrypted": { - "type": "boolean" - }, - "StorageThroughput": { - "type": "integer" - }, - "StorageType": { - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true - }, - "UseLatestRestorableTime": { - "type": "boolean" - }, - "VpcSecurityGroupIds": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - } - }, - "propertyTransform": { - "/properties/DBClusterIdentifier": "$lowercase(DBClusterIdentifier)", - "/properties/DBClusterParameterGroupName": "$lowercase(DBClusterParameterGroupName)", - "/properties/DBSubnetGroupName": "$lowercase(DBSubnetGroupName)", - "/properties/EnableHttpEndpoint": "$lowercase($string(EngineMode)) = 'serverless' ? EnableHttpEndpoint : ($lowercase($string(Engine)) = 'aurora-postgresql' ? EnableHttpEndpoint : false )", - "/properties/Engine": "$lowercase(Engine)", - "/properties/EngineVersion": "$join([$string(EngineVersion), \".*\"])", - "/properties/KmsKeyId": "$join([\"arn:(aws)[-]{0,1}[a-z]{0,2}[-]{0,1}[a-z]{0,3}:kms:[a-z]{2}[-]{1}[a-z]{3,10}[-]{0,1}[a-z]{0,10}[-]{1}[1-3]{1}:[0-9]{12}[:]{1}key\\/\", KmsKeyId])", - "/properties/MasterUserSecret/KmsKeyId": "$join([\"arn:(aws)[-]{0,1}[a-z]{0,2}[-]{0,1}[a-z]{0,3}:kms:[a-z]{2}[-]{1}[a-z]{3,10}[-]{0,1}[a-z]{0,10}[-]{1}[1-3]{1}:[0-9]{12}[:]{1}key\\/\", MasterUserSecret.KmsKeyId])", - "/properties/NetworkType": "$lowercase(NetworkType)", - "/properties/PerformanceInsightsKmsKeyId": "$join([\"arn:(aws)[-]{0,1}[a-z]{0,2}[-]{0,1}[a-z]{0,3}:kms:[a-z]{2}[-]{1}[a-z]{3,10}[-]{0,1}[a-z]{0,10}[-]{1}[1-3]{1}:[0-9]{12}[:]{1}key\\/\", PerformanceInsightsKmsKeyId])", - "/properties/PreferredMaintenanceWindow": "$lowercase(PreferredMaintenanceWindow)", - "/properties/SnapshotIdentifier": "$lowercase(SnapshotIdentifier)", - "/properties/SourceDBClusterIdentifier": "$lowercase(SourceDBClusterIdentifier)", - "/properties/StorageType": "$lowercase(StorageType)" - }, - "readOnlyProperties": [ - "/properties/DBClusterArn", - "/properties/DBClusterResourceId", - "/properties/Endpoint", - "/properties/Endpoint/Address", - "/properties/Endpoint/Port", - "/properties/ReadEndpoint/Address", - "/properties/MasterUserSecret/SecretArn", - "/properties/StorageThroughput" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-rds", - "typeName": "AWS::RDS::DBCluster", - "writeOnlyProperties": [ - "/properties/DBInstanceParameterGroupName", - "/properties/MasterUserPassword", - "/properties/RestoreToTime", - "/properties/RestoreType", - "/properties/SnapshotIdentifier", - "/properties/SourceDBClusterIdentifier", - "/properties/SourceRegion", - "/properties/UseLatestRestorableTime" - ] -} diff --git a/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-rds-dbinstance.json b/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-rds-dbinstance.json deleted file mode 100644 index 10983ab4c1..0000000000 --- a/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-rds-dbinstance.json +++ /dev/null @@ -1,619 +0,0 @@ -{ - "additionalProperties": false, - "cfnLint": [ - "AWS::RDS::DBInstance/Properties" - ], - "conditionalCreateOnlyProperties": [ - "/properties/AutoMinorVersionUpgrade", - "/properties/AvailabilityZone", - "/properties/BackupRetentionPeriod", - "/properties/DBClusterSnapshotIdentifier", - "/properties/DBParameterGroupName", - "/properties/DBSnapshotIdentifier", - "/properties/Engine", - "/properties/MultiAZ", - "/properties/PerformanceInsightsKMSKeyId", - "/properties/PreferredMaintenanceWindow", - "/properties/RestoreTime", - "/properties/SourceDBClusterIdentifier", - "/properties/SourceDBInstanceAutomatedBackupsArn", - "/properties/SourceDBInstanceIdentifier", - "/properties/SourceDbiResourceId", - "/properties/StorageType", - "/properties/UseLatestRestorableTime" - ], - "createOnlyProperties": [ - "/properties/CharacterSetName", - "/properties/CustomIAMInstanceProfile", - "/properties/DBClusterIdentifier", - "/properties/DBInstanceIdentifier", - "/properties/DBName", - "/properties/DBSubnetGroupName", - "/properties/KmsKeyId", - "/properties/MasterUsername", - "/properties/NcharCharacterSetName", - "/properties/Port", - "/properties/SourceRegion", - "/properties/StorageEncrypted", - "/properties/Timezone" - ], - "definitions": { - "CertificateDetails": { - "additionalProperties": false, - "properties": { - "CAIdentifier": { - "type": "string" - }, - "ValidTill": { - "format": "date-time", - "type": "string" - } - }, - "type": "object" - }, - "DBInstanceRole": { - "additionalProperties": false, - "properties": { - "FeatureName": { - "type": "string" - }, - "RoleArn": { - "type": "string" - } - }, - "required": [ - "FeatureName", - "RoleArn" - ], - "type": "object" - }, - "Endpoint": { - "additionalProperties": false, - "properties": { - "Address": { - "type": "string" - }, - "HostedZoneId": { - "type": "string" - }, - "Port": { - "type": "string" - } - }, - "type": "object" - }, - "MasterUserSecret": { - "additionalProperties": false, - "properties": { - "KmsKeyId": { - "type": "string" - }, - "SecretArn": { - "type": "string" - } - }, - "type": "object" - }, - "ProcessorFeature": { - "additionalProperties": false, - "properties": { - "Name": { - "enum": [ - "coreCount", - "threadsPerCore" - ], - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key" - ], - "type": "object" - } - }, - "dependencies": { - "KmsKeyId": { - "properties": { - "StorageEncrypted": { - "enum": [ - "true", - "True", - true - ] - } - }, - "required": [ - "StorageEncrypted" - ] - } - }, - "dependentExcluded": { - "SourceDBInstanceIdentifier": [ - "CharacterSetName", - "MasterUserPassword", - "MasterUsername", - "StorageEncrypted" - ] - }, - "deprecatedProperties": [ - "/properties/TdeCredentialArn", - "/properties/TdeCredentialPassword" - ], - "handlers": { - "create": { - "permissions": [ - "ec2:DescribeAccountAttributes", - "ec2:DescribeAvailabilityZones", - "ec2:DescribeInternetGateways", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:DescribeVpcAttribute", - "ec2:DescribeVpcs", - "iam:CreateServiceLinkedRole", - "iam:GetRole", - "iam:ListRoles", - "iam:PassRole", - "kms:CreateGrant", - "kms:DescribeKey", - "rds:AddRoleToDBInstance", - "rds:AddTagsToResource", - "rds:CreateDBInstance", - "rds:CreateDBInstanceReadReplica", - "rds:DescribeDBInstances", - "rds:DescribeDBClusters", - "rds:DescribeDBClusterSnapshots", - "rds:DescribeDBInstanceAutomatedBackups", - "rds:DescribeDBSnapshots", - "rds:DescribeEvents", - "rds:ModifyDBInstance", - "rds:RebootDBInstance", - "rds:RestoreDBInstanceFromDBSnapshot", - "rds:RestoreDBInstanceToPointInTime", - "rds:StartDBInstanceAutomatedBackupsReplication", - "secretsmanager:CreateSecret", - "secretsmanager:TagResource" - ], - "timeoutInMinutes": 2160 - }, - "delete": { - "permissions": [ - "rds:CreateDBSnapshot", - "rds:DeleteDBInstance", - "rds:DescribeDBInstances" - ], - "timeoutInMinutes": 2160 - }, - "list": { - "permissions": [ - "rds:DescribeDBInstances" - ] - }, - "read": { - "permissions": [ - "ec2:DescribeAccountAttributes", - "ec2:DescribeAvailabilityZones", - "ec2:DescribeInternetGateways", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:DescribeVpcAttribute", - "ec2:DescribeVpcs", - "rds:DescribeDBInstances" - ] - }, - "update": { - "permissions": [ - "ec2:DescribeAccountAttributes", - "ec2:DescribeAvailabilityZones", - "ec2:DescribeInternetGateways", - "ec2:DescribeSecurityGroups", - "ec2:DescribeSubnets", - "ec2:DescribeVpcAttribute", - "ec2:DescribeVpcs", - "iam:CreateServiceLinkedRole", - "iam:GetRole", - "iam:ListRoles", - "iam:PassRole", - "kms:CreateGrant", - "kms:DescribeKey", - "rds:AddRoleToDBInstance", - "rds:AddTagsToResource", - "rds:DescribeDBClusters", - "rds:DescribeDBEngineVersions", - "rds:DescribeDBInstances", - "rds:DescribeDBParameterGroups", - "rds:DescribeEvents", - "rds:ModifyDBInstance", - "rds:PromoteReadReplica", - "rds:RebootDBInstance", - "rds:RemoveRoleFromDBInstance", - "rds:RemoveTagsFromResource", - "rds:StartDBInstanceAutomatedBackupsReplication", - "rds:StopDBInstanceAutomatedBackupsReplication", - "secretsmanager:CreateSecret", - "secretsmanager:TagResource" - ], - "timeoutInMinutes": 2160 - } - }, - "primaryIdentifier": [ - "/properties/DBInstanceIdentifier" - ], - "properties": { - "AllocatedStorage": { - "pattern": "^[0-9]*$", - "type": "string" - }, - "AllowMajorVersionUpgrade": { - "type": "boolean" - }, - "AssociatedRoles": { - "items": { - "$ref": "#/definitions/DBInstanceRole" - }, - "type": "array" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "AutomaticBackupReplicationRegion": { - "type": "string" - }, - "AvailabilityZone": { - "cfnLint": [ - "AWS::RDS::DBInstance/Properties/AvailabilityZone" - ], - "type": "string" - }, - "BackupRetentionPeriod": { - "default": 1, - "maximum": 35, - "minimum": 0, - "type": "integer" - }, - "CACertificateIdentifier": { - "type": "string" - }, - "CertificateDetails": { - "$ref": "#/definitions/CertificateDetails" - }, - "CertificateRotationRestart": { - "type": "boolean" - }, - "CharacterSetName": { - "type": "string" - }, - "CopyTagsToSnapshot": { - "type": "boolean" - }, - "CustomIAMInstanceProfile": { - "type": "string" - }, - "DBClusterIdentifier": { - "type": "string" - }, - "DBClusterSnapshotIdentifier": { - "type": "string" - }, - "DBInstanceArn": { - "type": "string" - }, - "DBInstanceClass": { - "type": "string" - }, - "DBInstanceIdentifier": { - "maxLength": 63, - "minLength": 1, - "pattern": "^$|^[a-zA-Z]{1}(?:-?[a-zA-Z0-9]){0,62}$", - "type": "string" - }, - "DBName": { - "type": "string" - }, - "DBParameterGroupName": { - "type": "string" - }, - "DBSecurityGroups": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "DBSnapshotIdentifier": { - "type": "string" - }, - "DBSubnetGroupName": { - "type": "string" - }, - "DBSystemId": { - "type": "string" - }, - "DbiResourceId": { - "type": "string" - }, - "DedicatedLogVolume": { - "type": "boolean" - }, - "DeleteAutomatedBackups": { - "type": "boolean" - }, - "DeletionProtection": { - "type": "boolean" - }, - "Domain": { - "type": "string" - }, - "DomainAuthSecretArn": { - "type": "string" - }, - "DomainDnsIps": { - "items": { - "type": "string" - }, - "type": "array" - }, - "DomainFqdn": { - "type": "string" - }, - "DomainIAMRoleName": { - "type": "string" - }, - "DomainOu": { - "type": "string" - }, - "EnableCloudwatchLogsExports": { - "items": { - "type": "string" - }, - "type": "array" - }, - "EnableIAMDatabaseAuthentication": { - "type": "boolean" - }, - "EnablePerformanceInsights": { - "type": "boolean" - }, - "Endpoint": { - "$ref": "#/definitions/Endpoint" - }, - "Engine": { - "type": "string" - }, - "EngineVersion": { - "type": "string" - }, - "Iops": { - "type": "integer" - }, - "KmsKeyId": { - "type": "string" - }, - "LicenseModel": { - "type": "string" - }, - "ManageMasterUserPassword": { - "type": "boolean" - }, - "MasterUserPassword": { - "type": "string" - }, - "MasterUserSecret": { - "$ref": "#/definitions/MasterUserSecret" - }, - "MasterUsername": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z][a-zA-Z0-9_]{0,127}$", - "type": "string" - }, - "MaxAllocatedStorage": { - "type": "integer" - }, - "MonitoringInterval": { - "default": 0, - "type": "integer" - }, - "MonitoringRoleArn": { - "type": "string" - }, - "MultiAZ": { - "type": "boolean" - }, - "NcharCharacterSetName": { - "type": "string" - }, - "NetworkType": { - "type": "string" - }, - "OptionGroupName": { - "type": "string" - }, - "PerformanceInsightsKMSKeyId": { - "type": "string" - }, - "PerformanceInsightsRetentionPeriod": { - "enum": [ - 7, - 31, - 62, - 93, - 124, - 155, - 186, - 217, - 248, - 279, - 310, - 341, - 372, - 403, - 434, - 465, - 496, - 527, - 558, - 589, - 620, - 651, - 682, - 713, - 731 - ], - "type": "integer" - }, - "Port": { - "pattern": "^\\d*$", - "type": "string" - }, - "PreferredBackupWindow": { - "type": "string" - }, - "PreferredMaintenanceWindow": { - "type": "string" - }, - "ProcessorFeatures": { - "items": { - "$ref": "#/definitions/ProcessorFeature" - }, - "type": "array" - }, - "PromotionTier": { - "default": 1, - "maximum": 15, - "minimum": 0, - "type": "integer" - }, - "PubliclyAccessible": { - "type": "boolean" - }, - "ReplicaMode": { - "type": "string" - }, - "RestoreTime": { - "format": "date-time", - "type": "string" - }, - "SourceDBClusterIdentifier": { - "type": "string" - }, - "SourceDBInstanceAutomatedBackupsArn": { - "type": "string" - }, - "SourceDBInstanceIdentifier": { - "type": "string" - }, - "SourceDbiResourceId": { - "type": "string" - }, - "SourceRegion": { - "type": "string" - }, - "StorageEncrypted": { - "type": "boolean" - }, - "StorageThroughput": { - "type": "integer" - }, - "StorageType": { - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "TdeCredentialArn": { - "type": "string" - }, - "TdeCredentialPassword": { - "type": "string" - }, - "Timezone": { - "type": "string" - }, - "UseDefaultProcessorFeatures": { - "type": "boolean" - }, - "UseLatestRestorableTime": { - "type": "boolean" - }, - "VPCSecurityGroups": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - } - }, - "propertyTransform": { - "/properties/DBClusterIdentifier": "$lowercase(DBClusterIdentifier)", - "/properties/DBClusterSnapshotIdentifier": "$lowercase(DBClusterSnapshotIdentifier)", - "/properties/DBInstanceIdentifier": "$lowercase(DBInstanceIdentifier)", - "/properties/DBName": "$lowercase(DBName) $OR $uppercase(DBName)", - "/properties/DBParameterGroupName": "$lowercase(DBParameterGroupName)", - "/properties/DBSnapshotIdentifier": "$lowercase(DBSnapshotIdentifier)", - "/properties/DBSubnetGroupName": "$lowercase(DBSubnetGroupName)", - "/properties/Engine": "$lowercase(Engine)", - "/properties/EngineVersion": "$join([$string(EngineVersion), \".*\"])", - "/properties/KmsKeyId": "$join([\"arn:(aws)[-]{0,1}[a-z]{0,2}[-]{0,1}[a-z]{0,3}:kms:[a-z]{2}[-]{1}[a-z]{3,10}[-]{0,1}[a-z]{0,10}[-]{1}[1-3]{1}:[0-9]{12}[:]{1}key\\/\", KmsKeyId])", - "/properties/MasterUserSecret/KmsKeyId": "$join([\"arn:(aws)[-]{0,1}[a-z]{0,2}[-]{0,1}[a-z]{0,3}:kms:[a-z]{2}[-]{1}[a-z]{3,10}[-]{0,1}[a-z]{0,10}[-]{1}[1-3]{1}:[0-9]{12}[:]{1}key\\/\", MasterUserSecret.KmsKeyId])", - "/properties/NetworkType": "$lowercase(NetworkType)", - "/properties/OptionGroupName": "$lowercase(OptionGroupName)", - "/properties/PerformanceInsightsKMSKeyId": "$join([\"arn:(aws)[-]{0,1}[a-z]{0,2}[-]{0,1}[a-z]{0,3}:kms:[a-z]{2}[-]{1}[a-z]{3,10}[-]{0,1}[a-z]{0,10}[-]{1}[1-3]{1}:[0-9]{12}[:]{1}key\\/\", PerformanceInsightsKMSKeyId])", - "/properties/PreferredMaintenanceWindow": "$lowercase(PreferredMaintenanceWindow)", - "/properties/SourceDBInstanceAutomatedBackupsArn": "$lowercase(SourceDBInstanceAutomatedBackupsArn)", - "/properties/SourceDBInstanceIdentifier": "$lowercase(SourceDBInstanceIdentifier)", - "/properties/StorageType": "$lowercase(StorageType)" - }, - "readOnlyProperties": [ - "/properties/Endpoint/Address", - "/properties/Endpoint/Port", - "/properties/Endpoint/HostedZoneId", - "/properties/DbiResourceId", - "/properties/DBInstanceArn", - "/properties/DBSystemId", - "/properties/MasterUserSecret/SecretArn", - "/properties/CertificateDetails/CAIdentifier", - "/properties/CertificateDetails/ValidTill" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "typeName": "AWS::RDS::DBInstance", - "writeOnlyProperties": [ - "/properties/AllowMajorVersionUpgrade", - "/properties/CertificateRotationRestart", - "/properties/DBSnapshotIdentifier", - "/properties/DeleteAutomatedBackups", - "/properties/MasterUserPassword", - "/properties/Port", - "/properties/RestoreTime", - "/properties/SourceDBInstanceAutomatedBackupsArn", - "/properties/SourceDBInstanceIdentifier", - "/properties/SourceDbiResourceId", - "/properties/SourceRegion", - "/properties/TdeCredentialPassword", - "/properties/UseDefaultProcessorFeatures", - "/properties/UseLatestRestorableTime" - ] -} 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 4af9fa6829..878a95b394 100644 --- a/src/cfnlint/data/schemas/providers/us_west_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/us_west_1/__init__.py @@ -123,6 +123,7 @@ "AWS::EC2::TransitGatewayMulticastGroupSource", "AWS::Transfer::Profile", "AWS::DataBrew::Recipe", + "AWS::SSO::Instance", "AWS::GameLift::Alias", "AWS::AppSync::DomainName", "AWS::ApiGateway::UsagePlanKey", @@ -762,6 +763,7 @@ "AWS::ApiGateway::GatewayResponse", "AWS::EC2::ClientVpnAuthorizationRule", "AWS::EC2::EnclaveCertificateIamRoleAssociation", + "AWS::SSO::Application", "AWS::FSx::Volume", "AWS::Route53Resolver::OutpostResolver", "AWS::ACMPCA::Certificate", @@ -810,6 +812,7 @@ "AWS::MediaPackage::Channel", "AWS::ApiGatewayV2::RouteResponse", "AWS::CloudWatch::MetricStream", + "AWS::SSO::ApplicationAssignment", "AWS::SSM::Parameter", "AWS::ApiGatewayV2::ApiGatewayManagedOverrides", "AWS::Config::DeliveryChannel", @@ -915,6 +918,7 @@ "aws-servicecatalog-portfolioprincipalassociation.json", "aws-ram-resourceshare.json", "aws-dms-replicationconfig.json", + "aws-dynamodb-table.json", "aws-amazonmq-configurationassociation.json", "aws-wafregional-ipset.json", "aws-redshiftserverless-namespace.json", @@ -1012,6 +1016,7 @@ "aws-ec2-transitgatewaymulticastgroupsource.json", "aws-transfer-profile.json", "aws-databrew-recipe.json", + "aws-sso-instance.json", "aws-gamelift-alias.json", "aws-appsync-domainname.json", "aws-apigateway-usageplankey.json", @@ -1151,6 +1156,7 @@ "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 +1232,7 @@ "aws-applicationinsights-application.json", "aws-ecs-clustercapacityproviderassociations.json", "aws-appconfig-configurationprofile.json", + "aws-route53resolver-firewallrulegroup.json", "aws-msk-configuration.json", "aws-ec2-transitgateway.json", "aws-cognito-userpoolgroup.json", @@ -1619,6 +1626,7 @@ "aws-codebuild-reportgroup.json", "aws-ec2-clientvpnauthorizationrule.json", "aws-ec2-enclavecertificateiamroleassociation.json", + "aws-sso-application.json", "aws-fsx-volume.json", "aws-route53resolver-outpostresolver.json", "aws-acmpca-certificate.json", @@ -1666,6 +1674,7 @@ "aws-mediapackage-channel.json", "aws-apigatewayv2-routeresponse.json", "aws-cloudwatch-metricstream.json", + "aws-sso-applicationassignment.json", "aws-ssm-parameter.json", "aws-apigatewayv2-apigatewaymanagedoverrides.json", "aws-config-deliverychannel.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 deleted file mode 100644 index 2ae3432be1..0000000000 --- a/src/cfnlint/data/schemas/providers/us_west_1/aws-dynamodb-globaltable.json +++ /dev/null @@ -1,697 +0,0 @@ -{ - "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": { - "relationshipRef": { - "propertyPath": "/properties/Arn", - "typeName": "AWS::Kinesis::Stream" - }, - "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": { - "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" - } - }, - "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/us_west_1/aws-dynamodb-table.json b/src/cfnlint/data/schemas/providers/us_west_1/aws-dynamodb-table.json deleted file mode 100644 index b883ca8f0e..0000000000 --- a/src/cfnlint/data/schemas/providers/us_west_1/aws-dynamodb-table.json +++ /dev/null @@ -1,653 +0,0 @@ -{ - "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": { - "relationshipRef": { - "propertyPath": "/properties/Arn", - "typeName": "AWS::Kinesis::Stream" - }, - "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": { - "relationshipRef": { - "propertyPath": "/properties/BucketName", - "typeName": "AWS::S3::Bucket" - }, - "type": "string" - }, - "S3BucketOwner": { - "type": "string" - }, - "S3KeyPrefix": { - "type": "string" - } - }, - "required": [ - "S3Bucket" - ], - "type": "object" - }, - "SSESpecification": { - "additionalProperties": false, - "cfnLint": [ - "AWS::DynamoDB::Table/Properties/SSESpecification" - ], - "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": { - "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/us_west_1/aws-route53resolver-firewallrulegroup.json b/src/cfnlint/data/schemas/providers/us_west_1/aws-route53resolver-firewallrulegroup.json deleted file mode 100644 index aaa7151526..0000000000 --- a/src/cfnlint/data/schemas/providers/us_west_1/aws-route53resolver-firewallrulegroup.json +++ /dev/null @@ -1,236 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "FirewallRule": { - "additionalProperties": false, - "properties": { - "Action": { - "enum": [ - "ALLOW", - "BLOCK", - "ALERT" - ], - "type": "string" - }, - "BlockOverrideDnsType": { - "enum": [ - "CNAME" - ], - "type": "string" - }, - "BlockOverrideDomain": { - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "BlockOverrideTtl": { - "maximum": 604800, - "minimum": 0, - "type": "integer" - }, - "BlockResponse": { - "enum": [ - "NODATA", - "NXDOMAIN", - "OVERRIDE" - ], - "type": "string" - }, - "FirewallDomainListId": { - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "Priority": { - "type": "integer" - }, - "Qtype": { - "maxLength": 16, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "FirewallDomainListId", - "Priority", - "Action" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 127, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 255, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "route53resolver:*", - "ec2:*", - "logs:*", - "iam:*", - "lambda:*", - "s3:*" - ] - }, - "delete": { - "permissions": [ - "route53resolver:*", - "ec2:*", - "logs:*", - "iam:*", - "lambda:*", - "s3:*" - ] - }, - "list": { - "permissions": [ - "route53resolver:*", - "ec2:*", - "logs:*", - "iam:*", - "lambda:*", - "s3:*" - ] - }, - "read": { - "permissions": [ - "route53resolver:*", - "ec2:*", - "logs:*", - "iam:*", - "lambda:*", - "s3:*" - ] - }, - "update": { - "permissions": [ - "route53resolver:*", - "ec2:*", - "logs:*", - "iam:*", - "lambda:*", - "s3:*" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "maxLength": 600, - "minLength": 1, - "type": "string" - }, - "CreationTime": { - "maxLength": 40, - "minLength": 20, - "type": "string" - }, - "CreatorRequestId": { - "maxLength": 255, - "minLength": 1, - "type": "string" - }, - "FirewallRules": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/FirewallRule" - }, - "type": "array", - "uniqueItems": true - }, - "Id": { - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "ModificationTime": { - "maxLength": 40, - "minLength": 20, - "type": "string" - }, - "Name": { - "maxLength": 64, - "minLength": 1, - "pattern": "(?!^[0-9]+$)([a-zA-Z0-9\\-_' ']+)", - "type": "string" - }, - "OwnerId": { - "maxLength": 32, - "minLength": 12, - "type": "string" - }, - "RuleCount": { - "type": "integer" - }, - "ShareStatus": { - "enum": [ - "NOT_SHARED", - "SHARED_WITH_ME", - "SHARED_BY_ME" - ], - "type": "string" - }, - "Status": { - "enum": [ - "COMPLETE", - "DELETING", - "UPDATING", - "INACTIVE_OWNER_ACCOUNT_CLOSED" - ], - "type": "string" - }, - "StatusMessage": { - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Arn", - "/properties/RuleCount", - "/properties/Status", - "/properties/StatusMessage", - "/properties/OwnerId", - "/properties/ShareStatus", - "/properties/CreatorRequestId", - "/properties/CreationTime", - "/properties/ModificationTime" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Route53Resolver::FirewallRuleGroup" -} diff --git a/src/cfnlint/rules/resources/cloudfront/Aliases.py b/src/cfnlint/rules/resources/cloudfront/Aliases.py index c386efa618..dfbdd8b2c3 100644 --- a/src/cfnlint/rules/resources/cloudfront/Aliases.py +++ b/src/cfnlint/rules/resources/cloudfront/Aliases.py @@ -5,11 +5,11 @@ import regex as re -from cfnlint.helpers import FUNCTIONS, REGEX_DYN_REF -from cfnlint.rules import CloudFormationLintRule, RuleMatch +from cfnlint.helpers import REGEX_DYN_REF +from cfnlint.rules.jsonschema.CfnLintKeyword import CfnLintKeyword -class Aliases(CloudFormationLintRule): +class Aliases(CfnLintKeyword): """Check if CloudFront Aliases are valid domain names""" id = "E3013" @@ -18,39 +18,34 @@ class Aliases(CloudFormationLintRule): source_url = "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-distributionconfig.html#cfn-cloudfront-distribution-distributionconfig-aliases" tags = ["properties", "cloudfront"] - def match(self, cfn): - """Check cloudfront Resource Parameters""" - - matches = [] - - valid_domain = re.compile( - r"^(?:[a-z0-9\*](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$" + def __init__(self): + """Init""" + super().__init__( + keywords=[ + "AWS::CloudFront::Distribution/Properties/DistributionConfig/Aliases/Alias" + ] ) - results = cfn.get_resource_properties( - ["AWS::CloudFront::Distribution", "DistributionConfig"] - ) - for result in results: - aliases = result["Value"].get("Aliases") - if aliases: - for alias in aliases: - if isinstance(alias, str) and alias not in FUNCTIONS: - wildcard = alias.split(".") - if re.match(REGEX_DYN_REF, alias): - continue - if "*" in wildcard[1:]: - path = result["Path"] + ["Aliases"] - message = ( - f"Invalid use of wildcards: {alias} at" - f" {'/'.join(result['Path'])}" - ) - matches.append(RuleMatch(path, message)) - if not re.match(valid_domain, alias): - path = result["Path"] + ["Aliases"] - message = ( - f"Invalid alias found: {alias} at" - f" {'/'.join(result['Path'])}" - ) - matches.append(RuleMatch(path, message)) - - return matches + def validate(self, validator, _, instance, schema): + + if isinstance(instance, str): + if re.match(REGEX_DYN_REF, instance): + return + for err in validator.descend( + instance=instance, + schema={ + "pattern": "^(?!.*(?:\\.\\*\\.)).*", + }, + ): + err.rule = self + yield err + + for err in validator.descend( + instance=instance, + schema={ + # ruff: noqa: E501 + "pattern": "^(?:[a-z0-9\\*](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$", + }, + ): + err.rule = self + yield err diff --git a/src/cfnlint/rules/resources/ectwo/Ebs.py b/src/cfnlint/rules/resources/ectwo/Ebs.py index c91ad36513..6b0bbde162 100644 --- a/src/cfnlint/rules/resources/ectwo/Ebs.py +++ b/src/cfnlint/rules/resources/ectwo/Ebs.py @@ -22,7 +22,6 @@ class Ebs(CfnLintJsonSchema): def __init__(self) -> None: super().__init__( keywords=[ - "AWS::AutoScaling::AutoScalingGroup/Properties/BlockDeviceMappings/Ebs", "AWS::AutoScaling::LaunchConfiguration/Properties/BlockDeviceMappings/Ebs", "AWS::EC2::Instance/Properties/BlockDeviceMappings/Ebs", "AWS::EC2::LaunchTemplate/Properties/BlockDeviceMappings/Ebs", diff --git a/test/unit/rules/resources/cloudfront/test_aliases.py b/test/unit/rules/resources/cloudfront/test_aliases.py index ef4b77b5bb..fd5f8fabdf 100644 --- a/test/unit/rules/resources/cloudfront/test_aliases.py +++ b/test/unit/rules/resources/cloudfront/test_aliases.py @@ -3,28 +3,197 @@ SPDX-License-Identifier: MIT-0 """ -from test.unit.rules import BaseRuleTestCase +from collections import deque +import pytest + +from cfnlint.jsonschema import CfnTemplateValidator, ValidationError from cfnlint.rules.resources.cloudfront.Aliases import Aliases -class TestCloudFrontAliases(BaseRuleTestCase): - """Test CloudFront Aliases Configuration""" +@pytest.fixture(scope="module") +def rule(): + rule = Aliases() + yield rule + + +@pytest.fixture(scope="module") +def validator(): + yield CfnTemplateValidator(schema={}) - def setUp(self): - """Setup""" - super(TestCloudFrontAliases, self).setUp() - self.collection.register(Aliases()) - self.success_templates = [ - "test/fixtures/templates/good/resources/cloudfront/aliases.yaml" - ] - def test_file_positive(self): - """Test Positive""" - self.helper_file_positive() +@pytest.mark.parametrize( + "instance,expected", + [ + ( + "www.example.com", + [], + ), + ( + "example.com", + [], + ), + ( + "email.exa.ple.com", + [], + ), + ( + "mx1.example.eu", + [], + ), + ( + "e-mail.example.amsterdam", + [], + ), + ("xn-caf-dma.com", []), + ("www.example.eu", []), + ( + "111.example.com", + [], + ), + ( + "email.internal.example.eu", + [], + ), + ( + "e-mail.internal.ex-ample.eu", + [], + ), + ( + "www.example.google", + [], + ), + ( + "1111111111.ex--ample.nl", + [], + ), + ( + "*.example.com", + [], + ), + ( + "email.*.example.com", + [ + ValidationError( + ( + "'email.*.example.com' does not match " + "'^(?!.*(?:\\\\.\\\\*\\\\.)).*'" + ), + rule=Aliases(), + path=deque([]), + validator="pattern", + schema_path=deque(["pattern"]), + ) + ], + ), + ( + "WWW.EXAMPLE.COM", + [ + ValidationError( + ( + "'WWW.EXAMPLE.COM' does not match " + "'^(?:[a-z0-9\\\\*](?:[a-z0-9-]{0,61}[a-z0-9])?\\\\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$'" + ), + rule=Aliases(), + path=deque([]), + validator="pattern", + schema_path=deque(["pattern"]), + ) + ], + ), + ( + "-example.com", + [ + ValidationError( + ( + "'-example.com' does not match " + "'^(?:[a-z0-9\\\\*](?:[a-z0-9-]{0,61}[a-z0-9])?\\\\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$'" + ), + rule=Aliases(), + path=deque([]), + validator="pattern", + schema_path=deque(["pattern"]), + ) + ], + ), + ( + "example.c", + [ + ValidationError( + ( + "'example.c' does not match " + "'^(?:[a-z0-9\\\\*](?:[a-z0-9-]{0,61}[a-z0-9])?\\\\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$'" + ), + rule=Aliases(), + path=deque([]), + validator="pattern", + schema_path=deque(["pattern"]), + ) + ], + ), + ( + "www.example.com ", + [ + ValidationError( + ( + "'www.example.com ' does not match " + "'^(?:[a-z0-9\\\\*](?:[a-z0-9-]{0,61}[a-z0-9])?\\\\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$'" + ), + rule=Aliases(), + path=deque([]), + validator="pattern", + schema_path=deque(["pattern"]), + ) + ], + ), + ( + "www.-example.com", + [ + ValidationError( + ( + "'www.-example.com' does not match " + "'^(?:[a-z0-9\\\\*](?:[a-z0-9-]{0,61}[a-z0-9])?\\\\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$'" + ), + rule=Aliases(), + path=deque([]), + validator="pattern", + schema_path=deque(["pattern"]), + ) + ], + ), + ( + "-www.example.com", + [ + ValidationError( + ( + "'-www.example.com' does not match " + "'^(?:[a-z0-9\\\\*](?:[a-z0-9-]{0,61}[a-z0-9])?\\\\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$'" + ), + rule=Aliases(), + path=deque([]), + validator="pattern", + schema_path=deque(["pattern"]), + ) + ], + ), + ( + "www.example.com-", + [ + ValidationError( + ( + "'www.example.com-' does not match " + "'^(?:[a-z0-9\\\\*](?:[a-z0-9-]{0,61}[a-z0-9])?\\\\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$'" + ), + rule=Aliases(), + path=deque([]), + validator="pattern", + schema_path=deque(["pattern"]), + ) + ], + ), + ], +) +def test_backup_lifecycle(instance, expected, rule, validator): + errs = list(rule.validate(validator, "", instance, {})) - def test_file_negative_alias(self): - """Test failure""" - self.helper_file_negative( - "test/fixtures/templates/bad/resources_cloudfront_invalid_aliases.yaml", 8 - ) + assert errs == expected, f"Expected {expected} got {errs}"