diff --git a/.github/workflows/ci-branch.yaml b/.github/workflows/ci-branch.yaml index 66afa84d2f..2cc66e81f6 100644 --- a/.github/workflows/ci-branch.yaml +++ b/.github/workflows/ci-branch.yaml @@ -74,3 +74,4 @@ jobs: ignore-vulns: | GHSA-r9hx-vwmv-q579 PYSEC-2022-43012 + PYSEC-2024-60 diff --git a/.github/workflows/ci-pr.yaml b/.github/workflows/ci-pr.yaml index c12874ab74..8fab70662c 100644 --- a/.github/workflows/ci-pr.yaml +++ b/.github/workflows/ci-pr.yaml @@ -94,3 +94,4 @@ jobs: ignore-vulns: | GHSA-r9hx-vwmv-q579 PYSEC-2022-43012 + PYSEC-2024-60 diff --git a/CHANGELOG.md b/CHANGELOG.md index d61708b1d9..3991f0ab2a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,61 @@ +### v1.6.1 +## What's Changed +* SAM transform replace AutoPublishCodeSha256 by @kddejong in https://github.com/aws-cloudformation/cfn-lint/pull/3497 +* Change return type of conditions `build_scenerios_on_region` to be a `list[bool]` by @kddejong in https://github.com/aws-cloudformation/cfn-lint/pull/3498 + +**Full Changelog**: https://github.com/aws-cloudformation/cfn-lint/compare/v1.6.0...v1.6.1 + +### v1.6.0 +## What's Changed +* Update CloudFormation schemas to 2024-07-11 by @github-actions in https://github.com/aws-cloudformation/cfn-lint/pull/3484 +* Return all errors from resolution by @kddejong in https://github.com/aws-cloudformation/cfn-lint/pull/3489 +* Disable [W1020](https://github.com/aws-cloudformation/cfn-python-lint/blob/main/docs/rules.md#W1020) when using SAM by @kddejong in https://github.com/aws-cloudformation/cfn-lint/pull/3491 +* Use region when looking for a resolver being satisfied by @kddejong in https://github.com/aws-cloudformation/cfn-lint/pull/3490 + +**Full Changelog**: https://github.com/aws-cloudformation/cfn-lint/compare/v1.5.3...v1.6.0 + +### v1.5.3 +## What's Changed +* Load registry schemas before implementing patching by @kddejong in https://github.com/aws-cloudformation/cfn-lint/pull/3486 +* Force resolve validation to not use strict types by @kddejong in https://github.com/aws-cloudformation/cfn-lint/pull/3488 + +**Full Changelog**: https://github.com/aws-cloudformation/cfn-lint/compare/v1.5.2...v1.5.3 + +### v1.5.2 +## What's Changed +* Update CloudFormation schemas to 2024-07-09 by @github-actions in https://github.com/aws-cloudformation/cfn-lint/pull/3457 +* Update logging configuration to not log when used as a library by @kddejong in https://github.com/aws-cloudformation/cfn-lint/pull/3479 +* Add `AWS::ServiceCatalog::CloudFormationProvisionedProduct` to exceptions for [E1040](https://github.com/aws-cloudformation/cfn-python-lint/blob/main/docs/rules.md#E1040) by @kylekluever in https://github.com/aws-cloudformation/cfn-lint/pull/3481 +* Allow ICMP to have `FromPort` other than -1 with `ToPort` -1 by @kddejong in https://github.com/aws-cloudformation/cfn-lint/pull/3482 + +## New Contributors +* @kylekluever made their first contribution in https://github.com/aws-cloudformation/cfn-lint/pull/3481 + +**Full Changelog**: https://github.com/aws-cloudformation/cfn-lint/compare/v1.5.1...v1.5.2 + +### v1.5.1 +## What's Changed +* Switch type comparison in BaseFn to use is_types_compatible by @kddejong in https://github.com/aws-cloudformation/cfn-lint/pull/3461 +* Update [E2015](https://github.com/aws-cloudformation/cfn-python-lint/blob/main/docs/rules.md#E2015) to split defaults on comma by @kddejong in https://github.com/aws-cloudformation/cfn-lint/pull/3466 +* Don't fail `anyOf` on warnings by @kddejong in https://github.com/aws-cloudformation/cfn-lint/pull/3469 +* Allow `Transform` section to have the full transform def by @kddejong in https://github.com/aws-cloudformation/cfn-lint/pull/3470 +* Update `GetAtt` logic for `AWS::ServiceCatalog::CloudFormationProvisionedProduct` by @kddejong in https://github.com/aws-cloudformation/cfn-lint/pull/3475 +* Remove `requiredXor` for `AWS::EC2::Instance` by @kddejong in https://github.com/aws-cloudformation/cfn-lint/pull/#3477 + +**Full Changelog**: https://github.com/aws-cloudformation/cfn-lint/compare/v1.5.0...v1.5.1 + +### v1.5.0 +## What's Changed +* Update mappings to support transforms at the root level by @kddejong in https://github.com/aws-cloudformation/cfn-lint/pull/3439 +* Update `CfnLintJsonSchema` based rules for dynamic references by @kddejong in https://github.com/aws-cloudformation/cfn-lint/pull/3442 +* Fix tagging examples by @michael-k in https://github.com/aws-cloudformation/cfn-lint/pull/3448 +* Add `full` keyword to optional dependencies by @kddejong in https://github.com/aws-cloudformation/cfn-lint/pull/3454 +* Load registry schemas if type match by @kddejong in https://github.com/aws-cloudformation/cfn-lint/pull/3450 +* Update helpers.py with DocDB snapshot type by @marty-sullivan in https://github.com/aws-cloudformation/cfn-lint/pull/3455 +* Update CloudFormation schemas to 2024-07-02 by @github-actions in https://github.com/aws-cloudformation/cfn-lint/pull/3447 + +**Full Changelog**: https://github.com/aws-cloudformation/cfn-lint/compare/v1.4.2...v1.5.0 + ### v1.4.2 ## What's Changed * Fix JSON based tags for many types by @kddejong in https://github.com/aws-cloudformation/cfn-lint/pull/3437 @@ -344,7 +402,7 @@ ###### CloudFormation Specifications - Update CloudFormation specs to `170.0.0` (pull #[3149](https://github.com/aws-cloudformation/cfn-lint/pull/3149)) ###### Fixes -- Only pick up `.json` files when using registry shcemas (pull #[3150](https://github.com/aws-cloudformation/cfn-lint/pull/3150)) +- Only pick up `.json` files when using registry schemas (pull #[3150](https://github.com/aws-cloudformation/cfn-lint/pull/3150)) - Update IAM policy validation to not allow `Action` and `NotAction` (pull #[3145](https://github.com/aws-cloudformation/cfn-lint/pull/3145)) - Update IAM policy validation to not allow `Principal` and `NotPrincipal` (pull #[3145](https://github.com/aws-cloudformation/cfn-lint/pull/3145)) - Update IAM policy validation to not allow `Resource` and `NotResource` (pull #[3145](https://github.com/aws-cloudformation/cfn-lint/pull/3145)) diff --git a/README.md b/README.md index 196cb37273..104b4cbb54 100644 --- a/README.md +++ b/README.md @@ -51,10 +51,12 @@ Python 3.8+ is supported. `cfn-lint` has optional dependencies based on certain features you may need. +* `pip install cfn-lint[full]` for installing all the optional dependencies. This will install all the dependencies for graph, junit, and sarif. * `pip install cfn-lint[graph]` for installing `pydot` to draw and output template graphs * `pip install cfn-lint[junit]` for installing the packages to output the `junit` format * `pip install cfn-lint[sarif]` for installing the packages to output the `sarif` format + ### Homebrew (macOS) `brew install cfn-lint` @@ -340,7 +342,7 @@ If you'd like cfn-lint to be run automatically when making changes to files in y ```yaml repos: - repo: https://github.com/aws-cloudformation/cfn-lint - rev: v1.4.2 # The version of cfn-lint to use + rev: v1.6.1 # The version of cfn-lint to use hooks: - id: cfn-lint files: path/to/cfn/dir/.*\.(json|yml|yaml)$ @@ -351,7 +353,7 @@ If you are using a `.cfnlintrc` and specifying the `templates` or `ignore_templa ```yaml repos: - repo: https://github.com/aws-cloudformation/cfn-lint - rev: v1.4.2 # The version of cfn-lint to use + rev: v1.6.1 # The version of cfn-lint to use hooks: - id: cfn-lint-rc ``` diff --git a/docs/customize_specifications.md b/docs/customize_specifications.md index 4f512bae4b..7b9bed0973 100644 --- a/docs/customize_specifications.md +++ b/docs/customize_specifications.md @@ -30,23 +30,28 @@ The following example only allows the usage of all `EC2` resources, except for ` ``` #### Alter Resource/Parameter specifications -The spec file overwrites values from the Regional spec files which give you the possible to alter the specifications for your own needs. A good example is making optional Parameters required. +CloudFormation schemas can be patched to change the behavior of how a property works. This can be amazingly useful if you want to require certain properties or add extra validation to a property. You can create a patch by specifying `Patches` at the root, then the resource type you want to patch, followed by a list of patches in [json patch](https://jsonpatch.com/) format. For example, to enforce tagging on an S3 bucket, the override file looks like this: ```json { - "ResourceTypes": { - "AWS::S3::Bucket": { - "Properties": { - "Tags": { - "Required": true - } + "Patches": { + "AWS::S3::Bucket": [ + { + "op": "add", + "path": "/required", + "value": [ + "Tags" + ] } - } + ] } } ``` **WARNING** -The file is checked for valid JSON syntax, but does not check the contents of the file before merging it into the Specifications. Be careful with your changes because it can possibly corrupt the Specifications and break the linting process. +JSON patches will fail if they don't apply the schema. Schema structure can change without changing how customers use the resource type. These changes may result in your patch breaking the cfn-lint process. + +**WARNING** +You can patch the schemas so the result is a non properly structured schema. For instance if you patch `/required` to have a value of `{}` cfn-lint will crash many ways as it is expecting an array. We test the schemas on each release to validate their structure before doing a release. We do not test them after you apply your patches. diff --git a/docs/rules.md b/docs/rules.md index 1cf60332f6..167e163798 100644 --- a/docs/rules.md +++ b/docs/rules.md @@ -46,7 +46,7 @@ To include these rules, use the `-e/include-experimental` argument when running ## Rules (_This documentation is generated by running `cfn-lint --update-documentation`, do not alter this manually_) -The following **208** rules are applied by this linter: +The following **209** rules are applied by this linter: | Rule ID | Title | Description | Config
(Name:Type:Default) | Source | Tags | | -------- | ----- | ----------- | ---------- | ------ | ---- | @@ -57,6 +57,7 @@ The following **208** rules are applied by this linter: | [E1002](../src/cfnlint/rules/templates/LimitSize.py) | Validate if a template size is too large | Check the size of the template is less than the upper limit | | [Source](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cloudformation-limits.html) | `limits` | | [E1003](../src/cfnlint/rules/templates/LimitDescription.py) | Validate the max size of a description | Check if the size of the template description is less than the upper limit | | [Source](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cloudformation-limits.html) | `description`,`limits` | | [E1004](../src/cfnlint/rules/templates/Description.py) | Template description can only be a string | Template description can only be a string | | [Source](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-description-structure.html) | `description` | +| [E1005](../src/cfnlint/rules/transforms/Configuration.py) | Validate Transform configuration | Validate that the transforms section of a template is properly configured | | [Source](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/transform-section-structure.html) | `transform` | | [E1010](../src/cfnlint/rules/functions/GetAtt.py) | GetAtt validation of parameters | Validates that GetAtt parameters are to valid resources and properties of those resources | | [Source](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-getatt.html) | `functions`,`getatt` | | [E1011](../src/cfnlint/rules/functions/FindInMap.py) | FindInMap validation of configuration | Making sure the function is a list of appropriate config | | [Source](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-findinmap.html) | `functions`,`findinmap` | | [E1015](../src/cfnlint/rules/functions/GetAz.py) | GetAz validation of parameters | Making sure the GetAz function is properly configured | | [Source](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-getavailabilityzones.html) | `functions`,`getaz` | diff --git a/examples/rules/PropertiesTagsIncluded.py b/examples/rules/PropertiesTagsIncluded.py index 3ee1c8be43..f3d9b53a61 100644 --- a/examples/rules/PropertiesTagsIncluded.py +++ b/examples/rules/PropertiesTagsIncluded.py @@ -4,6 +4,7 @@ """ from cfnlint.rules import CloudFormationLintRule, RuleMatch +from cfnlint.schema import PROVIDER_SCHEMA_MANAGER class PropertiesTagsIncluded(CloudFormationLintRule): @@ -14,20 +15,6 @@ class PropertiesTagsIncluded(CloudFormationLintRule): description = "Check Tags for resources" tags = ["resources", "tags"] - def get_resources_with_tags(self, region): - """Get resource types that support tags""" - resourcespecs = {} - resourcetypes = resourcespecs["ResourceTypes"] - - matches = [] - for resourcetype, resourceobj in resourcetypes.items(): - propertiesobj = resourceobj.get("Properties") - if propertiesobj: - if "Tags" in propertiesobj: - matches.append(resourcetype) - - return matches - def match(self, cfn): """Check Tags for required keys""" @@ -35,12 +22,19 @@ def match(self, cfn): all_tags = cfn.search_deep_keys("Tags") all_tags = [x for x in all_tags if x[0] == "Resources"] - resources_tags = self.get_resources_with_tags(cfn.regions[0]) resources = cfn.get_resources() for resource_name, resource_obj in resources.items(): resource_type = resource_obj.get("Type", "") resource_properties = resource_obj.get("Properties", {}) - if resource_type in resources_tags: + if any( + "Tags" in schema.schema["properties"] + for ( + _region, + schema, + ) in PROVIDER_SCHEMA_MANAGER.get_resource_schemas_by_regions( + resource_type, cfn.regions + ) + ): if "Tags" not in resource_properties: message = "Missing Tags Properties for {0}" matches.append( diff --git a/examples/rules/PropertiesTagsRequired.py b/examples/rules/PropertiesTagsRequired.py index 2d7a0a32f7..b62c7a098b 100644 --- a/examples/rules/PropertiesTagsRequired.py +++ b/examples/rules/PropertiesTagsRequired.py @@ -3,6 +3,7 @@ SPDX-License-Identifier: MIT-0 """ +from cfnlint.decode.node import dict_node, list_node from cfnlint.rules import CloudFormationLintRule, RuleMatch @@ -24,7 +25,12 @@ def match(self, cfn): all_tags = cfn.search_deep_keys("Tags") all_tags = [x for x in all_tags if x[0] == "Resources"] for all_tag in all_tags: - all_keys = [d.get("Key") for d in all_tag[-1]] + if isinstance(all_tag[-1], list_node): + all_keys = [d.get("Key") for d in all_tag[-1]] + elif isinstance(all_tag[-1], dict_node): + all_keys = all_tag[-1].keys() + else: + continue for required_tag in required_tags: if required_tag not in all_keys: message = "Missing Tag {0} at {1}" diff --git a/pyproject.toml b/pyproject.toml index a367e7e15e..feeefce44b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -56,6 +56,12 @@ sarif = [ "jschema_to_python~=1.2.3", "sarif-om~=1.0.4", ] +full = [ + "junit-xml~=1.9", + "jschema_to_python~=1.2.3", + "sarif-om~=1.0.4", + "pydot" +] [project.scripts] cfn-lint = "cfnlint.runner:main" diff --git a/scripts/update_schemas_manually.py b/scripts/update_schemas_manually.py index ab51a2a4bd..dc5923e24c 100755 --- a/scripts/update_schemas_manually.py +++ b/scripts/update_schemas_manually.py @@ -720,10 +720,6 @@ ), Patch( values={ - "requiredXor": [ - "ImageId", - "LaunchTemplate", - ], "dependentExcluded": { "NetworkInterfaces": ["SubnetId"], "SubnetId": ["NetworkInterfaces"], diff --git a/scripts/update_snapshot_results.sh b/scripts/update_snapshot_results.sh index 5ba58587ce..557b1c4df5 100755 --- a/scripts/update_snapshot_results.sh +++ b/scripts/update_snapshot_results.sh @@ -1,5 +1,9 @@ #!/usr/bin/env bash +# integration/ +cfn-lint test/fixtures/templates/integration/dynamic-references.yaml -e -c I --format json > test/fixtures/results/integration/dynamic-references.json +cfn-lint test/fixtures/templates/integration/resources-cloudformation-init.yaml -e -c I --format json > test/fixtures/results/integration/resources-cloudformation-init.json + # public/ cfn-lint test/fixtures/templates/public/lambda-poller.yaml -e -c I --format json > test/fixtures/results/public/lambda-poller.json cfn-lint test/fixtures/templates/public/watchmaker.json -e -x E3012:strict=true -c I --format json > test/fixtures/results/public/watchmaker.json diff --git a/src/cfnlint/api.py b/src/cfnlint/api.py index 70cfd30003..78c67f805c 100644 --- a/src/cfnlint/api.py +++ b/src/cfnlint/api.py @@ -7,7 +7,7 @@ from typing import List -from cfnlint.config import ConfigMixIn, ManualArgs, configure_logging +from cfnlint.config import ConfigMixIn, ManualArgs from cfnlint.decode.decode import decode_str from cfnlint.helpers import REGION_PRIMARY, REGIONS from cfnlint.rules import Match, RulesCollection @@ -38,7 +38,6 @@ def lint( list a list of errors if any were found, else an empty list """ - configure_logging(None, None) template, errors = decode_str(s) if errors: return errors diff --git a/src/cfnlint/conditions/conditions.py b/src/cfnlint/conditions/conditions.py index a56fb77a32..da42ee8918 100644 --- a/src/cfnlint/conditions/conditions.py +++ b/src/cfnlint/conditions/conditions.py @@ -8,6 +8,7 @@ import itertools import logging import traceback +from functools import lru_cache from typing import Any, Iterator, Set, Tuple from sympy import And, Implies, Not, Symbol @@ -294,9 +295,8 @@ def check_implies(self, scenarios: dict[str, bool], implies: str) -> bool: # formatting or just the wrong condition name return True - def build_scenerios_on_region( - self, condition_name: str, region: str - ) -> Iterator[bool]: + @lru_cache + def build_scenerios_on_region(self, condition_name: str, region: str) -> list[bool]: """Based on a region validate if the condition_name could be true Args: @@ -304,20 +304,16 @@ def build_scenerios_on_region( region (str): the name of the region Returns: - Generator[bool]: Returns True, False, or True and False depending on if the + list[bool]: Returns True, False, or True and False depending on if the condition could be True, False or both based on the region parameter """ - if not isinstance(condition_name, str): - return cnf_region = self._cnf.copy() found_region = False # validate the condition name exists # return True/False if it doesn't if condition_name not in self._conditions: - yield True - yield False - return + return [True, False] for eql in self._conditions[condition_name].equals: is_region, equal_region = eql.is_region @@ -332,23 +328,24 @@ def build_scenerios_on_region( # Note: It is possible its a hard coded condition but # for now we will return True and False if not found_region: - yield True - yield False - return + return [True, False] + results = [] cnf_test = cnf_region.copy() cnf_test.add_prop( self._conditions[condition_name].build_true_cnf(self._solver_params) ) if satisfiable(cnf_test): - yield True + results.append(True) cnf_test = cnf_region.copy() cnf_test.add_prop( self._conditions[condition_name].build_false_cnf(self._solver_params) ) if satisfiable(cnf_test): - yield False + results.append(False) + + return results def satisfiable( self, conditions: dict[str, bool], parameter_values: dict[str, str] diff --git a/src/cfnlint/config.py b/src/cfnlint/config.py index 5ecee1ec2b..fd8934e39e 100644 --- a/src/cfnlint/config.py +++ b/src/cfnlint/config.py @@ -30,14 +30,13 @@ def configure_logging(debug_logging, info_logging): ch = logging.StreamHandler() - ch.setLevel(logging.DEBUG) if debug_logging: LOGGER.setLevel(logging.DEBUG) elif info_logging: LOGGER.setLevel(logging.INFO) else: - LOGGER.setLevel(logging.NOTSET) + LOGGER.setLevel(logging.WARNING) log_formatter = logging.Formatter( "%(asctime)s - %(name)s - %(levelname)s - %(message)s" ) @@ -621,7 +620,6 @@ def __init__(self, cli_args: list[str] | None = None, **kwargs: Unpack[ManualArg self._manual_args = kwargs or ManualArgs() CliArgs.__init__(self, cli_args) # configure debug as soon as we can - configure_logging(self.cli_args.debug, self.cli_args.info) # type: ignore TemplateArgs.__init__(self, {}) ConfigFileArgs.__init__( self, config_file=self._get_argument_value("config_file", False, False) @@ -638,6 +636,7 @@ def __repr__(self): "regions": self.regions, "ignore_bad_template": self.ignore_bad_template, "debug": self.debug, + "info": self.info, "format": self.format, "templates": self.templates, "append_rules": self.append_rules, @@ -717,6 +716,10 @@ def ignore_bad_template(self): def debug(self): return self._get_argument_value("debug", False, False) + @property + def info(self): + return self._get_argument_value("info", False, False) + @property def format(self): return self._get_argument_value("format", False, True) diff --git a/src/cfnlint/context/_mappings.py b/src/cfnlint/context/_mappings.py new file mode 100644 index 0000000000..b01fca50bb --- /dev/null +++ b/src/cfnlint/context/_mappings.py @@ -0,0 +1,100 @@ +""" +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +SPDX-License-Identifier: MIT-0 +""" + +from __future__ import annotations + +import logging +from dataclasses import dataclass, field +from typing import Any, Iterator + +LOGGER = logging.getLogger(__name__) + + +@dataclass(frozen=True) +class Mappings: + """ + This class holds a mapping + """ + + maps: dict[str, Map] = field(init=True, default_factory=dict) + is_transform: bool = field(init=True, default=False) + + @classmethod + def create_from_dict(cls, instance: Any) -> Mappings: + + if not isinstance(instance, dict): + return cls({}) + try: + result = {} + is_transform = False + for k, v in instance.items(): + if k == "Fn::Transform": + is_transform = True + else: + result[k] = Map.create_from_dict(v) + return cls(result, is_transform) + except (ValueError, AttributeError) as e: + LOGGER.debug(e, exc_info=True) + return cls({}) + + +@dataclass(frozen=True) +class _MappingSecondaryKey: + """ + This class holds a mapping value + """ + + keys: dict[str, list[Any] | str | int | float] = field( + init=True, default_factory=dict + ) + is_transform: bool = field(init=True, default=False) + + def value(self, secondary_key: str): + if secondary_key not in self.keys: + raise KeyError(secondary_key) + return self.keys[secondary_key] + + @classmethod + def create_from_dict(cls, instance: Any) -> _MappingSecondaryKey: + if not isinstance(instance, dict): + return cls({}) + is_transform = False + keys = {} + for k, v in instance.items(): + if k == "Fn::Transform": + is_transform = True + elif isinstance(v, (str, list, int, float)): + keys[k] = v + else: + continue + return cls(keys, is_transform) + + +@dataclass(frozen=True) +class Map: + """ + This class holds a mapping + """ + + keys: dict[str, _MappingSecondaryKey] = field(init=True, default_factory=dict) + is_transform: bool = field(init=True, default=False) + + def find_in_map(self, top_key: str, secondary_key: str) -> Iterator[Any]: + if top_key not in self.keys: + raise KeyError(top_key) + yield self.keys[top_key].value(secondary_key) + + @classmethod + def create_from_dict(cls, instance: Any) -> Map: + if not isinstance(instance, dict): + return cls({}) + is_transform = False + keys = {} + for k, v in instance.items(): + if k == "Fn::Transform": + is_transform = True + else: + keys[k] = _MappingSecondaryKey.create_from_dict(v) + return cls(keys, is_transform) diff --git a/src/cfnlint/context/context.py b/src/cfnlint/context/context.py index 99f818c435..d42cebe662 100644 --- a/src/cfnlint/context/context.py +++ b/src/cfnlint/context/context.py @@ -11,6 +11,7 @@ from typing import Any, Deque, Iterator, Sequence, Set, Tuple from cfnlint.context._conditions import Conditions +from cfnlint.context._mappings import Mappings from cfnlint.helpers import ( BOOLEAN_STRINGS_TRUE, FUNCTIONS, @@ -37,7 +38,7 @@ def __post_init__(self, transforms) -> None: for transform in transforms: if not isinstance(transform, str): - raise ValueError("Transform must be a string") + continue self._transforms.append(transform) def has_language_extensions_transform(self): @@ -138,7 +139,7 @@ class Context: parameters: dict[str, "Parameter"] = field(init=True, default_factory=dict) resources: dict[str, "Resource"] = field(init=True, default_factory=dict) conditions: Conditions = field(init=True, default_factory=Conditions) - mappings: dict[str, "Map"] = field(init=True, default_factory=dict) + mappings: Mappings = field(init=True, default_factory=Mappings) strict_types: bool = field(init=True, default=True) @@ -152,6 +153,9 @@ class Context: transforms: Transforms = field(init=True, default_factory=lambda: Transforms([])) + # is the value a resolved value + is_resolved_value: bool = field(init=True, default=False) + def evolve(self, **kwargs) -> "Context": """ Create a new context without merging together attributes @@ -374,61 +378,6 @@ def ref(self, context: Context) -> Iterator[Any]: yield -@dataclass -class _MappingSecondaryKey: - """ - This class holds a mapping value - """ - - keys: dict[str, list[Any] | str | int | float] = field( - init=False, default_factory=dict - ) - instance: InitVar[Any] - is_transform: bool = field(init=False, default=False) - - def __post_init__(self, instance) -> None: - if not isinstance(instance, dict): - raise ValueError("Secondary keys must be a object") - for k, v in instance.items(): - if k == "Fn::Transform": - self.is_transform = True - continue - if isinstance(v, (str, list, int, float)): - self.keys[k] = v - else: - raise ValueError("Third keys must not be an object") - - def value(self, secondary_key: str): - if secondary_key not in self.keys: - raise KeyError(secondary_key) - return self.keys[secondary_key] - - -@dataclass -class Map: - """ - This class holds a mapping - """ - - keys: dict[str, _MappingSecondaryKey] = field(init=False, default_factory=dict) - resource: InitVar[Any] - is_transform: bool = field(init=False, default=False) - - def __post_init__(self, mapping) -> None: - if not isinstance(mapping, dict): - raise ValueError("Mapping must be a object") - for k, v in mapping.items(): - if k == "Fn::Transform": - self.is_transform = True - else: - self.keys[k] = _MappingSecondaryKey(v) - - def find_in_map(self, top_key: str, secondary_key: str) -> Iterator[Any]: - if top_key not in self.keys: - raise KeyError(top_key) - yield self.keys[top_key].value(secondary_key) - - def _init_parameters(parameters: Any) -> dict[str, Parameter]: obj = {} if not isinstance(parameters, dict): @@ -460,19 +409,6 @@ def _init_transforms(transforms: Any) -> Transforms: return Transforms([]) -def _init_mappings(mappings: Any) -> dict[str, Map]: - obj = {} - if not isinstance(mappings, dict): - raise ValueError("Mappings must be a object") - for k, v in mappings.items(): - try: - obj[k] = Map(v) - except ValueError: - pass - - return obj - - def create_context_for_template(cfn): parameters = {} try: @@ -494,11 +430,7 @@ def create_context_for_template(cfn): except (ValueError, AttributeError): pass - mappings = {} - try: - mappings = _init_mappings(cfn.template.get("Mappings", {})) - except (ValueError, AttributeError): - pass + mappings = Mappings.create_from_dict(cfn.template.get("Mappings", {})) return Context( parameters=parameters, diff --git a/src/cfnlint/data/AdditionalSpecs/Policies.json b/src/cfnlint/data/AdditionalSpecs/Policies.json index fe32dd10ab..f174426ef5 100644 --- a/src/cfnlint/data/AdditionalSpecs/Policies.json +++ b/src/cfnlint/data/AdditionalSpecs/Policies.json @@ -494,6 +494,19 @@ "aws:TagKeys" ] }, + "AWS App Studio": { + "ARNFormat": "arn:${Partition}:appstudio:${Region}:${Account}:${ResourceType}:${ResourcePath}", + "ARNRegex": "^arn:${Partition}:appstudio:.+:.+:.+", + "Actions": [ + "GetAccountStatus", + "GetEnablementJobStatus", + "StartEnablementJob", + "StartRollbackEnablementJob", + "StartTeamDeployment" + ], + "HasResource": false, + "StringPrefix": "appstudio" + }, "AWS App2Container": { "ARNFormat": "arn:${Partition}:a2c:${Region}:${Account}:${ResourceType}/${ResourceName}", "ARNRegex": "^arn:${Partition}:a2c:.+:.+:.+", @@ -1861,12 +1874,14 @@ "DeleteHapg", "DeleteHsm", "DeleteLunaClient", + "DeleteResourcePolicy", "DescribeBackups", "DescribeClusters", "DescribeHapg", "DescribeHsm", "DescribeLunaClient", "GetConfig", + "GetResourcePolicy", "InitializeCluster", "ListAvailableZones", "ListHapgs", @@ -1879,6 +1894,7 @@ "ModifyHapg", "ModifyHsm", "ModifyLunaClient", + "PutResourcePolicy", "RemoveTagsFromResource", "RestoreBackup", "TagResource", @@ -2808,6 +2824,7 @@ "ListGuardrailViolations", "ListGuardrails", "ListGuardrailsForTarget", + "ListLandingZoneOperations", "ListLandingZones", "ListManagedAccounts", "ListManagedAccountsForGuardrail", @@ -4226,6 +4243,7 @@ "ListQueues", "ListTagsForResource", "PutPolicy", + "SearchJobs", "TagResource", "UntagResource", "UpdateJobTemplate", @@ -4843,6 +4861,7 @@ "CreateTable", "CreateTableOptimizer", "CreateTrigger", + "CreateUsageProfile", "CreateUserDefinedFunction", "CreateWorkflow", "DeleteBlueprint", @@ -4869,6 +4888,7 @@ "DeleteTableOptimizer", "DeleteTableVersion", "DeleteTrigger", + "DeleteUsageProfile", "DeleteUserDefinedFunction", "DeleteWorkflow", "DeregisterDataPreview", @@ -4952,6 +4972,7 @@ "GetTags", "GetTrigger", "GetTriggers", + "GetUsageProfile", "GetUserDefinedFunction", "GetUserDefinedFunctions", "GetWorkflow", @@ -4984,6 +5005,7 @@ "ListStatements", "ListTableOptimizerRuns", "ListTriggers", + "ListUsageProfiles", "ListWorkflows", "NotifyEvent", "PassConnection", @@ -5049,6 +5071,7 @@ "UpdateTable", "UpdateTableOptimizer", "UpdateTrigger", + "UpdateUsageProfile", "UpdateUserDefinedFunction", "UpdateWorkflow", "UseGlueStudio", @@ -5215,6 +5238,8 @@ "DeleteImageSet", "GetDICOMImportJob", "GetDICOMInstance", + "GetDICOMInstanceFrames", + "GetDICOMInstanceMetadata", "GetDatastore", "GetImageFrame", "GetImageSet", @@ -7452,14 +7477,28 @@ ] }, "AWS License Manager Linux Subscriptions Manager": { + "ARNFormat": "arn:aws:license-manager-linux-subscriptions:${Region}:${Account}:${ResourceType}/${ResourceId}", + "ARNRegex": "^arn:aws:license-manager-linux-subscriptions:.+:.+:.+", "Actions": [ + "DeregisterSubscriptionProvider", + "GetRegisteredSubscriptionProvider", "GetServiceSettings", "ListLinuxSubscriptionInstances", "ListLinuxSubscriptions", + "ListRegisteredSubscriptionProviders", + "ListTagsForResource", + "RegisterSubscriptionProvider", + "TagResource", + "UntagResource", "UpdateServiceSettings" ], - "HasResource": false, - "StringPrefix": "license-manager-linux-subscriptions" + "HasResource": true, + "StringPrefix": "license-manager-linux-subscriptions", + "conditionKeys": [ + "aws:RequestTag/${TagKey}", + "aws:ResourceTag/${TagKey}", + "aws:TagKeys" + ] }, "AWS License Manager User Subscriptions": { "Actions": [ @@ -9601,8 +9640,8 @@ ] }, "AWS Shield": { - "ARNFormat": "arn:aws:shield::${Account}:${Resource}/${ResourceId}", - "ARNRegex": "^arn:aws:shield::[0-9]+:.+/.+", + "ARNFormat": "arn:aws:shield:${Region}:${Account}:${Resource}/${ResourceId}", + "ARNRegex": "^arn:aws:shield:${Region}:[0-9]+:.+/.+", "Actions": [ "AssociateDRTLogBucket", "AssociateDRTRole", @@ -10325,6 +10364,31 @@ "aws:TagKeys" ] }, + "AWS Systems Manager Quick Setup": { + "ARNFormat": "arn:aws:ssm-quicksetup:${Region}:${Account}:${ResourceType}/${ResourceId}", + "ARNRegex": "^arn:aws:ssm-quicksetup:.+", + "Actions": [ + "CreateConfigurationManager", + "DeleteConfigurationManager", + "GetConfigurationManager", + "GetServiceSettings", + "ListConfigurationManagers", + "ListQuickSetupTypes", + "ListTagsForResource", + "TagResource", + "UntagResource", + "UpdateConfigurationDefinition", + "UpdateConfigurationManager", + "UpdateServiceSettings" + ], + "HasResource": true, + "StringPrefix": "ssm-quicksetup", + "conditionKeys": [ + "aws:RequestTag/${TagKey}", + "aws:ResourceTag/${TagKey}", + "aws:TagKeys" + ] + }, "AWS Systems Manager for SAP": { "ARNFormat": "arn:aws:ssm-sap:${Region}:${Account}:${ApplicationType}/${ApplicationId}", "ARNRegex": "^arn:aws:ssm-sap:.+", @@ -11615,6 +11679,9 @@ "CreateAgentAlias", "CreateDataSource", "CreateEvaluationJob", + "CreateFlow", + "CreateFlowAlias", + "CreateFlowVersion", "CreateFoundationModelAgreement", "CreateGuardrail", "CreateGuardrailVersion", @@ -11622,17 +11689,24 @@ "CreateModelCustomizationJob", "CreateModelEvaluationJob", "CreateModelInvocationJob", + "CreatePrompt", + "CreatePromptVersion", "CreateProvisionedModelThroughput", "DeleteAgent", "DeleteAgentActionGroup", "DeleteAgentAlias", + "DeleteAgentMemory", "DeleteAgentVersion", "DeleteCustomModel", "DeleteDataSource", + "DeleteFlow", + "DeleteFlowAlias", + "DeleteFlowVersion", "DeleteFoundationModelAgreement", "DeleteGuardrail", "DeleteKnowledgeBase", "DeleteModelInvocationLoggingConfiguration", + "DeletePrompt", "DeleteProvisionedModelThroughput", "DetectGeneratedContent", "DisassociateAgentKnowledgeBase", @@ -11640,10 +11714,14 @@ "GetAgentActionGroup", "GetAgentAlias", "GetAgentKnowledgeBase", + "GetAgentMemory", "GetAgentVersion", "GetCustomModel", "GetDataSource", "GetEvaluationJob", + "GetFlow", + "GetFlowAlias", + "GetFlowVersion", "GetFoundationModel", "GetFoundationModelAvailability", "GetGuardrail", @@ -11653,9 +11731,11 @@ "GetModelEvaluationJob", "GetModelInvocationJob", "GetModelInvocationLoggingConfiguration", + "GetPrompt", "GetProvisionedModelThroughput", "GetUseCaseForModelAccess", "InvokeAgent", + "InvokeFlow", "InvokeModel", "InvokeModelWithResponseStream", "ListAgentActionGroups", @@ -11666,6 +11746,9 @@ "ListCustomModels", "ListDataSources", "ListEvaluationJobs", + "ListFlowAliases", + "ListFlowVersions", + "ListFlows", "ListFoundationModelAgreementOffers", "ListFoundationModels", "ListGuardrails", @@ -11674,9 +11757,11 @@ "ListModelCustomizationJobs", "ListModelEvaluationJobs", "ListModelInvocationJobs", + "ListPrompts", "ListProvisionedModelThroughputs", "ListTagsForResource", "PrepareAgent", + "PrepareFlow", "PutFoundationModelEntitlement", "PutModelInvocationLoggingConfiguration", "PutUseCaseForModelAccess", @@ -11693,8 +11778,11 @@ "UpdateAgentAlias", "UpdateAgentKnowledgeBase", "UpdateDataSource", + "UpdateFlow", + "UpdateFlowAlias", "UpdateGuardrail", "UpdateKnowledgeBase", + "UpdatePrompt", "UpdateProvisionedModelThroughput" ], "HasResource": true, @@ -12240,6 +12328,7 @@ "UpdateCloudFrontOriginAccessIdentity", "UpdateContinuousDeploymentPolicy", "UpdateDistribution", + "UpdateDistributionWithStagingConfig", "UpdateFieldLevelEncryptionConfig", "UpdateFieldLevelEncryptionProfile", "UpdateFunction", @@ -13566,6 +13655,7 @@ "CreateEventStream", "CreateIntegrationWorkflow", "CreateProfile", + "CreateSnapshot", "DeleteCalculatedAttributeDefinition", "DeleteDomain", "DeleteEventStream", @@ -13587,6 +13677,7 @@ "GetProfileObjectType", "GetProfileObjectTypeTemplate", "GetSimilarProfiles", + "GetSnapshot", "GetWorkflow", "GetWorkflowSteps", "ListAccountIntegrations", @@ -13697,6 +13788,7 @@ "CancelMetadataGenerationRun", "CancelSubscription", "CreateAsset", + "CreateAssetFilter", "CreateAssetRevision", "CreateAssetType", "CreateDataSource", @@ -13717,6 +13809,7 @@ "CreateSubscriptionTarget", "CreateUserProfile", "DeleteAsset", + "DeleteAssetFilter", "DeleteAssetType", "DeleteDataSource", "DeleteDomain", @@ -13738,6 +13831,7 @@ "DeleteTimeSeriesDataPoints", "DisassociateEnvironmentRole", "GetAsset", + "GetAssetFilter", "GetAssetType", "GetDataSource", "GetDataSourceRun", @@ -13755,6 +13849,7 @@ "GetGlossaryTerm", "GetGroupProfile", "GetIamPortalLoginUrl", + "GetLineageNode", "GetListing", "GetMetadataGenerationRun", "GetProject", @@ -13766,6 +13861,7 @@ "GetTimeSeriesDataPoint", "GetUserProfile", "ListAccountEnvironments", + "ListAssetFilters", "ListAssetRevisions", "ListDataSourceRunActivities", "ListDataSourceRuns", @@ -13778,6 +13874,7 @@ "ListEnvironmentProfiles", "ListEnvironments", "ListGroupsForUser", + "ListLineageNodeHistory", "ListMetadataGenerationRuns", "ListNotifications", "ListPolicyGrants", @@ -13790,6 +13887,7 @@ "ListTagsForResource", "ListTimeSeriesDataPoints", "ListWarehouseMetadata", + "PostLineageEvent", "PostTimeSeriesDataPoints", "ProvisionDomain", "PutDomainSharingPolicy", @@ -13811,6 +13909,7 @@ "StopMetadataGenerationRun", "TagResource", "UntagResource", + "UpdateAssetFilter", "UpdateDataSource", "UpdateDataSourceRunActivities", "UpdateDomain", @@ -14429,6 +14528,7 @@ "DescribeStoreImageTasks", "DescribeSubnets", "DescribeTags", + "DescribeTrafficMirrorFilterRules", "DescribeTrafficMirrorFilters", "DescribeTrafficMirrorSessions", "DescribeTrafficMirrorTargets", @@ -15590,6 +15690,7 @@ "eks:accessEntryType", "eks:accessScope", "eks:bootstrapClusterCreatorAdminPermissions", + "eks:bootstrapSelfManagedAddons", "eks:clientId", "eks:clusterName", "eks:issuerUrl", @@ -16665,6 +16766,7 @@ "DeleteEncoderConfiguration", "DeletePlaybackKeyPair", "DeletePlaybackRestrictionPolicy", + "DeletePublicKey", "DeleteRecordingConfiguration", "DeleteStage", "DeleteStorageConfiguration", @@ -16676,6 +16778,7 @@ "GetParticipant", "GetPlaybackKeyPair", "GetPlaybackRestrictionPolicy", + "GetPublicKey", "GetRecordingConfiguration", "GetStage", "GetStageSession", @@ -16684,6 +16787,7 @@ "GetStreamKey", "GetStreamSession", "ImportPlaybackKeyPair", + "ImportPublicKey", "ListChannels", "ListCompositions", "ListEncoderConfigurations", @@ -16691,6 +16795,7 @@ "ListParticipants", "ListPlaybackKeyPairs", "ListPlaybackRestrictionPolicies", + "ListPublicKeys", "ListRecordingConfigurations", "ListStageSessions", "ListStages", @@ -19174,6 +19279,7 @@ "ARNFormat": "arn:aws:qapps:${Region}:${Account}:${ResourceType}:${ResourcePath}", "ARNRegex": "^arn:aws:qapps:.+:.+:.+", "Actions": [ + "AssociateLibraryItemReview", "AssociateQAppWithUser", "CopyQApp", "CreateLibraryItem", @@ -19182,22 +19288,41 @@ "CreateSubscriptionToken", "DeleteLibraryItem", "DeleteQApp", + "DisassociateLibraryItemReview", "DisassociateQAppFromUser", "GetLibraryItem", "GetQApp", + "GetQAppSession", + "GetQAppSessionMetadata", + "ImportDocument", "ImportDocumentToQApp", "ImportDocumentToQAppSession", "ListLibraryItems", "ListQApps", + "ListTagsForResource", "PredictProblemStatementFromConversation", + "PredictQApp", "PredictQAppFromProblemStatement", "StartQAppSession", "StopQAppSession", + "TagResource", + "UntagResource", "UpdateLibraryItem", - "UpdateQApp" + "UpdateQApp", + "UpdateQAppSession", + "UpdateQAppSessionMetadata" ], "HasResource": true, - "StringPrefix": "qapps" + "StringPrefix": "qapps", + "conditionKeys": [ + "aws:RequestTag/${TagKey}", + "aws:ResourceTag/${TagKey}", + "aws:TagKeys", + "qapps:AppIsPublished", + "qapps:SessionIsShared", + "qapps:UserIsAppOwner", + "qapps:UserIsSessionModerator" + ] }, "Amazon Q in Connect": { "ARNFormat": "arn:aws:wisdom:${Region}:${Account}:${Resource}/${ResourceId}", @@ -19715,7 +19840,6 @@ "rds:EndpointType", "rds:ManageMasterUserPassword", "rds:MultiAz", - "rds:MultiTenant", "rds:Piops", "rds:StorageEncrypted", "rds:StorageSize", @@ -21114,6 +21238,7 @@ "CreateFeatureGroup", "CreateFlowDefinition", "CreateHub", + "CreateHubContentReference", "CreateHumanTaskUi", "CreateHyperParameterTuningJob", "CreateImage", @@ -21135,6 +21260,7 @@ "CreateMonitoringSchedule", "CreateNotebookInstance", "CreateNotebookInstanceLifecycleConfig", + "CreateOptimizationJob", "CreatePipeline", "CreatePresignedDomainUrl", "CreatePresignedMlflowTrackingServerUrl", @@ -21173,6 +21299,7 @@ "DeleteFlowDefinition", "DeleteHub", "DeleteHubContent", + "DeleteHubContentReference", "DeleteHumanLoop", "DeleteHumanTaskUi", "DeleteHyperParameterTuningJob", @@ -21193,6 +21320,7 @@ "DeleteMonitoringSchedule", "DeleteNotebookInstance", "DeleteNotebookInstanceLifecycleConfig", + "DeleteOptimization", "DeletePipeline", "DeleteProject", "DeleteRecord", @@ -21205,6 +21333,7 @@ "DeleteUserProfile", "DeleteWorkforce", "DeleteWorkteam", + "DeployHubModel", "DeregisterDevices", "DescribeAction", "DescribeAlgorithm", @@ -21254,6 +21383,7 @@ "DescribeMonitoringSchedule", "DescribeNotebookInstance", "DescribeNotebookInstanceLifecycleConfig", + "DescribeOptimizationJob", "DescribePipeline", "DescribePipelineDefinitionForExecution", "DescribePipelineExecution", @@ -21344,6 +21474,7 @@ "ListMonitoringSchedules", "ListNotebookInstanceLifecycleConfigs", "ListNotebookInstances", + "ListOptimizationJobs", "ListPipelineExecutionSteps", "ListPipelineExecutions", "ListPipelineParametersForExecution", @@ -21399,6 +21530,7 @@ "StopMlflowTrackingServer", "StopMonitoringSchedule", "StopNotebookInstance", + "StopOptimizationJob", "StopPipelineExecution", "StopProcessingJob", "StopTrainingJob", @@ -22528,6 +22660,7 @@ "CreateWorkspaceBundle", "CreateWorkspaceImage", "CreateWorkspaces", + "CreateWorkspacesPool", "DeleteAccountLinkInvitation", "DeleteClientBranding", "DeleteConnectClientAddIn", @@ -22559,6 +22692,8 @@ "DescribeWorkspaceSnapshots", "DescribeWorkspaces", "DescribeWorkspacesConnectionStatus", + "DescribeWorkspacesPoolSessions", + "DescribeWorkspacesPools", "DisassociateConnectionAlias", "DisassociateIpGroups", "DisassociateWorkspaceApplication", @@ -22573,6 +22708,7 @@ "ModifyClientProperties", "ModifySamlProperties", "ModifySelfservicePermissions", + "ModifyStreamingProperties", "ModifyWorkspaceAccessProperties", "ModifyWorkspaceCreationProperties", "ModifyWorkspaceProperties", @@ -22584,14 +22720,19 @@ "RestoreWorkspace", "RevokeIpRules", "StartWorkspaces", + "StartWorkspacesPool", "StopWorkspaces", + "StopWorkspacesPool", "Stream", "TerminateWorkspaces", + "TerminateWorkspacesPool", + "TerminateWorkspacesPoolSession", "UpdateConnectClientAddIn", "UpdateConnectionAliasPermission", "UpdateRulesOfIpGroup", "UpdateWorkspaceBundle", - "UpdateWorkspaceImagePermission" + "UpdateWorkspaceImagePermission", + "UpdateWorkspacesPool" ], "HasResource": true, "StringPrefix": "workspaces", diff --git a/src/cfnlint/data/DownloadsMetadata/123ba181485ae293d5bd09722af0c19d5a0d14c62111ff864923fc7b7960dda6.meta.json b/src/cfnlint/data/DownloadsMetadata/123ba181485ae293d5bd09722af0c19d5a0d14c62111ff864923fc7b7960dda6.meta.json index c9ef4b78ec..3d90a555da 100644 --- a/src/cfnlint/data/DownloadsMetadata/123ba181485ae293d5bd09722af0c19d5a0d14c62111ff864923fc7b7960dda6.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/123ba181485ae293d5bd09722af0c19d5a0d14c62111ff864923fc7b7960dda6.meta.json @@ -1 +1 @@ -{"etag": "\"2373adf8d7cf06125c9dce1f2c857fb1\"", "url": "https://schema.cloudformation.eu-south-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"cffefef14d086a601c159cd89d3bf9c8\"", "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 ee68280552..ae9b767a39 100644 --- a/src/cfnlint/data/DownloadsMetadata/164e1bfc2823fbd49d8d0e7163ebf32b2b6653d7edfe98a64577daae0b481c38.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/164e1bfc2823fbd49d8d0e7163ebf32b2b6653d7edfe98a64577daae0b481c38.meta.json @@ -1 +1 @@ -{"etag": "\"67c9b978deceb6cc693cd67ec7cd4c21\"", "url": "https://schema.cloudformation.cn-north-1.amazonaws.com.cn/CloudformationSchema.zip"} +{"etag": "\"55f676f5896e8379e84ff2c6199f17e8\"", "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 1e4dbdc455..b6af67321b 100644 --- a/src/cfnlint/data/DownloadsMetadata/18624fcc4a1c571691d10b2508e6be565e4752bbc10d9552de8df8f81348c42b.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/18624fcc4a1c571691d10b2508e6be565e4752bbc10d9552de8df8f81348c42b.meta.json @@ -1 +1 @@ -{"etag": "\"48543535f5029a41d3ae983bdd6ea038\"", "url": "https://schema.cloudformation.us-gov-east-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"cee39839675b8978bd1d56646aa306f1\"", "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 522eb92b3e..4c4544dffb 100644 --- a/src/cfnlint/data/DownloadsMetadata/227d6e59c86482f7153466759080e65963a1bf4413531ad420ff60a5a0d7965d.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/227d6e59c86482f7153466759080e65963a1bf4413531ad420ff60a5a0d7965d.meta.json @@ -1 +1 @@ -{"etag": "\"bc8b903d893fd8d1faa20752731e7f6c\"", "url": "https://schema.cloudformation.me-south-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"c69a9dfbd603f8a4982b96228a4f1e88\"", "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 1666735d6e..eb8fb3a713 100644 --- a/src/cfnlint/data/DownloadsMetadata/23be708e675cb6098b08969e4dbbc3f54cfc32461d10e077e7e5de1fc25d8b8f.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/23be708e675cb6098b08969e4dbbc3f54cfc32461d10e077e7e5de1fc25d8b8f.meta.json @@ -1 +1 @@ -{"etag": "\"cab7c18393919e17ef44d9fca8c62008\"", "url": "https://schema.cloudformation.us-gov-west-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"664947166f678e104d9a53587191cb93\"", "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 85b5f40a76..689ee7fff8 100644 --- a/src/cfnlint/data/DownloadsMetadata/26cf4521b683d3267844178a6bcd1d0ad3fe2e7838c23f6acd054944cb2b1618.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/26cf4521b683d3267844178a6bcd1d0ad3fe2e7838c23f6acd054944cb2b1618.meta.json @@ -1 +1 @@ -{"etag": "\"30ec741d8ffc9c9f83b4a7c029ed2ff9\"", "url": "https://schema.cloudformation.me-central-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"2744be9038f03bf530943bb5ccd95b9a\"", "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 b8e62cff6e..88e2fb62ce 100644 --- a/src/cfnlint/data/DownloadsMetadata/276cecfeb1ec5e608e2aaa06925a2da57e9907e4a512c10ddae70b98b4dada43.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/276cecfeb1ec5e608e2aaa06925a2da57e9907e4a512c10ddae70b98b4dada43.meta.json @@ -1 +1 @@ -{"etag": "\"65b40b4db962501650a1e88f9c9491ac\"", "url": "https://schema.cloudformation.eu-west-2.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"39f0dc865275b8434acc92c47c12c842\"", "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 b441766abd..95b4de8d69 100644 --- a/src/cfnlint/data/DownloadsMetadata/371e40c90b2e47c99f6e275e060ee83a3fbf0a0fb76625ba46dbe42abd34333c.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/371e40c90b2e47c99f6e275e060ee83a3fbf0a0fb76625ba46dbe42abd34333c.meta.json @@ -1 +1 @@ -{"etag": "\"4ddd178ed686d302b28a75561f297f95\"", "url": "https://schema.cloudformation.cn-northwest-1.amazonaws.com.cn/CloudformationSchema.zip"} +{"etag": "\"3353685ca908ceb18eaead223166c588\"", "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 4aaa344695..2d685967e5 100644 --- a/src/cfnlint/data/DownloadsMetadata/42155835f382d82337be3d2bf832bada376aa3fe15197e3bb0e9290ff8719b4e.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/42155835f382d82337be3d2bf832bada376aa3fe15197e3bb0e9290ff8719b4e.meta.json @@ -1 +1 @@ -{"etag": "\"dc5404a772c15b8a68868a65ba15544f\"", "url": "https://schema.cloudformation.af-south-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"5f24cfa6fd01aaa3913d67d753518080\"", "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 eb74d3dac6..8c4b62b35f 100644 --- a/src/cfnlint/data/DownloadsMetadata/42e9df95722b6524cd001503b6750b86f60a7b5acfc406ebb10d5748cbb8ed41.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/42e9df95722b6524cd001503b6750b86f60a7b5acfc406ebb10d5748cbb8ed41.meta.json @@ -1 +1 @@ -{"etag": "\"c56a8a5d2e628612f524187501577893\"", "url": "https://schema.cloudformation.us-west-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"5fbe6da56fe7b9687c5ad5a21ef8538a\"", "url": "https://schema.cloudformation.us-west-1.amazonaws.com/CloudformationSchema.zip"} diff --git a/src/cfnlint/data/DownloadsMetadata/4fbb29b69678acdd32c5758ed43ead9bf35136af536e92a84ccbaf062c315066.meta.json b/src/cfnlint/data/DownloadsMetadata/4fbb29b69678acdd32c5758ed43ead9bf35136af536e92a84ccbaf062c315066.meta.json index 27f387929d..dd4b8b5b4f 100644 --- a/src/cfnlint/data/DownloadsMetadata/4fbb29b69678acdd32c5758ed43ead9bf35136af536e92a84ccbaf062c315066.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/4fbb29b69678acdd32c5758ed43ead9bf35136af536e92a84ccbaf062c315066.meta.json @@ -1 +1 @@ -{"etag": "\"1cf3966c0b851cceaf2c43737516f6bc\"", "url": "https://schema.cloudformation.eu-central-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"7ca60bf7dbeff2644204427adc40fe42\"", "url": "https://schema.cloudformation.eu-central-1.amazonaws.com/CloudformationSchema.zip"} diff --git a/src/cfnlint/data/DownloadsMetadata/56584c7d00e444de640bef01fc2c630804470222e5e4c690bacef5312891581d.meta.json b/src/cfnlint/data/DownloadsMetadata/56584c7d00e444de640bef01fc2c630804470222e5e4c690bacef5312891581d.meta.json index 1478cb6daf..5f3843399c 100644 --- a/src/cfnlint/data/DownloadsMetadata/56584c7d00e444de640bef01fc2c630804470222e5e4c690bacef5312891581d.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/56584c7d00e444de640bef01fc2c630804470222e5e4c690bacef5312891581d.meta.json @@ -1 +1 @@ -{"etag": "\"a7fa297fa2a6635990643cc1cd54931c\"", "url": "https://schema.cloudformation.ap-south-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"b72c560e4f56a786dbec577a9e725674\"", "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 2a09cbcc72..2101baf5e8 100644 --- a/src/cfnlint/data/DownloadsMetadata/583721567eccd1d5855daa623819df1a646b563d773e34b020d0ddeab2fe195b.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/583721567eccd1d5855daa623819df1a646b563d773e34b020d0ddeab2fe195b.meta.json @@ -1 +1 @@ -{"etag": "\"2c03e5e2eea0225c25bfe55e7ecd2ec0\"", "url": "https://schema.cloudformation.ap-southeast-4.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"f902c7e2b3f2e7c5d4bf9d1fe3f83ab2\"", "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 107a96b831..9d189bfbe3 100644 --- a/src/cfnlint/data/DownloadsMetadata/6316ae24f21cb620947aa250bebbee69548d44cc32e246ec9d7742088a2c17f8.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/6316ae24f21cb620947aa250bebbee69548d44cc32e246ec9d7742088a2c17f8.meta.json @@ -1 +1 @@ -{"etag": "\"3aac9fdc3d33e5e188e16743f2d9a9b9\"", "url": "https://schema.cloudformation.us-east-2.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"4313cd5b8928196eacca6a40867156d7\"", "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 10f836912a..97178043bc 100644 --- a/src/cfnlint/data/DownloadsMetadata/81e1cc73ff2daf7d1e1eca393c2d1fdd98ac34d4109512e0e0947ef752dcb9c9.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/81e1cc73ff2daf7d1e1eca393c2d1fdd98ac34d4109512e0e0947ef752dcb9c9.meta.json @@ -1 +1 @@ -{"etag": "\"2953b2130f61e477a2cca97c933c7e58\"", "url": "https://schema.cloudformation.ap-southeast-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"7ac5a4b8e306962681fb208ffa430d50\"", "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 0fecd296c0..c7106cc826 100644 --- a/src/cfnlint/data/DownloadsMetadata/8adeabf0a09b37a8ed924aea799005947e4a4542365d35fd75466abcf306eeca.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/8adeabf0a09b37a8ed924aea799005947e4a4542365d35fd75466abcf306eeca.meta.json @@ -1 +1 @@ -{"etag": "\"c0ccb1515dc61c6dfdfdc9fc581dc78c\"", "url": "https://schema.cloudformation.ap-northeast-2.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"8c1c8d0440beb779976e75466f194dc0\"", "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 0cdc2bed0d..b6ea90f1dc 100644 --- a/src/cfnlint/data/DownloadsMetadata/8b8b0cee4df1ef0947a8289e8ec0c67869b7533eabab32ecfc0a00cb19e55a5f.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/8b8b0cee4df1ef0947a8289e8ec0c67869b7533eabab32ecfc0a00cb19e55a5f.meta.json @@ -1 +1 @@ -{"etag": "\"e3e6971ddb1d7074935f1a3a0401793f\"", "url": "https://schema.cloudformation.ap-southeast-3.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"5370dd25eb2bb60db28344984a9f2646\"", "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 29c4a06fd8..c649a3f94a 100644 --- a/src/cfnlint/data/DownloadsMetadata/b1f069477cd577cde04dfe1b323c0bb0e783fe32b6bb6b13774c32fcca1d303a.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/b1f069477cd577cde04dfe1b323c0bb0e783fe32b6bb6b13774c32fcca1d303a.meta.json @@ -1 +1 @@ -{"etag": "\"31700fd8a370285e8b40e508ed95cc66\"", "url": "https://schema.cloudformation.ap-east-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"c7fc4b7c83e2167bba332e4a19da3b64\"", "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 85646aecb2..fe42c0f61f 100644 --- a/src/cfnlint/data/DownloadsMetadata/c7ada205073390b33b7593ef8f304b9705f2567698dfdfa979bf0ccdb68cb856.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/c7ada205073390b33b7593ef8f304b9705f2567698dfdfa979bf0ccdb68cb856.meta.json @@ -1 +1 @@ -{"etag": "\"60754739767993c2810368068dbcc157\"", "url": "https://schema.cloudformation.sa-east-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"ac9ced423809b3de671c00eea15e4d3b\"", "url": "https://schema.cloudformation.sa-east-1.amazonaws.com/CloudformationSchema.zip"} diff --git a/src/cfnlint/data/DownloadsMetadata/d24ce9a45a014b1ff04d479422ea956e92030ae5c03d7451980a15735e557edb.meta.json b/src/cfnlint/data/DownloadsMetadata/d24ce9a45a014b1ff04d479422ea956e92030ae5c03d7451980a15735e557edb.meta.json index 61a94ed2a6..3a9aee0685 100644 --- a/src/cfnlint/data/DownloadsMetadata/d24ce9a45a014b1ff04d479422ea956e92030ae5c03d7451980a15735e557edb.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/d24ce9a45a014b1ff04d479422ea956e92030ae5c03d7451980a15735e557edb.meta.json @@ -1 +1 @@ -{"etag": "\"977b33ce91a84c2dea11a3ddda9fd55d\"", "url": "https://schema.cloudformation.ap-southeast-2.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"b344266a932e307d1f0c7b6a6d78ac20\"", "url": "https://schema.cloudformation.ap-southeast-2.amazonaws.com/CloudformationSchema.zip"} diff --git a/src/cfnlint/data/DownloadsMetadata/d85e2e061cacfcffe4902adb1074a04e6bb7f975b606f8db57532faddfcdd8c8.meta.json b/src/cfnlint/data/DownloadsMetadata/d85e2e061cacfcffe4902adb1074a04e6bb7f975b606f8db57532faddfcdd8c8.meta.json index 81c4509e4d..fa72a703ce 100644 --- a/src/cfnlint/data/DownloadsMetadata/d85e2e061cacfcffe4902adb1074a04e6bb7f975b606f8db57532faddfcdd8c8.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/d85e2e061cacfcffe4902adb1074a04e6bb7f975b606f8db57532faddfcdd8c8.meta.json @@ -1 +1 @@ -{"etag": "\"ca78dae4bedfa5f1574d2d0cafd31df2\"", "url": "https://schema.cloudformation.ca-west-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"086babfb7ae9a3e6e9ee89df46102b85\"", "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 2195b762dd..aa7dc55a02 100644 --- a/src/cfnlint/data/DownloadsMetadata/d8e41d35f4f8922b66525dea2c66d72a73ff097c685cda0a63c08a6416dc58ed.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/d8e41d35f4f8922b66525dea2c66d72a73ff097c685cda0a63c08a6416dc58ed.meta.json @@ -1 +1 @@ -{"etag": "\"c6afc35dcb4060472288f5f79ace93c7\"", "url": "https://schema.cloudformation.eu-central-2.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"8891207e8c8b50811609873053e6fbd9\"", "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 bafd38da9b..5a65e6ce60 100644 --- a/src/cfnlint/data/DownloadsMetadata/dd98171253ebc36f5b78e247f3132b5f25c8d66a1f84939600616bab42579541.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/dd98171253ebc36f5b78e247f3132b5f25c8d66a1f84939600616bab42579541.meta.json @@ -1 +1 @@ -{"etag": "\"4f0d3f9d9d917e31bc773ab8c275a489\"", "url": "https://schema.cloudformation.eu-north-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"f75506350f5ef65a8b28876639162955\"", "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 c18cf268d6..ef266a2724 100644 --- a/src/cfnlint/data/DownloadsMetadata/df4945435575c690a2651bb31e7a9b48972142778e1ff452383ede2ad4bac3d7.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/df4945435575c690a2651bb31e7a9b48972142778e1ff452383ede2ad4bac3d7.meta.json @@ -1 +1 @@ -{"etag": "\"c40bbb3c3cbbb88055cfc0aab0def317\"", "url": "https://schema.cloudformation.eu-south-2.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"122a33af274ff1e6daa81cdc867741ae\"", "url": "https://schema.cloudformation.eu-south-2.amazonaws.com/CloudformationSchema.zip"} diff --git a/src/cfnlint/data/DownloadsMetadata/e5301e07e25fa2c35d2c7e1f9dcf720826b315ef6f38515840537c02de23abe2.meta.json b/src/cfnlint/data/DownloadsMetadata/e5301e07e25fa2c35d2c7e1f9dcf720826b315ef6f38515840537c02de23abe2.meta.json index f6da0d683c..003673f71e 100644 --- a/src/cfnlint/data/DownloadsMetadata/e5301e07e25fa2c35d2c7e1f9dcf720826b315ef6f38515840537c02de23abe2.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/e5301e07e25fa2c35d2c7e1f9dcf720826b315ef6f38515840537c02de23abe2.meta.json @@ -1 +1 @@ -{"etag": "\"b49a9caf8598f62ed28fe33a2518820c\"", "url": "https://schema.cloudformation.ca-central-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"e201293dfc8891a9e6f94cfd380fc87e\"", "url": "https://schema.cloudformation.ca-central-1.amazonaws.com/CloudformationSchema.zip"} diff --git a/src/cfnlint/data/DownloadsMetadata/e8b3dacc1675b478e8c7392b51f41467cf908a34e6b4c3fb3e97e2b584f651ca.meta.json b/src/cfnlint/data/DownloadsMetadata/e8b3dacc1675b478e8c7392b51f41467cf908a34e6b4c3fb3e97e2b584f651ca.meta.json index e48e7b48e9..75d80b5cf6 100644 --- a/src/cfnlint/data/DownloadsMetadata/e8b3dacc1675b478e8c7392b51f41467cf908a34e6b4c3fb3e97e2b584f651ca.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/e8b3dacc1675b478e8c7392b51f41467cf908a34e6b4c3fb3e97e2b584f651ca.meta.json @@ -1 +1 @@ -{"etag": "\"4bc172340dbd2e7ed79f5ea7813f51d3\"", "url": "https://schema.cloudformation.eu-west-3.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"a5a80d34f3750a454b76809972bcdaad\"", "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 ef81c1f985..70f4efdbb5 100644 --- a/src/cfnlint/data/DownloadsMetadata/ea0f7b8f144feb225afe73a24dfdf993318c41c71c21b0a17d4f68d82c5aee21.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/ea0f7b8f144feb225afe73a24dfdf993318c41c71c21b0a17d4f68d82c5aee21.meta.json @@ -1 +1 @@ -{"etag": "\"1359f3b0008cf457fba000bcfe4fbfaa\"", "url": "https://schema.cloudformation.ap-northeast-3.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"8016bf66e4c4779840d7496ff7f53ddb\"", "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 37ce1713c6..2598f780d1 100644 --- a/src/cfnlint/data/DownloadsMetadata/f1896c9151984eec294af1eddf64260f6cd7e4ced378cacdb93f76ed227b5c5d.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/f1896c9151984eec294af1eddf64260f6cd7e4ced378cacdb93f76ed227b5c5d.meta.json @@ -1 +1 @@ -{"etag": "\"458423c371125738648c161b14c0c8e9\"", "url": "https://schema.cloudformation.us-west-2.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"c14d566af707d3737806b39fd042a1ff\"", "url": "https://schema.cloudformation.us-west-2.amazonaws.com/CloudformationSchema.zip"} diff --git a/src/cfnlint/data/DownloadsMetadata/f49718b210ea89ff182ae51cb7004366b9e2e4d5e38136a5be83b6a55e7a82a1.meta.json b/src/cfnlint/data/DownloadsMetadata/f49718b210ea89ff182ae51cb7004366b9e2e4d5e38136a5be83b6a55e7a82a1.meta.json index 82c981dadb..9177eae930 100644 --- a/src/cfnlint/data/DownloadsMetadata/f49718b210ea89ff182ae51cb7004366b9e2e4d5e38136a5be83b6a55e7a82a1.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/f49718b210ea89ff182ae51cb7004366b9e2e4d5e38136a5be83b6a55e7a82a1.meta.json @@ -1 +1 @@ -{"etag": "\"12afd8a5ebea6e0353fbb5dc5b1c9112\"", "url": "https://schema.cloudformation.ap-south-2.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"339cc8f1798e75cdc07510f0ccf8b027\"", "url": "https://schema.cloudformation.ap-south-2.amazonaws.com/CloudformationSchema.zip"} diff --git a/src/cfnlint/data/DownloadsMetadata/f54eee6f8ad9619f41835b700369cdbb41c64a9c91b2fa5b4928c0d9b2f780b0.meta.json b/src/cfnlint/data/DownloadsMetadata/f54eee6f8ad9619f41835b700369cdbb41c64a9c91b2fa5b4928c0d9b2f780b0.meta.json index 2dd2315a5a..030041cda3 100644 --- a/src/cfnlint/data/DownloadsMetadata/f54eee6f8ad9619f41835b700369cdbb41c64a9c91b2fa5b4928c0d9b2f780b0.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/f54eee6f8ad9619f41835b700369cdbb41c64a9c91b2fa5b4928c0d9b2f780b0.meta.json @@ -1 +1 @@ -{"etag": "\"6e8e5964bd493cfa06c83b4c97c16eff\"", "url": "https://schema.cloudformation.us-east-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"ef681c475d71cb930e40edfcbf3e74da\"", "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 533fbcb314..ae3ca2a19c 100644 --- a/src/cfnlint/data/DownloadsMetadata/f6f35a459759d6c132fa2fe798cefbd5b2d398fe33547eed780b9b70f10eb4a2.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/f6f35a459759d6c132fa2fe798cefbd5b2d398fe33547eed780b9b70f10eb4a2.meta.json @@ -1 +1 @@ -{"etag": "\"181aede7280dd536c360729bef58da02\"", "url": "https://schema.cloudformation.il-central-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"e3f5554ebd96c86581c17edbcdb00a58\"", "url": "https://schema.cloudformation.il-central-1.amazonaws.com/CloudformationSchema.zip"} diff --git a/src/cfnlint/data/DownloadsMetadata/fa657351d8e89c40ba6b82c4b1f5e1b5e50a1638ffe0a5dba0d8805c190a05f8.meta.json b/src/cfnlint/data/DownloadsMetadata/fa657351d8e89c40ba6b82c4b1f5e1b5e50a1638ffe0a5dba0d8805c190a05f8.meta.json index 8e7ea9135b..9cd03294aa 100644 --- a/src/cfnlint/data/DownloadsMetadata/fa657351d8e89c40ba6b82c4b1f5e1b5e50a1638ffe0a5dba0d8805c190a05f8.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/fa657351d8e89c40ba6b82c4b1f5e1b5e50a1638ffe0a5dba0d8805c190a05f8.meta.json @@ -1 +1 @@ -{"etag": "\"6b10a6a0aa4fe4344beeab0a839c8a1b\"", "url": "https://schema.cloudformation.eu-west-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"b4e78b503b1dc106f9afaac0f1729aa5\"", "url": "https://schema.cloudformation.eu-west-1.amazonaws.com/CloudformationSchema.zip"} diff --git a/src/cfnlint/data/DownloadsMetadata/ff02b7d808c1c00053f09aa43a50addf3b69878d351cffd417dc9a457df808af.meta.json b/src/cfnlint/data/DownloadsMetadata/ff02b7d808c1c00053f09aa43a50addf3b69878d351cffd417dc9a457df808af.meta.json index 7361cfda26..f3a4cc5416 100644 --- a/src/cfnlint/data/DownloadsMetadata/ff02b7d808c1c00053f09aa43a50addf3b69878d351cffd417dc9a457df808af.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/ff02b7d808c1c00053f09aa43a50addf3b69878d351cffd417dc9a457df808af.meta.json @@ -1 +1 @@ -{"etag": "\"0e03e16190480ec990f94ee81d553509\"", "url": "https://schema.cloudformation.ap-northeast-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"023e0cc1526592a354c93bfdab453e5f\"", "url": "https://schema.cloudformation.ap-northeast-1.amazonaws.com/CloudformationSchema.zip"} diff --git a/src/cfnlint/data/Serverless/ManagedPolicies.json b/src/cfnlint/data/Serverless/ManagedPolicies.json index 0b749994a8..6cc362a27f 100644 --- a/src/cfnlint/data/Serverless/ManagedPolicies.json +++ b/src/cfnlint/data/Serverless/ManagedPolicies.json @@ -436,6 +436,15 @@ "AWSProtonServiceGitSyncServiceRolePolicy": "arn:aws:iam::aws:policy/aws-service-role/AWSProtonServiceGitSyncServiceRolePolicy", "AWSProtonSyncServiceRolePolicy": "arn:aws:iam::aws:policy/aws-service-role/AWSProtonSyncServiceRolePolicy", "AWSPurchaseOrdersServiceRolePolicy": "arn:aws:iam::aws:policy/AWSPurchaseOrdersServiceRolePolicy", + "AWSQuickSetupCFGCPacksPermissionsBoundary": "arn:aws:iam::aws:policy/AWSQuickSetupCFGCPacksPermissionsBoundary", + "AWSQuickSetupDeploymentRolePolicy": "arn:aws:iam::aws:policy/AWSQuickSetupDeploymentRolePolicy", + "AWSQuickSetupDevOpsGuruPermissionsBoundary": "arn:aws:iam::aws:policy/AWSQuickSetupDevOpsGuruPermissionsBoundary", + "AWSQuickSetupDistributorPermissionsBoundary": "arn:aws:iam::aws:policy/AWSQuickSetupDistributorPermissionsBoundary", + "AWSQuickSetupPatchPolicyBaselineAccess": "arn:aws:iam::aws:policy/AWSQuickSetupPatchPolicyBaselineAccess", + "AWSQuickSetupPatchPolicyDeploymentRolePolicy": "arn:aws:iam::aws:policy/AWSQuickSetupPatchPolicyDeploymentRolePolicy", + "AWSQuickSetupPatchPolicyPermissionsBoundary": "arn:aws:iam::aws:policy/AWSQuickSetupPatchPolicyPermissionsBoundary", + "AWSQuickSetupSSMHostMgmtPermissionsBoundary": "arn:aws:iam::aws:policy/AWSQuickSetupSSMHostMgmtPermissionsBoundary", + "AWSQuickSetupSchedulerPermissionsBoundary": "arn:aws:iam::aws:policy/AWSQuickSetupSchedulerPermissionsBoundary", "AWSQuickSightAssetBundleExportPolicy": "arn:aws:iam::aws:policy/AWSQuickSightAssetBundleExportPolicy", "AWSQuickSightAssetBundleImportPolicy": "arn:aws:iam::aws:policy/AWSQuickSightAssetBundleImportPolicy", "AWSQuickSightDescribeRDS": "arn:aws:iam::aws:policy/service-role/AWSQuickSightDescribeRDS", @@ -525,6 +534,8 @@ "AWSSupportServiceRolePolicy": "arn:aws:iam::aws:policy/aws-service-role/AWSSupportServiceRolePolicy", "AWSSystemsManagerAccountDiscoveryServicePolicy": "arn:aws:iam::aws:policy/aws-service-role/AWSSystemsManagerAccountDiscoveryServicePolicy", "AWSSystemsManagerChangeManagementServicePolicy": "arn:aws:iam::aws:policy/aws-service-role/AWSSystemsManagerChangeManagementServicePolicy", + "AWSSystemsManagerEnableConfigRecordingExecutionPolicy": "arn:aws:iam::aws:policy/AWSSystemsManagerEnableConfigRecordingExecutionPolicy", + "AWSSystemsManagerEnableExplorerExecutionPolicy": "arn:aws:iam::aws:policy/AWSSystemsManagerEnableExplorerExecutionPolicy", "AWSSystemsManagerForSAPFullAccess": "arn:aws:iam::aws:policy/AWSSystemsManagerForSAPFullAccess", "AWSSystemsManagerForSAPReadOnlyAccess": "arn:aws:iam::aws:policy/AWSSystemsManagerForSAPReadOnlyAccess", "AWSSystemsManagerOpsDataSyncServiceRolePolicy": "arn:aws:iam::aws:policy/aws-service-role/AWSSystemsManagerOpsDataSyncServiceRolePolicy", @@ -876,6 +887,7 @@ "AmazonPrometheusQueryAccess": "arn:aws:iam::aws:policy/AmazonPrometheusQueryAccess", "AmazonPrometheusRemoteWriteAccess": "arn:aws:iam::aws:policy/AmazonPrometheusRemoteWriteAccess", "AmazonPrometheusScraperServiceRolePolicy": "arn:aws:iam::aws:policy/aws-service-role/AmazonPrometheusScraperServiceRolePolicy", + "AmazonQDeveloperAccess": "arn:aws:iam::aws:policy/AmazonQDeveloperAccess", "AmazonQFullAccess": "arn:aws:iam::aws:policy/AmazonQFullAccess", "AmazonQLDBConsoleFullAccess": "arn:aws:iam::aws:policy/AmazonQLDBConsoleFullAccess", "AmazonQLDBFullAccess": "arn:aws:iam::aws:policy/AmazonQLDBFullAccess", @@ -1006,6 +1018,7 @@ "AmazonWorkMailReadOnlyAccess": "arn:aws:iam::aws:policy/AmazonWorkMailReadOnlyAccess", "AmazonWorkSpacesAdmin": "arn:aws:iam::aws:policy/AmazonWorkSpacesAdmin", "AmazonWorkSpacesApplicationManagerAdminAccess": "arn:aws:iam::aws:policy/AmazonWorkSpacesApplicationManagerAdminAccess", + "AmazonWorkSpacesPoolServiceAccess": "arn:aws:iam::aws:policy/AmazonWorkSpacesPoolServiceAccess", "AmazonWorkSpacesSecureBrowserReadOnly": "arn:aws:iam::aws:policy/AmazonWorkSpacesSecureBrowserReadOnly", "AmazonWorkSpacesSelfServiceAccess": "arn:aws:iam::aws:policy/AmazonWorkSpacesSelfServiceAccess", "AmazonWorkSpacesServiceAccess": "arn:aws:iam::aws:policy/AmazonWorkSpacesServiceAccess", @@ -1018,6 +1031,7 @@ "AppIntegrationsServiceLinkedRolePolicy": "arn:aws:iam::aws:policy/aws-service-role/AppIntegrationsServiceLinkedRolePolicy", "AppRunnerNetworkingServiceRolePolicy": "arn:aws:iam::aws:policy/aws-service-role/AppRunnerNetworkingServiceRolePolicy", "AppRunnerServiceRolePolicy": "arn:aws:iam::aws:policy/aws-service-role/AppRunnerServiceRolePolicy", + "AppStudioServiceRolePolicy": "arn:aws:iam::aws:policy/aws-service-role/AppStudioServiceRolePolicy", "ApplicationAutoScalingForAmazonAppStreamAccess": "arn:aws:iam::aws:policy/service-role/ApplicationAutoScalingForAmazonAppStreamAccess", "ApplicationDiscoveryServiceContinuousExportServiceRolePolicy": "arn:aws:iam::aws:policy/aws-service-role/ApplicationDiscoveryServiceContinuousExportServiceRolePolicy", "AutoScalingConsoleFullAccess": "arn:aws:iam::aws:policy/AutoScalingConsoleFullAccess", @@ -1178,6 +1192,7 @@ "Route53RecoveryReadinessServiceRolePolicy": "arn:aws:iam::aws:policy/aws-service-role/Route53RecoveryReadinessServiceRolePolicy", "Route53ResolverServiceRolePolicy": "arn:aws:iam::aws:policy/aws-service-role/Route53ResolverServiceRolePolicy", "S3StorageLensServiceRolePolicy": "arn:aws:iam::aws:policy/aws-service-role/S3StorageLensServiceRolePolicy", + "SSMQuickSetupRolePolicy": "arn:aws:iam::aws:policy/aws-service-role/SSMQuickSetupRolePolicy", "SecretsManagerReadWrite": "arn:aws:iam::aws:policy/SecretsManagerReadWrite", "SecurityAudit": "arn:aws:iam::aws:policy/SecurityAudit", "SecurityLakeServiceLinkedRole": "arn:aws:iam::aws:policy/aws-service-role/SecurityLakeServiceLinkedRole", diff --git a/src/cfnlint/data/schemas/extensions/aws_dax_cluster/nodetype_enum.json b/src/cfnlint/data/schemas/extensions/aws_dax_cluster/nodetype_enum.json index c1fa805c1b..ca9442f6f5 100644 --- a/src/cfnlint/data/schemas/extensions/aws_dax_cluster/nodetype_enum.json +++ b/src/cfnlint/data/schemas/extensions/aws_dax_cluster/nodetype_enum.json @@ -241,11 +241,6 @@ }, "sa-east-1": { "enum": [ - "dax.r3.2xlarge", - "dax.r3.4xlarge", - "dax.r3.8xlarge", - "dax.r3.large", - "dax.r3.xlarge", "dax.r4.16xlarge", "dax.r4.2xlarge", "dax.r4.4xlarge", diff --git a/src/cfnlint/data/schemas/extensions/aws_ec2_instance/instancetype_enum.json b/src/cfnlint/data/schemas/extensions/aws_ec2_instance/instancetype_enum.json index 6573b69fad..bf5e16c908 100644 --- a/src/cfnlint/data/schemas/extensions/aws_ec2_instance/instancetype_enum.json +++ b/src/cfnlint/data/schemas/extensions/aws_ec2_instance/instancetype_enum.json @@ -717,6 +717,18 @@ "r7iz.metal-16xl", "r7iz.metal-32xl", "r7iz.xlarge", + "r8g.12xlarge", + "r8g.16xlarge", + "r8g.24xlarge", + "r8g.2xlarge", + "r8g.48xlarge", + "r8g.4xlarge", + "r8g.8xlarge", + "r8g.large", + "r8g.medium", + "r8g.metal-24xl", + "r8g.metal-48xl", + "r8g.xlarge", "t1.micro", "t2.2xlarge", "t2.large", @@ -1529,6 +1541,18 @@ "r7iz.metal-16xl", "r7iz.metal-32xl", "r7iz.xlarge", + "r8g.12xlarge", + "r8g.16xlarge", + "r8g.24xlarge", + "r8g.2xlarge", + "r8g.48xlarge", + "r8g.4xlarge", + "r8g.8xlarge", + "r8g.large", + "r8g.medium", + "r8g.metal-24xl", + "r8g.metal-48xl", + "r8g.xlarge", "t1.micro", "t2.2xlarge", "t2.large", @@ -2341,6 +2365,18 @@ "r7iz.metal-16xl", "r7iz.metal-32xl", "r7iz.xlarge", + "r8g.12xlarge", + "r8g.16xlarge", + "r8g.24xlarge", + "r8g.2xlarge", + "r8g.48xlarge", + "r8g.4xlarge", + "r8g.8xlarge", + "r8g.large", + "r8g.medium", + "r8g.metal-24xl", + "r8g.metal-48xl", + "r8g.xlarge", "t1.micro", "t2.2xlarge", "t2.large", @@ -3153,6 +3189,18 @@ "r7iz.metal-16xl", "r7iz.metal-32xl", "r7iz.xlarge", + "r8g.12xlarge", + "r8g.16xlarge", + "r8g.24xlarge", + "r8g.2xlarge", + "r8g.48xlarge", + "r8g.4xlarge", + "r8g.8xlarge", + "r8g.large", + "r8g.medium", + "r8g.metal-24xl", + "r8g.metal-48xl", + "r8g.xlarge", "t1.micro", "t2.2xlarge", "t2.large", @@ -3965,6 +4013,18 @@ "r7iz.metal-16xl", "r7iz.metal-32xl", "r7iz.xlarge", + "r8g.12xlarge", + "r8g.16xlarge", + "r8g.24xlarge", + "r8g.2xlarge", + "r8g.48xlarge", + "r8g.4xlarge", + "r8g.8xlarge", + "r8g.large", + "r8g.medium", + "r8g.metal-24xl", + "r8g.metal-48xl", + "r8g.xlarge", "t1.micro", "t2.2xlarge", "t2.large", @@ -4777,6 +4837,18 @@ "r7iz.metal-16xl", "r7iz.metal-32xl", "r7iz.xlarge", + "r8g.12xlarge", + "r8g.16xlarge", + "r8g.24xlarge", + "r8g.2xlarge", + "r8g.48xlarge", + "r8g.4xlarge", + "r8g.8xlarge", + "r8g.large", + "r8g.medium", + "r8g.metal-24xl", + "r8g.metal-48xl", + "r8g.xlarge", "t1.micro", "t2.2xlarge", "t2.large", @@ -5589,6 +5661,18 @@ "r7iz.metal-16xl", "r7iz.metal-32xl", "r7iz.xlarge", + "r8g.12xlarge", + "r8g.16xlarge", + "r8g.24xlarge", + "r8g.2xlarge", + "r8g.48xlarge", + "r8g.4xlarge", + "r8g.8xlarge", + "r8g.large", + "r8g.medium", + "r8g.metal-24xl", + "r8g.metal-48xl", + "r8g.xlarge", "t1.micro", "t2.2xlarge", "t2.large", @@ -6401,6 +6485,18 @@ "r7iz.metal-16xl", "r7iz.metal-32xl", "r7iz.xlarge", + "r8g.12xlarge", + "r8g.16xlarge", + "r8g.24xlarge", + "r8g.2xlarge", + "r8g.48xlarge", + "r8g.4xlarge", + "r8g.8xlarge", + "r8g.large", + "r8g.medium", + "r8g.metal-24xl", + "r8g.metal-48xl", + "r8g.xlarge", "t1.micro", "t2.2xlarge", "t2.large", @@ -7213,6 +7309,18 @@ "r7iz.metal-16xl", "r7iz.metal-32xl", "r7iz.xlarge", + "r8g.12xlarge", + "r8g.16xlarge", + "r8g.24xlarge", + "r8g.2xlarge", + "r8g.48xlarge", + "r8g.4xlarge", + "r8g.8xlarge", + "r8g.large", + "r8g.medium", + "r8g.metal-24xl", + "r8g.metal-48xl", + "r8g.xlarge", "t1.micro", "t2.2xlarge", "t2.large", @@ -8025,6 +8133,18 @@ "r7iz.metal-16xl", "r7iz.metal-32xl", "r7iz.xlarge", + "r8g.12xlarge", + "r8g.16xlarge", + "r8g.24xlarge", + "r8g.2xlarge", + "r8g.48xlarge", + "r8g.4xlarge", + "r8g.8xlarge", + "r8g.large", + "r8g.medium", + "r8g.metal-24xl", + "r8g.metal-48xl", + "r8g.xlarge", "t1.micro", "t2.2xlarge", "t2.large", @@ -8837,6 +8957,18 @@ "r7iz.metal-16xl", "r7iz.metal-32xl", "r7iz.xlarge", + "r8g.12xlarge", + "r8g.16xlarge", + "r8g.24xlarge", + "r8g.2xlarge", + "r8g.48xlarge", + "r8g.4xlarge", + "r8g.8xlarge", + "r8g.large", + "r8g.medium", + "r8g.metal-24xl", + "r8g.metal-48xl", + "r8g.xlarge", "t1.micro", "t2.2xlarge", "t2.large", @@ -9649,6 +9781,18 @@ "r7iz.metal-16xl", "r7iz.metal-32xl", "r7iz.xlarge", + "r8g.12xlarge", + "r8g.16xlarge", + "r8g.24xlarge", + "r8g.2xlarge", + "r8g.48xlarge", + "r8g.4xlarge", + "r8g.8xlarge", + "r8g.large", + "r8g.medium", + "r8g.metal-24xl", + "r8g.metal-48xl", + "r8g.xlarge", "t1.micro", "t2.2xlarge", "t2.large", @@ -10461,6 +10605,18 @@ "r7iz.metal-16xl", "r7iz.metal-32xl", "r7iz.xlarge", + "r8g.12xlarge", + "r8g.16xlarge", + "r8g.24xlarge", + "r8g.2xlarge", + "r8g.48xlarge", + "r8g.4xlarge", + "r8g.8xlarge", + "r8g.large", + "r8g.medium", + "r8g.metal-24xl", + "r8g.metal-48xl", + "r8g.xlarge", "t1.micro", "t2.2xlarge", "t2.large", @@ -11273,6 +11429,18 @@ "r7iz.metal-16xl", "r7iz.metal-32xl", "r7iz.xlarge", + "r8g.12xlarge", + "r8g.16xlarge", + "r8g.24xlarge", + "r8g.2xlarge", + "r8g.48xlarge", + "r8g.4xlarge", + "r8g.8xlarge", + "r8g.large", + "r8g.medium", + "r8g.metal-24xl", + "r8g.metal-48xl", + "r8g.xlarge", "t1.micro", "t2.2xlarge", "t2.large", @@ -12085,6 +12253,18 @@ "r7iz.metal-16xl", "r7iz.metal-32xl", "r7iz.xlarge", + "r8g.12xlarge", + "r8g.16xlarge", + "r8g.24xlarge", + "r8g.2xlarge", + "r8g.48xlarge", + "r8g.4xlarge", + "r8g.8xlarge", + "r8g.large", + "r8g.medium", + "r8g.metal-24xl", + "r8g.metal-48xl", + "r8g.xlarge", "t1.micro", "t2.2xlarge", "t2.large", @@ -12897,6 +13077,18 @@ "r7iz.metal-16xl", "r7iz.metal-32xl", "r7iz.xlarge", + "r8g.12xlarge", + "r8g.16xlarge", + "r8g.24xlarge", + "r8g.2xlarge", + "r8g.48xlarge", + "r8g.4xlarge", + "r8g.8xlarge", + "r8g.large", + "r8g.medium", + "r8g.metal-24xl", + "r8g.metal-48xl", + "r8g.xlarge", "t1.micro", "t2.2xlarge", "t2.large", @@ -13709,6 +13901,18 @@ "r7iz.metal-16xl", "r7iz.metal-32xl", "r7iz.xlarge", + "r8g.12xlarge", + "r8g.16xlarge", + "r8g.24xlarge", + "r8g.2xlarge", + "r8g.48xlarge", + "r8g.4xlarge", + "r8g.8xlarge", + "r8g.large", + "r8g.medium", + "r8g.metal-24xl", + "r8g.metal-48xl", + "r8g.xlarge", "t1.micro", "t2.2xlarge", "t2.large", @@ -14521,6 +14725,18 @@ "r7iz.metal-16xl", "r7iz.metal-32xl", "r7iz.xlarge", + "r8g.12xlarge", + "r8g.16xlarge", + "r8g.24xlarge", + "r8g.2xlarge", + "r8g.48xlarge", + "r8g.4xlarge", + "r8g.8xlarge", + "r8g.large", + "r8g.medium", + "r8g.metal-24xl", + "r8g.metal-48xl", + "r8g.xlarge", "t1.micro", "t2.2xlarge", "t2.large", @@ -15333,6 +15549,18 @@ "r7iz.metal-16xl", "r7iz.metal-32xl", "r7iz.xlarge", + "r8g.12xlarge", + "r8g.16xlarge", + "r8g.24xlarge", + "r8g.2xlarge", + "r8g.48xlarge", + "r8g.4xlarge", + "r8g.8xlarge", + "r8g.large", + "r8g.medium", + "r8g.metal-24xl", + "r8g.metal-48xl", + "r8g.xlarge", "t1.micro", "t2.2xlarge", "t2.large", @@ -16145,6 +16373,18 @@ "r7iz.metal-16xl", "r7iz.metal-32xl", "r7iz.xlarge", + "r8g.12xlarge", + "r8g.16xlarge", + "r8g.24xlarge", + "r8g.2xlarge", + "r8g.48xlarge", + "r8g.4xlarge", + "r8g.8xlarge", + "r8g.large", + "r8g.medium", + "r8g.metal-24xl", + "r8g.metal-48xl", + "r8g.xlarge", "t1.micro", "t2.2xlarge", "t2.large", @@ -16957,6 +17197,18 @@ "r7iz.metal-16xl", "r7iz.metal-32xl", "r7iz.xlarge", + "r8g.12xlarge", + "r8g.16xlarge", + "r8g.24xlarge", + "r8g.2xlarge", + "r8g.48xlarge", + "r8g.4xlarge", + "r8g.8xlarge", + "r8g.large", + "r8g.medium", + "r8g.metal-24xl", + "r8g.metal-48xl", + "r8g.xlarge", "t1.micro", "t2.2xlarge", "t2.large", @@ -17769,6 +18021,18 @@ "r7iz.metal-16xl", "r7iz.metal-32xl", "r7iz.xlarge", + "r8g.12xlarge", + "r8g.16xlarge", + "r8g.24xlarge", + "r8g.2xlarge", + "r8g.48xlarge", + "r8g.4xlarge", + "r8g.8xlarge", + "r8g.large", + "r8g.medium", + "r8g.metal-24xl", + "r8g.metal-48xl", + "r8g.xlarge", "t1.micro", "t2.2xlarge", "t2.large", @@ -18581,6 +18845,18 @@ "r7iz.metal-16xl", "r7iz.metal-32xl", "r7iz.xlarge", + "r8g.12xlarge", + "r8g.16xlarge", + "r8g.24xlarge", + "r8g.2xlarge", + "r8g.48xlarge", + "r8g.4xlarge", + "r8g.8xlarge", + "r8g.large", + "r8g.medium", + "r8g.metal-24xl", + "r8g.metal-48xl", + "r8g.xlarge", "t1.micro", "t2.2xlarge", "t2.large", @@ -19393,6 +19669,18 @@ "r7iz.metal-16xl", "r7iz.metal-32xl", "r7iz.xlarge", + "r8g.12xlarge", + "r8g.16xlarge", + "r8g.24xlarge", + "r8g.2xlarge", + "r8g.48xlarge", + "r8g.4xlarge", + "r8g.8xlarge", + "r8g.large", + "r8g.medium", + "r8g.metal-24xl", + "r8g.metal-48xl", + "r8g.xlarge", "t1.micro", "t2.2xlarge", "t2.large", @@ -20205,6 +20493,18 @@ "r7iz.metal-16xl", "r7iz.metal-32xl", "r7iz.xlarge", + "r8g.12xlarge", + "r8g.16xlarge", + "r8g.24xlarge", + "r8g.2xlarge", + "r8g.48xlarge", + "r8g.4xlarge", + "r8g.8xlarge", + "r8g.large", + "r8g.medium", + "r8g.metal-24xl", + "r8g.metal-48xl", + "r8g.xlarge", "t1.micro", "t2.2xlarge", "t2.large", @@ -21017,6 +21317,18 @@ "r7iz.metal-16xl", "r7iz.metal-32xl", "r7iz.xlarge", + "r8g.12xlarge", + "r8g.16xlarge", + "r8g.24xlarge", + "r8g.2xlarge", + "r8g.48xlarge", + "r8g.4xlarge", + "r8g.8xlarge", + "r8g.large", + "r8g.medium", + "r8g.metal-24xl", + "r8g.metal-48xl", + "r8g.xlarge", "t1.micro", "t2.2xlarge", "t2.large", @@ -21829,6 +22141,18 @@ "r7iz.metal-16xl", "r7iz.metal-32xl", "r7iz.xlarge", + "r8g.12xlarge", + "r8g.16xlarge", + "r8g.24xlarge", + "r8g.2xlarge", + "r8g.48xlarge", + "r8g.4xlarge", + "r8g.8xlarge", + "r8g.large", + "r8g.medium", + "r8g.metal-24xl", + "r8g.metal-48xl", + "r8g.xlarge", "t1.micro", "t2.2xlarge", "t2.large", @@ -22641,6 +22965,18 @@ "r7iz.metal-16xl", "r7iz.metal-32xl", "r7iz.xlarge", + "r8g.12xlarge", + "r8g.16xlarge", + "r8g.24xlarge", + "r8g.2xlarge", + "r8g.48xlarge", + "r8g.4xlarge", + "r8g.8xlarge", + "r8g.large", + "r8g.medium", + "r8g.metal-24xl", + "r8g.metal-48xl", + "r8g.xlarge", "t1.micro", "t2.2xlarge", "t2.large", @@ -23453,6 +23789,18 @@ "r7iz.metal-16xl", "r7iz.metal-32xl", "r7iz.xlarge", + "r8g.12xlarge", + "r8g.16xlarge", + "r8g.24xlarge", + "r8g.2xlarge", + "r8g.48xlarge", + "r8g.4xlarge", + "r8g.8xlarge", + "r8g.large", + "r8g.medium", + "r8g.metal-24xl", + "r8g.metal-48xl", + "r8g.xlarge", "t1.micro", "t2.2xlarge", "t2.large", @@ -24265,6 +24613,18 @@ "r7iz.metal-16xl", "r7iz.metal-32xl", "r7iz.xlarge", + "r8g.12xlarge", + "r8g.16xlarge", + "r8g.24xlarge", + "r8g.2xlarge", + "r8g.48xlarge", + "r8g.4xlarge", + "r8g.8xlarge", + "r8g.large", + "r8g.medium", + "r8g.metal-24xl", + "r8g.metal-48xl", + "r8g.xlarge", "t1.micro", "t2.2xlarge", "t2.large", @@ -25077,6 +25437,18 @@ "r7iz.metal-16xl", "r7iz.metal-32xl", "r7iz.xlarge", + "r8g.12xlarge", + "r8g.16xlarge", + "r8g.24xlarge", + "r8g.2xlarge", + "r8g.48xlarge", + "r8g.4xlarge", + "r8g.8xlarge", + "r8g.large", + "r8g.medium", + "r8g.metal-24xl", + "r8g.metal-48xl", + "r8g.xlarge", "t1.micro", "t2.2xlarge", "t2.large", @@ -25889,6 +26261,18 @@ "r7iz.metal-16xl", "r7iz.metal-32xl", "r7iz.xlarge", + "r8g.12xlarge", + "r8g.16xlarge", + "r8g.24xlarge", + "r8g.2xlarge", + "r8g.48xlarge", + "r8g.4xlarge", + "r8g.8xlarge", + "r8g.large", + "r8g.medium", + "r8g.metal-24xl", + "r8g.metal-48xl", + "r8g.xlarge", "t1.micro", "t2.2xlarge", "t2.large", @@ -26701,6 +27085,18 @@ "r7iz.metal-16xl", "r7iz.metal-32xl", "r7iz.xlarge", + "r8g.12xlarge", + "r8g.16xlarge", + "r8g.24xlarge", + "r8g.2xlarge", + "r8g.48xlarge", + "r8g.4xlarge", + "r8g.8xlarge", + "r8g.large", + "r8g.medium", + "r8g.metal-24xl", + "r8g.metal-48xl", + "r8g.xlarge", "t1.micro", "t2.2xlarge", "t2.large", diff --git a/src/cfnlint/data/schemas/extensions/aws_ec2_securitygroup/all_to_and_from_ports.json b/src/cfnlint/data/schemas/extensions/aws_ec2_securitygroup/all_to_and_from_ports.json index fd589e80a2..dcfd0da178 100644 --- a/src/cfnlint/data/schemas/extensions/aws_ec2_securitygroup/all_to_and_from_ports.json +++ b/src/cfnlint/data/schemas/extensions/aws_ec2_securitygroup/all_to_and_from_ports.json @@ -1,60 +1,103 @@ { - "allOf": [ - { - "if": { - "properties": { - "ToPort": { - "enum": [ - -1, - "-1" - ] - } + "else": { + "allOf": [ + { + "if": { + "properties": { + "ToPort": { + "enum": [ + -1, + "-1" + ] + } + }, + "required": [ + "ToPort" + ] }, - "required": [ - "ToPort" - ] + "then": { + "properties": { + "FromPort": { + "enum": [ + -1, + "-1" + ] + } + }, + "required": [ + "FromPort" + ] + } }, - "then": { - "properties": { - "FromPort": { - "enum": [ - -1, - "-1" - ] - } + { + "if": { + "properties": { + "FromPort": { + "enum": [ + -1, + "-1" + ] + } + }, + "required": [ + "FromPort" + ] }, - "required": [ - "FromPort" + "then": { + "properties": { + "ToPort": { + "enum": [ + -1, + "-1" + ] + } + }, + "required": [ + "ToPort" + ] + } + } + ] + }, + "if": { + "properties": { + "IpProtocol": { + "enum": [ + "1", + "icmp" ] } }, - { - "if": { - "properties": { - "FromPort": { - "enum": [ - -1, - "-1" - ] - } - }, - "required": [ - "FromPort" - ] + "required": [ + "IpProtocol" + ] + }, + "then": { + "if": { + "properties": { + "FromPort": { + "enum": [ + -1, + "-1" + ] + } }, - "then": { - "properties": { - "ToPort": { - "enum": [ - -1, - "-1" - ] - } - }, - "required": [ - "ToPort" - ] - } + "required": [ + "FromPort" + ] + }, + "then": { + "properties": { + "ToPort": { + "enum": [ + -1, + "-1" + ] + } + }, + "required": [ + "ToPort" + ] } - ] + } } diff --git a/src/cfnlint/data/schemas/extensions/aws_rds_dbcluster/engine_version.json b/src/cfnlint/data/schemas/extensions/aws_rds_dbcluster/engine_version.json index ac7a6c5624..3d01e43500 100644 --- a/src/cfnlint/data/schemas/extensions/aws_rds_dbcluster/engine_version.json +++ b/src/cfnlint/data/schemas/extensions/aws_rds_dbcluster/engine_version.json @@ -58,6 +58,7 @@ "5.7.mysql_aurora.2.12.0", "5.7.mysql_aurora.2.12.1", "5.7.mysql_aurora.2.12.2", + "5.7.mysql_aurora.2.12.3", "8.0.mysql_aurora.3.03.0", "8.0.mysql_aurora.3.03.1", "8.0.mysql_aurora.3.03.2", @@ -65,6 +66,7 @@ "8.0.mysql_aurora.3.04.0", "8.0.mysql_aurora.3.04.1", "8.0.mysql_aurora.3.04.2", + "8.0.mysql_aurora.3.04.3", "8.0.mysql_aurora.3.05.2", "8.0.mysql_aurora.3.06.0", "8.0.mysql_aurora.3.06.1", diff --git a/src/cfnlint/data/schemas/extensions/aws_rds_dbinstance/aurora_exclusive.json b/src/cfnlint/data/schemas/extensions/aws_rds_dbinstance/aurora_exclusive.json index 42efdcd482..bee9daf906 100644 --- a/src/cfnlint/data/schemas/extensions/aws_rds_dbinstance/aurora_exclusive.json +++ b/src/cfnlint/data/schemas/extensions/aws_rds_dbinstance/aurora_exclusive.json @@ -1,7 +1,6 @@ { "additionalProperties": true, "description": "When creating an aurora DBInstance don't specify 'AllocatedStorage', 'BackupRetentionPeriod', 'CopyTagsToSnapshot', 'DeletionProtection', 'EnableIAMDatabaseAuthentication', 'MasterUserPassword', or 'StorageEncrypted'", - "else": {}, "if": { "properties": { "Engine": { diff --git a/src/cfnlint/data/schemas/extensions/aws_rds_dbinstance/dbinstanceclass_enum.json b/src/cfnlint/data/schemas/extensions/aws_rds_dbinstance/dbinstanceclass_enum.json index 977da2ad4f..60d0876303 100644 --- a/src/cfnlint/data/schemas/extensions/aws_rds_dbinstance/dbinstanceclass_enum.json +++ b/src/cfnlint/data/schemas/extensions/aws_rds_dbinstance/dbinstanceclass_enum.json @@ -91269,6 +91269,13 @@ "db.m6g.8xlarge", "db.m6g.large", "db.m6g.xlarge", + "db.m6gd.12xlarge", + "db.m6gd.16xlarge", + "db.m6gd.2xlarge", + "db.m6gd.4xlarge", + "db.m6gd.8xlarge", + "db.m6gd.large", + "db.m6gd.xlarge", "db.r4.16xlarge", "db.r4.2xlarge", "db.r4.4xlarge", @@ -91290,6 +91297,13 @@ "db.r6g.8xlarge", "db.r6g.large", "db.r6g.xlarge", + "db.r6gd.12xlarge", + "db.r6gd.16xlarge", + "db.r6gd.2xlarge", + "db.r6gd.4xlarge", + "db.r6gd.8xlarge", + "db.r6gd.large", + "db.r6gd.xlarge", "db.t2.2xlarge", "db.t2.large", "db.t2.medium", @@ -91351,6 +91365,13 @@ "db.m6g.8xlarge", "db.m6g.large", "db.m6g.xlarge", + "db.m6gd.12xlarge", + "db.m6gd.16xlarge", + "db.m6gd.2xlarge", + "db.m6gd.4xlarge", + "db.m6gd.8xlarge", + "db.m6gd.large", + "db.m6gd.xlarge", "db.r4.16xlarge", "db.r4.2xlarge", "db.r4.4xlarge", @@ -91372,6 +91393,13 @@ "db.r6g.8xlarge", "db.r6g.large", "db.r6g.xlarge", + "db.r6gd.12xlarge", + "db.r6gd.16xlarge", + "db.r6gd.2xlarge", + "db.r6gd.4xlarge", + "db.r6gd.8xlarge", + "db.r6gd.large", + "db.r6gd.xlarge", "db.t2.2xlarge", "db.t2.large", "db.t2.medium", @@ -91430,6 +91458,13 @@ "db.m6g.8xlarge", "db.m6g.large", "db.m6g.xlarge", + "db.m6gd.12xlarge", + "db.m6gd.16xlarge", + "db.m6gd.2xlarge", + "db.m6gd.4xlarge", + "db.m6gd.8xlarge", + "db.m6gd.large", + "db.m6gd.xlarge", "db.r4.16xlarge", "db.r4.2xlarge", "db.r4.4xlarge", @@ -91451,6 +91486,13 @@ "db.r6g.8xlarge", "db.r6g.large", "db.r6g.xlarge", + "db.r6gd.12xlarge", + "db.r6gd.16xlarge", + "db.r6gd.2xlarge", + "db.r6gd.4xlarge", + "db.r6gd.8xlarge", + "db.r6gd.large", + "db.r6gd.xlarge", "db.t2.2xlarge", "db.t2.large", "db.t2.medium", @@ -91512,6 +91554,13 @@ "db.m6g.8xlarge", "db.m6g.large", "db.m6g.xlarge", + "db.m6gd.12xlarge", + "db.m6gd.16xlarge", + "db.m6gd.2xlarge", + "db.m6gd.4xlarge", + "db.m6gd.8xlarge", + "db.m6gd.large", + "db.m6gd.xlarge", "db.r4.16xlarge", "db.r4.2xlarge", "db.r4.4xlarge", @@ -91533,6 +91582,13 @@ "db.r6g.8xlarge", "db.r6g.large", "db.r6g.xlarge", + "db.r6gd.12xlarge", + "db.r6gd.16xlarge", + "db.r6gd.2xlarge", + "db.r6gd.4xlarge", + "db.r6gd.8xlarge", + "db.r6gd.large", + "db.r6gd.xlarge", "db.t2.2xlarge", "db.t2.large", "db.t2.medium", @@ -91599,6 +91655,13 @@ "db.m6g.8xlarge", "db.m6g.large", "db.m6g.xlarge", + "db.m6gd.12xlarge", + "db.m6gd.16xlarge", + "db.m6gd.2xlarge", + "db.m6gd.4xlarge", + "db.m6gd.8xlarge", + "db.m6gd.large", + "db.m6gd.xlarge", "db.r4.16xlarge", "db.r4.2xlarge", "db.r4.4xlarge", @@ -91628,6 +91691,13 @@ "db.r6g.8xlarge", "db.r6g.large", "db.r6g.xlarge", + "db.r6gd.12xlarge", + "db.r6gd.16xlarge", + "db.r6gd.2xlarge", + "db.r6gd.4xlarge", + "db.r6gd.8xlarge", + "db.r6gd.large", + "db.r6gd.xlarge", "db.t2.2xlarge", "db.t2.large", "db.t2.medium", @@ -91697,6 +91767,13 @@ "db.m6g.8xlarge", "db.m6g.large", "db.m6g.xlarge", + "db.m6gd.12xlarge", + "db.m6gd.16xlarge", + "db.m6gd.2xlarge", + "db.m6gd.4xlarge", + "db.m6gd.8xlarge", + "db.m6gd.large", + "db.m6gd.xlarge", "db.r4.16xlarge", "db.r4.2xlarge", "db.r4.4xlarge", @@ -91726,6 +91803,13 @@ "db.r6g.8xlarge", "db.r6g.large", "db.r6g.xlarge", + "db.r6gd.12xlarge", + "db.r6gd.16xlarge", + "db.r6gd.2xlarge", + "db.r6gd.4xlarge", + "db.r6gd.8xlarge", + "db.r6gd.large", + "db.r6gd.xlarge", "db.t2.2xlarge", "db.t2.large", "db.t2.medium", @@ -92148,6 +92232,13 @@ "db.m6g.8xlarge", "db.m6g.large", "db.m6g.xlarge", + "db.m6gd.12xlarge", + "db.m6gd.16xlarge", + "db.m6gd.2xlarge", + "db.m6gd.4xlarge", + "db.m6gd.8xlarge", + "db.m6gd.large", + "db.m6gd.xlarge", "db.r4.16xlarge", "db.r4.2xlarge", "db.r4.4xlarge", @@ -92177,6 +92268,13 @@ "db.r6g.8xlarge", "db.r6g.large", "db.r6g.xlarge", + "db.r6gd.12xlarge", + "db.r6gd.16xlarge", + "db.r6gd.2xlarge", + "db.r6gd.4xlarge", + "db.r6gd.8xlarge", + "db.r6gd.large", + "db.r6gd.xlarge", "db.t2.2xlarge", "db.t2.large", "db.t2.medium", @@ -92246,6 +92344,13 @@ "db.m6g.8xlarge", "db.m6g.large", "db.m6g.xlarge", + "db.m6gd.12xlarge", + "db.m6gd.16xlarge", + "db.m6gd.2xlarge", + "db.m6gd.4xlarge", + "db.m6gd.8xlarge", + "db.m6gd.large", + "db.m6gd.xlarge", "db.r4.16xlarge", "db.r4.2xlarge", "db.r4.4xlarge", @@ -92275,6 +92380,13 @@ "db.r6g.8xlarge", "db.r6g.large", "db.r6g.xlarge", + "db.r6gd.12xlarge", + "db.r6gd.16xlarge", + "db.r6gd.2xlarge", + "db.r6gd.4xlarge", + "db.r6gd.8xlarge", + "db.r6gd.large", + "db.r6gd.xlarge", "db.t2.2xlarge", "db.t2.large", "db.t2.medium", @@ -92333,6 +92445,13 @@ "db.m6g.8xlarge", "db.m6g.large", "db.m6g.xlarge", + "db.m6gd.12xlarge", + "db.m6gd.16xlarge", + "db.m6gd.2xlarge", + "db.m6gd.4xlarge", + "db.m6gd.8xlarge", + "db.m6gd.large", + "db.m6gd.xlarge", "db.r4.16xlarge", "db.r4.2xlarge", "db.r4.4xlarge", @@ -92354,6 +92473,13 @@ "db.r6g.8xlarge", "db.r6g.large", "db.r6g.xlarge", + "db.r6gd.12xlarge", + "db.r6gd.16xlarge", + "db.r6gd.2xlarge", + "db.r6gd.4xlarge", + "db.r6gd.8xlarge", + "db.r6gd.large", + "db.r6gd.xlarge", "db.t2.2xlarge", "db.t2.large", "db.t2.medium", @@ -92415,6 +92541,13 @@ "db.m6g.8xlarge", "db.m6g.large", "db.m6g.xlarge", + "db.m6gd.12xlarge", + "db.m6gd.16xlarge", + "db.m6gd.2xlarge", + "db.m6gd.4xlarge", + "db.m6gd.8xlarge", + "db.m6gd.large", + "db.m6gd.xlarge", "db.r4.16xlarge", "db.r4.2xlarge", "db.r4.4xlarge", @@ -92436,6 +92569,13 @@ "db.r6g.8xlarge", "db.r6g.large", "db.r6g.xlarge", + "db.r6gd.12xlarge", + "db.r6gd.16xlarge", + "db.r6gd.2xlarge", + "db.r6gd.4xlarge", + "db.r6gd.8xlarge", + "db.r6gd.large", + "db.r6gd.xlarge", "db.t2.2xlarge", "db.t2.large", "db.t2.medium", @@ -92494,6 +92634,13 @@ "db.m6g.8xlarge", "db.m6g.large", "db.m6g.xlarge", + "db.m6gd.12xlarge", + "db.m6gd.16xlarge", + "db.m6gd.2xlarge", + "db.m6gd.4xlarge", + "db.m6gd.8xlarge", + "db.m6gd.large", + "db.m6gd.xlarge", "db.r4.16xlarge", "db.r4.2xlarge", "db.r4.4xlarge", @@ -92515,6 +92662,13 @@ "db.r6g.8xlarge", "db.r6g.large", "db.r6g.xlarge", + "db.r6gd.12xlarge", + "db.r6gd.16xlarge", + "db.r6gd.2xlarge", + "db.r6gd.4xlarge", + "db.r6gd.8xlarge", + "db.r6gd.large", + "db.r6gd.xlarge", "db.t2.2xlarge", "db.t2.large", "db.t2.medium", @@ -92576,6 +92730,13 @@ "db.m6g.8xlarge", "db.m6g.large", "db.m6g.xlarge", + "db.m6gd.12xlarge", + "db.m6gd.16xlarge", + "db.m6gd.2xlarge", + "db.m6gd.4xlarge", + "db.m6gd.8xlarge", + "db.m6gd.large", + "db.m6gd.xlarge", "db.r4.16xlarge", "db.r4.2xlarge", "db.r4.4xlarge", @@ -92597,6 +92758,13 @@ "db.r6g.8xlarge", "db.r6g.large", "db.r6g.xlarge", + "db.r6gd.12xlarge", + "db.r6gd.16xlarge", + "db.r6gd.2xlarge", + "db.r6gd.4xlarge", + "db.r6gd.8xlarge", + "db.r6gd.large", + "db.r6gd.xlarge", "db.t2.2xlarge", "db.t2.large", "db.t2.medium", @@ -93341,6 +93509,13 @@ "db.m6g.8xlarge", "db.m6g.large", "db.m6g.xlarge", + "db.m6gd.12xlarge", + "db.m6gd.16xlarge", + "db.m6gd.2xlarge", + "db.m6gd.4xlarge", + "db.m6gd.8xlarge", + "db.m6gd.large", + "db.m6gd.xlarge", "db.r3.2xlarge", "db.r3.4xlarge", "db.r3.8xlarge", @@ -93367,6 +93542,13 @@ "db.r6g.8xlarge", "db.r6g.large", "db.r6g.xlarge", + "db.r6gd.12xlarge", + "db.r6gd.16xlarge", + "db.r6gd.2xlarge", + "db.r6gd.4xlarge", + "db.r6gd.8xlarge", + "db.r6gd.large", + "db.r6gd.xlarge", "db.t2.2xlarge", "db.t2.large", "db.t2.medium", @@ -93438,6 +93620,13 @@ "db.m6g.8xlarge", "db.m6g.large", "db.m6g.xlarge", + "db.m6gd.12xlarge", + "db.m6gd.16xlarge", + "db.m6gd.2xlarge", + "db.m6gd.4xlarge", + "db.m6gd.8xlarge", + "db.m6gd.large", + "db.m6gd.xlarge", "db.r3.2xlarge", "db.r3.4xlarge", "db.r3.8xlarge", @@ -93464,6 +93653,13 @@ "db.r6g.8xlarge", "db.r6g.large", "db.r6g.xlarge", + "db.r6gd.12xlarge", + "db.r6gd.16xlarge", + "db.r6gd.2xlarge", + "db.r6gd.4xlarge", + "db.r6gd.8xlarge", + "db.r6gd.large", + "db.r6gd.xlarge", "db.t2.2xlarge", "db.t2.large", "db.t2.medium", @@ -93547,6 +93743,13 @@ "db.m6g.8xlarge", "db.m6g.large", "db.m6g.xlarge", + "db.m6gd.12xlarge", + "db.m6gd.16xlarge", + "db.m6gd.2xlarge", + "db.m6gd.4xlarge", + "db.m6gd.8xlarge", + "db.m6gd.large", + "db.m6gd.xlarge", "db.r3.2xlarge", "db.r3.4xlarge", "db.r3.8xlarge", @@ -93581,6 +93784,13 @@ "db.r6g.8xlarge", "db.r6g.large", "db.r6g.xlarge", + "db.r6gd.12xlarge", + "db.r6gd.16xlarge", + "db.r6gd.2xlarge", + "db.r6gd.4xlarge", + "db.r6gd.8xlarge", + "db.r6gd.large", + "db.r6gd.xlarge", "db.t1.micro", "db.t2.2xlarge", "db.t2.large", @@ -93668,6 +93878,13 @@ "db.m6g.8xlarge", "db.m6g.large", "db.m6g.xlarge", + "db.m6gd.12xlarge", + "db.m6gd.16xlarge", + "db.m6gd.2xlarge", + "db.m6gd.4xlarge", + "db.m6gd.8xlarge", + "db.m6gd.large", + "db.m6gd.xlarge", "db.r3.2xlarge", "db.r3.4xlarge", "db.r3.8xlarge", @@ -93702,6 +93919,13 @@ "db.r6g.8xlarge", "db.r6g.large", "db.r6g.xlarge", + "db.r6gd.12xlarge", + "db.r6gd.16xlarge", + "db.r6gd.2xlarge", + "db.r6gd.4xlarge", + "db.r6gd.8xlarge", + "db.r6gd.large", + "db.r6gd.xlarge", "db.t1.micro", "db.t2.2xlarge", "db.t2.large", @@ -93778,6 +94002,13 @@ "db.m6g.8xlarge", "db.m6g.large", "db.m6g.xlarge", + "db.m6gd.12xlarge", + "db.m6gd.16xlarge", + "db.m6gd.2xlarge", + "db.m6gd.4xlarge", + "db.m6gd.8xlarge", + "db.m6gd.large", + "db.m6gd.xlarge", "db.r3.2xlarge", "db.r3.4xlarge", "db.r3.8xlarge", @@ -93804,6 +94035,13 @@ "db.r6g.8xlarge", "db.r6g.large", "db.r6g.xlarge", + "db.r6gd.12xlarge", + "db.r6gd.16xlarge", + "db.r6gd.2xlarge", + "db.r6gd.4xlarge", + "db.r6gd.8xlarge", + "db.r6gd.large", + "db.r6gd.xlarge", "db.t1.micro", "db.t2.2xlarge", "db.t2.large", @@ -93883,6 +94121,13 @@ "db.m6g.8xlarge", "db.m6g.large", "db.m6g.xlarge", + "db.m6gd.12xlarge", + "db.m6gd.16xlarge", + "db.m6gd.2xlarge", + "db.m6gd.4xlarge", + "db.m6gd.8xlarge", + "db.m6gd.large", + "db.m6gd.xlarge", "db.r3.2xlarge", "db.r3.4xlarge", "db.r3.8xlarge", @@ -93909,6 +94154,13 @@ "db.r6g.8xlarge", "db.r6g.large", "db.r6g.xlarge", + "db.r6gd.12xlarge", + "db.r6gd.16xlarge", + "db.r6gd.2xlarge", + "db.r6gd.4xlarge", + "db.r6gd.8xlarge", + "db.r6gd.large", + "db.r6gd.xlarge", "db.t1.micro", "db.t2.2xlarge", "db.t2.large", @@ -94586,7 +94838,7 @@ "type": "string" }, "Engine": { - "const": "mysql" + "const": "mariadb" }, "LicenseModel": false }, @@ -94599,13 +94851,6 @@ "properties": { "DBInstanceClass": { "enum": [ - "db.m1.large", - "db.m1.medium", - "db.m1.small", - "db.m1.xlarge", - "db.m2.2xlarge", - "db.m2.4xlarge", - "db.m2.xlarge", "db.m3.2xlarge", "db.m3.large", "db.m3.medium", @@ -94631,6 +94876,13 @@ "db.m6g.8xlarge", "db.m6g.large", "db.m6g.xlarge", + "db.m6gd.12xlarge", + "db.m6gd.16xlarge", + "db.m6gd.2xlarge", + "db.m6gd.4xlarge", + "db.m6gd.8xlarge", + "db.m6gd.large", + "db.m6gd.xlarge", "db.r3.2xlarge", "db.r3.4xlarge", "db.r3.8xlarge", @@ -94657,8 +94909,13 @@ "db.r6g.8xlarge", "db.r6g.large", "db.r6g.xlarge", - "db.r6i.32xlarge", - "db.t1.micro", + "db.r6gd.12xlarge", + "db.r6gd.16xlarge", + "db.r6gd.2xlarge", + "db.r6gd.4xlarge", + "db.r6gd.8xlarge", + "db.r6gd.large", + "db.r6gd.xlarge", "db.t2.2xlarge", "db.t2.large", "db.t2.medium", @@ -94689,7 +94946,7 @@ "type": "string" }, "Engine": { - "const": "mysql" + "const": "mariadb" }, "LicenseModel": { "const": "general-public-license" @@ -94705,13 +94962,6 @@ "properties": { "DBInstanceClass": { "enum": [ - "db.m1.large", - "db.m1.medium", - "db.m1.small", - "db.m1.xlarge", - "db.m2.2xlarge", - "db.m2.4xlarge", - "db.m2.xlarge", "db.m3.2xlarge", "db.m3.large", "db.m3.medium", @@ -94737,6 +94987,13 @@ "db.m6g.8xlarge", "db.m6g.large", "db.m6g.xlarge", + "db.m6gd.12xlarge", + "db.m6gd.16xlarge", + "db.m6gd.2xlarge", + "db.m6gd.4xlarge", + "db.m6gd.8xlarge", + "db.m6gd.large", + "db.m6gd.xlarge", "db.r3.2xlarge", "db.r3.4xlarge", "db.r3.8xlarge", @@ -94763,8 +95020,13 @@ "db.r6g.8xlarge", "db.r6g.large", "db.r6g.xlarge", - "db.r6i.32xlarge", - "db.t1.micro", + "db.r6gd.12xlarge", + "db.r6gd.16xlarge", + "db.r6gd.2xlarge", + "db.r6gd.4xlarge", + "db.r6gd.8xlarge", + "db.r6gd.large", + "db.r6gd.xlarge", "db.t2.2xlarge", "db.t2.large", "db.t2.medium", @@ -94795,7 +95057,7 @@ "type": "string" }, "Engine": { - "const": "postgres" + "const": "mysql" }, "LicenseModel": false }, @@ -94833,14 +95095,6 @@ "db.m5.8xlarge", "db.m5.large", "db.m5.xlarge", - "db.m5d.12xlarge", - "db.m5d.16xlarge", - "db.m5d.24xlarge", - "db.m5d.2xlarge", - "db.m5d.4xlarge", - "db.m5d.8xlarge", - "db.m5d.large", - "db.m5d.xlarge", "db.m6g.12xlarge", "db.m6g.16xlarge", "db.m6g.2xlarge", @@ -94848,6 +95102,13 @@ "db.m6g.8xlarge", "db.m6g.large", "db.m6g.xlarge", + "db.m6gd.12xlarge", + "db.m6gd.16xlarge", + "db.m6gd.2xlarge", + "db.m6gd.4xlarge", + "db.m6gd.8xlarge", + "db.m6gd.large", + "db.m6gd.xlarge", "db.r3.2xlarge", "db.r3.4xlarge", "db.r3.8xlarge", @@ -94867,14 +95128,6 @@ "db.r5.8xlarge", "db.r5.large", "db.r5.xlarge", - "db.r5d.12xlarge", - "db.r5d.16xlarge", - "db.r5d.24xlarge", - "db.r5d.2xlarge", - "db.r5d.4xlarge", - "db.r5d.8xlarge", - "db.r5d.large", - "db.r5d.xlarge", "db.r6g.12xlarge", "db.r6g.16xlarge", "db.r6g.2xlarge", @@ -94882,6 +95135,14 @@ "db.r6g.8xlarge", "db.r6g.large", "db.r6g.xlarge", + "db.r6gd.12xlarge", + "db.r6gd.16xlarge", + "db.r6gd.2xlarge", + "db.r6gd.4xlarge", + "db.r6gd.8xlarge", + "db.r6gd.large", + "db.r6gd.xlarge", + "db.r6i.32xlarge", "db.t1.micro", "db.t2.2xlarge", "db.t2.large", @@ -94913,7 +95174,7 @@ "type": "string" }, "Engine": { - "const": "postgres" + "const": "mysql" }, "LicenseModel": { "const": "general-public-license" @@ -94954,14 +95215,6 @@ "db.m5.8xlarge", "db.m5.large", "db.m5.xlarge", - "db.m5d.12xlarge", - "db.m5d.16xlarge", - "db.m5d.24xlarge", - "db.m5d.2xlarge", - "db.m5d.4xlarge", - "db.m5d.8xlarge", - "db.m5d.large", - "db.m5d.xlarge", "db.m6g.12xlarge", "db.m6g.16xlarge", "db.m6g.2xlarge", @@ -94969,6 +95222,13 @@ "db.m6g.8xlarge", "db.m6g.large", "db.m6g.xlarge", + "db.m6gd.12xlarge", + "db.m6gd.16xlarge", + "db.m6gd.2xlarge", + "db.m6gd.4xlarge", + "db.m6gd.8xlarge", + "db.m6gd.large", + "db.m6gd.xlarge", "db.r3.2xlarge", "db.r3.4xlarge", "db.r3.8xlarge", @@ -94988,14 +95248,6 @@ "db.r5.8xlarge", "db.r5.large", "db.r5.xlarge", - "db.r5d.12xlarge", - "db.r5d.16xlarge", - "db.r5d.24xlarge", - "db.r5d.2xlarge", - "db.r5d.4xlarge", - "db.r5d.8xlarge", - "db.r5d.large", - "db.r5d.xlarge", "db.r6g.12xlarge", "db.r6g.16xlarge", "db.r6g.2xlarge", @@ -95003,6 +95255,14 @@ "db.r6g.8xlarge", "db.r6g.large", "db.r6g.xlarge", + "db.r6gd.12xlarge", + "db.r6gd.16xlarge", + "db.r6gd.2xlarge", + "db.r6gd.4xlarge", + "db.r6gd.8xlarge", + "db.r6gd.large", + "db.r6gd.xlarge", + "db.r6i.32xlarge", "db.t1.micro", "db.t2.2xlarge", "db.t2.large", @@ -95034,7 +95294,7 @@ "type": "string" }, "Engine": { - "const": "mariadb" + "const": "postgres" }, "LicenseModel": false }, @@ -95047,6 +95307,13 @@ "properties": { "DBInstanceClass": { "enum": [ + "db.m1.large", + "db.m1.medium", + "db.m1.small", + "db.m1.xlarge", + "db.m2.2xlarge", + "db.m2.4xlarge", + "db.m2.xlarge", "db.m3.2xlarge", "db.m3.large", "db.m3.medium", @@ -95065,6 +95332,14 @@ "db.m5.8xlarge", "db.m5.large", "db.m5.xlarge", + "db.m5d.12xlarge", + "db.m5d.16xlarge", + "db.m5d.24xlarge", + "db.m5d.2xlarge", + "db.m5d.4xlarge", + "db.m5d.8xlarge", + "db.m5d.large", + "db.m5d.xlarge", "db.m6g.12xlarge", "db.m6g.16xlarge", "db.m6g.2xlarge", @@ -95072,6 +95347,13 @@ "db.m6g.8xlarge", "db.m6g.large", "db.m6g.xlarge", + "db.m6gd.12xlarge", + "db.m6gd.16xlarge", + "db.m6gd.2xlarge", + "db.m6gd.4xlarge", + "db.m6gd.8xlarge", + "db.m6gd.large", + "db.m6gd.xlarge", "db.r3.2xlarge", "db.r3.4xlarge", "db.r3.8xlarge", @@ -95091,6 +95373,14 @@ "db.r5.8xlarge", "db.r5.large", "db.r5.xlarge", + "db.r5d.12xlarge", + "db.r5d.16xlarge", + "db.r5d.24xlarge", + "db.r5d.2xlarge", + "db.r5d.4xlarge", + "db.r5d.8xlarge", + "db.r5d.large", + "db.r5d.xlarge", "db.r6g.12xlarge", "db.r6g.16xlarge", "db.r6g.2xlarge", @@ -95098,6 +95388,14 @@ "db.r6g.8xlarge", "db.r6g.large", "db.r6g.xlarge", + "db.r6gd.12xlarge", + "db.r6gd.16xlarge", + "db.r6gd.2xlarge", + "db.r6gd.4xlarge", + "db.r6gd.8xlarge", + "db.r6gd.large", + "db.r6gd.xlarge", + "db.t1.micro", "db.t2.2xlarge", "db.t2.large", "db.t2.medium", @@ -95128,7 +95426,7 @@ "type": "string" }, "Engine": { - "const": "mariadb" + "const": "postgres" }, "LicenseModel": { "const": "general-public-license" @@ -95144,6 +95442,13 @@ "properties": { "DBInstanceClass": { "enum": [ + "db.m1.large", + "db.m1.medium", + "db.m1.small", + "db.m1.xlarge", + "db.m2.2xlarge", + "db.m2.4xlarge", + "db.m2.xlarge", "db.m3.2xlarge", "db.m3.large", "db.m3.medium", @@ -95162,6 +95467,14 @@ "db.m5.8xlarge", "db.m5.large", "db.m5.xlarge", + "db.m5d.12xlarge", + "db.m5d.16xlarge", + "db.m5d.24xlarge", + "db.m5d.2xlarge", + "db.m5d.4xlarge", + "db.m5d.8xlarge", + "db.m5d.large", + "db.m5d.xlarge", "db.m6g.12xlarge", "db.m6g.16xlarge", "db.m6g.2xlarge", @@ -95169,6 +95482,13 @@ "db.m6g.8xlarge", "db.m6g.large", "db.m6g.xlarge", + "db.m6gd.12xlarge", + "db.m6gd.16xlarge", + "db.m6gd.2xlarge", + "db.m6gd.4xlarge", + "db.m6gd.8xlarge", + "db.m6gd.large", + "db.m6gd.xlarge", "db.r3.2xlarge", "db.r3.4xlarge", "db.r3.8xlarge", @@ -95188,6 +95508,14 @@ "db.r5.8xlarge", "db.r5.large", "db.r5.xlarge", + "db.r5d.12xlarge", + "db.r5d.16xlarge", + "db.r5d.24xlarge", + "db.r5d.2xlarge", + "db.r5d.4xlarge", + "db.r5d.8xlarge", + "db.r5d.large", + "db.r5d.xlarge", "db.r6g.12xlarge", "db.r6g.16xlarge", "db.r6g.2xlarge", @@ -95195,6 +95523,14 @@ "db.r6g.8xlarge", "db.r6g.large", "db.r6g.xlarge", + "db.r6gd.12xlarge", + "db.r6gd.16xlarge", + "db.r6gd.2xlarge", + "db.r6gd.4xlarge", + "db.r6gd.8xlarge", + "db.r6gd.large", + "db.r6gd.xlarge", + "db.t1.micro", "db.t2.2xlarge", "db.t2.large", "db.t2.medium", diff --git a/src/cfnlint/data/schemas/extensions/aws_rds_dbinstance/engine_version.json b/src/cfnlint/data/schemas/extensions/aws_rds_dbinstance/engine_version.json index 74f14d6596..f821fb6564 100644 --- a/src/cfnlint/data/schemas/extensions/aws_rds_dbinstance/engine_version.json +++ b/src/cfnlint/data/schemas/extensions/aws_rds_dbinstance/engine_version.json @@ -74,6 +74,7 @@ "5.7.mysql_aurora.2.12.0", "5.7.mysql_aurora.2.12.1", "5.7.mysql_aurora.2.12.2", + "5.7.mysql_aurora.2.12.3", "8.0.mysql_aurora.3.03.0", "8.0.mysql_aurora.3.03.1", "8.0.mysql_aurora.3.03.2", @@ -81,6 +82,7 @@ "8.0.mysql_aurora.3.04.0", "8.0.mysql_aurora.3.04.1", "8.0.mysql_aurora.3.04.2", + "8.0.mysql_aurora.3.04.3", "8.0.mysql_aurora.3.05.2", "8.0.mysql_aurora.3.06.0", "8.0.mysql_aurora.3.06.1", @@ -281,7 +283,8 @@ "11.5.9.0.sb00039210.r1", "11.5.9.0.sb00039340.r1", "11.5.9.0.sb00040222.r1", - "11.5.9.0.sb00040226.r1" + "11.5.9.0.sb00040226.r1", + "11.5.9.0.sb00042449.r1" ] } } @@ -313,7 +316,8 @@ "11.5.9.0.sb00039210.r1", "11.5.9.0.sb00039340.r1", "11.5.9.0.sb00040222.r1", - "11.5.9.0.sb00040226.r1" + "11.5.9.0.sb00040226.r1", + "11.5.9.0.sb00042449.r1" ] } } @@ -503,6 +507,7 @@ "15.00.4345.5.v1", "15.00.4355.3.v1", "15.00.4365.2.v1", + "15.00.4375.4.v1", "16.00.4085.2.v1", "16.00.4095.4.v1", "16.00.4105.2.v1", @@ -561,6 +566,7 @@ "15.00.4345.5.v1", "15.00.4355.3.v1", "15.00.4365.2.v1", + "15.00.4375.4.v1", "16.00.4085.2.v1", "16.00.4095.4.v1", "16.00.4105.2.v1", @@ -619,6 +625,7 @@ "15.00.4345.5.v1", "15.00.4355.3.v1", "15.00.4365.2.v1", + "15.00.4375.4.v1", "16.00.4085.2.v1", "16.00.4095.4.v1", "16.00.4105.2.v1", @@ -677,6 +684,7 @@ "15.00.4345.5.v1", "15.00.4355.3.v1", "15.00.4365.2.v1", + "15.00.4375.4.v1", "16.00.4085.2.v1", "16.00.4095.4.v1", "16.00.4105.2.v1", diff --git a/src/cfnlint/data/schemas/extensions/aws_route53_healthcheck/healthcheckconfig_type_inclusive.json b/src/cfnlint/data/schemas/extensions/aws_route53_healthcheck/healthcheckconfig_type_inclusive.json index 96f6ec7533..26d65e8908 100644 --- a/src/cfnlint/data/schemas/extensions/aws_route53_healthcheck/healthcheckconfig_type_inclusive.json +++ b/src/cfnlint/data/schemas/extensions/aws_route53_healthcheck/healthcheckconfig_type_inclusive.json @@ -1,7 +1,6 @@ { "additionalProperties": true, "description": "When 'Type' is 'CLOUDWATCH_METRIC' you must specify 'AlarmIdentifier'", - "else": {}, "if": { "properties": { "Type": { diff --git a/src/cfnlint/data/schemas/other/template/configuration.json b/src/cfnlint/data/schemas/other/template/configuration.json index c7b825e88b..afc9203b28 100644 --- a/src/cfnlint/data/schemas/other/template/configuration.json +++ b/src/cfnlint/data/schemas/other/template/configuration.json @@ -22,15 +22,7 @@ "Rules": { "type": "object" }, - "Transform": { - "items": { - "type": "string" - }, - "type": [ - "string", - "array" - ] - } + "Transform": {} }, "required": [ "Resources" diff --git a/src/cfnlint/data/schemas/other/transforms/__init__.py b/src/cfnlint/data/schemas/other/transforms/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/cfnlint/data/schemas/other/transforms/configuration.json b/src/cfnlint/data/schemas/other/transforms/configuration.json new file mode 100644 index 0000000000..da56c0d3cb --- /dev/null +++ b/src/cfnlint/data/schemas/other/transforms/configuration.json @@ -0,0 +1,38 @@ +{ + "additionalProperties": false, + "items": { + "$ref": "#/", + "type": [ + "string", + "object" + ] + }, + "properties": { + "Name": { + "type": "string" + }, + "Parameters": { + "patternProperties": { + ".*": { + "type": [ + "string", + "array", + "boolean", + "object", + "number", + "integer" + ] + } + }, + "type": "object" + } + }, + "required": [ + "Name" + ], + "type": [ + "string", + "array", + "object" + ] +} diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_applicationautoscaling_scalingpolicy/boto.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_applicationautoscaling_scalingpolicy/boto.json index 45c47dfcae..86e8c4227e 100644 --- a/src/cfnlint/data/schemas/patches/extensions/all/aws_applicationautoscaling_scalingpolicy/boto.json +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_applicationautoscaling_scalingpolicy/boto.json @@ -34,7 +34,8 @@ "RDSReaderAverageDatabaseConnections", "SageMakerInferenceComponentInvocationsPerCopy", "SageMakerVariantInvocationsPerInstance", - "SageMakerVariantProvisionedConcurrencyUtilization" + "SageMakerVariantProvisionedConcurrencyUtilization", + "WorkSpacesAverageUserSessionsCapacityUtilization" ] } ] diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_instance/manual.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_instance/manual.json index 9c5b8fd90e..3a79f96768 100644 --- a/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_instance/manual.json +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_instance/manual.json @@ -13,14 +13,6 @@ "path": "/definitions/BlockDeviceMapping/properties/VirtualName/pattern", "value": "^ephemeral([0-9]|[1][0-9]|[2][0-3])$" }, - { - "op": "add", - "path": "/requiredXor", - "value": [ - "ImageId", - "LaunchTemplate" - ] - }, { "op": "add", "path": "/dependentExcluded", diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_kinesisanalyticsv2_application/boto.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_kinesisanalyticsv2_application/boto.json index 8b304eb79e..dad2de39d1 100644 --- a/src/cfnlint/data/schemas/patches/extensions/all/aws_kinesisanalyticsv2_application/boto.json +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_kinesisanalyticsv2_application/boto.json @@ -7,6 +7,7 @@ "FLINK-1_13", "FLINK-1_15", "FLINK-1_18", + "FLINK-1_19", "FLINK-1_6", "FLINK-1_8", "SQL-1_0", diff --git a/src/cfnlint/data/schemas/patches/providers/all/aws_ec2_instance/writeonlyproperties-2.json b/src/cfnlint/data/schemas/patches/providers/all/aws_ec2_instance/writeonlyproperties-2.json new file mode 100644 index 0000000000..20350d88cd --- /dev/null +++ b/src/cfnlint/data/schemas/patches/providers/all/aws_ec2_instance/writeonlyproperties-2.json @@ -0,0 +1,28 @@ +[ + { + "op": "test", + "path": "/writeOnlyProperties", + "value": [ + "/properties/BlockDeviceMappings/*/NoDevice", + "/properties/BlockDeviceMappings/*/VirtualName", + "/properties/LicenseSpecification", + "/properties/AdditionalInfo", + "/properties/Ipv6AddressCount", + "/properties/Ipv6Addresses", + "/properties/PropagateTagsToVolumeOnCreation" + ] + }, + { + "op": "replace", + "path": "/writeOnlyProperties", + "value": [ + "/properties/BlockDeviceMappings/*/NoDevice", + "/properties/BlockDeviceMappings/*/VirtualName", + "/properties/LicenseSpecifications", + "/properties/AdditionalInfo", + "/properties/Ipv6AddressCount", + "/properties/Ipv6Addresses", + "/properties/PropagateTagsToVolumeOnCreation" + ] + } +] diff --git a/src/cfnlint/data/schemas/providers/af_south_1/__init__.py b/src/cfnlint/data/schemas/providers/af_south_1/__init__.py index 38776df739..e7481bc2f2 100644 --- a/src/cfnlint/data/schemas/providers/af_south_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/af_south_1/__init__.py @@ -1,1555 +1,1556 @@ -from typing import List +from __future__ import annotations # pylint: disable=too-many-lines -types = [ - "AWS::CDK::Metadata", - "Module", - "AWS::ApiGatewayV2::Integration", - "AWS::Connect::UserHierarchyGroup", - "AWS::ApiGatewayV2::ApiMapping", - "AWS::CE::AnomalySubscription", - "AWS::Shield::DRTAccess", - "AWS::SSO::Assignment", - "AWS::Glue::Partition", - "AWS::RDS::Integration", - "AWS::EC2::TransitGatewayRouteTablePropagation", - "AWS::Shield::ProactiveEngagement", - "AWS::ApiGateway::BasePathMapping", - "AWS::WAFRegional::GeoMatchSet", - "AWS::S3::AccessGrantsLocation", - "AWS::GuardDuty::Filter", - "AWS::ECS::Service", - "AWS::ServiceCatalog::PortfolioPrincipalAssociation", - "AWS::RAM::ResourceShare", - "AWS::DMS::ReplicationConfig", - "AWS::DynamoDB::Table", +types: list[str] = [ + "AMZN::SDC::Deployment", + "AWS::ACMPCA::Certificate", + "AWS::ACMPCA::CertificateAuthority", + "AWS::ACMPCA::CertificateAuthorityActivation", + "AWS::ACMPCA::Permission", + "AWS::ARCZonalShift::ZonalAutoshiftConfiguration", + "AWS::AccessAnalyzer::Analyzer", + "AWS::AmazonMQ::Broker", + "AWS::AmazonMQ::Configuration", "AWS::AmazonMQ::ConfigurationAssociation", - "AWS::WAFRegional::IPSet", - "AWS::EC2::SecurityGroupEgress", - "AWS::EC2::LocalGatewayRouteTableVPCAssociation", - "AWS::Config::OrganizationConfigRule", - "AWS::Glue::DataQualityRuleset", - "AWS::NetworkManager::TransitGatewayPeering", - "AWS::MediaConnect::Bridge", - "AWS::Route53Profiles::ProfileAssociation", - "AWS::Config::ConfigurationRecorder", - "AWS::EC2::NetworkPerformanceMetricSubscription", - "AWS::CloudFront::ContinuousDeploymentPolicy", - "AWS::QuickSight::Analysis", - "AWS::ECR::ReplicationConfiguration", - "AWS::AppConfig::ExtensionAssociation", - "AWS::S3Outposts::AccessPoint", - "AWS::EC2::IPAMPoolCidr", - "AWS::Redshift::ClusterSubnetGroup", - "AWS::RDS::DBInstance", - "AWS::EC2::VPCDHCPOptionsAssociation", - "AWS::ApiGateway::Model", - "AWS::ApiGatewayV2::IntegrationResponse", - "AWS::EC2::NetworkAcl", - "AWS::Lambda::EventSourceMapping", - "AWS::Logs::ResourcePolicy", - "AWS::Lex::BotVersion", - "AWS::ServiceCatalog::LaunchNotificationConstraint", - "AWS::DMS::InstanceProfile", - "AWS::QuickSight::DataSource", - "AWS::EC2::NetworkAclEntry", - "AWS::EC2::NetworkInsightsAccessScopeAnalysis", - "AWS::Transfer::Certificate", - "AWS::Connect::Instance", + "AWS::ApiGateway::Account", + "AWS::ApiGateway::ApiKey", + "AWS::ApiGateway::Authorizer", + "AWS::ApiGateway::BasePathMapping", + "AWS::ApiGateway::ClientCertificate", + "AWS::ApiGateway::Deployment", "AWS::ApiGateway::DocumentationPart", - "AWS::Route53Profiles::Profile", - "AWS::CloudWatch::CompositeAlarm", - "AWS::Route53Resolver::FirewallDomainList", - "AWS::Redshift::EndpointAccess", - "AWS::AppConfig::Application", - "AWS::OpsWorks::Stack", - "AWS::MediaTailor::Channel", - "AWS::Lambda::Url", - "AWS::MediaTailor::ChannelPolicy", - "AWS::GameLift::Fleet", - "AWS::DataSync::LocationFSxWindows", - "AWS::GameLift::Build", + "AWS::ApiGateway::DocumentationVersion", + "AWS::ApiGateway::DomainName", + "AWS::ApiGateway::GatewayResponse", + "AWS::ApiGateway::Method", + "AWS::ApiGateway::Model", "AWS::ApiGateway::RequestValidator", - "AWS::AutoScaling::WarmPool", - "AWS::ApplicationAutoScaling::ScalableTarget", + "AWS::ApiGateway::Resource", + "AWS::ApiGateway::RestApi", + "AWS::ApiGateway::Stage", + "AWS::ApiGateway::UsagePlan", + "AWS::ApiGateway::UsagePlanKey", + "AWS::ApiGateway::VpcLink", + "AWS::ApiGatewayV2::Api", + "AWS::ApiGatewayV2::ApiGatewayManagedOverrides", + "AWS::ApiGatewayV2::ApiMapping", + "AWS::ApiGatewayV2::Authorizer", + "AWS::ApiGatewayV2::Deployment", + "AWS::ApiGatewayV2::DomainName", + "AWS::ApiGatewayV2::Integration", + "AWS::ApiGatewayV2::IntegrationResponse", "AWS::ApiGatewayV2::Model", - "AWS::Config::StoredQuery", - "AWS::ACMPCA::Permission", - "AWS::Neptune::DBSubnetGroup", - "AWS::Transfer::Server", - "AWS::ApiGateway::DomainName", - "AWS::ECS::PrimaryTaskSet", - "AWS::FMS::ResourceSet", - "AWS::Cognito::UserPoolDomain", - "AWS::AutoScaling::AutoScalingGroup", - "AWS::WAFv2::RegexPatternSet", - "AWS::EKS::FargateProfile", - "AWS::Route53::DNSSEC", - "AWS::Redshift::EndpointAuthorization", - "AWS::EC2::TransitGatewayRouteTable", - "AWS::ControlTower::EnabledControl", - "AWS::NetworkManager::ConnectAttachment", - "AWS::S3::AccessGrantsInstance", - "AWS::Cognito::IdentityPoolRoleAttachment", - "AWS::Route53::RecordSet", - "AWS::EKS::AccessEntry", - "AWS::ElastiCache::SecurityGroup", - "AWS::Backup::Framework", + "AWS::ApiGatewayV2::Route", + "AWS::ApiGatewayV2::RouteResponse", + "AWS::ApiGatewayV2::Stage", + "AWS::ApiGatewayV2::VpcLink", + "AWS::AppConfig::Application", + "AWS::AppConfig::ConfigurationProfile", + "AWS::AppConfig::Deployment", + "AWS::AppConfig::DeploymentStrategy", + "AWS::AppConfig::Environment", + "AWS::AppConfig::Extension", + "AWS::AppConfig::ExtensionAssociation", + "AWS::AppConfig::HostedConfigurationVersion", + "AWS::AppFlow::Connector", "AWS::AppFlow::ConnectorProfile", - "AWS::OpsWorks::Layer", - "AWS::CloudTrail::EventDataStore", + "AWS::AppFlow::Flow", "AWS::AppIntegrations::Application", - "AWS::KinesisFirehose::DeliveryStream", - "AWS::EC2::NetworkInsightsAccessScope", - "AWS::Cognito::UserPoolUserToGroupAttachment", - "AWS::PCAConnectorAD::DirectoryRegistration", - "AWS::SageMaker::CodeRepository", - "AWS::ImageBuilder::Component", - "AWS::SES::ConfigurationSetEventDestination", - "AWS::MediaConnect::FlowEntitlement", - "AWS::Glue::Connection", - "AWS::AppMesh::Route", - "AWS::IAM::Group", - "AWS::Organizations::ResourcePolicy", - "AWS::WAFRegional::WebACLAssociation", - "AWS::EC2::TransitGatewayMulticastGroupSource", - "AWS::Lex::Bot", - "AWS::Transfer::Profile", - "AWS::DataBrew::Recipe", - "AWS::SSO::Instance", - "AWS::GameLift::Alias", - "AWS::AppSync::DomainName", - "AWS::ApiGateway::UsagePlanKey", - "AWS::FMS::Policy", - "AWS::CloudFront::RealtimeLogConfig", - "AWS::SageMaker::Pipeline", - "AWS::CloudTrail::Channel", - "AWS::LakeFormation::DataCellsFilter", - "AWS::DataSync::LocationHDFS", - "AWS::Events::Archive", - "AWS::MSK::Cluster", - "AWS::SecurityHub::DelegatedAdmin", - "AWS::ControlTower::EnabledBaseline", - "AWS::EC2::VPCEndpointConnectionNotification", - "AWS::CodePipeline::Pipeline", - "AWS::OpsWorks::Instance", - "AWS::Config::ConfigurationAggregator", - "AWS::ImageBuilder::ImagePipeline", - "AWS::ElasticLoadBalancingV2::ListenerCertificate", - "AWS::CloudFormation::ModuleVersion", - "AWS::Cloud9::EnvironmentEC2", - "AWS::Route53Resolver::ResolverRuleAssociation", - "AWS::FSx::StorageVirtualMachine", - "AWS::Synthetics::Canary", - "AWS::Backup::RestoreTestingSelection", - "AWS::SNS::Subscription", + "AWS::AppIntegrations::DataIntegration", + "AWS::AppIntegrations::EventIntegration", + "AWS::AppMesh::GatewayRoute", "AWS::AppMesh::Mesh", - "AWS::EC2::NatGateway", - "AWS::InternetMonitor::Monitor", - "AWS::Transfer::Workflow", - "AWS::S3::AccessGrant", - "AWS::AppConfig::DeploymentStrategy", - "AWS::Glue::DevEndpoint", - "AWS::SageMaker::ModelPackage", - "AWS::CustomerProfiles::Integration", - "AWS::WAFRegional::SizeConstraintSet", - "AWS::EventSchemas::Discoverer", - "AWS::NetworkManager::ConnectPeer", - "AWS::ElastiCache::UserGroup", - "AWS::Logs::DeliveryDestination", - "AWS::ImageBuilder::ImageRecipe", - "AWS::ApiGateway::RestApi", - "AWS::OpsWorks::ElasticLoadBalancerAttachment", + "AWS::AppMesh::Route", + "AWS::AppMesh::VirtualGateway", + "AWS::AppMesh::VirtualNode", + "AWS::AppMesh::VirtualRouter", "AWS::AppMesh::VirtualService", - "AWS::S3ObjectLambda::AccessPointPolicy", - "AWS::NetworkManager::TransitGatewayRegistration", - "AWS::InspectorV2::Filter", - "AWS::ElastiCache::ReplicationGroup", - "AWS::StepFunctions::StateMachineAlias", - "AWS::Cognito::UserPoolResourceServer", - "AWS::RDS::GlobalCluster", - "AWS::CloudFormation::ModuleDefaultVersion", + "AWS::AppSync::ApiCache", + "AWS::AppSync::ApiKey", + "AWS::AppSync::DataSource", + "AWS::AppSync::DomainName", + "AWS::AppSync::DomainNameApiAssociation", + "AWS::AppSync::FunctionConfiguration", + "AWS::AppSync::GraphQLApi", + "AWS::AppSync::GraphQLSchema", + "AWS::AppSync::Resolver", + "AWS::AppSync::SourceApiAssociation", + "AWS::ApplicationAutoScaling::ScalableTarget", + "AWS::ApplicationAutoScaling::ScalingPolicy", + "AWS::ApplicationInsights::Application", "AWS::ApplicationSignals::ServiceLevelObjective", - "AWS::Route53Profiles::ProfileResourceAssociation", - "AWS::SSO::PermissionSet", - "AWS::Glue::Job", - "AWS::ServiceCatalog::CloudFormationProvisionedProduct", - "AWS::Route53::HostedZone", - "AWS::Connect::View", - "AWS::EKS::PodIdentityAssociation", - "AWS::ResourceExplorer2::Index", - "AWS::Glue::Table", - "AWS::WAFRegional::WebACL", - "AWS::Logs::MetricFilter", - "AWS::Lambda::Function", - "AWS::SNS::Topic", + "AWS::Athena::DataCatalog", + "AWS::Athena::NamedQuery", + "AWS::Athena::PreparedStatement", + "AWS::Athena::WorkGroup", + "AWS::AutoScaling::AutoScalingGroup", + "AWS::AutoScaling::LaunchConfiguration", + "AWS::AutoScaling::LifecycleHook", + "AWS::AutoScaling::ScalingPolicy", + "AWS::AutoScaling::ScheduledAction", + "AWS::AutoScaling::WarmPool", + "AWS::AutoScalingPlans::ScalingPlan", + "AWS::Backup::BackupPlan", "AWS::Backup::BackupSelection", - "AWS::DataSync::LocationFSxLustre", - "AWS::SageMaker::App", - "AWS::Logs::DeliverySource", - "AWS::EC2::VPCGatewayAttachment", - "AWS::CloudTrail::Trail", - "AWS::EC2::VPNConnectionRoute", - "AWS::EC2::InternetGateway", - "AWS::EC2::GatewayRouteTableAssociation", - "AWS::WAFv2::IPSet", - "AWS::MediaConnect::BridgeOutput", - "AWS::SSM::Document", - "AWS::IAM::Role", - "AWS::Events::ApiDestination", - "AWS::DMS::Endpoint", - "AWS::ElastiCache::ServerlessCache", - "AWS::CloudFront::CloudFrontOriginAccessIdentity", - "AWS::SageMaker::EndpointConfig", - "AWS::AppMesh::GatewayRoute", - "AWS::ApiGateway::ApiKey", - "AWS::NetworkManager::TransitGatewayRouteTableAttachment", - "AWS::AutoScaling::LaunchConfiguration", - "AWS::ApiGateway::ClientCertificate", - "AWS::KinesisAnalyticsV2::Application", - "AWS::Lambda::Alias", - "AWS::Logs::LogAnomalyDetector", - "AWS::WAF::IPSet", - "AWS::EC2::TransitGatewayMulticastDomainAssociation", - "AWS::S3Outposts::Endpoint", - "AWS::WAF::SizeConstraintSet", - "AWS::EC2::TransitGatewayRouteTableAssociation", - "AWS::AppConfig::Environment", - "AWS::Neptune::EventSubscription", - "AWS::ImageBuilder::Image", - "AWS::ElastiCache::SecurityGroupIngress", - "AWS::WAFRegional::XssMatchSet", - "AWS::RDS::DBProxyTargetGroup", - "AWS::CloudWatch::Dashboard", - "AWS::CloudWatch::Alarm", - "AWS::GuardDuty::Member", - "AWS::GroundStation::MissionProfile", + "AWS::Backup::BackupVault", + "AWS::Backup::Framework", + "AWS::Backup::ReportPlan", + "AWS::Backup::RestoreTestingPlan", + "AWS::Backup::RestoreTestingSelection", + "AWS::BackupGateway::Hypervisor", + "AWS::Batch::ComputeEnvironment", + "AWS::Batch::JobDefinition", + "AWS::Batch::JobQueue", + "AWS::Batch::SchedulingPolicy", + "AWS::CDK::Metadata", + "AWS::CE::AnomalyMonitor", + "AWS::CE::AnomalySubscription", + "AWS::CertificateManager::Account", + "AWS::CertificateManager::Certificate", + "AWS::Chatbot::MicrosoftTeamsChannelConfiguration", + "AWS::Chatbot::SlackChannelConfiguration", + "AWS::Cloud9::EnvironmentEC2", "AWS::CloudFormation::CustomResource", - "AWS::FIS::TargetAccountConfiguration", - "AWS::WAFv2::RuleGroup", - "AWS::SageMaker::ModelPackageGroup", - "AWS::SES::ConfigurationSet", - "AWS::ElastiCache::ParameterGroup", - "AWS::NetworkFirewall::LoggingConfiguration", - "AWS::Glue::Classifier", - "AWS::Connect::SecurityProfile", - "AWS::CodeDeploy::DeploymentGroup", - "AWS::SageMaker::InferenceExperiment", - "AWS::CloudFormation::StackSet", - "AWS::EC2::Route", - "AWS::FIS::ExperimentTemplate", + "AWS::CloudFormation::HookDefaultVersion", + "AWS::CloudFormation::HookTypeConfig", "AWS::CloudFormation::HookVersion", - "AWS::RolesAnywhere::Profile", - "AWS::XRay::ResourcePolicy", - "AWS::ServiceCatalog::LaunchTemplateConstraint", - "AWS::WAFv2::LoggingConfiguration", - "AWS::DynamoDB::GlobalTable", - "AWS::Backup::BackupPlan", - "AWS::ImageBuilder::DistributionConfiguration", - "AWS::LakeFormation::Permissions", - "AWS::ResourceExplorer2::View", - "AWS::Glue::DataCatalogEncryptionSettings", + "AWS::CloudFormation::Macro", + "AWS::CloudFormation::ModuleDefaultVersion", + "AWS::CloudFormation::ModuleVersion", + "AWS::CloudFormation::PublicTypeVersion", + "AWS::CloudFormation::Publisher", + "AWS::CloudFormation::ResourceDefaultVersion", + "AWS::CloudFormation::ResourceVersion", + "AWS::CloudFormation::Stack", + "AWS::CloudFormation::StackSet", + "AWS::CloudFormation::TypeActivation", + "AWS::CloudFormation::WaitCondition", + "AWS::CloudFormation::WaitConditionHandle", + "AWS::CloudFront::CachePolicy", + "AWS::CloudFront::CloudFrontOriginAccessIdentity", + "AWS::CloudFront::ContinuousDeploymentPolicy", + "AWS::CloudFront::Distribution", + "AWS::CloudFront::Function", + "AWS::CloudFront::KeyGroup", + "AWS::CloudFront::KeyValueStore", + "AWS::CloudFront::MonitoringSubscription", + "AWS::CloudFront::OriginAccessControl", + "AWS::CloudFront::OriginRequestPolicy", "AWS::CloudFront::PublicKey", - "AWS::PCAConnectorAD::Connector", - "AWS::Lex::BotAlias", - "AWS::IdentityStore::Group", - "AWS::RAM::Permission", - "AWS::DataSync::Task", - "AWS::ECS::TaskDefinition", - "AWS::SageMaker::Model", - "AWS::QuickSight::RefreshSchedule", - "AWS::Shield::Protection", - "AWS::SES::VdmAttributes", - "AWS::IdentityStore::GroupMembership", - "AWS::AppSync::FunctionConfiguration", - "AWS::EC2::SpotFleet", - "AWS::Glue::SchemaVersion", - "AWS::SageMaker::Space", - "AWS::IoT::PolicyPrincipalAttachment", - "AWS::FMS::NotificationChannel", - "AWS::MSK::BatchScramSecret", - "AWS::Connect::HoursOfOperation", - "AWS::DMS::Certificate", - "AWS::S3::Bucket", - "AWS::GuardDuty::IPSet", - "AWS::ServiceDiscovery::HttpNamespace", - "AWS::EMR::SecurityConfiguration", + "AWS::CloudFront::RealtimeLogConfig", + "AWS::CloudFront::ResponseHeadersPolicy", + "AWS::CloudFront::StreamingDistribution", + "AWS::CloudTrail::Channel", + "AWS::CloudTrail::EventDataStore", + "AWS::CloudTrail::ResourcePolicy", + "AWS::CloudTrail::Trail", + "AWS::CloudWatch::Alarm", + "AWS::CloudWatch::AnomalyDetector", + "AWS::CloudWatch::CompositeAlarm", + "AWS::CloudWatch::Dashboard", "AWS::CloudWatch::InsightRule", - "AWS::ApiGateway::UsagePlan", - "AWS::AppIntegrations::EventIntegration", - "AWS::Batch::SchedulingPolicy", - "AWS::MediaConnect::BridgeSource", - "AWS::ApiGatewayV2::VpcLink", - "AWS::ServiceCatalog::PortfolioProductAssociation", - "AWS::DataBrew::Project", - "AWS::Athena::WorkGroup", - "AWS::SageMaker::ImageVersion", - "AWS::ApiGatewayV2::Api", - "AWS::Detective::Graph", - "AWS::ServiceCatalog::PortfolioShare", - "AWS::ApiGateway::VpcLink", + "AWS::CloudWatch::MetricStream", + "AWS::CodeBuild::Project", + "AWS::CodeBuild::ReportGroup", + "AWS::CodeBuild::SourceCredential", + "AWS::CodeDeploy::Application", + "AWS::CodeDeploy::DeploymentConfig", + "AWS::CodeDeploy::DeploymentGroup", + "AWS::CodePipeline::CustomActionType", + "AWS::CodePipeline::Pipeline", + "AWS::Cognito::IdentityPool", + "AWS::Cognito::IdentityPoolPrincipalTag", + "AWS::Cognito::IdentityPoolRoleAttachment", + "AWS::Cognito::LogDeliveryConfiguration", + "AWS::Cognito::UserPool", + "AWS::Cognito::UserPoolClient", + "AWS::Cognito::UserPoolDomain", + "AWS::Cognito::UserPoolGroup", + "AWS::Cognito::UserPoolIdentityProvider", + "AWS::Cognito::UserPoolResourceServer", + "AWS::Cognito::UserPoolRiskConfigurationAttachment", + "AWS::Cognito::UserPoolUICustomizationAttachment", + "AWS::Cognito::UserPoolUser", + "AWS::Cognito::UserPoolUserToGroupAttachment", + "AWS::Config::AggregationAuthorization", + "AWS::Config::ConfigRule", + "AWS::Config::ConfigurationAggregator", + "AWS::Config::ConfigurationRecorder", + "AWS::Config::DeliveryChannel", + "AWS::Config::OrganizationConfigRule", + "AWS::Config::RemediationConfiguration", + "AWS::Config::StoredQuery", + "AWS::Connect::ApprovedOrigin", + "AWS::Connect::ContactFlow", + "AWS::Connect::ContactFlowModule", + "AWS::Connect::EvaluationForm", + "AWS::Connect::HoursOfOperation", + "AWS::Connect::Instance", + "AWS::Connect::InstanceStorageConfig", "AWS::Connect::IntegrationAssociation", - "AWS::NetworkManager::CustomerGatewayAssociation", - "AWS::IAM::ServerCertificate", - "AWS::GlobalAccelerator::CrossAccountAttachment", - "AWS::Events::EventBus", - "AWS::SQS::QueueInlinePolicy", - "AWS::Organizations::Organization", - "AWS::AutoScalingPlans::ScalingPlan", - "AWS::SSM::MaintenanceWindowTarget", - "AWS::VoiceID::Domain", - "AWS::ApiGateway::Authorizer", - "AWS::BackupGateway::Hypervisor", + "AWS::Connect::PhoneNumber", "AWS::Connect::PredefinedAttribute", - "AWS::IAM::Policy", - "AWS::DataBrew::Schedule", - "AWS::Connect::ApprovedOrigin", - "AWS::SES::ContactList", - "AWS::Connect::SecurityKey", - "AWS::CloudFormation::Publisher", - "AWS::RDS::DBSecurityGroupIngress", - "AWS::SecurityHub::OrganizationConfiguration", - "AWS::EC2::TransitGatewayMulticastGroupMember", - "AWS::EC2::VolumeAttachment", - "AWS::Glue::SecurityConfiguration", - "AWS::NetworkFirewall::TLSInspectionConfiguration", - "AWS::DataBrew::Ruleset", - "AWS::ApplicationInsights::Application", - "AWS::ECS::ClusterCapacityProviderAssociations", - "AWS::AppConfig::ConfigurationProfile", - "AWS::Route53Resolver::FirewallRuleGroup", - "AWS::MSK::Configuration", - "AWS::EC2::TransitGateway", - "AWS::Cognito::UserPoolGroup", - "AWS::EC2::VPCEndpointServicePermissions", - "AWS::SSM::MaintenanceWindowTask", - "AWS::EC2::TransitGatewayMulticastDomain", - "AWS::VerifiedPermissions::PolicyTemplate", - "AWS::EKS::Cluster", - "AWS::CodeBuild::Project", - "AWS::EFS::FileSystem", + "AWS::Connect::Prompt", + "AWS::Connect::Queue", "AWS::Connect::QuickConnect", - "AWS::Logs::QueryDefinition", - "AWS::SecurityHub::ProductSubscription", - "AWS::IAM::InstanceProfile", - "AWS::DataSync::LocationNFS", - "AWS::SageMaker::Domain", - "AWS::CertificateManager::Certificate", - "AWS::Glue::SchemaVersionMetadata", - "AWS::SDB::Domain", - "AWS::EC2::SubnetRouteTableAssociation", - "AWS::ServiceCatalog::ServiceActionAssociation", - "AWS::Cognito::UserPoolUICustomizationAttachment", - "AWS::SageMaker::NotebookInstanceLifecycleConfig", - "AWS::ImageBuilder::ContainerRecipe", + "AWS::Connect::RoutingProfile", "AWS::Connect::Rule", - "AWS::EFS::AccessPoint", - "AWS::Redshift::ClusterSecurityGroupIngress", - "AWS::ServiceCatalogAppRegistry::AttributeGroupAssociation", - "AWS::ElasticLoadBalancingV2::LoadBalancer", - "AWS::OpenSearchService::Domain", - "AWS::ServiceDiscovery::Instance", - "AWS::Elasticsearch::Domain", - "AWS::ApiGatewayV2::Deployment", - "AWS::ServiceCatalog::StackSetConstraint", - "AWS::EC2::NetworkInterfacePermission", - "AWS::ServiceCatalog::TagOption", - "AWS::ServiceDiscovery::PrivateDnsNamespace", - "AWS::ServiceCatalog::LaunchRoleConstraint", - "AMZN::SDC::Deployment", - "AWS::SecretsManager::ResourcePolicy", - "AWS::CloudFormation::HookDefaultVersion", - "AWS::Config::ConfigRule", - "AWS::EC2::NetworkInsightsAnalysis", - "AWS::EC2::ClientVpnRoute", - "AWS::ImageBuilder::Workflow", - "AWS::ECS::TaskSet", - "AWS::AppSync::ApiKey", - "AWS::CloudFormation::TypeActivation", - "AWS::GroundStation::DataflowEndpointGroup", - "AWS::ACMPCA::CertificateAuthorityActivation", - "AWS::GuardDuty::ThreatIntelSet", - "AWS::WAFRegional::RateBasedRule", - "AWS::Macie::AllowList", - "AWS::EC2::VPC", - "AWS::ARCZonalShift::ZonalAutoshiftConfiguration", - "AWS::MSK::VpcConnection", - "AWS::DataSync::LocationAzureBlob", - "AWS::Logs::LogStream", - "AWS::DMS::ReplicationSubnetGroup", - "AWS::S3Outposts::Bucket", - "AWS::Route53::RecordSetGroup", - "AWS::EC2::LocalGatewayRoute", - "AWS::CloudFormation::PublicTypeVersion", - "AWS::OpsWorks::App", - "AWS::Kinesis::Stream", - "AWS::Backup::ReportPlan", - "AWS::Batch::JobDefinition", - "AWS::IAM::SAMLProvider", - "AWS::AppFlow::Connector", - "AWS::CloudFront::KeyGroup", - "AWS::EC2::NetworkInterfaceAttachment", - "AWS::EC2::TransitGatewayAttachment", - "AWS::Glue::CustomEntityType", - "AWS::Cognito::UserPoolUser", - "AWS::Connect::ContactFlowModule", - "AWS::CodeDeploy::DeploymentConfig", - "AWS::NetworkManager::GlobalNetwork", + "AWS::Connect::SecurityKey", + "AWS::Connect::SecurityProfile", "AWS::Connect::TaskTemplate", - "AWS::StepFunctions::StateMachineVersion", - "AWS::ServiceCatalogAppRegistry::Application", - "AWS::NetworkManager::Site", - "AWS::Glue::Database", - "AWS::Neptune::DBCluster", - "AWS::Backup::BackupVault", + "AWS::Connect::User", + "AWS::Connect::UserHierarchyGroup", + "AWS::Connect::View", + "AWS::Connect::ViewVersion", + "AWS::ControlTower::EnabledBaseline", + "AWS::ControlTower::EnabledControl", + "AWS::ControlTower::LandingZone", + "AWS::CustomerProfiles::CalculatedAttributeDefinition", + "AWS::CustomerProfiles::Domain", + "AWS::CustomerProfiles::EventStream", + "AWS::CustomerProfiles::Integration", + "AWS::CustomerProfiles::ObjectType", + "AWS::DLM::LifecyclePolicy", + "AWS::DMS::Certificate", + "AWS::DMS::DataProvider", + "AWS::DMS::Endpoint", + "AWS::DMS::EventSubscription", + "AWS::DMS::InstanceProfile", + "AWS::DMS::MigrationProject", + "AWS::DMS::ReplicationConfig", + "AWS::DMS::ReplicationInstance", + "AWS::DMS::ReplicationSubnetGroup", + "AWS::DMS::ReplicationTask", + "AWS::DataBrew::Dataset", + "AWS::DataBrew::Job", + "AWS::DataBrew::Project", + "AWS::DataBrew::Recipe", + "AWS::DataBrew::Ruleset", + "AWS::DataBrew::Schedule", + "AWS::DataPipeline::Pipeline", + "AWS::DataSync::Agent", + "AWS::DataSync::LocationAzureBlob", + "AWS::DataSync::LocationEFS", + "AWS::DataSync::LocationFSxLustre", + "AWS::DataSync::LocationFSxONTAP", + "AWS::DataSync::LocationFSxWindows", + "AWS::DataSync::LocationHDFS", + "AWS::DataSync::LocationNFS", + "AWS::DataSync::LocationObjectStorage", + "AWS::DataSync::LocationS3", + "AWS::DataSync::LocationSMB", + "AWS::DataSync::StorageSystem", + "AWS::DataSync::Task", + "AWS::Detective::Graph", + "AWS::Detective::MemberInvitation", + "AWS::Detective::OrganizationAdmin", + "AWS::DirectoryService::MicrosoftAD", + "AWS::DirectoryService::SimpleAD", + "AWS::DynamoDB::GlobalTable", + "AWS::DynamoDB::Table", + "AWS::EC2::CapacityReservation", + "AWS::EC2::CapacityReservationFleet", + "AWS::EC2::ClientVpnAuthorizationRule", + "AWS::EC2::ClientVpnEndpoint", + "AWS::EC2::ClientVpnRoute", + "AWS::EC2::ClientVpnTargetNetworkAssociation", "AWS::EC2::CustomerGateway", - "AWS::IAM::GroupPolicy", - "AWS::Scheduler::Schedule", - "AWS::WAF::ByteMatchSet", - "AWS::Neptune::DBClusterParameterGroup", - "AWS::EMRServerless::Application", + "AWS::EC2::DHCPOptions", + "AWS::EC2::EC2Fleet", + "AWS::EC2::EIP", + "AWS::EC2::EIPAssociation", + "AWS::EC2::EgressOnlyInternetGateway", + "AWS::EC2::EnclaveCertificateIamRoleAssociation", + "AWS::EC2::FlowLog", + "AWS::EC2::GatewayRouteTableAssociation", "AWS::EC2::Host", - "AWS::Lambda::CodeSigningConfig", - "AWS::SystemsManagerSAP::Application", - "AWS::DMS::ReplicationTask", + "AWS::EC2::IPAM", + "AWS::EC2::IPAMAllocation", + "AWS::EC2::IPAMPool", + "AWS::EC2::IPAMPoolCidr", + "AWS::EC2::IPAMResourceDiscovery", + "AWS::EC2::IPAMResourceDiscoveryAssociation", + "AWS::EC2::IPAMScope", + "AWS::EC2::Instance", + "AWS::EC2::InstanceConnectEndpoint", + "AWS::EC2::InternetGateway", + "AWS::EC2::KeyPair", + "AWS::EC2::LaunchTemplate", + "AWS::EC2::LocalGatewayRoute", + "AWS::EC2::LocalGatewayRouteTable", + "AWS::EC2::LocalGatewayRouteTableVPCAssociation", + "AWS::EC2::LocalGatewayRouteTableVirtualInterfaceGroupAssociation", + "AWS::EC2::NatGateway", + "AWS::EC2::NetworkAcl", + "AWS::EC2::NetworkAclEntry", + "AWS::EC2::NetworkInsightsAccessScope", + "AWS::EC2::NetworkInsightsAccessScopeAnalysis", + "AWS::EC2::NetworkInsightsAnalysis", + "AWS::EC2::NetworkInsightsPath", + "AWS::EC2::NetworkInterface", + "AWS::EC2::NetworkInterfaceAttachment", + "AWS::EC2::NetworkInterfacePermission", + "AWS::EC2::NetworkPerformanceMetricSubscription", + "AWS::EC2::PlacementGroup", + "AWS::EC2::PrefixList", + "AWS::EC2::Route", "AWS::EC2::RouteTable", - "AWS::MediaConnect::Gateway", - "AWS::RDS::DBProxyEndpoint", - "AWS::DataSync::LocationSMB", - "AWS::ResilienceHub::App", - "AWS::SecurityHub::Standard", - "AWS::RolesAnywhere::CRL", - "AWS::SNS::TopicInlinePolicy", - "AWS::Connect::EvaluationForm", - "AWS::Redshift::ClusterParameterGroup", - "AWS::Organizations::Policy", - "AWS::Glue::Trigger", - "AWS::GlobalAccelerator::Listener", - "AWS::VerifiedPermissions::PolicyStore", - "AWS::Signer::SigningProfile", - "AWS::EC2::VPCPeeringConnection", - "AWS::SNS::TopicPolicy", - "AWS::MWAA::Environment", - "AWS::NetworkFirewall::RuleGroup", - "AWS::KMS::Key", - "AWS::Route53Resolver::ResolverDNSSECConfig", - "AWS::ServiceCatalog::AcceptedPortfolioShare", - "AWS::Route53Resolver::FirewallRuleGroupAssociation", - "AWS::Route53Resolver::ResolverQueryLoggingConfig", + "AWS::EC2::SecurityGroup", + "AWS::EC2::SecurityGroupEgress", + "AWS::EC2::SecurityGroupIngress", "AWS::EC2::SnapshotBlockPublicAccess", + "AWS::EC2::SpotFleet", "AWS::EC2::Subnet", - "AWS::CloudTrail::ResourcePolicy", - "AWS::S3ObjectLambda::AccessPoint", - "AWS::WAF::Rule", - "AWS::ElasticBeanstalk::ConfigurationTemplate", - "AWS::SQS::QueuePolicy", - "AWS::AppSync::DomainNameApiAssociation", - "AWS::AppSync::ApiCache", - "AWS::ApiGateway::Account", - "AWS::WAFv2::WebACL", - "AWS::GlobalAccelerator::EndpointGroup", + "AWS::EC2::SubnetCidrBlock", + "AWS::EC2::SubnetNetworkAclAssociation", + "AWS::EC2::SubnetRouteTableAssociation", + "AWS::EC2::TrafficMirrorFilter", + "AWS::EC2::TrafficMirrorFilterRule", + "AWS::EC2::TrafficMirrorSession", + "AWS::EC2::TrafficMirrorTarget", + "AWS::EC2::TransitGateway", + "AWS::EC2::TransitGatewayAttachment", "AWS::EC2::TransitGatewayConnect", - "AWS::NetworkManager::SiteToSiteVpnAttachment", - "AWS::EC2::SecurityGroup", - "AWS::QuickSight::Theme", - "AWS::EC2::CapacityReservationFleet", - "AWS::OpsWorks::Volume", - "AWS::SES::EmailIdentity", - "AWS::IAM::UserToGroupAddition", - "AWS::Events::Rule", - "AWS::CloudFront::KeyValueStore", - "AWS::GuardDuty::MalwareProtectionPlan", - "AWS::DataBrew::Dataset", + "AWS::EC2::TransitGatewayMulticastDomain", + "AWS::EC2::TransitGatewayMulticastDomainAssociation", + "AWS::EC2::TransitGatewayMulticastGroupMember", + "AWS::EC2::TransitGatewayMulticastGroupSource", + "AWS::EC2::TransitGatewayPeeringAttachment", + "AWS::EC2::TransitGatewayRoute", + "AWS::EC2::TransitGatewayRouteTable", + "AWS::EC2::TransitGatewayRouteTableAssociation", + "AWS::EC2::TransitGatewayRouteTablePropagation", + "AWS::EC2::TransitGatewayVpcAttachment", + "AWS::EC2::VPC", + "AWS::EC2::VPCCidrBlock", + "AWS::EC2::VPCDHCPOptionsAssociation", + "AWS::EC2::VPCEndpoint", + "AWS::EC2::VPCEndpointConnectionNotification", + "AWS::EC2::VPCEndpointService", + "AWS::EC2::VPCEndpointServicePermissions", + "AWS::EC2::VPCGatewayAttachment", + "AWS::EC2::VPCPeeringConnection", + "AWS::EC2::VPNConnection", + "AWS::EC2::VPNConnectionRoute", + "AWS::EC2::VPNGateway", "AWS::EC2::VPNGatewayRoutePropagation", - "AWS::Glue::Crawler", - "AWS::CloudFront::Function", - "AWS::ApiGateway::Method", - "AWS::WAFRegional::RegexPatternSet", - "AWS::SSM::PatchBaseline", - "AWS::ServiceDiscovery::Service", - "AWS::CustomerProfiles::ObjectType", - "AWS::CloudFront::MonitoringSubscription", + "AWS::EC2::Volume", + "AWS::EC2::VolumeAttachment", + "AWS::ECR::PullThroughCacheRule", + "AWS::ECR::RegistryPolicy", + "AWS::ECR::ReplicationConfiguration", + "AWS::ECR::Repository", + "AWS::ECR::RepositoryCreationTemplate", + "AWS::ECS::CapacityProvider", + "AWS::ECS::Cluster", + "AWS::ECS::ClusterCapacityProviderAssociations", + "AWS::ECS::PrimaryTaskSet", + "AWS::ECS::Service", + "AWS::ECS::TaskDefinition", + "AWS::ECS::TaskSet", + "AWS::EFS::AccessPoint", + "AWS::EFS::FileSystem", "AWS::EFS::MountTarget", - "AWS::QuickSight::DataSet", - "AWS::EC2::VPNConnection", - "AWS::WAF::WebACL", - "AWS::ServiceDiscovery::PublicDnsNamespace", - "AWS::Shield::ProtectionGroup", - "AWS::NetworkManager::VpcAttachment", - "AWS::IAM::User", - "AWS::EMR::InstanceGroupConfig", - "AWS::MediaConnect::Flow", - "AWS::StepFunctions::Activity", - "AWS::SageMaker::Project", - "AWS::EC2::LocalGatewayRouteTableVirtualInterfaceGroupAssociation", - "AWS::Logs::AccountPolicy", - "AWS::S3::BucketPolicy", - "AWS::AppSync::GraphQLSchema", - "AWS::Redshift::Cluster", - "AWS::CodeBuild::SourceCredential", - "AWS::EMR::InstanceFleetConfig", + "AWS::EKS::AccessEntry", + "AWS::EKS::Addon", + "AWS::EKS::Cluster", + "AWS::EKS::FargateProfile", + "AWS::EKS::IdentityProviderConfig", + "AWS::EKS::Nodegroup", + "AWS::EKS::PodIdentityAssociation", "AWS::EMR::Cluster", - "AWS::ApiGatewayV2::DomainName", - "AWS::CustomerProfiles::EventStream", - "AWS::RDS::DBCluster", - "AWS::ServiceCatalog::ResourceUpdateConstraint", - "AWS::Transfer::Agreement", - "AWS::Chatbot::SlackChannelConfiguration", - "AWS::CloudFront::Distribution", + "AWS::EMR::InstanceFleetConfig", + "AWS::EMR::InstanceGroupConfig", + "AWS::EMR::SecurityConfiguration", + "AWS::EMR::Step", + "AWS::EMR::Studio", + "AWS::EMR::StudioSessionMapping", + "AWS::EMRServerless::Application", + "AWS::ElastiCache::CacheCluster", + "AWS::ElastiCache::ParameterGroup", + "AWS::ElastiCache::ReplicationGroup", + "AWS::ElastiCache::SecurityGroup", + "AWS::ElastiCache::SecurityGroupIngress", + "AWS::ElastiCache::ServerlessCache", "AWS::ElastiCache::SubnetGroup", - "AWS::XRay::Group", - "AWS::Oam::Link", - "AWS::SageMaker::Endpoint", + "AWS::ElastiCache::User", + "AWS::ElastiCache::UserGroup", + "AWS::ElasticBeanstalk::Application", + "AWS::ElasticBeanstalk::ApplicationVersion", + "AWS::ElasticBeanstalk::ConfigurationTemplate", + "AWS::ElasticBeanstalk::Environment", + "AWS::ElasticLoadBalancing::LoadBalancer", + "AWS::ElasticLoadBalancingV2::Listener", + "AWS::ElasticLoadBalancingV2::ListenerCertificate", + "AWS::ElasticLoadBalancingV2::ListenerRule", + "AWS::ElasticLoadBalancingV2::LoadBalancer", + "AWS::ElasticLoadBalancingV2::TargetGroup", + "AWS::ElasticLoadBalancingV2::TrustStore", "AWS::ElasticLoadBalancingV2::TrustStoreRevocation", - "AWS::NetworkFirewall::Firewall", + "AWS::Elasticsearch::Domain", + "AWS::EventSchemas::Discoverer", + "AWS::EventSchemas::Registry", + "AWS::EventSchemas::RegistryPolicy", "AWS::EventSchemas::Schema", - "AWS::M2::Application", - "AWS::SES::Template", - "AWS::KMS::ReplicaKey", - "AWS::Redshift::ClusterSecurityGroup", - "AWS::Route53::CidrCollection", - "AWS::ECR::PullThroughCacheRule", + "AWS::Events::ApiDestination", + "AWS::Events::Archive", + "AWS::Events::Connection", + "AWS::Events::EventBus", + "AWS::Events::EventBusPolicy", + "AWS::Events::Rule", + "AWS::FIS::ExperimentTemplate", + "AWS::FIS::TargetAccountConfiguration", + "AWS::FMS::NotificationChannel", + "AWS::FMS::Policy", + "AWS::FMS::ResourceSet", + "AWS::FSx::DataRepositoryAssociation", + "AWS::FSx::FileSystem", + "AWS::FSx::Snapshot", + "AWS::FSx::StorageVirtualMachine", + "AWS::FSx::Volume", + "AWS::GameLift::Alias", + "AWS::GameLift::Build", + "AWS::GameLift::Fleet", + "AWS::GlobalAccelerator::Accelerator", + "AWS::GlobalAccelerator::CrossAccountAttachment", + "AWS::GlobalAccelerator::EndpointGroup", + "AWS::GlobalAccelerator::Listener", + "AWS::Glue::Classifier", + "AWS::Glue::Connection", + "AWS::Glue::Crawler", + "AWS::Glue::CustomEntityType", + "AWS::Glue::DataCatalogEncryptionSettings", + "AWS::Glue::DataQualityRuleset", + "AWS::Glue::Database", + "AWS::Glue::DevEndpoint", + "AWS::Glue::Job", "AWS::Glue::MLTransform", - "AWS::AppConfig::HostedConfigurationVersion", - "AWS::DataSync::LocationEFS", - "AWS::EC2::LocalGatewayRouteTable", - "AWS::ApiGateway::Resource", - "AWS::SageMaker::AppImageConfig", - "AWS::VerifiedPermissions::IdentitySource", - "AWS::Macie::Session", - "AWS::ElasticLoadBalancingV2::TargetGroup", - "AWS::ApplicationAutoScaling::ScalingPolicy", - "AWS::Pipes::Pipe", - "AWS::EMR::StudioSessionMapping", - "AWS::CloudFormation::Macro", - "AWS::SageMaker::Workteam", - "AWS::Lambda::LayerVersionPermission", - "AWS::SecretsManager::Secret", - "AWS::Route53Resolver::ResolverConfig", - "AWS::ElastiCache::User", - "AWS::Neptune::DBInstance", - "AWS::SageMaker::Image", - "AWS::Logs::SubscriptionFilter", - "AWS::CodeDeploy::Application", - "AWS::DMS::EventSubscription", + "AWS::Glue::Partition", + "AWS::Glue::Registry", + "AWS::Glue::Schema", + "AWS::Glue::SchemaVersion", + "AWS::Glue::SchemaVersionMetadata", + "AWS::Glue::SecurityConfiguration", + "AWS::Glue::Table", + "AWS::Glue::Trigger", + "AWS::Glue::Workflow", + "AWS::GroundStation::Config", + "AWS::GroundStation::DataflowEndpointGroup", + "AWS::GroundStation::MissionProfile", + "AWS::GuardDuty::Detector", + "AWS::GuardDuty::Filter", + "AWS::GuardDuty::IPSet", + "AWS::GuardDuty::MalwareProtectionPlan", + "AWS::GuardDuty::Master", + "AWS::GuardDuty::Member", + "AWS::GuardDuty::ThreatIntelSet", + "AWS::IAM::AccessKey", + "AWS::IAM::Group", + "AWS::IAM::GroupPolicy", + "AWS::IAM::InstanceProfile", + "AWS::IAM::ManagedPolicy", + "AWS::IAM::OIDCProvider", + "AWS::IAM::Policy", + "AWS::IAM::Role", + "AWS::IAM::RolePolicy", + "AWS::IAM::SAMLProvider", + "AWS::IAM::ServerCertificate", + "AWS::IAM::ServiceLinkedRole", + "AWS::IAM::User", + "AWS::IAM::UserPolicy", + "AWS::IAM::UserToGroupAddition", + "AWS::IAM::VirtualMFADevice", + "AWS::IdentityStore::Group", + "AWS::IdentityStore::GroupMembership", + "AWS::ImageBuilder::Component", + "AWS::ImageBuilder::ContainerRecipe", + "AWS::ImageBuilder::DistributionConfiguration", + "AWS::ImageBuilder::Image", + "AWS::ImageBuilder::ImagePipeline", + "AWS::ImageBuilder::ImageRecipe", + "AWS::ImageBuilder::InfrastructureConfiguration", + "AWS::ImageBuilder::LifecyclePolicy", + "AWS::ImageBuilder::Workflow", + "AWS::InspectorV2::CisScanConfiguration", + "AWS::InspectorV2::Filter", + "AWS::InternetMonitor::Monitor", + "AWS::IoT::Certificate", + "AWS::IoT::Policy", + "AWS::IoT::PolicyPrincipalAttachment", + "AWS::IoT::Thing", + "AWS::IoT::ThingPrincipalAttachment", "AWS::IoT::TopicRule", + "AWS::KMS::Alias", + "AWS::KMS::Key", + "AWS::KMS::ReplicaKey", + "AWS::Kinesis::Stream", + "AWS::Kinesis::StreamConsumer", + "AWS::KinesisAnalyticsV2::Application", + "AWS::KinesisFirehose::DeliveryStream", + "AWS::LakeFormation::DataCellsFilter", + "AWS::LakeFormation::DataLakeSettings", + "AWS::LakeFormation::Permissions", "AWS::LakeFormation::PrincipalPermissions", - "AWS::DataSync::LocationS3", - "AWS::AutoScaling::LifecycleHook", - "AWS::FSx::DataRepositoryAssociation", - "AWS::EC2::NetworkInterface", - "AWS::SageMaker::FeatureGroup", - "AWS::AppSync::Resolver", - "AWS::ControlTower::LandingZone", - "AWS::RolesAnywhere::TrustAnchor", - "AWS::Route53Resolver::ResolverQueryLoggingConfigAssociation", - "AWS::ImageBuilder::LifecyclePolicy", + "AWS::LakeFormation::Resource", + "AWS::LakeFormation::Tag", + "AWS::LakeFormation::TagAssociation", + "AWS::Lambda::Alias", + "AWS::Lambda::CodeSigningConfig", "AWS::Lambda::EventInvokeConfig", - "AWS::MediaConnect::FlowOutput", + "AWS::Lambda::EventSourceMapping", + "AWS::Lambda::Function", "AWS::Lambda::LayerVersion", - "AWS::RUM::AppMonitor", - "AWS::RDS::OptionGroup", - "AWS::OpsWorks::UserProfile", - "AWS::Glue::Schema", + "AWS::Lambda::LayerVersionPermission", + "AWS::Lambda::Permission", + "AWS::Lambda::Url", + "AWS::Lambda::Version", + "AWS::LaunchWizard::Deployment", + "AWS::Lex::Bot", + "AWS::Lex::BotAlias", + "AWS::Lex::BotVersion", + "AWS::Lex::ResourcePolicy", + "AWS::Logs::AccountPolicy", "AWS::Logs::Delivery", - "AWS::ServiceCatalog::Portfolio", - "AWS::CustomerProfiles::Domain", - "AWS::IoT::Policy", - "AWS::EC2::TransitGatewayRoute", - "AWS::SSM::MaintenanceWindow", - "AWS::LakeFormation::TagAssociation", - "AWS::EC2::IPAMResourceDiscovery", - "AWS::DataSync::StorageSystem", + "AWS::Logs::DeliveryDestination", + "AWS::Logs::DeliverySource", + "AWS::Logs::Destination", + "AWS::Logs::LogAnomalyDetector", + "AWS::Logs::LogGroup", + "AWS::Logs::LogStream", + "AWS::Logs::MetricFilter", + "AWS::Logs::QueryDefinition", + "AWS::Logs::ResourcePolicy", + "AWS::Logs::SubscriptionFilter", + "AWS::M2::Application", "AWS::M2::Environment", - "AWS::ImageBuilder::InfrastructureConfiguration", - "AWS::CloudFormation::WaitCondition", - "AWS::Route53Resolver::ResolverEndpoint", - "AWS::Connect::ContactFlow", - "AWS::NetworkManager::Link", - "AWS::SageMaker::NotebookInstance", - "AWS::SSO::InstanceAccessControlAttributeConfiguration", - "AWS::WAFRegional::ByteMatchSet", - "AWS::CloudWatch::AnomalyDetector", - "AWS::EC2::SubnetNetworkAclAssociation", - "AWS::ServiceCatalog::ServiceAction", - "AWS::DMS::MigrationProject", - "AWS::IAM::UserPolicy", - "AWS::Connect::ViewVersion", - "AWS::CloudFront::OriginAccessControl", - "AWS::InspectorV2::CisScanConfiguration", - "AWS::Cognito::UserPool", - "AWS::SecretsManager::RotationSchedule", - "AWS::SecurityHub::SecurityControl", - "AWS::Lambda::Permission", - "AWS::NetworkFirewall::FirewallPolicy", - "AWS::EKS::IdentityProviderConfig", - "AWS::EC2::IPAMResourceDiscoveryAssociation", - "AWS::ServiceCatalogAppRegistry::AttributeGroup", - "AWS::EC2::ClientVpnTargetNetworkAssociation", - "AWS::AppSync::GraphQLApi", - "AWS::EC2::EgressOnlyInternetGateway", - "AWS::SecurityHub::Insight", - "AWS::EC2::VPCCidrBlock", - "AWS::IAM::VirtualMFADevice", - "AWS::EC2::NetworkInsightsPath", - "AWS::MediaTailor::VodSource", - "AWS::Neptune::DBParameterGroup", - "AWS::ACMPCA::CertificateAuthority", - "AWS::Athena::PreparedStatement", - "AWS::AutoScaling::ScheduledAction", - "AWS::Cognito::IdentityPoolPrincipalTag", - "AWS::ApiGatewayV2::Route", - "AWS::LakeFormation::Resource", - "AWS::Detective::MemberInvitation", - "AWS::EC2::IPAMScope", - "AWS::DirectoryService::SimpleAD", - "AWS::CloudFront::StreamingDistribution", - "AWS::EC2::VPCEndpoint", - "AWS::RDS::EventSubscription", - "AWS::CustomerProfiles::CalculatedAttributeDefinition", - "AWS::Config::AggregationAuthorization", - "AWS::DataSync::Agent", - "AWS::Cognito::UserPoolIdentityProvider", - "AWS::ResilienceHub::ResiliencyPolicy", - "AWS::Logs::LogGroup", - "AWS::ECS::Cluster", - "AWS::EC2::TrafficMirrorFilterRule", - "AWS::PCAConnectorAD::Template", - "AWS::EC2::PlacementGroup", - "AWS::Organizations::Account", - "AWS::ECR::Repository", - "AWS::SES::DedicatedIpPool", + "AWS::MSK::BatchScramSecret", + "AWS::MSK::Cluster", + "AWS::MSK::ClusterPolicy", + "AWS::MSK::Configuration", + "AWS::MSK::VpcConnection", + "AWS::MWAA::Environment", + "AWS::Macie::AllowList", + "AWS::Macie::Session", + "AWS::MediaConnect::Bridge", + "AWS::MediaConnect::BridgeOutput", + "AWS::MediaConnect::BridgeSource", + "AWS::MediaConnect::Flow", + "AWS::MediaConnect::FlowEntitlement", + "AWS::MediaConnect::FlowOutput", "AWS::MediaConnect::FlowSource", - "AWS::AppConfig::Extension", - "AWS::Lex::ResourcePolicy", - "AWS::ElasticLoadBalancingV2::ListenerRule", - "AWS::ElasticLoadBalancingV2::TrustStore", - "AWS::Glue::Registry", - "AWS::EC2::KeyPair", - "AWS::FSx::FileSystem", - "AWS::MediaTailor::LiveSource", - "AWS::EC2::EIPAssociation", - "AWS::ElasticBeanstalk::Application", - "AWS::IoT::ThingPrincipalAttachment", - "AWS::DLM::LifecyclePolicy", - "AWS::EC2::CapacityReservation", - "AWS::ElasticLoadBalancing::LoadBalancer", - "AWS::Transfer::User", - "AWS::IAM::RolePolicy", - "AWS::Cognito::IdentityPool", - "AWS::EC2::TrafficMirrorTarget", - "AWS::Connect::Prompt", - "AWS::StepFunctions::StateMachine", - "AWS::RDS::DBClusterParameterGroup", - "AWS::WAF::XssMatchSet", - "AWS::AppMesh::VirtualRouter", - "AWS::Scheduler::ScheduleGroup", - "AWS::FSx::Snapshot", - "AWS::EventSchemas::RegistryPolicy", - "AWS::Route53::KeySigningKey", - "AWS::EventSchemas::Registry", - "AWS::Config::RemediationConfiguration", - "AWS::Detective::OrganizationAdmin", - "AWS::Events::Connection", - "AWS::Athena::DataCatalog", "AWS::MediaConnect::FlowVpcInterface", - "AWS::Glue::Workflow", - "AWS::ApiGatewayV2::Authorizer", - "AWS::SageMaker::UserProfile", - "AWS::EC2::PrefixList", - "AWS::EC2::Instance", - "AWS::NetworkManager::Device", - "AWS::EC2::SubnetCidrBlock", - "AWS::ElasticBeanstalk::ApplicationVersion", - "AWS::AppMesh::VirtualGateway", - "AWS::WAF::SqlInjectionMatchSet", - "AWS::EC2::TransitGatewayVpcAttachment", - "AWS::Connect::RoutingProfile", - "AWS::EC2::FlowLog", - "AWS::AmazonMQ::Broker", - "AWS::EMR::Step", - "AWS::SSM::Association", - "AWS::EC2::ClientVpnEndpoint", - "AWS::CloudFront::ResponseHeadersPolicy", - "AWS::SecurityHub::AutomationRule", - "AWS::MSK::ClusterPolicy", + "AWS::MediaConnect::Gateway", + "AWS::MediaTailor::Channel", + "AWS::MediaTailor::ChannelPolicy", + "AWS::MediaTailor::LiveSource", + "AWS::MediaTailor::PlaybackConfiguration", "AWS::MediaTailor::SourceLocation", - "AWS::GuardDuty::Master", - "AWS::KMS::Alias", - "AWS::XRay::SamplingRule", - "AWS::Route53Resolver::ResolverRule", - "AWS::Transfer::Connector", - "AWS::AppMesh::VirtualNode", - "AWS::ApiGateway::DocumentationVersion", - "AWS::WAFv2::WebACLAssociation", + "AWS::MediaTailor::VodSource", + "AWS::Neptune::DBCluster", + "AWS::Neptune::DBClusterParameterGroup", + "AWS::Neptune::DBInstance", + "AWS::Neptune::DBParameterGroup", + "AWS::Neptune::DBSubnetGroup", + "AWS::Neptune::EventSubscription", + "AWS::NetworkFirewall::Firewall", + "AWS::NetworkFirewall::FirewallPolicy", + "AWS::NetworkFirewall::LoggingConfiguration", + "AWS::NetworkFirewall::RuleGroup", + "AWS::NetworkFirewall::TLSInspectionConfiguration", + "AWS::NetworkManager::ConnectAttachment", + "AWS::NetworkManager::ConnectPeer", + "AWS::NetworkManager::CoreNetwork", + "AWS::NetworkManager::CustomerGatewayAssociation", + "AWS::NetworkManager::Device", + "AWS::NetworkManager::GlobalNetwork", + "AWS::NetworkManager::Link", + "AWS::NetworkManager::LinkAssociation", + "AWS::NetworkManager::Site", + "AWS::NetworkManager::SiteToSiteVpnAttachment", + "AWS::NetworkManager::TransitGatewayPeering", + "AWS::NetworkManager::TransitGatewayRegistration", + "AWS::NetworkManager::TransitGatewayRouteTableAttachment", + "AWS::NetworkManager::VpcAttachment", + "AWS::Oam::Link", "AWS::Oam::Sink", - "AWS::CodeBuild::ReportGroup", - "AWS::ApiGateway::GatewayResponse", - "AWS::EC2::ClientVpnAuthorizationRule", - "AWS::EC2::EnclaveCertificateIamRoleAssociation", - "AWS::Connect::PhoneNumber", - "AWS::SSO::Application", - "AWS::FSx::Volume", - "AWS::Route53Resolver::OutpostResolver", - "AWS::ACMPCA::Certificate", - "AWS::EC2::IPAMAllocation", - "AWS::WorkSpaces::Workspace", - "AWS::EMR::Studio", - "AWS::EC2::InstanceConnectEndpoint", - "AWS::DirectoryService::MicrosoftAD", - "AWS::AppSync::SourceApiAssociation", - "AWS::DataSync::LocationObjectStorage", - "AWS::ECS::CapacityProvider", - "AWS::ElastiCache::CacheCluster", - "AWS::SageMaker::ModelCard", - "AWS::Logs::Destination", - "AWS::EKS::Nodegroup", + "AWS::OpenSearchService::Domain", + "AWS::OpsWorks::App", + "AWS::OpsWorks::ElasticLoadBalancerAttachment", + "AWS::OpsWorks::Instance", + "AWS::OpsWorks::Layer", + "AWS::OpsWorks::Stack", + "AWS::OpsWorks::UserProfile", + "AWS::OpsWorks::Volume", + "AWS::Organizations::Account", + "AWS::Organizations::Organization", "AWS::Organizations::OrganizationalUnit", - "AWS::AppSync::DataSource", - "AWS::SQS::Queue", - "AWS::EC2::SecurityGroupIngress", - "AWS::GuardDuty::Detector", - "AWS::AppFlow::Flow", - "AWS::ApiGateway::Stage", - "AWS::NetworkManager::CoreNetwork", - "AWS::Batch::ComputeEnvironment", - "AWS::Connect::InstanceStorageConfig", - "AWS::QuickSight::VPCConnection", - "AWS::DataPipeline::Pipeline", - "AWS::IoT::Thing", - "AWS::Route53::HealthCheck", - "AWS::Events::EventBusPolicy", - "AWS::Athena::NamedQuery", - "AWS::EC2::TrafficMirrorFilter", - "AWS::ApiGateway::Deployment", - "AWS::WAFRegional::Rule", - "AWS::LakeFormation::DataLakeSettings", - "AWS::AutoScaling::ScalingPolicy", - "AWS::GroundStation::Config", - "AWS::ResourceExplorer2::DefaultViewAssociation", - "AWS::ECR::RegistryPolicy", - "AWS::Redshift::ScheduledAction", - "AWS::RDS::DBSecurityGroup", - "AWS::ApiGatewayV2::RouteResponse", - "AWS::CloudWatch::MetricStream", - "AWS::SSO::ApplicationAssignment", - "AWS::DMS::DataProvider", - "AWS::SSM::Parameter", - "AWS::ApiGatewayV2::ApiGatewayManagedOverrides", - "AWS::Config::DeliveryChannel", - "AWS::CertificateManager::Account", - "AWS::IAM::OIDCProvider", - "AWS::LakeFormation::Tag", - "AWS::CE::AnomalyMonitor", - "AWS::ServiceCatalogAppRegistry::ResourceAssociation", - "AWS::EC2::VPNGateway", - "AWS::CloudFormation::Stack", - "AWS::ResourceGroups::Group", - "AWS::CloudFormation::ResourceDefaultVersion", - "AWS::Signer::ProfilePermission", - "AWS::Backup::RestoreTestingPlan", - "AWS::QuickSight::Dashboard", - "AWS::ServiceCatalog::TagOptionAssociation", - "AWS::EC2::IPAM", + "AWS::Organizations::Policy", + "AWS::Organizations::ResourcePolicy", + "AWS::PCAConnectorAD::Connector", + "AWS::PCAConnectorAD::DirectoryRegistration", + "AWS::PCAConnectorAD::ServicePrincipalName", + "AWS::PCAConnectorAD::Template", "AWS::PCAConnectorAD::TemplateGroupAccessControlEntry", - "AWS::DataBrew::Job", - "AWS::EC2::TransitGatewayPeeringAttachment", - "AWS::Connect::Queue", - "AWS::ECR::RepositoryCreationTemplate", + "AWS::Pipes::Pipe", + "AWS::QuickSight::Analysis", + "AWS::QuickSight::Dashboard", + "AWS::QuickSight::DataSet", + "AWS::QuickSight::DataSource", + "AWS::QuickSight::RefreshSchedule", "AWS::QuickSight::Template", - "AWS::CloudFront::CachePolicy", - "AWS::AppIntegrations::DataIntegration", - "AWS::IAM::AccessKey", + "AWS::QuickSight::Theme", + "AWS::QuickSight::VPCConnection", + "AWS::RAM::Permission", + "AWS::RAM::ResourceShare", + "AWS::RDS::DBCluster", + "AWS::RDS::DBClusterParameterGroup", + "AWS::RDS::DBInstance", + "AWS::RDS::DBParameterGroup", + "AWS::RDS::DBProxy", + "AWS::RDS::DBProxyEndpoint", + "AWS::RDS::DBProxyTargetGroup", + "AWS::RDS::DBSecurityGroup", + "AWS::RDS::DBSecurityGroupIngress", "AWS::RDS::DBSubnetGroup", - "AWS::SecretsManager::SecretTargetAttachment", - "AWS::AmazonMQ::Configuration", - "AWS::AppConfig::Deployment", - "AWS::CodePipeline::CustomActionType", - "AWS::AccessAnalyzer::Analyzer", - "AWS::EC2::EC2Fleet", - "AWS::DMS::ReplicationInstance", - "AWS::ServiceCatalog::CloudFormationProduct", - "AWS::EC2::VPCEndpointService", - "AWS::IAM::ManagedPolicy", - "AWS::EC2::LaunchTemplate", - "AWS::CloudFront::OriginRequestPolicy", - "AWS::DataSync::LocationFSxONTAP", - "AWS::NetworkManager::LinkAssociation", - "AWS::Cognito::UserPoolRiskConfigurationAttachment", - "AWS::MediaTailor::PlaybackConfiguration", - "AWS::PCAConnectorAD::ServicePrincipalName", - "AWS::ElasticBeanstalk::Environment", - "AWS::Cognito::UserPoolClient", - "AWS::WAFRegional::SqlInjectionMatchSet", - "AWS::Lambda::Version", - "AWS::EC2::DHCPOptions", - "AWS::EC2::IPAMPool", - "AWS::Kinesis::StreamConsumer", - "AWS::IAM::ServiceLinkedRole", - "AWS::CloudFormation::HookTypeConfig", - "AWS::EC2::Volume", - "AWS::IoT::Certificate", - "AWS::EC2::EIP", - "AWS::VerifiedPermissions::Policy", - "AWS::CloudFormation::ResourceVersion", - "AWS::ApiGatewayV2::Stage", - "AWS::Cognito::LogDeliveryConfiguration", - "AWS::Chatbot::MicrosoftTeamsChannelConfiguration", - "AWS::RDS::DBProxy", - "AWS::RDS::DBParameterGroup", - "AWS::SecurityHub::Hub", + "AWS::RDS::EventSubscription", + "AWS::RDS::GlobalCluster", + "AWS::RDS::Integration", + "AWS::RDS::OptionGroup", + "AWS::RUM::AppMonitor", + "AWS::Redshift::Cluster", + "AWS::Redshift::ClusterParameterGroup", + "AWS::Redshift::ClusterSecurityGroup", + "AWS::Redshift::ClusterSecurityGroupIngress", + "AWS::Redshift::ClusterSubnetGroup", + "AWS::Redshift::EndpointAccess", + "AWS::Redshift::EndpointAuthorization", + "AWS::Redshift::EventSubscription", + "AWS::Redshift::ScheduledAction", + "AWS::ResilienceHub::App", + "AWS::ResilienceHub::ResiliencyPolicy", + "AWS::ResourceExplorer2::DefaultViewAssociation", + "AWS::ResourceExplorer2::Index", + "AWS::ResourceExplorer2::View", + "AWS::ResourceGroups::Group", + "AWS::RolesAnywhere::CRL", + "AWS::RolesAnywhere::Profile", + "AWS::RolesAnywhere::TrustAnchor", + "AWS::Route53::CidrCollection", + "AWS::Route53::DNSSEC", + "AWS::Route53::HealthCheck", + "AWS::Route53::HostedZone", + "AWS::Route53::KeySigningKey", + "AWS::Route53::RecordSet", + "AWS::Route53::RecordSetGroup", + "AWS::Route53Profiles::Profile", + "AWS::Route53Profiles::ProfileAssociation", + "AWS::Route53Profiles::ProfileResourceAssociation", + "AWS::Route53Resolver::FirewallDomainList", + "AWS::Route53Resolver::FirewallRuleGroup", + "AWS::Route53Resolver::FirewallRuleGroupAssociation", + "AWS::Route53Resolver::OutpostResolver", + "AWS::Route53Resolver::ResolverConfig", + "AWS::Route53Resolver::ResolverDNSSECConfig", + "AWS::Route53Resolver::ResolverEndpoint", + "AWS::Route53Resolver::ResolverQueryLoggingConfig", + "AWS::Route53Resolver::ResolverQueryLoggingConfigAssociation", + "AWS::Route53Resolver::ResolverRule", + "AWS::Route53Resolver::ResolverRuleAssociation", + "AWS::S3::AccessGrant", + "AWS::S3::AccessGrantsInstance", + "AWS::S3::AccessGrantsLocation", "AWS::S3::AccessPoint", - "AWS::EC2::TrafficMirrorSession", + "AWS::S3::Bucket", + "AWS::S3::BucketPolicy", + "AWS::S3ObjectLambda::AccessPoint", + "AWS::S3ObjectLambda::AccessPointPolicy", + "AWS::S3Outposts::AccessPoint", + "AWS::S3Outposts::Bucket", "AWS::S3Outposts::BucketPolicy", - "AWS::Batch::JobQueue", - "AWS::ElasticLoadBalancingV2::Listener", - "AWS::Redshift::EventSubscription", - "AWS::Connect::User", - "AWS::CloudFormation::WaitConditionHandle", - "AWS::GlobalAccelerator::Accelerator", - "AWS::EKS::Addon", + "AWS::S3Outposts::Endpoint", + "AWS::SDB::Domain", + "AWS::SES::ConfigurationSet", + "AWS::SES::ConfigurationSetEventDestination", + "AWS::SES::ContactList", + "AWS::SES::DedicatedIpPool", + "AWS::SES::EmailIdentity", + "AWS::SES::Template", + "AWS::SES::VdmAttributes", + "AWS::SNS::Subscription", + "AWS::SNS::Topic", + "AWS::SNS::TopicInlinePolicy", + "AWS::SNS::TopicPolicy", + "AWS::SQS::Queue", + "AWS::SQS::QueueInlinePolicy", + "AWS::SQS::QueuePolicy", + "AWS::SSM::Association", + "AWS::SSM::Document", + "AWS::SSM::MaintenanceWindow", + "AWS::SSM::MaintenanceWindowTarget", + "AWS::SSM::MaintenanceWindowTask", + "AWS::SSM::Parameter", + "AWS::SSM::PatchBaseline", + "AWS::SSO::Application", + "AWS::SSO::ApplicationAssignment", + "AWS::SSO::Assignment", + "AWS::SSO::Instance", + "AWS::SSO::InstanceAccessControlAttributeConfiguration", + "AWS::SSO::PermissionSet", + "AWS::SageMaker::App", + "AWS::SageMaker::AppImageConfig", + "AWS::SageMaker::CodeRepository", + "AWS::SageMaker::Domain", + "AWS::SageMaker::Endpoint", + "AWS::SageMaker::EndpointConfig", + "AWS::SageMaker::FeatureGroup", + "AWS::SageMaker::Image", + "AWS::SageMaker::ImageVersion", + "AWS::SageMaker::InferenceExperiment", + "AWS::SageMaker::Model", + "AWS::SageMaker::ModelCard", + "AWS::SageMaker::ModelPackage", + "AWS::SageMaker::ModelPackageGroup", + "AWS::SageMaker::NotebookInstance", + "AWS::SageMaker::NotebookInstanceLifecycleConfig", + "AWS::SageMaker::Pipeline", + "AWS::SageMaker::Project", + "AWS::SageMaker::Space", + "AWS::SageMaker::UserProfile", + "AWS::SageMaker::Workteam", + "AWS::Scheduler::Schedule", + "AWS::Scheduler::ScheduleGroup", + "AWS::SecretsManager::ResourcePolicy", + "AWS::SecretsManager::RotationSchedule", + "AWS::SecretsManager::Secret", + "AWS::SecretsManager::SecretTargetAttachment", + "AWS::SecurityHub::AutomationRule", + "AWS::SecurityHub::DelegatedAdmin", + "AWS::SecurityHub::Hub", + "AWS::SecurityHub::Insight", + "AWS::SecurityHub::OrganizationConfiguration", + "AWS::SecurityHub::ProductSubscription", + "AWS::SecurityHub::SecurityControl", + "AWS::SecurityHub::Standard", + "AWS::ServiceCatalog::AcceptedPortfolioShare", + "AWS::ServiceCatalog::CloudFormationProduct", + "AWS::ServiceCatalog::CloudFormationProvisionedProduct", + "AWS::ServiceCatalog::LaunchNotificationConstraint", + "AWS::ServiceCatalog::LaunchRoleConstraint", + "AWS::ServiceCatalog::LaunchTemplateConstraint", + "AWS::ServiceCatalog::Portfolio", + "AWS::ServiceCatalog::PortfolioPrincipalAssociation", + "AWS::ServiceCatalog::PortfolioProductAssociation", + "AWS::ServiceCatalog::PortfolioShare", + "AWS::ServiceCatalog::ResourceUpdateConstraint", + "AWS::ServiceCatalog::ServiceAction", + "AWS::ServiceCatalog::ServiceActionAssociation", + "AWS::ServiceCatalog::StackSetConstraint", + "AWS::ServiceCatalog::TagOption", + "AWS::ServiceCatalog::TagOptionAssociation", + "AWS::ServiceCatalogAppRegistry::Application", + "AWS::ServiceCatalogAppRegistry::AttributeGroup", + "AWS::ServiceCatalogAppRegistry::AttributeGroupAssociation", + "AWS::ServiceCatalogAppRegistry::ResourceAssociation", + "AWS::ServiceDiscovery::HttpNamespace", + "AWS::ServiceDiscovery::Instance", + "AWS::ServiceDiscovery::PrivateDnsNamespace", + "AWS::ServiceDiscovery::PublicDnsNamespace", + "AWS::ServiceDiscovery::Service", + "AWS::Shield::DRTAccess", + "AWS::Shield::ProactiveEngagement", + "AWS::Shield::Protection", + "AWS::Shield::ProtectionGroup", + "AWS::Signer::ProfilePermission", + "AWS::Signer::SigningProfile", + "AWS::StepFunctions::Activity", + "AWS::StepFunctions::StateMachine", + "AWS::StepFunctions::StateMachineAlias", + "AWS::StepFunctions::StateMachineVersion", + "AWS::Synthetics::Canary", + "AWS::SystemsManagerSAP::Application", + "AWS::Transfer::Agreement", + "AWS::Transfer::Certificate", + "AWS::Transfer::Connector", + "AWS::Transfer::Profile", + "AWS::Transfer::Server", + "AWS::Transfer::User", + "AWS::Transfer::Workflow", + "AWS::VerifiedPermissions::IdentitySource", + "AWS::VerifiedPermissions::Policy", + "AWS::VerifiedPermissions::PolicyStore", + "AWS::VerifiedPermissions::PolicyTemplate", + "AWS::VoiceID::Domain", + "AWS::WAF::ByteMatchSet", + "AWS::WAF::IPSet", + "AWS::WAF::Rule", + "AWS::WAF::SizeConstraintSet", + "AWS::WAF::SqlInjectionMatchSet", + "AWS::WAF::WebACL", + "AWS::WAF::XssMatchSet", + "AWS::WAFRegional::ByteMatchSet", + "AWS::WAFRegional::GeoMatchSet", + "AWS::WAFRegional::IPSet", + "AWS::WAFRegional::RateBasedRule", + "AWS::WAFRegional::RegexPatternSet", + "AWS::WAFRegional::Rule", + "AWS::WAFRegional::SizeConstraintSet", + "AWS::WAFRegional::SqlInjectionMatchSet", + "AWS::WAFRegional::WebACL", + "AWS::WAFRegional::WebACLAssociation", + "AWS::WAFRegional::XssMatchSet", + "AWS::WAFv2::IPSet", + "AWS::WAFv2::LoggingConfiguration", + "AWS::WAFv2::RegexPatternSet", + "AWS::WAFv2::RuleGroup", + "AWS::WAFv2::WebACL", + "AWS::WAFv2::WebACLAssociation", + "AWS::WorkSpaces::Workspace", + "AWS::XRay::Group", + "AWS::XRay::ResourcePolicy", + "AWS::XRay::SamplingRule", + "Module", ] # pylint: disable=too-many-lines -cached: List[str] = [ +cached: list[str] = [ "Module", - "aws-apigatewayv2-integration.json", - "aws-connect-userhierarchygroup.json", - "aws-apigatewayv2-apimapping.json", - "aws-ce-anomalysubscription.json", - "aws-shield-drtaccess.json", - "aws-sso-assignment.json", - "aws-glue-partition.json", - "aws-rds-integration.json", - "aws-ec2-transitgatewayroutetablepropagation.json", - "aws-shield-proactiveengagement.json", + "aws-accessanalyzer-analyzer.json", + "aws-acmpca-certificate.json", + "aws-acmpca-certificateauthority.json", + "aws-acmpca-certificateauthorityactivation.json", + "aws-acmpca-permission.json", + "aws-amazonmq-broker.json", + "aws-amazonmq-configuration.json", + "aws-apigateway-account.json", + "aws-apigateway-apikey.json", + "aws-apigateway-authorizer.json", "aws-apigateway-basepathmapping.json", - "aws-s3-accessgrantslocation.json", - "aws-guardduty-filter.json", - "aws-ecs-service.json", - "aws-ram-resourceshare.json", - "aws-dms-replicationconfig.json", - "aws-dynamodb-table.json", - "aws-ec2-securitygroupegress.json", - "aws-ec2-localgatewayroutetablevpcassociation.json", - "aws-config-organizationconfigrule.json", - "aws-glue-dataqualityruleset.json", - "aws-networkmanager-transitgatewaypeering.json", - "aws-mediaconnect-bridge.json", - "aws-route53profiles-profileassociation.json", - "aws-config-configurationrecorder.json", - "aws-ec2-networkperformancemetricsubscription.json", - "aws-cloudfront-continuousdeploymentpolicy.json", - "aws-quicksight-analysis.json", - "aws-ecr-replicationconfiguration.json", - "aws-appconfig-extensionassociation.json", - "aws-s3outposts-accesspoint.json", - "aws-ec2-ipampoolcidr.json", - "aws-redshift-clustersubnetgroup.json", - "aws-rds-dbinstance.json", - "aws-ec2-vpcdhcpoptionsassociation.json", - "aws-apigateway-model.json", - "aws-apigatewayv2-integrationresponse.json", - "aws-ec2-networkacl.json", - "aws-lambda-eventsourcemapping.json", - "aws-logs-resourcepolicy.json", - "aws-lex-botversion.json", - "aws-servicecatalog-launchnotificationconstraint.json", - "aws-dms-instanceprofile.json", - "aws-quicksight-datasource.json", - "aws-ec2-networkinsightsaccessscopeanalysis.json", - "aws-transfer-certificate.json", - "aws-connect-instance.json", + "aws-apigateway-clientcertificate.json", + "aws-apigateway-deployment.json", "aws-apigateway-documentationpart.json", - "aws-route53profiles-profile.json", - "aws-cloudwatch-compositealarm.json", - "aws-route53resolver-firewalldomainlist.json", - "aws-redshift-endpointaccess.json", - "aws-appconfig-application.json", - "aws-mediatailor-channel.json", - "aws-lambda-url.json", - "aws-mediatailor-channelpolicy.json", - "aws-datasync-locationfsxwindows.json", + "aws-apigateway-documentationversion.json", + "aws-apigateway-domainname.json", + "aws-apigateway-gatewayresponse.json", + "aws-apigateway-method.json", + "aws-apigateway-model.json", "aws-apigateway-requestvalidator.json", - "aws-autoscaling-warmpool.json", - "aws-applicationautoscaling-scalabletarget.json", + "aws-apigateway-resource.json", + "aws-apigateway-restapi.json", + "aws-apigateway-stage.json", + "aws-apigateway-usageplan.json", + "aws-apigateway-usageplankey.json", + "aws-apigateway-vpclink.json", + "aws-apigatewayv2-api.json", + "aws-apigatewayv2-apigatewaymanagedoverrides.json", + "aws-apigatewayv2-apimapping.json", + "aws-apigatewayv2-authorizer.json", + "aws-apigatewayv2-deployment.json", + "aws-apigatewayv2-domainname.json", + "aws-apigatewayv2-integration.json", + "aws-apigatewayv2-integrationresponse.json", "aws-apigatewayv2-model.json", - "aws-config-storedquery.json", - "aws-acmpca-permission.json", - "aws-neptune-dbsubnetgroup.json", - "aws-transfer-server.json", - "aws-apigateway-domainname.json", - "aws-ecs-primarytaskset.json", - "aws-fms-resourceset.json", - "aws-cognito-userpooldomain.json", - "aws-autoscaling-autoscalinggroup.json", - "aws-wafv2-regexpatternset.json", - "aws-eks-fargateprofile.json", - "aws-route53-dnssec.json", - "aws-redshift-endpointauthorization.json", - "aws-ec2-transitgatewayroutetable.json", - "aws-controltower-enabledcontrol.json", - "aws-networkmanager-connectattachment.json", - "aws-s3-accessgrantsinstance.json", - "aws-cognito-identitypoolroleattachment.json", - "aws-route53-recordset.json", - "aws-eks-accessentry.json", - "aws-elasticache-securitygroup.json", - "aws-backup-framework.json", + "aws-apigatewayv2-route.json", + "aws-apigatewayv2-routeresponse.json", + "aws-apigatewayv2-stage.json", + "aws-appconfig-application.json", + "aws-appconfig-configurationprofile.json", + "aws-appconfig-deployment.json", + "aws-appconfig-deploymentstrategy.json", + "aws-appconfig-environment.json", + "aws-appconfig-extension.json", + "aws-appconfig-extensionassociation.json", + "aws-appconfig-hostedconfigurationversion.json", + "aws-appflow-connector.json", "aws-appflow-connectorprofile.json", + "aws-appflow-flow.json", "aws-appintegrations-application.json", - "aws-kinesisfirehose-deliverystream.json", - "aws-ec2-networkinsightsaccessscope.json", - "aws-cognito-userpoolusertogroupattachment.json", - "aws-pcaconnectorad-directoryregistration.json", - "aws-sagemaker-coderepository.json", - "aws-imagebuilder-component.json", - "aws-ses-configurationseteventdestination.json", - "aws-mediaconnect-flowentitlement.json", - "aws-glue-connection.json", + "aws-appintegrations-dataintegration.json", + "aws-appintegrations-eventintegration.json", + "aws-applicationautoscaling-scalabletarget.json", + "aws-applicationautoscaling-scalingpolicy.json", + "aws-applicationinsights-application.json", + "aws-applicationsignals-servicelevelobjective.json", + "aws-appmesh-gatewayroute.json", + "aws-appmesh-mesh.json", "aws-appmesh-route.json", - "aws-iam-group.json", - "aws-organizations-resourcepolicy.json", - "aws-wafregional-webaclassociation.json", - "aws-ec2-transitgatewaymulticastgroupsource.json", - "aws-lex-bot.json", - "aws-transfer-profile.json", - "aws-databrew-recipe.json", - "aws-sso-instance.json", + "aws-appmesh-virtualgateway.json", + "aws-appmesh-virtualnode.json", + "aws-appmesh-virtualrouter.json", + "aws-appmesh-virtualservice.json", + "aws-appsync-apicache.json", + "aws-appsync-apikey.json", + "aws-appsync-datasource.json", "aws-appsync-domainname.json", - "aws-apigateway-usageplankey.json", - "aws-fms-policy.json", - "aws-cloudfront-realtimelogconfig.json", - "aws-sagemaker-pipeline.json", - "aws-cloudtrail-channel.json", - "aws-lakeformation-datacellsfilter.json", - "aws-datasync-locationhdfs.json", - "aws-events-archive.json", - "aws-msk-cluster.json", - "aws-securityhub-delegatedadmin.json", - "aws-controltower-enabledbaseline.json", - "aws-ec2-vpcendpointconnectionnotification.json", - "aws-config-configurationaggregator.json", - "aws-imagebuilder-imagepipeline.json", - "aws-elasticloadbalancingv2-listenercertificate.json", - "aws-cloudformation-moduleversion.json", - "aws-cloud9-environmentec2.json", - "aws-route53resolver-resolverruleassociation.json", - "aws-fsx-storagevirtualmachine.json", - "aws-synthetics-canary.json", + "aws-appsync-domainnameapiassociation.json", + "aws-appsync-functionconfiguration.json", + "aws-appsync-graphqlapi.json", + "aws-appsync-graphqlschema.json", + "aws-appsync-resolver.json", + "aws-appsync-sourceapiassociation.json", + "aws-arczonalshift-zonalautoshiftconfiguration.json", + "aws-athena-datacatalog.json", + "aws-athena-namedquery.json", + "aws-athena-preparedstatement.json", + "aws-athena-workgroup.json", + "aws-autoscaling-autoscalinggroup.json", + "aws-autoscaling-launchconfiguration.json", + "aws-autoscaling-lifecyclehook.json", + "aws-autoscaling-scalingpolicy.json", + "aws-autoscaling-scheduledaction.json", + "aws-autoscaling-warmpool.json", + "aws-backup-backupplan.json", + "aws-backup-backupselection.json", + "aws-backup-backupvault.json", + "aws-backup-framework.json", + "aws-backup-reportplan.json", + "aws-backup-restoretestingplan.json", "aws-backup-restoretestingselection.json", - "aws-sns-subscription.json", - "aws-appmesh-mesh.json", - "aws-ec2-natgateway.json", - "aws-internetmonitor-monitor.json", - "aws-transfer-workflow.json", - "aws-s3-accessgrant.json", - "aws-appconfig-deploymentstrategy.json", - "aws-glue-devendpoint.json", - "aws-sagemaker-modelpackage.json", - "aws-customerprofiles-integration.json", - "aws-eventschemas-discoverer.json", - "aws-networkmanager-connectpeer.json", - "aws-elasticache-usergroup.json", - "aws-imagebuilder-imagerecipe.json", - "aws-apigateway-restapi.json", - "aws-opsworks-elasticloadbalancerattachment.json", - "aws-appmesh-virtualservice.json", - "aws-s3objectlambda-accesspointpolicy.json", - "aws-networkmanager-transitgatewayregistration.json", - "aws-inspectorv2-filter.json", - "aws-elasticache-replicationgroup.json", - "aws-stepfunctions-statemachinealias.json", - "aws-cognito-userpoolresourceserver.json", - "aws-rds-globalcluster.json", + "aws-backupgateway-hypervisor.json", + "aws-batch-computeenvironment.json", + "aws-batch-jobdefinition.json", + "aws-batch-jobqueue.json", + "aws-batch-schedulingpolicy.json", + "aws-ce-anomalymonitor.json", + "aws-ce-anomalysubscription.json", + "aws-certificatemanager-account.json", + "aws-certificatemanager-certificate.json", + "aws-chatbot-microsoftteamschannelconfiguration.json", + "aws-chatbot-slackchannelconfiguration.json", + "aws-cloud9-environmentec2.json", + "aws-cloudformation-customresource.json", + "aws-cloudformation-hookdefaultversion.json", + "aws-cloudformation-hooktypeconfig.json", + "aws-cloudformation-hookversion.json", + "aws-cloudformation-macro.json", "aws-cloudformation-moduledefaultversion.json", - "aws-applicationsignals-servicelevelobjective.json", - "aws-route53profiles-profileresourceassociation.json", - "aws-sso-permissionset.json", - "aws-glue-job.json", - "aws-servicecatalog-cloudformationprovisionedproduct.json", - "aws-connect-view.json", - "aws-eks-podidentityassociation.json", - "aws-resourceexplorer2-index.json", - "aws-glue-table.json", - "aws-logs-metricfilter.json", - "aws-sns-topic.json", - "aws-backup-backupselection.json", - "aws-datasync-locationfsxlustre.json", - "aws-sagemaker-app.json", - "aws-ec2-vpcgatewayattachment.json", - "aws-cloudtrail-trail.json", - "aws-ec2-vpnconnectionroute.json", - "aws-ec2-internetgateway.json", - "aws-ec2-gatewayroutetableassociation.json", - "aws-wafv2-ipset.json", - "aws-mediaconnect-bridgeoutput.json", - "aws-ssm-document.json", - "aws-iam-role.json", - "aws-dms-endpoint.json", - "aws-elasticache-serverlesscache.json", + "aws-cloudformation-moduleversion.json", + "aws-cloudformation-publictypeversion.json", + "aws-cloudformation-publisher.json", + "aws-cloudformation-resourcedefaultversion.json", + "aws-cloudformation-resourceversion.json", + "aws-cloudformation-stack.json", + "aws-cloudformation-stackset.json", + "aws-cloudformation-typeactivation.json", + "aws-cloudformation-waitconditionhandle.json", + "aws-cloudfront-cachepolicy.json", "aws-cloudfront-cloudfrontoriginaccessidentity.json", - "aws-sagemaker-endpointconfig.json", - "aws-appmesh-gatewayroute.json", - "aws-apigateway-apikey.json", - "aws-networkmanager-transitgatewayroutetableattachment.json", - "aws-autoscaling-launchconfiguration.json", - "aws-apigateway-clientcertificate.json", - "aws-kinesisanalyticsv2-application.json", - "aws-lambda-alias.json", - "aws-logs-loganomalydetector.json", - "aws-ec2-transitgatewaymulticastdomainassociation.json", - "aws-s3outposts-endpoint.json", - "aws-ec2-transitgatewayroutetableassociation.json", - "aws-appconfig-environment.json", - "aws-neptune-eventsubscription.json", - "aws-imagebuilder-image.json", - "aws-elasticache-securitygroupingress.json", - "aws-wafregional-xssmatchset.json", - "aws-rds-dbproxytargetgroup.json", + "aws-cloudfront-continuousdeploymentpolicy.json", + "aws-cloudfront-distribution.json", + "aws-cloudfront-function.json", + "aws-cloudfront-keygroup.json", + "aws-cloudfront-keyvaluestore.json", + "aws-cloudfront-monitoringsubscription.json", + "aws-cloudfront-originaccesscontrol.json", + "aws-cloudfront-originrequestpolicy.json", + "aws-cloudfront-publickey.json", + "aws-cloudfront-realtimelogconfig.json", + "aws-cloudfront-responseheaderspolicy.json", + "aws-cloudtrail-channel.json", + "aws-cloudtrail-resourcepolicy.json", + "aws-cloudtrail-trail.json", "aws-cloudwatch-alarm.json", - "aws-guardduty-member.json", - "aws-groundstation-missionprofile.json", - "aws-cloudformation-customresource.json", - "aws-fis-targetaccountconfiguration.json", - "aws-wafv2-rulegroup.json", - "aws-sagemaker-modelpackagegroup.json", - "aws-ses-configurationset.json", - "aws-networkfirewall-loggingconfiguration.json", - "aws-glue-classifier.json", - "aws-connect-securityprofile.json", + "aws-cloudwatch-anomalydetector.json", + "aws-cloudwatch-compositealarm.json", + "aws-cloudwatch-insightrule.json", + "aws-cloudwatch-metricstream.json", + "aws-codebuild-project.json", + "aws-codebuild-reportgroup.json", + "aws-codebuild-sourcecredential.json", + "aws-codedeploy-application.json", + "aws-codedeploy-deploymentconfig.json", "aws-codedeploy-deploymentgroup.json", - "aws-sagemaker-inferenceexperiment.json", - "aws-cloudformation-stackset.json", - "aws-ec2-route.json", - "aws-fis-experimenttemplate.json", - "aws-cloudformation-hookversion.json", - "aws-rolesanywhere-profile.json", - "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", - "aws-resourceexplorer2-view.json", - "aws-glue-datacatalogencryptionsettings.json", - "aws-cloudfront-publickey.json", - "aws-pcaconnectorad-connector.json", - "aws-lex-botalias.json", - "aws-identitystore-group.json", - "aws-ram-permission.json", - "aws-datasync-task.json", - "aws-ecs-taskdefinition.json", - "aws-sagemaker-model.json", - "aws-quicksight-refreshschedule.json", - "aws-shield-protection.json", - "aws-ses-vdmattributes.json", - "aws-identitystore-groupmembership.json", - "aws-appsync-functionconfiguration.json", - "aws-ec2-spotfleet.json", - "aws-glue-schemaversion.json", - "aws-sagemaker-space.json", - "aws-fms-notificationchannel.json", - "aws-msk-batchscramsecret.json", + "aws-codepipeline-pipeline.json", + "aws-cognito-identitypool.json", + "aws-cognito-identitypoolprincipaltag.json", + "aws-cognito-identitypoolroleattachment.json", + "aws-cognito-logdeliveryconfiguration.json", + "aws-cognito-userpool.json", + "aws-cognito-userpoolclient.json", + "aws-cognito-userpooldomain.json", + "aws-cognito-userpoolgroup.json", + "aws-cognito-userpoolidentityprovider.json", + "aws-cognito-userpoolresourceserver.json", + "aws-cognito-userpoolriskconfigurationattachment.json", + "aws-cognito-userpooluser.json", + "aws-cognito-userpoolusertogroupattachment.json", + "aws-config-aggregationauthorization.json", + "aws-config-configrule.json", + "aws-config-configurationaggregator.json", + "aws-config-configurationrecorder.json", + "aws-config-deliverychannel.json", + "aws-config-organizationconfigrule.json", + "aws-config-remediationconfiguration.json", + "aws-config-storedquery.json", + "aws-connect-approvedorigin.json", + "aws-connect-contactflow.json", + "aws-connect-contactflowmodule.json", + "aws-connect-evaluationform.json", "aws-connect-hoursofoperation.json", - "aws-dms-certificate.json", - "aws-s3-bucket.json", - "aws-guardduty-ipset.json", - "aws-servicediscovery-httpnamespace.json", - "aws-emr-securityconfiguration.json", - "aws-cloudwatch-insightrule.json", - "aws-apigateway-usageplan.json", - "aws-appintegrations-eventintegration.json", - "aws-batch-schedulingpolicy.json", - "aws-mediaconnect-bridgesource.json", - "aws-databrew-project.json", - "aws-athena-workgroup.json", - "aws-sagemaker-imageversion.json", - "aws-apigatewayv2-api.json", - "aws-detective-graph.json", - "aws-servicecatalog-portfolioshare.json", - "aws-apigateway-vpclink.json", + "aws-connect-instance.json", + "aws-connect-instancestorageconfig.json", "aws-connect-integrationassociation.json", - "aws-networkmanager-customergatewayassociation.json", - "aws-iam-servercertificate.json", - "aws-globalaccelerator-crossaccountattachment.json", - "aws-events-eventbus.json", - "aws-sqs-queueinlinepolicy.json", - "aws-organizations-organization.json", - "aws-ssm-maintenancewindowtarget.json", - "aws-voiceid-domain.json", - "aws-apigateway-authorizer.json", - "aws-backupgateway-hypervisor.json", + "aws-connect-phonenumber.json", "aws-connect-predefinedattribute.json", - "aws-iam-policy.json", - "aws-databrew-schedule.json", - "aws-connect-approvedorigin.json", - "aws-ses-contactlist.json", - "aws-connect-securitykey.json", - "aws-cloudformation-publisher.json", - "aws-rds-dbsecuritygroupingress.json", - "aws-securityhub-organizationconfiguration.json", - "aws-ec2-transitgatewaymulticastgroupmember.json", - "aws-ec2-volumeattachment.json", - "aws-glue-securityconfiguration.json", - "aws-networkfirewall-tlsinspectionconfiguration.json", - "aws-databrew-ruleset.json", - "aws-applicationinsights-application.json", - "aws-ecs-clustercapacityproviderassociations.json", - "aws-appconfig-configurationprofile.json", - "aws-msk-configuration.json", - "aws-ec2-transitgateway.json", - "aws-cognito-userpoolgroup.json", - "aws-ec2-vpcendpointservicepermissions.json", - "aws-ssm-maintenancewindowtask.json", - "aws-ec2-transitgatewaymulticastdomain.json", - "aws-verifiedpermissions-policytemplate.json", - "aws-eks-cluster.json", - "aws-codebuild-project.json", - "aws-efs-filesystem.json", + "aws-connect-prompt.json", + "aws-connect-queue.json", "aws-connect-quickconnect.json", - "aws-logs-querydefinition.json", - "aws-securityhub-productsubscription.json", - "aws-iam-instanceprofile.json", - "aws-datasync-locationnfs.json", - "aws-sagemaker-domain.json", - "aws-certificatemanager-certificate.json", - "aws-glue-schemaversionmetadata.json", - "aws-sdb-domain.json", - "aws-ec2-subnetroutetableassociation.json", - "aws-servicecatalog-serviceactionassociation.json", - "aws-sagemaker-notebookinstancelifecycleconfig.json", - "aws-imagebuilder-containerrecipe.json", + "aws-connect-routingprofile.json", "aws-connect-rule.json", - "aws-efs-accesspoint.json", - "aws-redshift-clustersecuritygroupingress.json", - "aws-servicecatalogappregistry-attributegroupassociation.json", - "aws-elasticloadbalancingv2-loadbalancer.json", - "aws-opensearchservice-domain.json", - "aws-servicediscovery-instance.json", - "aws-elasticsearch-domain.json", - "aws-apigatewayv2-deployment.json", - "aws-servicecatalog-stacksetconstraint.json", - "aws-servicecatalog-tagoption.json", - "aws-servicediscovery-privatednsnamespace.json", - "aws-servicecatalog-launchroleconstraint.json", - "aws-secretsmanager-resourcepolicy.json", - "aws-cloudformation-hookdefaultversion.json", - "aws-config-configrule.json", - "aws-ec2-networkinsightsanalysis.json", - "aws-ec2-clientvpnroute.json", - "aws-imagebuilder-workflow.json", - "aws-ecs-taskset.json", - "aws-appsync-apikey.json", - "aws-cloudformation-typeactivation.json", - "aws-groundstation-dataflowendpointgroup.json", - "aws-acmpca-certificateauthorityactivation.json", - "aws-guardduty-threatintelset.json", - "aws-macie-allowlist.json", - "aws-ec2-vpc.json", - "aws-arczonalshift-zonalautoshiftconfiguration.json", - "aws-msk-vpcconnection.json", + "aws-connect-securitykey.json", + "aws-connect-securityprofile.json", + "aws-connect-tasktemplate.json", + "aws-connect-user.json", + "aws-connect-userhierarchygroup.json", + "aws-connect-view.json", + "aws-connect-viewversion.json", + "aws-controltower-enabledbaseline.json", + "aws-controltower-enabledcontrol.json", + "aws-controltower-landingzone.json", + "aws-customerprofiles-calculatedattributedefinition.json", + "aws-customerprofiles-domain.json", + "aws-customerprofiles-eventstream.json", + "aws-customerprofiles-integration.json", + "aws-customerprofiles-objecttype.json", + "aws-databrew-dataset.json", + "aws-databrew-job.json", + "aws-databrew-project.json", + "aws-databrew-recipe.json", + "aws-databrew-ruleset.json", + "aws-databrew-schedule.json", + "aws-datasync-agent.json", "aws-datasync-locationazureblob.json", - "aws-logs-logstream.json", + "aws-datasync-locationefs.json", + "aws-datasync-locationfsxlustre.json", + "aws-datasync-locationfsxontap.json", + "aws-datasync-locationfsxwindows.json", + "aws-datasync-locationhdfs.json", + "aws-datasync-locationnfs.json", + "aws-datasync-locationobjectstorage.json", + "aws-datasync-locations3.json", + "aws-datasync-locationsmb.json", + "aws-datasync-storagesystem.json", + "aws-datasync-task.json", + "aws-detective-graph.json", + "aws-detective-memberinvitation.json", + "aws-detective-organizationadmin.json", + "aws-dlm-lifecyclepolicy.json", + "aws-dms-certificate.json", + "aws-dms-dataprovider.json", + "aws-dms-endpoint.json", + "aws-dms-eventsubscription.json", + "aws-dms-instanceprofile.json", + "aws-dms-migrationproject.json", + "aws-dms-replicationconfig.json", + "aws-dms-replicationinstance.json", "aws-dms-replicationsubnetgroup.json", - "aws-s3outposts-bucket.json", - "aws-route53-recordsetgroup.json", - "aws-ec2-localgatewayroute.json", - "aws-cloudformation-publictypeversion.json", - "aws-opsworks-app.json", - "aws-kinesis-stream.json", - "aws-backup-reportplan.json", - "aws-batch-jobdefinition.json", - "aws-iam-samlprovider.json", - "aws-appflow-connector.json", - "aws-cloudfront-keygroup.json", - "aws-ec2-networkinterfaceattachment.json", - "aws-glue-customentitytype.json", - "aws-cognito-userpooluser.json", - "aws-connect-contactflowmodule.json", - "aws-codedeploy-deploymentconfig.json", - "aws-networkmanager-globalnetwork.json", - "aws-connect-tasktemplate.json", - "aws-stepfunctions-statemachineversion.json", - "aws-servicecatalogappregistry-application.json", - "aws-networkmanager-site.json", - "aws-glue-database.json", - "aws-neptune-dbcluster.json", - "aws-backup-backupvault.json", + "aws-dms-replicationtask.json", + "aws-dynamodb-globaltable.json", + "aws-dynamodb-table.json", + "aws-ec2-capacityreservation.json", + "aws-ec2-capacityreservationfleet.json", + "aws-ec2-clientvpnendpoint.json", + "aws-ec2-clientvpnroute.json", + "aws-ec2-clientvpntargetnetworkassociation.json", "aws-ec2-customergateway.json", - "aws-iam-grouppolicy.json", - "aws-scheduler-schedule.json", - "aws-waf-bytematchset.json", - "aws-emrserverless-application.json", + "aws-ec2-dhcpoptions.json", + "aws-ec2-ec2fleet.json", + "aws-ec2-egressonlyinternetgateway.json", + "aws-ec2-eip.json", + "aws-ec2-eipassociation.json", + "aws-ec2-enclavecertificateiamroleassociation.json", + "aws-ec2-flowlog.json", + "aws-ec2-gatewayroutetableassociation.json", "aws-ec2-host.json", - "aws-lambda-codesigningconfig.json", - "aws-systemsmanagersap-application.json", - "aws-dms-replicationtask.json", + "aws-ec2-instance.json", + "aws-ec2-instanceconnectendpoint.json", + "aws-ec2-internetgateway.json", + "aws-ec2-ipam.json", + "aws-ec2-ipamallocation.json", + "aws-ec2-ipampool.json", + "aws-ec2-ipampoolcidr.json", + "aws-ec2-ipamresourcediscovery.json", + "aws-ec2-ipamresourcediscoveryassociation.json", + "aws-ec2-ipamscope.json", + "aws-ec2-keypair.json", + "aws-ec2-launchtemplate.json", + "aws-ec2-localgatewayroute.json", + "aws-ec2-localgatewayroutetable.json", + "aws-ec2-localgatewayroutetablevirtualinterfacegroupassociation.json", + "aws-ec2-localgatewayroutetablevpcassociation.json", + "aws-ec2-natgateway.json", + "aws-ec2-networkacl.json", + "aws-ec2-networkinsightsaccessscope.json", + "aws-ec2-networkinsightsaccessscopeanalysis.json", + "aws-ec2-networkinsightsanalysis.json", + "aws-ec2-networkinsightspath.json", + "aws-ec2-networkinterface.json", + "aws-ec2-networkinterfaceattachment.json", + "aws-ec2-networkperformancemetricsubscription.json", + "aws-ec2-placementgroup.json", + "aws-ec2-prefixlist.json", + "aws-ec2-route.json", "aws-ec2-routetable.json", - "aws-mediaconnect-gateway.json", - "aws-rds-dbproxyendpoint.json", - "aws-datasync-locationsmb.json", - "aws-resiliencehub-app.json", - "aws-securityhub-standard.json", - "aws-rolesanywhere-crl.json", - "aws-sns-topicinlinepolicy.json", - "aws-connect-evaluationform.json", - "aws-redshift-clusterparametergroup.json", - "aws-organizations-policy.json", - "aws-glue-trigger.json", - "aws-globalaccelerator-listener.json", - "aws-verifiedpermissions-policystore.json", - "aws-signer-signingprofile.json", - "aws-ec2-vpcpeeringconnection.json", - "aws-sns-topicpolicy.json", - "aws-mwaa-environment.json", - "aws-networkfirewall-rulegroup.json", - "aws-kms-key.json", - "aws-route53resolver-resolverdnssecconfig.json", - "aws-route53resolver-firewallrulegroupassociation.json", - "aws-route53resolver-resolverqueryloggingconfig.json", + "aws-ec2-securitygroup.json", + "aws-ec2-securitygroupegress.json", + "aws-ec2-securitygroupingress.json", "aws-ec2-snapshotblockpublicaccess.json", + "aws-ec2-spotfleet.json", "aws-ec2-subnet.json", - "aws-cloudtrail-resourcepolicy.json", - "aws-s3objectlambda-accesspoint.json", - "aws-elasticbeanstalk-configurationtemplate.json", - "aws-sqs-queuepolicy.json", - "aws-appsync-domainnameapiassociation.json", - "aws-appsync-apicache.json", - "aws-apigateway-account.json", - "aws-wafv2-webacl.json", - "aws-globalaccelerator-endpointgroup.json", + "aws-ec2-subnetcidrblock.json", + "aws-ec2-subnetnetworkaclassociation.json", + "aws-ec2-subnetroutetableassociation.json", + "aws-ec2-trafficmirrorfilter.json", + "aws-ec2-trafficmirrortarget.json", + "aws-ec2-transitgateway.json", "aws-ec2-transitgatewayconnect.json", - "aws-networkmanager-sitetositevpnattachment.json", - "aws-ec2-securitygroup.json", - "aws-quicksight-theme.json", - "aws-ec2-capacityreservationfleet.json", - "aws-opsworks-volume.json", - "aws-ses-emailidentity.json", - "aws-iam-usertogroupaddition.json", - "aws-events-rule.json", - "aws-cloudfront-keyvaluestore.json", - "aws-guardduty-malwareprotectionplan.json", - "aws-databrew-dataset.json", + "aws-ec2-transitgatewaymulticastdomain.json", + "aws-ec2-transitgatewaymulticastdomainassociation.json", + "aws-ec2-transitgatewaymulticastgroupmember.json", + "aws-ec2-transitgatewaymulticastgroupsource.json", + "aws-ec2-transitgatewaypeeringattachment.json", + "aws-ec2-transitgatewayroute.json", + "aws-ec2-transitgatewayroutetable.json", + "aws-ec2-transitgatewayroutetableassociation.json", + "aws-ec2-transitgatewayroutetablepropagation.json", + "aws-ec2-transitgatewayvpcattachment.json", + "aws-ec2-volume.json", + "aws-ec2-volumeattachment.json", + "aws-ec2-vpc.json", + "aws-ec2-vpccidrblock.json", + "aws-ec2-vpcdhcpoptionsassociation.json", + "aws-ec2-vpcendpoint.json", + "aws-ec2-vpcendpointconnectionnotification.json", + "aws-ec2-vpcendpointservice.json", + "aws-ec2-vpcendpointservicepermissions.json", + "aws-ec2-vpcgatewayattachment.json", + "aws-ec2-vpcpeeringconnection.json", + "aws-ec2-vpnconnection.json", + "aws-ec2-vpnconnectionroute.json", + "aws-ec2-vpngateway.json", "aws-ec2-vpngatewayroutepropagation.json", - "aws-glue-crawler.json", - "aws-cloudfront-function.json", - "aws-apigateway-method.json", - "aws-wafregional-regexpatternset.json", - "aws-ssm-patchbaseline.json", - "aws-servicediscovery-service.json", - "aws-customerprofiles-objecttype.json", - "aws-cloudfront-monitoringsubscription.json", + "aws-ecr-pullthroughcacherule.json", + "aws-ecr-registrypolicy.json", + "aws-ecr-replicationconfiguration.json", + "aws-ecr-repository.json", + "aws-ecr-repositorycreationtemplate.json", + "aws-ecs-capacityprovider.json", + "aws-ecs-cluster.json", + "aws-ecs-clustercapacityproviderassociations.json", + "aws-ecs-primarytaskset.json", + "aws-ecs-service.json", + "aws-ecs-taskdefinition.json", + "aws-ecs-taskset.json", + "aws-efs-accesspoint.json", + "aws-efs-filesystem.json", "aws-efs-mounttarget.json", - "aws-quicksight-dataset.json", - "aws-ec2-vpnconnection.json", - "aws-servicediscovery-publicdnsnamespace.json", - "aws-shield-protectiongroup.json", - "aws-networkmanager-vpcattachment.json", - "aws-iam-user.json", - "aws-emr-instancegroupconfig.json", - "aws-mediaconnect-flow.json", - "aws-stepfunctions-activity.json", - "aws-sagemaker-project.json", - "aws-ec2-localgatewayroutetablevirtualinterfacegroupassociation.json", - "aws-logs-accountpolicy.json", - "aws-s3-bucketpolicy.json", - "aws-appsync-graphqlschema.json", - "aws-redshift-cluster.json", - "aws-codebuild-sourcecredential.json", - "aws-emr-instancefleetconfig.json", - "aws-emr-cluster.json", - "aws-apigatewayv2-domainname.json", - "aws-customerprofiles-eventstream.json", - "aws-rds-dbcluster.json", - "aws-servicecatalog-resourceupdateconstraint.json", - "aws-transfer-agreement.json", - "aws-chatbot-slackchannelconfiguration.json", - "aws-cloudfront-distribution.json", + "aws-eks-accessentry.json", + "aws-eks-addon.json", + "aws-eks-cluster.json", + "aws-eks-fargateprofile.json", + "aws-eks-identityproviderconfig.json", + "aws-eks-nodegroup.json", + "aws-eks-podidentityassociation.json", + "aws-elasticache-cachecluster.json", + "aws-elasticache-parametergroup.json", + "aws-elasticache-replicationgroup.json", + "aws-elasticache-securitygroup.json", + "aws-elasticache-securitygroupingress.json", + "aws-elasticache-serverlesscache.json", "aws-elasticache-subnetgroup.json", - "aws-xray-group.json", - "aws-oam-link.json", - "aws-sagemaker-endpoint.json", - "aws-elasticloadbalancingv2-truststorerevocation.json", - "aws-networkfirewall-firewall.json", - "aws-eventschemas-schema.json", - "aws-m2-application.json", - "aws-ses-template.json", - "aws-kms-replicakey.json", - "aws-redshift-clustersecuritygroup.json", - "aws-route53-cidrcollection.json", - "aws-ecr-pullthroughcacherule.json", - "aws-glue-mltransform.json", - "aws-appconfig-hostedconfigurationversion.json", - "aws-datasync-locationefs.json", - "aws-ec2-localgatewayroutetable.json", - "aws-apigateway-resource.json", - "aws-sagemaker-appimageconfig.json", - "aws-verifiedpermissions-identitysource.json", - "aws-macie-session.json", + "aws-elasticache-user.json", + "aws-elasticache-usergroup.json", + "aws-elasticbeanstalk-application.json", + "aws-elasticbeanstalk-applicationversion.json", + "aws-elasticbeanstalk-configurationtemplate.json", + "aws-elasticbeanstalk-environment.json", + "aws-elasticloadbalancing-loadbalancer.json", + "aws-elasticloadbalancingv2-listener.json", + "aws-elasticloadbalancingv2-listenercertificate.json", + "aws-elasticloadbalancingv2-listenerrule.json", + "aws-elasticloadbalancingv2-loadbalancer.json", "aws-elasticloadbalancingv2-targetgroup.json", - "aws-applicationautoscaling-scalingpolicy.json", - "aws-pipes-pipe.json", + "aws-elasticloadbalancingv2-truststore.json", + "aws-elasticloadbalancingv2-truststorerevocation.json", + "aws-elasticsearch-domain.json", + "aws-emr-cluster.json", + "aws-emr-instancefleetconfig.json", + "aws-emr-instancegroupconfig.json", + "aws-emr-securityconfiguration.json", + "aws-emr-step.json", + "aws-emr-studio.json", "aws-emr-studiosessionmapping.json", - "aws-cloudformation-macro.json", - "aws-sagemaker-workteam.json", - "aws-lambda-layerversionpermission.json", - "aws-route53resolver-resolverconfig.json", - "aws-elasticache-user.json", - "aws-sagemaker-image.json", - "aws-logs-subscriptionfilter.json", - "aws-codedeploy-application.json", - "aws-dms-eventsubscription.json", - "aws-lakeformation-principalpermissions.json", - "aws-datasync-locations3.json", - "aws-autoscaling-lifecyclehook.json", + "aws-emrserverless-application.json", + "aws-events-archive.json", + "aws-events-eventbus.json", + "aws-events-eventbuspolicy.json", + "aws-events-rule.json", + "aws-eventschemas-discoverer.json", + "aws-eventschemas-registry.json", + "aws-eventschemas-registrypolicy.json", + "aws-eventschemas-schema.json", + "aws-fis-experimenttemplate.json", + "aws-fis-targetaccountconfiguration.json", + "aws-fms-notificationchannel.json", + "aws-fms-policy.json", + "aws-fms-resourceset.json", "aws-fsx-datarepositoryassociation.json", - "aws-ec2-networkinterface.json", - "aws-sagemaker-featuregroup.json", - "aws-appsync-resolver.json", - "aws-controltower-landingzone.json", - "aws-rolesanywhere-trustanchor.json", - "aws-route53resolver-resolverqueryloggingconfigassociation.json", - "aws-imagebuilder-lifecyclepolicy.json", - "aws-lambda-eventinvokeconfig.json", - "aws-mediaconnect-flowoutput.json", - "aws-lambda-layerversion.json", - "aws-rum-appmonitor.json", - "aws-rds-optiongroup.json", - "aws-opsworks-userprofile.json", + "aws-fsx-filesystem.json", + "aws-fsx-snapshot.json", + "aws-fsx-storagevirtualmachine.json", + "aws-fsx-volume.json", + "aws-globalaccelerator-accelerator.json", + "aws-globalaccelerator-crossaccountattachment.json", + "aws-globalaccelerator-endpointgroup.json", + "aws-globalaccelerator-listener.json", + "aws-glue-classifier.json", + "aws-glue-connection.json", + "aws-glue-crawler.json", + "aws-glue-customentitytype.json", + "aws-glue-database.json", + "aws-glue-datacatalogencryptionsettings.json", + "aws-glue-dataqualityruleset.json", + "aws-glue-devendpoint.json", + "aws-glue-job.json", + "aws-glue-mltransform.json", + "aws-glue-partition.json", + "aws-glue-registry.json", "aws-glue-schema.json", - "aws-customerprofiles-domain.json", - "aws-ec2-transitgatewayroute.json", - "aws-ssm-maintenancewindow.json", - "aws-lakeformation-tagassociation.json", - "aws-ec2-ipamresourcediscovery.json", - "aws-datasync-storagesystem.json", - "aws-m2-environment.json", - "aws-imagebuilder-infrastructureconfiguration.json", - "aws-route53resolver-resolverendpoint.json", - "aws-connect-contactflow.json", - "aws-networkmanager-link.json", - "aws-sagemaker-notebookinstance.json", - "aws-sso-instanceaccesscontrolattributeconfiguration.json", - "aws-wafregional-bytematchset.json", - "aws-cloudwatch-anomalydetector.json", - "aws-ec2-subnetnetworkaclassociation.json", - "aws-servicecatalog-serviceaction.json", - "aws-dms-migrationproject.json", + "aws-glue-schemaversion.json", + "aws-glue-schemaversionmetadata.json", + "aws-glue-securityconfiguration.json", + "aws-glue-table.json", + "aws-glue-trigger.json", + "aws-glue-workflow.json", + "aws-groundstation-config.json", + "aws-groundstation-dataflowendpointgroup.json", + "aws-groundstation-missionprofile.json", + "aws-guardduty-detector.json", + "aws-guardduty-filter.json", + "aws-guardduty-ipset.json", + "aws-guardduty-malwareprotectionplan.json", + "aws-guardduty-master.json", + "aws-guardduty-member.json", + "aws-guardduty-threatintelset.json", + "aws-iam-group.json", + "aws-iam-grouppolicy.json", + "aws-iam-instanceprofile.json", + "aws-iam-policy.json", + "aws-iam-role.json", + "aws-iam-rolepolicy.json", + "aws-iam-samlprovider.json", + "aws-iam-servercertificate.json", + "aws-iam-servicelinkedrole.json", + "aws-iam-user.json", "aws-iam-userpolicy.json", - "aws-connect-viewversion.json", - "aws-cloudfront-originaccesscontrol.json", - "aws-inspectorv2-cisscanconfiguration.json", - "aws-cognito-userpool.json", - "aws-secretsmanager-rotationschedule.json", - "aws-securityhub-securitycontrol.json", - "aws-lambda-permission.json", - "aws-networkfirewall-firewallpolicy.json", - "aws-eks-identityproviderconfig.json", - "aws-ec2-ipamresourcediscoveryassociation.json", - "aws-servicecatalogappregistry-attributegroup.json", - "aws-ec2-clientvpntargetnetworkassociation.json", - "aws-appsync-graphqlapi.json", - "aws-ec2-egressonlyinternetgateway.json", - "aws-securityhub-insight.json", - "aws-ec2-vpccidrblock.json", + "aws-iam-usertogroupaddition.json", "aws-iam-virtualmfadevice.json", - "aws-ec2-networkinsightspath.json", - "aws-mediatailor-vodsource.json", - "aws-acmpca-certificateauthority.json", - "aws-athena-preparedstatement.json", - "aws-autoscaling-scheduledaction.json", - "aws-cognito-identitypoolprincipaltag.json", - "aws-apigatewayv2-route.json", + "aws-identitystore-group.json", + "aws-identitystore-groupmembership.json", + "aws-imagebuilder-component.json", + "aws-imagebuilder-containerrecipe.json", + "aws-imagebuilder-distributionconfiguration.json", + "aws-imagebuilder-image.json", + "aws-imagebuilder-imagepipeline.json", + "aws-imagebuilder-imagerecipe.json", + "aws-imagebuilder-infrastructureconfiguration.json", + "aws-imagebuilder-lifecyclepolicy.json", + "aws-imagebuilder-workflow.json", + "aws-inspectorv2-cisscanconfiguration.json", + "aws-inspectorv2-filter.json", + "aws-internetmonitor-monitor.json", + "aws-kinesis-stream.json", + "aws-kinesisanalyticsv2-application.json", + "aws-kinesisfirehose-deliverystream.json", + "aws-kms-alias.json", + "aws-kms-key.json", + "aws-kms-replicakey.json", + "aws-lakeformation-datacellsfilter.json", + "aws-lakeformation-datalakesettings.json", + "aws-lakeformation-permissions.json", + "aws-lakeformation-principalpermissions.json", "aws-lakeformation-resource.json", - "aws-detective-memberinvitation.json", - "aws-ec2-ipamscope.json", - "aws-ec2-vpcendpoint.json", - "aws-rds-eventsubscription.json", - "module.json", - "aws-customerprofiles-calculatedattributedefinition.json", - "aws-config-aggregationauthorization.json", - "aws-datasync-agent.json", - "aws-cognito-userpoolidentityprovider.json", - "aws-resiliencehub-resiliencypolicy.json", - "aws-logs-loggroup.json", - "aws-ecs-cluster.json", - "aws-pcaconnectorad-template.json", - "aws-ec2-placementgroup.json", - "aws-organizations-account.json", - "aws-ecr-repository.json", - "aws-ses-dedicatedippool.json", - "aws-mediaconnect-flowsource.json", - "aws-appconfig-extension.json", + "aws-lakeformation-tag.json", + "aws-lakeformation-tagassociation.json", + "aws-lambda-alias.json", + "aws-lambda-codesigningconfig.json", + "aws-lambda-eventinvokeconfig.json", + "aws-lambda-eventsourcemapping.json", + "aws-lambda-layerversion.json", + "aws-lambda-layerversionpermission.json", + "aws-lambda-permission.json", + "aws-lambda-url.json", + "aws-lambda-version.json", + "aws-launchwizard-deployment.json", + "aws-lex-bot.json", + "aws-lex-botalias.json", + "aws-lex-botversion.json", "aws-lex-resourcepolicy.json", - "aws-elasticloadbalancingv2-listenerrule.json", - "aws-elasticloadbalancingv2-truststore.json", - "aws-glue-registry.json", - "aws-ec2-keypair.json", - "aws-fsx-filesystem.json", - "aws-mediatailor-livesource.json", - "aws-ec2-eipassociation.json", - "aws-elasticbeanstalk-application.json", - "aws-dlm-lifecyclepolicy.json", - "aws-ec2-capacityreservation.json", - "aws-elasticloadbalancing-loadbalancer.json", - "aws-transfer-user.json", - "aws-iam-rolepolicy.json", - "aws-cognito-identitypool.json", - "aws-ec2-trafficmirrortarget.json", - "aws-connect-prompt.json", - "aws-stepfunctions-statemachine.json", - "aws-rds-dbclusterparametergroup.json", - "aws-appmesh-virtualrouter.json", - "aws-scheduler-schedulegroup.json", - "aws-fsx-snapshot.json", - "aws-eventschemas-registrypolicy.json", - "aws-route53-keysigningkey.json", - "aws-eventschemas-registry.json", - "aws-config-remediationconfiguration.json", - "aws-detective-organizationadmin.json", - "aws-athena-datacatalog.json", + "aws-logs-accountpolicy.json", + "aws-logs-delivery.json", + "aws-logs-deliverydestination.json", + "aws-logs-deliverysource.json", + "aws-logs-destination.json", + "aws-logs-loganomalydetector.json", + "aws-logs-loggroup.json", + "aws-logs-logstream.json", + "aws-logs-metricfilter.json", + "aws-logs-querydefinition.json", + "aws-logs-resourcepolicy.json", + "aws-logs-subscriptionfilter.json", + "aws-m2-application.json", + "aws-m2-environment.json", + "aws-macie-allowlist.json", + "aws-macie-session.json", + "aws-mediaconnect-bridge.json", + "aws-mediaconnect-bridgeoutput.json", + "aws-mediaconnect-bridgesource.json", + "aws-mediaconnect-flow.json", + "aws-mediaconnect-flowentitlement.json", + "aws-mediaconnect-flowoutput.json", "aws-mediaconnect-flowvpcinterface.json", - "aws-glue-workflow.json", - "aws-apigatewayv2-authorizer.json", - "aws-sagemaker-userprofile.json", - "aws-ec2-prefixlist.json", - "aws-ec2-instance.json", - "aws-networkmanager-device.json", - "aws-ec2-subnetcidrblock.json", - "aws-elasticbeanstalk-applicationversion.json", - "aws-appmesh-virtualgateway.json", - "aws-waf-sqlinjectionmatchset.json", - "aws-ec2-transitgatewayvpcattachment.json", - "aws-connect-routingprofile.json", - "aws-ec2-flowlog.json", - "aws-amazonmq-broker.json", - "aws-emr-step.json", - "aws-ssm-association.json", - "aws-ec2-clientvpnendpoint.json", - "aws-cloudfront-responseheaderspolicy.json", - "aws-securityhub-automationrule.json", - "aws-msk-clusterpolicy.json", + "aws-mediaconnect-gateway.json", + "aws-mediatailor-channel.json", + "aws-mediatailor-channelpolicy.json", + "aws-mediatailor-livesource.json", + "aws-mediatailor-playbackconfiguration.json", "aws-mediatailor-sourcelocation.json", - "aws-guardduty-master.json", - "aws-kms-alias.json", - "aws-xray-samplingrule.json", - "aws-route53resolver-resolverrule.json", - "aws-transfer-connector.json", - "aws-appmesh-virtualnode.json", - "aws-apigateway-documentationversion.json", - "aws-wafv2-webaclassociation.json", - "aws-oam-sink.json", - "aws-codebuild-reportgroup.json", - "aws-apigateway-gatewayresponse.json", - "aws-ec2-enclavecertificateiamroleassociation.json", - "aws-connect-phonenumber.json", - "aws-sso-application.json", - "aws-fsx-volume.json", - "aws-route53resolver-outpostresolver.json", - "aws-acmpca-certificate.json", - "aws-ec2-ipamallocation.json", - "aws-workspaces-workspace.json", - "aws-emr-studio.json", - "aws-ec2-instanceconnectendpoint.json", - "aws-appsync-sourceapiassociation.json", - "aws-datasync-locationobjectstorage.json", - "aws-ecs-capacityprovider.json", - "aws-elasticache-cachecluster.json", - "aws-sagemaker-modelcard.json", - "aws-logs-destination.json", - "aws-eks-nodegroup.json", - "aws-organizations-organizationalunit.json", - "aws-appsync-datasource.json", - "aws-sqs-queue.json", - "aws-ec2-securitygroupingress.json", - "aws-guardduty-detector.json", - "aws-appflow-flow.json", - "aws-apigateway-stage.json", + "aws-mediatailor-vodsource.json", + "aws-msk-batchscramsecret.json", + "aws-msk-cluster.json", + "aws-msk-clusterpolicy.json", + "aws-msk-configuration.json", + "aws-msk-vpcconnection.json", + "aws-mwaa-environment.json", + "aws-neptune-dbcluster.json", + "aws-neptune-dbsubnetgroup.json", + "aws-neptune-eventsubscription.json", + "aws-networkfirewall-firewall.json", + "aws-networkfirewall-firewallpolicy.json", + "aws-networkfirewall-loggingconfiguration.json", + "aws-networkfirewall-rulegroup.json", + "aws-networkfirewall-tlsinspectionconfiguration.json", + "aws-networkmanager-connectattachment.json", + "aws-networkmanager-connectpeer.json", "aws-networkmanager-corenetwork.json", - "aws-batch-computeenvironment.json", - "aws-connect-instancestorageconfig.json", - "aws-quicksight-vpcconnection.json", - "aws-events-eventbuspolicy.json", - "aws-athena-namedquery.json", - "aws-ec2-trafficmirrorfilter.json", - "aws-apigateway-deployment.json", - "aws-lakeformation-datalakesettings.json", - "aws-autoscaling-scalingpolicy.json", - "aws-groundstation-config.json", - "aws-resourceexplorer2-defaultviewassociation.json", - "aws-ecr-registrypolicy.json", - "aws-redshift-scheduledaction.json", - "aws-rds-dbsecuritygroup.json", - "aws-apigatewayv2-routeresponse.json", - "aws-cloudwatch-metricstream.json", - "aws-sso-applicationassignment.json", - "aws-dms-dataprovider.json", - "aws-ssm-parameter.json", - "aws-apigatewayv2-apigatewaymanagedoverrides.json", - "aws-config-deliverychannel.json", - "aws-certificatemanager-account.json", - "aws-iam-oidcprovider.json", - "aws-lakeformation-tag.json", - "aws-ce-anomalymonitor.json", - "aws-servicecatalogappregistry-resourceassociation.json", - "aws-ec2-vpngateway.json", - "aws-cloudformation-stack.json", - "aws-resourcegroups-group.json", - "aws-cloudformation-resourcedefaultversion.json", - "aws-signer-profilepermission.json", - "aws-backup-restoretestingplan.json", - "aws-quicksight-dashboard.json", - "aws-ec2-ipam.json", - "aws-pcaconnectorad-templategroupaccesscontrolentry.json", - "aws-databrew-job.json", - "aws-ec2-transitgatewaypeeringattachment.json", - "aws-connect-queue.json", - "aws-ecr-repositorycreationtemplate.json", - "aws-quicksight-template.json", - "aws-cloudfront-cachepolicy.json", - "aws-appintegrations-dataintegration.json", - "aws-rds-dbsubnetgroup.json", - "aws-amazonmq-configuration.json", - "aws-appconfig-deployment.json", - "aws-accessanalyzer-analyzer.json", - "aws-ec2-ec2fleet.json", - "aws-dms-replicationinstance.json", - "aws-servicecatalog-cloudformationproduct.json", - "aws-ec2-vpcendpointservice.json", - "aws-ec2-launchtemplate.json", - "aws-cloudfront-originrequestpolicy.json", - "aws-datasync-locationfsxontap.json", + "aws-networkmanager-customergatewayassociation.json", + "aws-networkmanager-device.json", + "aws-networkmanager-globalnetwork.json", + "aws-networkmanager-link.json", "aws-networkmanager-linkassociation.json", - "aws-cognito-userpoolriskconfigurationattachment.json", - "aws-mediatailor-playbackconfiguration.json", + "aws-networkmanager-site.json", + "aws-networkmanager-sitetositevpnattachment.json", + "aws-networkmanager-transitgatewaypeering.json", + "aws-networkmanager-transitgatewayregistration.json", + "aws-networkmanager-transitgatewayroutetableattachment.json", + "aws-networkmanager-vpcattachment.json", + "aws-oam-link.json", + "aws-oam-sink.json", + "aws-opensearchservice-domain.json", + "aws-opsworks-app.json", + "aws-opsworks-elasticloadbalancerattachment.json", + "aws-opsworks-userprofile.json", + "aws-opsworks-volume.json", + "aws-organizations-account.json", + "aws-organizations-organization.json", + "aws-organizations-organizationalunit.json", + "aws-organizations-policy.json", + "aws-organizations-resourcepolicy.json", + "aws-pcaconnectorad-connector.json", + "aws-pcaconnectorad-directoryregistration.json", "aws-pcaconnectorad-serviceprincipalname.json", - "aws-elasticbeanstalk-environment.json", - "aws-cognito-userpoolclient.json", - "aws-wafregional-sqlinjectionmatchset.json", - "aws-lambda-version.json", - "aws-ec2-dhcpoptions.json", - "aws-ec2-ipampool.json", - "aws-iam-servicelinkedrole.json", - "aws-cloudformation-hooktypeconfig.json", - "aws-ec2-volume.json", - "aws-ec2-eip.json", - "aws-verifiedpermissions-policy.json", - "aws-cloudformation-resourceversion.json", - "aws-apigatewayv2-stage.json", - "aws-cognito-logdeliveryconfiguration.json", - "aws-chatbot-microsoftteamschannelconfiguration.json", - "aws-rds-dbproxy.json", + "aws-pcaconnectorad-template.json", + "aws-pcaconnectorad-templategroupaccesscontrolentry.json", + "aws-pipes-pipe.json", + "aws-quicksight-analysis.json", + "aws-quicksight-dashboard.json", + "aws-quicksight-dataset.json", + "aws-quicksight-datasource.json", + "aws-quicksight-refreshschedule.json", + "aws-quicksight-template.json", + "aws-quicksight-theme.json", + "aws-quicksight-vpcconnection.json", + "aws-ram-permission.json", + "aws-ram-resourceshare.json", + "aws-rds-dbcluster.json", + "aws-rds-dbclusterparametergroup.json", + "aws-rds-dbinstance.json", "aws-rds-dbparametergroup.json", - "aws-securityhub-hub.json", + "aws-rds-dbproxy.json", + "aws-rds-dbproxyendpoint.json", + "aws-rds-dbproxytargetgroup.json", + "aws-rds-dbsecuritygroup.json", + "aws-rds-dbsecuritygroupingress.json", + "aws-rds-dbsubnetgroup.json", + "aws-rds-eventsubscription.json", + "aws-rds-globalcluster.json", + "aws-rds-integration.json", + "aws-rds-optiongroup.json", + "aws-redshift-cluster.json", + "aws-redshift-clusterparametergroup.json", + "aws-redshift-clustersecuritygroup.json", + "aws-redshift-clustersecuritygroupingress.json", + "aws-redshift-clustersubnetgroup.json", + "aws-redshift-endpointaccess.json", + "aws-redshift-endpointauthorization.json", + "aws-redshift-eventsubscription.json", + "aws-redshift-scheduledaction.json", + "aws-resiliencehub-app.json", + "aws-resiliencehub-resiliencypolicy.json", + "aws-resourceexplorer2-defaultviewassociation.json", + "aws-resourceexplorer2-index.json", + "aws-resourceexplorer2-view.json", + "aws-resourcegroups-group.json", + "aws-rolesanywhere-crl.json", + "aws-rolesanywhere-profile.json", + "aws-rolesanywhere-trustanchor.json", + "aws-route53-cidrcollection.json", + "aws-route53-dnssec.json", + "aws-route53-keysigningkey.json", + "aws-route53-recordset.json", + "aws-route53-recordsetgroup.json", + "aws-route53profiles-profile.json", + "aws-route53profiles-profileassociation.json", + "aws-route53profiles-profileresourceassociation.json", + "aws-route53resolver-firewalldomainlist.json", + "aws-route53resolver-firewallrulegroupassociation.json", + "aws-route53resolver-outpostresolver.json", + "aws-route53resolver-resolverconfig.json", + "aws-route53resolver-resolverdnssecconfig.json", + "aws-route53resolver-resolverendpoint.json", + "aws-route53resolver-resolverqueryloggingconfig.json", + "aws-route53resolver-resolverqueryloggingconfigassociation.json", + "aws-route53resolver-resolverrule.json", + "aws-route53resolver-resolverruleassociation.json", + "aws-rum-appmonitor.json", + "aws-s3-accessgrant.json", + "aws-s3-accessgrantsinstance.json", + "aws-s3-accessgrantslocation.json", "aws-s3-accesspoint.json", + "aws-s3-bucket.json", + "aws-s3-bucketpolicy.json", + "aws-s3objectlambda-accesspoint.json", + "aws-s3objectlambda-accesspointpolicy.json", + "aws-s3outposts-accesspoint.json", + "aws-s3outposts-bucket.json", "aws-s3outposts-bucketpolicy.json", - "aws-batch-jobqueue.json", - "aws-elasticloadbalancingv2-listener.json", - "aws-redshift-eventsubscription.json", - "aws-connect-user.json", - "aws-cloudformation-waitconditionhandle.json", - "aws-globalaccelerator-accelerator.json", - "aws-eks-addon.json", + "aws-s3outposts-endpoint.json", + "aws-sagemaker-app.json", + "aws-sagemaker-appimageconfig.json", + "aws-sagemaker-coderepository.json", + "aws-sagemaker-endpoint.json", + "aws-sagemaker-endpointconfig.json", + "aws-sagemaker-featuregroup.json", + "aws-sagemaker-image.json", + "aws-sagemaker-imageversion.json", + "aws-sagemaker-inferenceexperiment.json", + "aws-sagemaker-model.json", + "aws-sagemaker-modelcard.json", + "aws-sagemaker-modelpackage.json", + "aws-sagemaker-modelpackagegroup.json", + "aws-sagemaker-notebookinstance.json", + "aws-sagemaker-notebookinstancelifecycleconfig.json", + "aws-sagemaker-pipeline.json", + "aws-sagemaker-project.json", + "aws-sagemaker-space.json", + "aws-sagemaker-workteam.json", + "aws-scheduler-schedule.json", + "aws-scheduler-schedulegroup.json", + "aws-sdb-domain.json", + "aws-secretsmanager-resourcepolicy.json", + "aws-secretsmanager-rotationschedule.json", + "aws-secretsmanager-secret.json", + "aws-securityhub-automationrule.json", + "aws-securityhub-delegatedadmin.json", + "aws-securityhub-hub.json", + "aws-securityhub-insight.json", + "aws-securityhub-organizationconfiguration.json", + "aws-securityhub-productsubscription.json", + "aws-securityhub-securitycontrol.json", + "aws-securityhub-standard.json", + "aws-servicecatalog-cloudformationproduct.json", + "aws-servicecatalog-cloudformationprovisionedproduct.json", + "aws-servicecatalog-launchnotificationconstraint.json", + "aws-servicecatalog-launchroleconstraint.json", + "aws-servicecatalog-launchtemplateconstraint.json", + "aws-servicecatalog-portfolioshare.json", + "aws-servicecatalog-resourceupdateconstraint.json", + "aws-servicecatalog-serviceaction.json", + "aws-servicecatalog-serviceactionassociation.json", + "aws-servicecatalog-stacksetconstraint.json", + "aws-servicecatalog-tagoption.json", + "aws-servicecatalogappregistry-application.json", + "aws-servicecatalogappregistry-attributegroup.json", + "aws-servicecatalogappregistry-attributegroupassociation.json", + "aws-servicecatalogappregistry-resourceassociation.json", + "aws-servicediscovery-httpnamespace.json", + "aws-servicediscovery-instance.json", + "aws-servicediscovery-privatednsnamespace.json", + "aws-servicediscovery-publicdnsnamespace.json", + "aws-servicediscovery-service.json", + "aws-ses-configurationset.json", + "aws-ses-configurationseteventdestination.json", + "aws-ses-contactlist.json", + "aws-ses-dedicatedippool.json", + "aws-ses-emailidentity.json", + "aws-ses-template.json", + "aws-ses-vdmattributes.json", + "aws-shield-drtaccess.json", + "aws-shield-proactiveengagement.json", + "aws-shield-protection.json", + "aws-shield-protectiongroup.json", + "aws-signer-profilepermission.json", + "aws-signer-signingprofile.json", + "aws-sns-subscription.json", + "aws-sns-topic.json", + "aws-sns-topicinlinepolicy.json", + "aws-sns-topicpolicy.json", + "aws-sqs-queue.json", + "aws-sqs-queueinlinepolicy.json", + "aws-sqs-queuepolicy.json", + "aws-ssm-association.json", + "aws-ssm-document.json", + "aws-ssm-maintenancewindow.json", + "aws-ssm-maintenancewindowtarget.json", + "aws-ssm-maintenancewindowtask.json", + "aws-ssm-parameter.json", + "aws-ssm-patchbaseline.json", + "aws-sso-application.json", + "aws-sso-applicationassignment.json", + "aws-sso-assignment.json", + "aws-sso-instanceaccesscontrolattributeconfiguration.json", + "aws-sso-permissionset.json", + "aws-stepfunctions-statemachinealias.json", + "aws-stepfunctions-statemachineversion.json", + "aws-synthetics-canary.json", + "aws-systemsmanagersap-application.json", + "aws-transfer-agreement.json", + "aws-transfer-certificate.json", + "aws-transfer-connector.json", + "aws-transfer-profile.json", + "aws-transfer-server.json", + "aws-transfer-user.json", + "aws-transfer-workflow.json", + "aws-verifiedpermissions-identitysource.json", + "aws-verifiedpermissions-policy.json", + "aws-verifiedpermissions-policystore.json", + "aws-verifiedpermissions-policytemplate.json", + "aws-voiceid-domain.json", + "aws-waf-bytematchset.json", + "aws-waf-sqlinjectionmatchset.json", + "aws-wafregional-bytematchset.json", + "aws-wafregional-regexpatternset.json", + "aws-wafregional-sqlinjectionmatchset.json", + "aws-wafregional-webaclassociation.json", + "aws-wafregional-xssmatchset.json", + "aws-wafv2-ipset.json", + "aws-wafv2-loggingconfiguration.json", + "aws-wafv2-regexpatternset.json", + "aws-wafv2-rulegroup.json", + "aws-wafv2-webacl.json", + "aws-wafv2-webaclassociation.json", + "aws-workspaces-workspace.json", + "aws-xray-group.json", + "aws-xray-resourcepolicy.json", + "aws-xray-samplingrule.json", + "module.json", ] diff --git a/src/cfnlint/data/schemas/providers/af_south_1/aws-elasticache-parametergroup.json b/src/cfnlint/data/schemas/providers/af_south_1/aws-elasticache-parametergroup.json deleted file mode 100644 index c524f26845..0000000000 --- a/src/cfnlint/data/schemas/providers/af_south_1/aws-elasticache-parametergroup.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/CacheParameterGroupFamily" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "CacheParameterGroupFamily": { - "type": "string" - }, - "Description": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "Properties": { - "patternProperties": { - "[a-zA-Z0-9]+": { - "type": "string" - } - }, - "type": "object" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Description", - "CacheParameterGroupFamily" - ], - "typeName": "AWS::ElastiCache::ParameterGroup" -} diff --git a/src/cfnlint/data/schemas/providers/af_south_1/aws-iam-oidcprovider.json b/src/cfnlint/data/schemas/providers/af_south_1/aws-iam-oidcprovider.json new file mode 100644 index 0000000000..1794a452ca --- /dev/null +++ b/src/cfnlint/data/schemas/providers/af_south_1/aws-iam-oidcprovider.json @@ -0,0 +1,120 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Url" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "iam:CreateOpenIDConnectProvider", + "iam:TagOpenIDConnectProvider", + "iam:GetOpenIDConnectProvider" + ] + }, + "delete": { + "permissions": [ + "iam:DeleteOpenIDConnectProvider" + ] + }, + "list": { + "permissions": [ + "iam:ListOpenIDConnectProvider", + "iam:GetOpenIDConnectProvider" + ] + }, + "read": { + "permissions": [ + "iam:GetOpenIDConnectProvider" + ] + }, + "update": { + "permissions": [ + "iam:UpdateOpenIDConnectProviderThumbprint", + "iam:RemoveClientIDFromOpenIDConnectProvider", + "iam:AddClientIDToOpenIDConnectProvider", + "iam:GetOpenIDConnectProvider", + "iam:TagOpenIDConnectProvider", + "iam:UntagOpenIDConnectProvider", + "iam:ListOpenIDConnectProviderTags" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "maxLength": 2048, + "minLength": 20, + "type": "string" + }, + "ClientIdList": { + "insertionOrder": false, + "items": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "type": "array" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + }, + "ThumbprintList": { + "insertionOrder": false, + "items": { + "maxLength": 40, + "minLength": 40, + "pattern": "[0-9A-Fa-f]{40}", + "type": "string" + }, + "maxItems": 5, + "type": "array" + }, + "Url": { + "maxLength": 255, + "minLength": 1, + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/Arn" + ], + "required": [ + "ThumbprintList" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::IAM::OIDCProvider" +} diff --git a/src/cfnlint/data/schemas/providers/af_south_1/aws-logs-delivery.json b/src/cfnlint/data/schemas/providers/af_south_1/aws-logs-delivery.json deleted file mode 100644 index 9d504c7dc9..0000000000 --- a/src/cfnlint/data/schemas/providers/af_south_1/aws-logs-delivery.json +++ /dev/null @@ -1,130 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DeliverySourceName", - "/properties/DeliveryDestinationArn" - ], - "definitions": { - "Arn": { - "maxLength": 2048, - "minLength": 16, - "pattern": "^arn:(aws[a-zA-Z-]*)?:[A-Za-z0-9][A-Za-z0-9_/.-]{0,62}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9][A-Za-z0-9:_/+=,@.-]{0,1023}$", - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "logs:CreateDelivery", - "logs:GetDelivery", - "logs:DescribeDeliveries", - "logs:ListTagsForResource", - "logs:TagResource", - "logs:GetDeliverySource", - "logs:GetDeliveryDestination" - ] - }, - "delete": { - "permissions": [ - "logs:DeleteDelivery", - "logs:ListTagsForResource", - "logs:UntagResource" - ] - }, - "list": { - "permissions": [ - "logs:DescribeDeliveries", - "logs:ListTagsForResource" - ] - }, - "read": { - "permissions": [ - "logs:GetDelivery", - "logs:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "logs:GetDelivery", - "logs:ListTagsForResource", - "logs:TagResource", - "logs:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/DeliveryId" - ], - "properties": { - "Arn": { - "$ref": "#/definitions/Arn" - }, - "DeliveryDestinationArn": { - "$ref": "#/definitions/Arn" - }, - "DeliveryDestinationType": { - "maxLength": 12, - "minLength": 1, - "pattern": "^[0-9A-Za-z]+$", - "type": "string" - }, - "DeliveryId": { - "maxLength": 64, - "minLength": 1, - "pattern": "^[0-9A-Za-z]+$", - "type": "string" - }, - "DeliverySourceName": { - "maxLength": 60, - "minLength": 1, - "pattern": "[\\w-]*$", - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/DeliveryId", - "/properties/Arn", - "/properties/DeliveryDestinationType" - ], - "required": [ - "DeliverySourceName", - "DeliveryDestinationArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-logs.git", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Logs::Delivery" -} diff --git a/src/cfnlint/data/schemas/providers/af_south_1/aws-logs-deliverydestination.json b/src/cfnlint/data/schemas/providers/af_south_1/aws-logs-deliverydestination.json deleted file mode 100644 index 41e9e764ad..0000000000 --- a/src/cfnlint/data/schemas/providers/af_south_1/aws-logs-deliverydestination.json +++ /dev/null @@ -1,152 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name", - "/properties/DestinationResourceArn" - ], - "definitions": { - "Arn": { - "maxLength": 2048, - "minLength": 16, - "pattern": "^arn:(aws[a-zA-Z-]*)?:[A-Za-z0-9][A-Za-z0-9_/.-]{0,62}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9][A-Za-z0-9:_/+=,@.-]{0,1023}$", - "type": "string" - }, - "DestinationPolicy": { - "additionalProperties": false, - "properties": { - "DeliveryDestinationName": { - "maxLength": 60, - "minLength": 1, - "type": "string" - }, - "DeliveryDestinationPolicy": { - "maxLength": 51200, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "DeliveryDestinationName", - "DeliveryDestinationPolicy" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "logs:PutDeliveryDestination", - "logs:GetDeliveryDestination", - "logs:ListTagsForResource", - "logs:TagResource", - "logs:UntagResource", - "logs:PutDeliveryDestinationPolicy", - "logs:GetDeliveryDestinationPolicy" - ] - }, - "delete": { - "permissions": [ - "logs:DeleteDeliveryDestination", - "logs:DeleteDeliveryDestinationPolicy" - ] - }, - "list": { - "permissions": [ - "logs:DescribeDeliveryDestinations", - "logs:GetDeliveryDestinationPolicy" - ] - }, - "read": { - "permissions": [ - "logs:GetDeliveryDestination", - "logs:ListTagsForResource", - "logs:GetDeliveryDestinationPolicy" - ] - }, - "update": { - "permissions": [ - "logs:PutDeliveryDestination", - "logs:GetDeliveryDestination", - "logs:ListTagsForResource", - "logs:TagResource", - "logs:UntagResource", - "logs:DeleteDeliveryDestinationPolicy", - "logs:PutDeliveryDestinationPolicy", - "logs:GetDeliveryDestinationPolicy" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "Arn": { - "$ref": "#/definitions/Arn" - }, - "DeliveryDestinationPolicy": { - "items": { - "$ref": "#/definitions/DestinationPolicy" - }, - "type": "object" - }, - "DeliveryDestinationType": { - "maxLength": 12, - "minLength": 1, - "pattern": "^[0-9A-Za-z]+$", - "type": "string" - }, - "DestinationResourceArn": { - "$ref": "#/definitions/Arn" - }, - "Name": { - "maxLength": 60, - "minLength": 1, - "pattern": "[\\w-]*$", - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/DeliveryDestinationType" - ], - "required": [ - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-logs.git", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Logs::DeliveryDestination" -} diff --git a/src/cfnlint/data/schemas/providers/af_south_1/aws-logs-deliverysource.json b/src/cfnlint/data/schemas/providers/af_south_1/aws-logs-deliverysource.json deleted file mode 100644 index 30c5c13d9e..0000000000 --- a/src/cfnlint/data/schemas/providers/af_south_1/aws-logs-deliverysource.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "Arn": { - "maxLength": 2048, - "minLength": 16, - "pattern": "^arn:(aws[a-zA-Z-]*)?:[A-Za-z0-9][A-Za-z0-9_/.-]{0,62}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9][A-Za-z0-9:_/+=,@.-]{0,1023}$", - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "logs:PutDeliverySource", - "logs:GetDeliverySource", - "logs:ListTagsForResource", - "logs:TagResource", - "logs:AllowVendedLogDeliveryForResource", - "codewhisperer:AllowVendedLogDeliveryForResource", - "autoloop:AllowVendedLogDeliveryForResource", - "workmail:AllowVendedLogDeliveryForResource" - ] - }, - "delete": { - "permissions": [ - "logs:DeleteDeliverySource" - ] - }, - "list": { - "permissions": [ - "logs:DescribeDeliverySources" - ] - }, - "read": { - "permissions": [ - "logs:GetDeliverySource", - "logs:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "logs:PutDeliverySource", - "logs:GetDeliverySource", - "logs:ListTagsForResource", - "logs:TagResource", - "logs:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Name" - ], - "properties": { - "Arn": { - "$ref": "#/definitions/Arn" - }, - "LogType": { - "maxLength": 255, - "minLength": 1, - "pattern": "[\\w-]*$", - "type": "string" - }, - "Name": { - "maxLength": 60, - "minLength": 1, - "pattern": "[\\w-]*$", - "type": "string" - }, - "ResourceArn": { - "$ref": "#/definitions/Arn" - }, - "ResourceArns": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Arn" - }, - "type": "array", - "uniqueItems": true - }, - "Service": { - "maxLength": 255, - "minLength": 1, - "pattern": "[\\w-]*$", - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": true - } - }, - "readOnlyProperties": [ - "/properties/Service", - "/properties/ResourceArns", - "/properties/Arn" - ], - "required": [ - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-logs.git", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Logs::DeliverySource", - "writeOnlyProperties": [ - "/properties/ResourceArn" - ] -} diff --git a/src/cfnlint/data/schemas/providers/af_south_1/aws-mediaconnect-flowsource.json b/src/cfnlint/data/schemas/providers/af_south_1/aws-mediaconnect-flowsource.json new file mode 100644 index 0000000000..cf7d326061 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/af_south_1/aws-mediaconnect-flowsource.json @@ -0,0 +1,200 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Name" + ], + "definitions": { + "Encryption": { + "additionalProperties": false, + "properties": { + "Algorithm": { + "enum": [ + "aes128", + "aes192", + "aes256" + ], + "type": "string" + }, + "ConstantInitializationVector": { + "type": "string" + }, + "DeviceId": { + "type": "string" + }, + "KeyType": { + "default": "static-key", + "enum": [ + "speke", + "static-key", + "srt-password" + ], + "type": "string" + }, + "Region": { + "type": "string" + }, + "ResourceId": { + "type": "string" + }, + "RoleArn": { + "type": "string" + }, + "SecretArn": { + "type": "string" + }, + "Url": { + "type": "string" + } + }, + "required": [ + "RoleArn" + ], + "type": "object" + }, + "GatewayBridgeSource": { + "additionalProperties": false, + "properties": { + "BridgeArn": { + "type": "string" + }, + "VpcInterfaceAttachment": { + "$ref": "#/definitions/VpcInterfaceAttachment" + } + }, + "required": [ + "BridgeArn" + ], + "type": "object" + }, + "VpcInterfaceAttachment": { + "additionalProperties": false, + "properties": { + "VpcInterfaceName": { + "type": "string" + } + }, + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "mediaconnect:CreateFlow", + "mediaconnect:DescribeFlow", + "mediaconnect:AddFlowSources", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "mediaconnect:DescribeFlow", + "mediaconnect:RemoveFlowSource" + ] + }, + "list": { + "permissions": [ + "mediaconnect:DescribeFlow" + ] + }, + "read": { + "permissions": [ + "mediaconnect:DescribeFlow" + ] + }, + "update": { + "permissions": [ + "mediaconnect:DescribeFlow", + "mediaconnect:UpdateFlowSource" + ] + } + }, + "primaryIdentifier": [ + "/properties/SourceArn" + ], + "properties": { + "Decryption": { + "$ref": "#/definitions/Encryption" + }, + "Description": { + "type": "string" + }, + "EntitlementArn": { + "type": "string" + }, + "FlowArn": { + "type": "string" + }, + "GatewayBridgeSource": { + "$ref": "#/definitions/GatewayBridgeSource" + }, + "IngestIp": { + "type": "string" + }, + "IngestPort": { + "type": "integer" + }, + "MaxBitrate": { + "type": "integer" + }, + "MaxLatency": { + "default": 2000, + "type": "integer" + }, + "MinLatency": { + "default": 2000, + "type": "integer" + }, + "Name": { + "type": "string" + }, + "Protocol": { + "enum": [ + "zixi-push", + "rtp-fec", + "rtp", + "rist", + "srt-listener", + "srt-caller" + ], + "type": "string" + }, + "SenderControlPort": { + "type": "integer" + }, + "SenderIpAddress": { + "type": "string" + }, + "SourceArn": { + "type": "string" + }, + "SourceIngestPort": { + "type": "string" + }, + "SourceListenerAddress": { + "type": "string" + }, + "SourceListenerPort": { + "type": "integer" + }, + "StreamId": { + "type": "string" + }, + "VpcInterfaceName": { + "type": "string" + }, + "WhitelistCidr": { + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/IngestIp", + "/properties/SourceArn", + "/properties/SourceIngestPort" + ], + "required": [ + "Name", + "Description" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-mediaconnect.git", + "typeName": "AWS::MediaConnect::FlowSource" +} diff --git a/src/cfnlint/data/schemas/providers/us_west_2/aws-sagemaker-domain.json b/src/cfnlint/data/schemas/providers/af_south_1/aws-sagemaker-domain.json similarity index 99% rename from src/cfnlint/data/schemas/providers/us_west_2/aws-sagemaker-domain.json rename to src/cfnlint/data/schemas/providers/af_south_1/aws-sagemaker-domain.json index 9bb8b441f8..f6f11084f6 100644 --- a/src/cfnlint/data/schemas/providers/us_west_2/aws-sagemaker-domain.json +++ b/src/cfnlint/data/schemas/providers/af_south_1/aws-sagemaker-domain.json @@ -16,7 +16,7 @@ "items": { "$ref": "#/definitions/CustomImage" }, - "maxItems": 30, + "maxItems": 200, "minItems": 0, "type": "array", "uniqueItems": false @@ -195,10 +195,11 @@ "insertionOrder": false, "items": { "maxLength": 12, - "pattern": "^[0-9]$", + "minLength": 12, + "pattern": "^\\d+$", "type": "string" }, - "maxItems": 10, + "maxItems": 20, "minItems": 0, "type": "array", "uniqueItems": false @@ -269,7 +270,7 @@ "items": { "$ref": "#/definitions/CustomImage" }, - "maxItems": 30, + "maxItems": 200, "minItems": 0, "type": "array", "uniqueItems": false @@ -306,7 +307,7 @@ "items": { "$ref": "#/definitions/CustomImage" }, - "maxItems": 30, + "maxItems": 200, "minItems": 0, "type": "array", "uniqueItems": false @@ -325,7 +326,7 @@ "items": { "$ref": "#/definitions/CustomImage" }, - "maxItems": 30, + "maxItems": 200, "minItems": 0, "type": "array", "uniqueItems": false diff --git a/src/cfnlint/data/schemas/providers/af_south_1/aws-sagemaker-userprofile.json b/src/cfnlint/data/schemas/providers/af_south_1/aws-sagemaker-userprofile.json new file mode 100644 index 0000000000..f7e1db12f6 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/af_south_1/aws-sagemaker-userprofile.json @@ -0,0 +1,535 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/DomainId", + "/properties/UserProfileName", + "/properties/SingleSignOnUserIdentifier", + "/properties/SingleSignOnUserValue", + "/properties/UserSettings/RStudioServerProAppSettings/AccessStatus", + "/properties/UserSettings/RStudioServerProAppSettings/UserGroup", + "/properties/Tags" + ], + "definitions": { + "CodeEditorAppSettings": { + "additionalProperties": false, + "properties": { + "CustomImages": { + "items": { + "$ref": "#/definitions/CustomImage" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + }, + "LifecycleConfigArns": { + "items": { + "$ref": "#/definitions/StudioLifecycleConfigArn" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "CodeRepository": { + "additionalProperties": false, + "properties": { + "RepositoryUrl": { + "maxLength": 256, + "pattern": "^https://([.\\-_a-zA-Z0-9]+/?){3,1016}$", + "type": "string" + } + }, + "required": [ + "RepositoryUrl" + ], + "type": "object" + }, + "CustomFileSystemConfig": { + "additionalProperties": false, + "properties": { + "EFSFileSystemConfig": { + "$ref": "#/definitions/EFSFileSystemConfig" + } + }, + "type": "object" + }, + "CustomImage": { + "additionalProperties": false, + "properties": { + "AppImageConfigName": { + "maxLength": 63, + "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}", + "type": "string" + }, + "ImageName": { + "maxLength": 63, + "pattern": "^[a-zA-Z0-9]([-.]?[a-zA-Z0-9]){0,62}$", + "type": "string" + }, + "ImageVersionNumber": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "AppImageConfigName", + "ImageName" + ], + "type": "object" + }, + "CustomPosixUserConfig": { + "additionalProperties": false, + "properties": { + "Gid": { + "maximum": 4000000, + "minimum": 1001, + "type": "integer" + }, + "Uid": { + "maximum": 4000000, + "minimum": 10000, + "type": "integer" + } + }, + "required": [ + "Uid", + "Gid" + ], + "type": "object" + }, + "DefaultEbsStorageSettings": { + "additionalProperties": false, + "properties": { + "DefaultEbsVolumeSizeInGb": { + "$ref": "#/definitions/SpaceEbsVolumeSizeInGb" + }, + "MaximumEbsVolumeSizeInGb": { + "$ref": "#/definitions/SpaceEbsVolumeSizeInGb" + } + }, + "required": [ + "DefaultEbsVolumeSizeInGb", + "MaximumEbsVolumeSizeInGb" + ], + "type": "object" + }, + "DefaultSpaceStorageSettings": { + "additionalProperties": false, + "properties": { + "DefaultEbsStorageSettings": { + "$ref": "#/definitions/DefaultEbsStorageSettings" + } + }, + "type": "object" + }, + "EFSFileSystemConfig": { + "additionalProperties": false, + "properties": { + "FileSystemId": { + "maxLength": 21, + "minLength": 11, + "pattern": "^(fs-[0-9a-f]{8,})$", + "type": "string" + }, + "FileSystemPath": { + "maxLength": 256, + "minLength": 1, + "pattern": "^\\/\\S*$", + "type": "string" + } + }, + "required": [ + "FileSystemId" + ], + "type": "object" + }, + "JupyterLabAppSettings": { + "additionalProperties": false, + "properties": { + "CodeRepositories": { + "items": { + "$ref": "#/definitions/CodeRepository" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "CustomImages": { + "items": { + "$ref": "#/definitions/CustomImage" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + }, + "LifecycleConfigArns": { + "items": { + "$ref": "#/definitions/StudioLifecycleConfigArn" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + }, + "JupyterServerAppSettings": { + "additionalProperties": false, + "properties": { + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + } + }, + "type": "object" + }, + "KernelGatewayAppSettings": { + "additionalProperties": false, + "properties": { + "CustomImages": { + "items": { + "$ref": "#/definitions/CustomImage" + }, + "maxItems": 30, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "DefaultResourceSpec": { + "$ref": "#/definitions/ResourceSpec" + } + }, + "type": "object" + }, + "RStudioServerProAppSettings": { + "additionalProperties": false, + "properties": { + "AccessStatus": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + }, + "UserGroup": { + "enum": [ + "R_STUDIO_ADMIN", + "R_STUDIO_USER" + ], + "type": "string" + } + }, + "type": "object" + }, + "ResourceSpec": { + "additionalProperties": false, + "properties": { + "InstanceType": { + "enum": [ + "system", + "ml.t3.micro", + "ml.t3.small", + "ml.t3.medium", + "ml.t3.large", + "ml.t3.xlarge", + "ml.t3.2xlarge", + "ml.m5.large", + "ml.m5.xlarge", + "ml.m5.2xlarge", + "ml.m5.4xlarge", + "ml.m5.8xlarge", + "ml.m5.12xlarge", + "ml.m5.16xlarge", + "ml.m5.24xlarge", + "ml.c5.large", + "ml.c5.xlarge", + "ml.c5.2xlarge", + "ml.c5.4xlarge", + "ml.c5.9xlarge", + "ml.c5.12xlarge", + "ml.c5.18xlarge", + "ml.c5.24xlarge", + "ml.p3.2xlarge", + "ml.p3.8xlarge", + "ml.p3.16xlarge", + "ml.g4dn.xlarge", + "ml.g4dn.2xlarge", + "ml.g4dn.4xlarge", + "ml.g4dn.8xlarge", + "ml.g4dn.12xlarge", + "ml.g4dn.16xlarge", + "ml.r5.large", + "ml.r5.xlarge", + "ml.r5.2xlarge", + "ml.r5.4xlarge", + "ml.r5.8xlarge", + "ml.r5.12xlarge", + "ml.r5.16xlarge", + "ml.r5.24xlarge", + "ml.p3dn.24xlarge", + "ml.m5d.large", + "ml.m5d.xlarge", + "ml.m5d.2xlarge", + "ml.m5d.4xlarge", + "ml.m5d.8xlarge", + "ml.m5d.12xlarge", + "ml.m5d.16xlarge", + "ml.m5d.24xlarge", + "ml.g5.xlarge", + "ml.g5.2xlarge", + "ml.g5.4xlarge", + "ml.g5.8xlarge", + "ml.g5.12xlarge", + "ml.g5.16xlarge", + "ml.g5.24xlarge", + "ml.g5.48xlarge", + "ml.p4d.24xlarge", + "ml.p4de.24xlarge", + "ml.geospatial.interactive", + "ml.trn1.2xlarge", + "ml.trn1.32xlarge", + "ml.trn1n.32xlarge" + ], + "type": "string" + }, + "SageMakerImageArn": { + "maxLength": 256, + "pattern": "^arn:aws(-[\\w]+)*:sagemaker:.+:[0-9]{12}:image/[a-z0-9]([-.]?[a-z0-9])*$", + "type": "string" + }, + "SageMakerImageVersionArn": { + "maxLength": 256, + "pattern": "^arn:aws(-[\\w]+)*:sagemaker:.+:[0-9]{12}:image-version/[a-z0-9]([-.]?[a-z0-9])*/[0-9]+$", + "type": "string" + } + }, + "type": "object" + }, + "SharingSettings": { + "additionalProperties": false, + "properties": { + "NotebookOutputOption": { + "enum": [ + "Allowed", + "Disabled" + ], + "type": "string" + }, + "S3KmsKeyId": { + "maxLength": 2048, + "pattern": ".*", + "type": "string" + }, + "S3OutputPath": { + "maxLength": 1024, + "pattern": "^(https|s3)://([^/]+)/?(.*)$", + "type": "string" + } + }, + "type": "object" + }, + "SpaceEbsVolumeSizeInGb": { + "maximum": 16384, + "minimum": 5, + "type": "integer" + }, + "StudioLifecycleConfigArn": { + "maxLength": 256, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:studio-lifecycle-config/.*", + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "UserSettings": { + "additionalProperties": false, + "properties": { + "CodeEditorAppSettings": { + "$ref": "#/definitions/CodeEditorAppSettings" + }, + "CustomFileSystemConfigs": { + "items": { + "$ref": "#/definitions/CustomFileSystemConfig" + }, + "maxItems": 2, + "minItems": 0, + "type": "array", + "uniqueItems": true + }, + "CustomPosixUserConfig": { + "$ref": "#/definitions/CustomPosixUserConfig" + }, + "DefaultLandingUri": { + "maxLength": 1023, + "type": "string" + }, + "ExecutionRole": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "JupyterLabAppSettings": { + "$ref": "#/definitions/JupyterLabAppSettings" + }, + "JupyterServerAppSettings": { + "$ref": "#/definitions/JupyterServerAppSettings" + }, + "KernelGatewayAppSettings": { + "$ref": "#/definitions/KernelGatewayAppSettings" + }, + "RStudioServerProAppSettings": { + "$ref": "#/definitions/RStudioServerProAppSettings" + }, + "SecurityGroups": { + "format": "AWS::EC2::SecurityGroup.Ids", + "items": { + "format": "AWS::EC2::SecurityGroup.GroupId", + "maxLength": 32, + "pattern": "[-0-9a-zA-Z]+", + "type": "string" + }, + "maxItems": 5, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "SharingSettings": { + "$ref": "#/definitions/SharingSettings" + }, + "SpaceStorageSettings": { + "$ref": "#/definitions/DefaultSpaceStorageSettings" + }, + "StudioWebPortal": { + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string" + } + }, + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "sagemaker:CreateUserProfile", + "sagemaker:DescribeUserProfile", + "sagemaker:DescribeImage", + "sagemaker:DescribeImageVersion", + "iam:PassRole" + ] + }, + "delete": { + "permissions": [ + "sagemaker:DeleteUserProfile", + "sagemaker:DescribeUserProfile" + ] + }, + "list": { + "permissions": [ + "sagemaker:ListUserProfiles" + ] + }, + "read": { + "permissions": [ + "sagemaker:DescribeUserProfile" + ] + }, + "update": { + "permissions": [ + "sagemaker:UpdateUserProfile", + "sagemaker:DescribeUserProfile", + "sagemaker:DescribeImage", + "sagemaker:DescribeImageVersion", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/UserProfileName", + "/properties/DomainId" + ], + "properties": { + "DomainId": { + "maxLength": 63, + "minLength": 1, + "type": "string" + }, + "SingleSignOnUserIdentifier": { + "pattern": "UserName", + "type": "string" + }, + "SingleSignOnUserValue": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "minItems": 0, + "type": "array", + "uniqueItems": false + }, + "UserProfileArn": { + "maxLength": 256, + "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:user-profile/.*", + "type": "string" + }, + "UserProfileName": { + "maxLength": 63, + "minLength": 1, + "type": "string" + }, + "UserSettings": { + "$ref": "#/definitions/UserSettings", + "maxItems": 50, + "minItems": 0, + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/UserProfileArn" + ], + "required": [ + "DomainId", + "UserProfileName" + ], + "typeName": "AWS::SageMaker::UserProfile", + "writeOnlyProperties": [ + "/properties/Tags" + ] +} diff --git a/src/cfnlint/data/schemas/providers/af_south_1/aws-secretsmanager-secret.json b/src/cfnlint/data/schemas/providers/af_south_1/aws-secretsmanager-secret.json deleted file mode 100644 index 8cf3aab10e..0000000000 --- a/src/cfnlint/data/schemas/providers/af_south_1/aws-secretsmanager-secret.json +++ /dev/null @@ -1,170 +0,0 @@ -{ - "$schema": "https://schema.cloudformation.us-east-1.amazonaws.com/provider.definition.schema.v1.json", - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "definitions": { - "GenerateSecretString": { - "additionalProperties": false, - "properties": { - "ExcludeCharacters": { - "type": "string" - }, - "ExcludeLowercase": { - "type": "boolean" - }, - "ExcludeNumbers": { - "type": "boolean" - }, - "ExcludePunctuation": { - "type": "boolean" - }, - "ExcludeUppercase": { - "type": "boolean" - }, - "GenerateStringKey": { - "type": "string" - }, - "IncludeSpace": { - "type": "boolean" - }, - "PasswordLength": { - "type": "integer" - }, - "RequireEachIncludedType": { - "type": "boolean" - }, - "SecretStringTemplate": { - "type": "string" - } - }, - "type": "object" - }, - "ReplicaRegion": { - "additionalProperties": false, - "properties": { - "KmsKeyId": { - "type": "string" - }, - "Region": { - "type": "string" - } - }, - "required": [ - "Region" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "secretsmanager:DescribeSecret", - "secretsmanager:GetRandomPassword", - "secretsmanager:CreateSecret", - "secretsmanager:TagResource" - ] - }, - "delete": { - "permissions": [ - "secretsmanager:DeleteSecret", - "secretsmanager:DescribeSecret", - "secretsmanager:RemoveRegionsFromReplication" - ] - }, - "list": { - "permissions": [ - "secretsmanager:ListSecrets" - ] - }, - "read": { - "permissions": [ - "secretsmanager:DescribeSecret", - "secretsmanager:GetSecretValue" - ] - }, - "update": { - "permissions": [ - "secretsmanager:UpdateSecret", - "secretsmanager:TagResource", - "secretsmanager:UntagResource", - "secretsmanager:GetRandomPassword", - "secretsmanager:GetSecretValue", - "secretsmanager:ReplicateSecretToRegions", - "secretsmanager:RemoveRegionsFromReplication" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Description": { - "type": "string" - }, - "GenerateSecretString": { - "$ref": "#/definitions/GenerateSecretString" - }, - "Id": { - "type": "string" - }, - "KmsKeyId": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "ReplicaRegions": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ReplicaRegion" - }, - "type": "array", - "uniqueItems": false - }, - "SecretString": { - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-secretsmanager.git", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::SecretsManager::Secret", - "writeOnlyProperties": [ - "/properties/SecretString", - "/properties/GenerateSecretString" - ] -} diff --git a/src/cfnlint/data/schemas/providers/af_south_1/aws-sso-instance.json b/src/cfnlint/data/schemas/providers/af_south_1/aws-sso-instance.json new file mode 100644 index 0000000000..26c2ca063a --- /dev/null +++ b/src/cfnlint/data/schemas/providers/af_south_1/aws-sso-instance.json @@ -0,0 +1,125 @@ +{ + "additionalProperties": false, + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "[\\w+=,.@-]+", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "pattern": "[\\w+=,.@-]+", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "sso:CreateInstance", + "sso:DescribeInstance", + "sso:TagResource", + "iam:CreateServiceLinkedRole", + "sso:TagInstance", + "sso:ListTagsForResource" + ] + }, + "delete": { + "permissions": [ + "sso:DeleteInstance" + ] + }, + "list": { + "permissions": [ + "sso:ListInstances" + ] + }, + "read": { + "permissions": [ + "sso:DescribeInstance", + "sso:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "sso:UpdateInstance", + "sso:TagResource", + "sso:UntagResource", + "sso:ListTagsForResource", + "sso:TagInstance", + "sso:DescribeInstance" + ] + } + }, + "primaryIdentifier": [ + "/properties/InstanceArn" + ], + "properties": { + "IdentityStoreId": { + "maxLength": 64, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-]*$", + "type": "string" + }, + "InstanceArn": { + "maxLength": 1224, + "minLength": 10, + "pattern": "^arn:(aws|aws-us-gov|aws-cn|aws-iso|aws-iso-b):sso:::instance/(sso)?ins-[a-zA-Z0-9-.]{16}$", + "type": "string" + }, + "Name": { + "maxLength": 32, + "minLength": 1, + "pattern": "^[\\w+=,.@-]+$", + "type": "string" + }, + "OwnerAccountId": { + "maxLength": 12, + "minLength": 12, + "pattern": "^\\d{12}?$", + "type": "string" + }, + "Status": { + "enum": [ + "CREATE_IN_PROGRESS", + "DELETE_IN_PROGRESS", + "ACTIVE" + ], + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 75, + "type": "array", + "uniqueItems": false + } + }, + "readOnlyProperties": [ + "/properties/InstanceArn", + "/properties/OwnerAccountId", + "/properties/IdentityStoreId", + "/properties/Status" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-sso/aws-sso-instance", + "tagging": { + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::SSO::Instance" +} diff --git a/src/cfnlint/data/schemas/providers/ca_central_1/aws-iot-policy.json b/src/cfnlint/data/schemas/providers/af_south_1/aws-stepfunctions-activity.json similarity index 50% rename from src/cfnlint/data/schemas/providers/ca_central_1/aws-iot-policy.json rename to src/cfnlint/data/schemas/providers/af_south_1/aws-stepfunctions-activity.json index 70a8d4861b..7aaf191ed1 100644 --- a/src/cfnlint/data/schemas/providers/ca_central_1/aws-iot-policy.json +++ b/src/cfnlint/data/schemas/providers/af_south_1/aws-stepfunctions-activity.json @@ -1,16 +1,20 @@ { "additionalProperties": false, "createOnlyProperties": [ - "/properties/PolicyName" + "/properties/Name" ], "definitions": { - "Tag": { + "TagsEntry": { "additionalProperties": false, "properties": { "Key": { + "maxLength": 128, + "minLength": 1, "type": "string" }, "Value": { + "maxLength": 256, + "minLength": 1, "type": "string" } }, @@ -24,80 +28,65 @@ "handlers": { "create": { "permissions": [ - "iot:CreatePolicy", - "iot:GetPolicy", - "iot:TagResource", - "iot:ListTagsForResource" + "states:CreateActivity", + "states:TagResource" ] }, "delete": { "permissions": [ - "iot:DeletePolicy", - "iot:GetPolicy", - "iot:ListPolicyVersions", - "iot:DeletePolicyVersion" + "states:DescribeActivity", + "states:DeleteActivity" ] }, "list": { "permissions": [ - "iot:ListPolicies" + "states:ListActivities" ] }, "read": { "permissions": [ - "iot:GetPolicy", - "iot:ListTagsForResource" + "states:DescribeActivity", + "states:ListTagsForResource" ] }, "update": { "permissions": [ - "iot:GetPolicy", - "iot:ListPolicyVersions", - "iot:CreatePolicyVersion", - "iot:DeletePolicyVersion", - "iot:SetDefaultPolicyVersion", - "iot:TagResource", - "iot:UntagResource", - "iot:ListTagsForResource" + "states:ListTagsForResource", + "states:TagResource", + "states:UntagResource" ] } }, "primaryIdentifier": [ - "/properties/Id" + "/properties/Arn" ], "properties": { "Arn": { + "maxLength": 2048, + "minLength": 1, "type": "string" }, - "Id": { - "type": "string" - }, - "PolicyDocument": { - "maxLength": 404600, + "Name": { + "maxLength": 80, "minLength": 1, - "type": [ - "object", - "string" - ] - }, - "PolicyName": { "type": "string" }, "Tags": { - "insertionOrder": true, + "insertionOrder": false, "items": { - "$ref": "#/definitions/Tag" + "$ref": "#/definitions/TagsEntry" }, - "type": "array" + "type": "array", + "uniqueItems": false } }, "readOnlyProperties": [ - "/properties/Arn", - "/properties/Id" + "/properties/Arn" ], "required": [ - "PolicyDocument" + "Name" ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-stepfunctions.git", "tagging": { "cloudFormationSystemTags": true, "tagOnCreate": true, @@ -105,5 +94,5 @@ "tagUpdatable": true, "taggable": true }, - "typeName": "AWS::IoT::Policy" + "typeName": "AWS::StepFunctions::Activity" } diff --git a/src/cfnlint/data/schemas/providers/af_south_1/aws-stepfunctions-statemachine.json b/src/cfnlint/data/schemas/providers/af_south_1/aws-stepfunctions-statemachine.json new file mode 100644 index 0000000000..c8a1b0f42e --- /dev/null +++ b/src/cfnlint/data/schemas/providers/af_south_1/aws-stepfunctions-statemachine.json @@ -0,0 +1,256 @@ +{ + "additionalIdentifiers": [ + [ + "/properties/StateMachineName" + ] + ], + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/StateMachineName", + "/properties/StateMachineType" + ], + "definitions": { + "CloudWatchLogsLogGroup": { + "additionalProperties": false, + "properties": { + "LogGroupArn": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "type": "object" + }, + "Definition": { + "minProperties": 1, + "type": "object" + }, + "DefinitionSubstitutions": { + "additionalProperties": false, + "minProperties": 1, + "patternProperties": { + ".*": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "integer" + }, + { + "type": "boolean" + } + ] + } + }, + "type": "object" + }, + "LogDestination": { + "additionalProperties": false, + "properties": { + "CloudWatchLogsLogGroup": { + "$ref": "#/definitions/CloudWatchLogsLogGroup" + } + }, + "type": "object" + }, + "LoggingConfiguration": { + "additionalProperties": false, + "properties": { + "Destinations": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/LogDestination" + }, + "minItems": 1, + "type": "array" + }, + "IncludeExecutionData": { + "type": "boolean" + }, + "Level": { + "enum": [ + "ALL", + "ERROR", + "FATAL", + "OFF" + ], + "type": "string" + } + }, + "type": "object" + }, + "S3Location": { + "additionalProperties": false, + "properties": { + "Bucket": { + "type": "string" + }, + "Key": { + "type": "string" + }, + "Version": { + "type": "string" + } + }, + "required": [ + "Bucket", + "Key" + ], + "type": "object" + }, + "TagsEntry": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + }, + "TracingConfiguration": { + "additionalProperties": false, + "properties": { + "Enabled": { + "type": "boolean" + } + }, + "type": "object" + } + }, + "handlers": { + "create": { + "permissions": [ + "states:CreateStateMachine", + "states:DescribeStateMachine", + "states:TagResource", + "iam:PassRole", + "s3:GetObject" + ] + }, + "delete": { + "permissions": [ + "states:DeleteStateMachine", + "states:DescribeStateMachine" + ] + }, + "list": { + "permissions": [ + "states:ListStateMachines" + ] + }, + "read": { + "permissions": [ + "states:DescribeStateMachine", + "states:ListTagsForResource" + ] + }, + "update": { + "permissions": [ + "states:UpdateStateMachine", + "states:TagResource", + "states:UntagResource", + "states:ListTagsForResource", + "iam:PassRole" + ] + } + }, + "primaryIdentifier": [ + "/properties/Arn" + ], + "properties": { + "Arn": { + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "Definition": { + "$ref": "#/definitions/Definition" + }, + "DefinitionS3Location": { + "$ref": "#/definitions/S3Location" + }, + "DefinitionString": { + "maxLength": 1048576, + "minLength": 1, + "type": "string" + }, + "DefinitionSubstitutions": { + "$ref": "#/definitions/DefinitionSubstitutions" + }, + "LoggingConfiguration": { + "$ref": "#/definitions/LoggingConfiguration" + }, + "Name": { + "maxLength": 80, + "minLength": 1, + "type": "string" + }, + "RoleArn": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "StateMachineName": { + "maxLength": 80, + "minLength": 1, + "type": "string" + }, + "StateMachineRevisionId": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "StateMachineType": { + "enum": [ + "STANDARD", + "EXPRESS" + ], + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TagsEntry" + }, + "type": "array", + "uniqueItems": false + }, + "TracingConfiguration": { + "$ref": "#/definitions/TracingConfiguration" + } + }, + "readOnlyProperties": [ + "/properties/Arn", + "/properties/Name", + "/properties/StateMachineRevisionId" + ], + "required": [ + "RoleArn" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-stepfunctions.git", + "tagging": { + "cloudFormationSystemTags": true, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::StepFunctions::StateMachine", + "writeOnlyProperties": [ + "/properties/Definition", + "/properties/DefinitionS3Location", + "/properties/DefinitionSubstitutions" + ] +} diff --git a/src/cfnlint/data/schemas/providers/ap_east_1/__init__.py b/src/cfnlint/data/schemas/providers/ap_east_1/__init__.py index b1678e0e41..8dfab0dfdd 100644 --- a/src/cfnlint/data/schemas/providers/ap_east_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/ap_east_1/__init__.py @@ -1,1520 +1,1548 @@ -from typing import List +from __future__ import annotations # pylint: disable=too-many-lines -types = [ - "AWS::CDK::Metadata", - "Module", - "AWS::ApiGatewayV2::Integration", - "AWS::ApiGatewayV2::ApiMapping", - "AWS::CE::AnomalySubscription", - "AWS::Shield::DRTAccess", - "AWS::SSO::Assignment", - "AWS::Glue::Partition", - "AWS::RDS::Integration", - "AWS::EC2::TransitGatewayRouteTablePropagation", - "AWS::Shield::ProactiveEngagement", - "AWS::ApiGateway::BasePathMapping", - "AWS::WAFRegional::GeoMatchSet", - "AWS::S3::AccessGrantsLocation", - "AWS::GuardDuty::Filter", - "AWS::ECS::Service", - "AWS::ServiceCatalog::PortfolioPrincipalAssociation", - "AWS::RAM::ResourceShare", - "AWS::MemoryDB::Cluster", - "AWS::DMS::ReplicationConfig", - "AWS::DynamoDB::Table", +types: list[str] = [ + "AWS::ACMPCA::Certificate", + "AWS::ACMPCA::CertificateAuthority", + "AWS::ACMPCA::CertificateAuthorityActivation", + "AWS::ACMPCA::Permission", + "AWS::ARCZonalShift::ZonalAutoshiftConfiguration", + "AWS::AccessAnalyzer::Analyzer", + "AWS::AmazonMQ::Broker", + "AWS::AmazonMQ::Configuration", "AWS::AmazonMQ::ConfigurationAssociation", - "AWS::WAFRegional::IPSet", - "AWS::EC2::SecurityGroupEgress", - "AWS::EC2::LocalGatewayRouteTableVPCAssociation", - "AWS::Config::OrganizationConfigRule", - "AWS::Glue::DataQualityRuleset", - "AWS::MediaConnect::Bridge", - "AWS::Route53Profiles::ProfileAssociation", - "AWS::Config::ConfigurationRecorder", - "AWS::EC2::NetworkPerformanceMetricSubscription", - "AWS::CloudFront::ContinuousDeploymentPolicy", - "AWS::ECR::ReplicationConfiguration", - "AWS::AppConfig::ExtensionAssociation", - "AWS::S3Outposts::AccessPoint", - "AWS::EC2::IPAMPoolCidr", - "AWS::IoT::TopicRuleDestination", + "AWS::Amplify::App", "AWS::Amplify::Branch", - "AWS::Redshift::ClusterSubnetGroup", - "AWS::RDS::DBInstance", - "AWS::EC2::VPCDHCPOptionsAssociation", + "AWS::Amplify::Domain", + "AWS::ApiGateway::Account", + "AWS::ApiGateway::ApiKey", + "AWS::ApiGateway::Authorizer", + "AWS::ApiGateway::BasePathMapping", + "AWS::ApiGateway::ClientCertificate", + "AWS::ApiGateway::Deployment", + "AWS::ApiGateway::DocumentationPart", + "AWS::ApiGateway::DocumentationVersion", + "AWS::ApiGateway::DomainName", + "AWS::ApiGateway::GatewayResponse", + "AWS::ApiGateway::Method", "AWS::ApiGateway::Model", + "AWS::ApiGateway::RequestValidator", + "AWS::ApiGateway::Resource", + "AWS::ApiGateway::RestApi", + "AWS::ApiGateway::Stage", + "AWS::ApiGateway::UsagePlan", + "AWS::ApiGateway::UsagePlanKey", + "AWS::ApiGateway::VpcLink", + "AWS::ApiGatewayV2::Api", + "AWS::ApiGatewayV2::ApiGatewayManagedOverrides", + "AWS::ApiGatewayV2::ApiMapping", + "AWS::ApiGatewayV2::Authorizer", + "AWS::ApiGatewayV2::Deployment", + "AWS::ApiGatewayV2::DomainName", + "AWS::ApiGatewayV2::Integration", "AWS::ApiGatewayV2::IntegrationResponse", - "AWS::EC2::NetworkAcl", - "AWS::Lambda::EventSourceMapping", - "AWS::Logs::ResourcePolicy", - "AWS::ServiceCatalog::LaunchNotificationConstraint", - "AWS::DMS::InstanceProfile", - "AWS::IoT::CACertificate", - "AWS::EC2::NetworkAclEntry", - "AWS::EC2::NetworkInsightsAccessScopeAnalysis", - "AWS::Transfer::Certificate", - "AWS::ApiGateway::DocumentationPart", - "AWS::Route53Profiles::Profile", - "AWS::CloudWatch::CompositeAlarm", - "AWS::Route53Resolver::FirewallDomainList", - "AWS::Redshift::EndpointAccess", + "AWS::ApiGatewayV2::Model", + "AWS::ApiGatewayV2::Route", + "AWS::ApiGatewayV2::RouteResponse", + "AWS::ApiGatewayV2::Stage", + "AWS::ApiGatewayV2::VpcLink", "AWS::AppConfig::Application", - "AWS::OpsWorks::Stack", - "AWS::Lambda::Url", - "AWS::GameLift::Fleet", - "AWS::DataSync::LocationFSxWindows", - "AWS::GameLift::Build", - "AWS::ApiGateway::RequestValidator", - "AWS::AutoScaling::WarmPool", + "AWS::AppConfig::ConfigurationProfile", + "AWS::AppConfig::Deployment", + "AWS::AppConfig::DeploymentStrategy", + "AWS::AppConfig::Environment", + "AWS::AppConfig::Extension", + "AWS::AppConfig::ExtensionAssociation", + "AWS::AppConfig::HostedConfigurationVersion", + "AWS::AppMesh::GatewayRoute", + "AWS::AppMesh::Mesh", + "AWS::AppMesh::Route", + "AWS::AppMesh::VirtualGateway", + "AWS::AppMesh::VirtualNode", + "AWS::AppMesh::VirtualRouter", + "AWS::AppMesh::VirtualService", + "AWS::AppSync::ApiCache", + "AWS::AppSync::ApiKey", + "AWS::AppSync::DataSource", + "AWS::AppSync::DomainName", + "AWS::AppSync::DomainNameApiAssociation", + "AWS::AppSync::FunctionConfiguration", + "AWS::AppSync::GraphQLApi", + "AWS::AppSync::GraphQLSchema", + "AWS::AppSync::Resolver", + "AWS::AppSync::SourceApiAssociation", "AWS::ApplicationAutoScaling::ScalableTarget", - "AWS::ApiGatewayV2::Model", - "AWS::Config::StoredQuery", - "AWS::ACMPCA::Permission", - "AWS::Neptune::DBSubnetGroup", - "AWS::Cassandra::Keyspace", - "AWS::Transfer::Server", - "AWS::ApiGateway::DomainName", - "AWS::ECS::PrimaryTaskSet", - "AWS::FMS::ResourceSet", - "AWS::Cognito::UserPoolDomain", + "AWS::ApplicationAutoScaling::ScalingPolicy", + "AWS::ApplicationInsights::Application", + "AWS::ApplicationSignals::ServiceLevelObjective", + "AWS::Athena::DataCatalog", + "AWS::Athena::NamedQuery", + "AWS::Athena::PreparedStatement", + "AWS::Athena::WorkGroup", "AWS::AutoScaling::AutoScalingGroup", - "AWS::WAFv2::RegexPatternSet", - "AWS::EKS::FargateProfile", - "AWS::Route53::DNSSEC", - "AWS::Redshift::EndpointAuthorization", - "AWS::EC2::TransitGatewayRouteTable", - "AWS::ControlTower::EnabledControl", - "AWS::S3::AccessGrantsInstance", - "AWS::Macie::CustomDataIdentifier", - "AWS::Cognito::IdentityPoolRoleAttachment", - "AWS::Route53::RecordSet", - "AWS::EKS::AccessEntry", - "AWS::ElastiCache::SecurityGroup", + "AWS::AutoScaling::LaunchConfiguration", + "AWS::AutoScaling::LifecycleHook", + "AWS::AutoScaling::ScalingPolicy", + "AWS::AutoScaling::ScheduledAction", + "AWS::AutoScaling::WarmPool", + "AWS::AutoScalingPlans::ScalingPlan", + "AWS::Backup::BackupPlan", + "AWS::Backup::BackupSelection", + "AWS::Backup::BackupVault", "AWS::Backup::Framework", - "AWS::OpsWorks::Layer", - "AWS::CloudTrail::EventDataStore", - "AWS::KinesisFirehose::DeliveryStream", - "AWS::EC2::NetworkInsightsAccessScope", - "AWS::Cognito::UserPoolUserToGroupAttachment", - "AWS::PCAConnectorAD::DirectoryRegistration", - "AWS::SageMaker::CodeRepository", - "AWS::ImageBuilder::Component", - "AWS::MediaConnect::FlowEntitlement", - "AWS::Glue::Connection", - "AWS::AppMesh::Route", - "AWS::IAM::Group", - "AWS::Macie::FindingsFilter", - "AWS::Organizations::ResourcePolicy", - "AWS::WAFRegional::WebACLAssociation", - "AWS::EC2::TransitGatewayMulticastGroupSource", - "AWS::Transfer::Profile", - "AWS::DataBrew::Recipe", - "AWS::SSO::Instance", - "AWS::GameLift::Alias", - "AWS::AppSync::DomainName", - "AWS::ApiGateway::UsagePlanKey", - "AWS::FMS::Policy", - "AWS::CloudFront::RealtimeLogConfig", - "AWS::SageMaker::Pipeline", - "AWS::CloudTrail::Channel", - "AWS::DocDB::DBInstance", - "AWS::LakeFormation::DataCellsFilter", - "AWS::DataSync::LocationHDFS", - "AWS::Events::Archive", - "AWS::MSK::Cluster", - "AWS::SecurityHub::DelegatedAdmin", - "AWS::ControlTower::EnabledBaseline", - "AWS::EC2::VPCEndpointConnectionNotification", - "AWS::CodePipeline::Pipeline", - "AWS::OpsWorks::Instance", - "AWS::Config::ConfigurationAggregator", - "AWS::ImageBuilder::ImagePipeline", - "AWS::ElasticLoadBalancingV2::ListenerCertificate", - "AWS::CloudFormation::ModuleVersion", - "AWS::Cloud9::EnvironmentEC2", - "AWS::Route53Resolver::ResolverRuleAssociation", - "AWS::FSx::StorageVirtualMachine", - "AWS::Synthetics::Canary", - "AWS::KinesisAnalyticsV2::ApplicationCloudWatchLoggingOption", + "AWS::Backup::ReportPlan", + "AWS::Backup::RestoreTestingPlan", "AWS::Backup::RestoreTestingSelection", - "AWS::SNS::Subscription", - "AWS::AppMesh::Mesh", - "AWS::EC2::NatGateway", - "AWS::InternetMonitor::Monitor", - "AWS::Transfer::Workflow", - "AWS::S3::AccessGrant", - "AWS::AppConfig::DeploymentStrategy", - "AWS::Glue::DevEndpoint", - "AWS::SageMaker::ModelPackage", - "AWS::WAFRegional::SizeConstraintSet", - "AWS::EventSchemas::Discoverer", - "AWS::ElastiCache::UserGroup", - "AWS::IoT::ThingGroup", - "AWS::Logs::DeliveryDestination", - "AWS::ImageBuilder::ImageRecipe", - "AWS::IoT::SoftwarePackage", - "AWS::ApiGateway::RestApi", - "AWS::OpsWorks::ElasticLoadBalancerAttachment", - "AWS::AppMesh::VirtualService", - "AWS::S3ObjectLambda::AccessPointPolicy", - "AWS::NetworkManager::TransitGatewayRegistration", - "AWS::Amplify::App", - "AWS::InspectorV2::Filter", - "AWS::ElastiCache::ReplicationGroup", - "AWS::StepFunctions::StateMachineAlias", + "AWS::BackupGateway::Hypervisor", + "AWS::Batch::ComputeEnvironment", + "AWS::Batch::JobDefinition", + "AWS::Batch::JobQueue", + "AWS::Batch::SchedulingPolicy", + "AWS::CDK::Metadata", + "AWS::CE::AnomalyMonitor", + "AWS::CE::AnomalySubscription", + "AWS::CE::CostCategory", + "AWS::Cassandra::Keyspace", "AWS::Cassandra::Table", - "AWS::Cognito::UserPoolResourceServer", - "AWS::RDS::GlobalCluster", + "AWS::CertificateManager::Account", + "AWS::CertificateManager::Certificate", + "AWS::Chatbot::MicrosoftTeamsChannelConfiguration", + "AWS::Chatbot::SlackChannelConfiguration", + "AWS::Cloud9::EnvironmentEC2", + "AWS::CloudFormation::CustomResource", + "AWS::CloudFormation::HookDefaultVersion", + "AWS::CloudFormation::HookTypeConfig", + "AWS::CloudFormation::HookVersion", + "AWS::CloudFormation::Macro", "AWS::CloudFormation::ModuleDefaultVersion", - "AWS::CE::CostCategory", - "AWS::ApplicationSignals::ServiceLevelObjective", - "AWS::Route53Profiles::ProfileResourceAssociation", - "AWS::SSO::PermissionSet", - "AWS::Glue::Job", - "AWS::ServiceCatalog::CloudFormationProvisionedProduct", - "AWS::Route53::HostedZone", - "AWS::EKS::PodIdentityAssociation", - "AWS::ResourceExplorer2::Index", - "AWS::Glue::Table", - "AWS::WAFRegional::WebACL", - "AWS::Logs::MetricFilter", - "AWS::Lambda::Function", - "AWS::SNS::Topic", - "AWS::Backup::BackupSelection", - "AWS::DataSync::LocationFSxLustre", - "AWS::SageMaker::App", - "AWS::Logs::DeliverySource", - "AWS::EC2::VPCGatewayAttachment", - "AWS::CloudTrail::Trail", - "AWS::EC2::VPNConnectionRoute", - "AWS::EC2::InternetGateway", - "AWS::EC2::GatewayRouteTableAssociation", - "AWS::WAFv2::IPSet", - "AWS::MediaConnect::BridgeOutput", - "AWS::SSM::Document", - "AWS::IAM::Role", - "AWS::Events::ApiDestination", - "AWS::DMS::Endpoint", - "AWS::ElastiCache::ServerlessCache", + "AWS::CloudFormation::ModuleVersion", + "AWS::CloudFormation::PublicTypeVersion", + "AWS::CloudFormation::Publisher", + "AWS::CloudFormation::ResourceDefaultVersion", + "AWS::CloudFormation::ResourceVersion", + "AWS::CloudFormation::Stack", + "AWS::CloudFormation::StackSet", + "AWS::CloudFormation::TypeActivation", + "AWS::CloudFormation::WaitCondition", + "AWS::CloudFormation::WaitConditionHandle", + "AWS::CloudFront::CachePolicy", "AWS::CloudFront::CloudFrontOriginAccessIdentity", - "AWS::CodeStarNotifications::NotificationRule", - "AWS::SageMaker::EndpointConfig", - "AWS::AppMesh::GatewayRoute", - "AWS::ApiGateway::ApiKey", - "AWS::AutoScaling::LaunchConfiguration", - "AWS::ApiGateway::ClientCertificate", - "AWS::KinesisAnalyticsV2::Application", - "AWS::Lambda::Alias", - "AWS::Logs::LogAnomalyDetector", - "AWS::WAF::IPSet", - "AWS::EC2::TransitGatewayMulticastDomainAssociation", - "AWS::S3Outposts::Endpoint", - "AWS::WAF::SizeConstraintSet", - "AWS::EC2::TransitGatewayRouteTableAssociation", - "AWS::AppConfig::Environment", - "AWS::Neptune::EventSubscription", - "AWS::ImageBuilder::Image", - "AWS::ElastiCache::SecurityGroupIngress", - "AWS::WAFRegional::XssMatchSet", - "AWS::RDS::DBProxyTargetGroup", - "AWS::CloudWatch::Dashboard", + "AWS::CloudFront::ContinuousDeploymentPolicy", + "AWS::CloudFront::Distribution", + "AWS::CloudFront::Function", + "AWS::CloudFront::KeyGroup", + "AWS::CloudFront::KeyValueStore", + "AWS::CloudFront::MonitoringSubscription", + "AWS::CloudFront::OriginAccessControl", + "AWS::CloudFront::OriginRequestPolicy", + "AWS::CloudFront::PublicKey", + "AWS::CloudFront::RealtimeLogConfig", + "AWS::CloudFront::ResponseHeadersPolicy", + "AWS::CloudFront::StreamingDistribution", + "AWS::CloudTrail::Channel", + "AWS::CloudTrail::EventDataStore", + "AWS::CloudTrail::ResourcePolicy", + "AWS::CloudTrail::Trail", "AWS::CloudWatch::Alarm", - "AWS::IoT::ThingType", - "AWS::GuardDuty::Member", - "AWS::CloudFormation::CustomResource", - "AWS::FIS::TargetAccountConfiguration", - "AWS::KinesisAnalytics::ApplicationOutput", - "AWS::WAFv2::RuleGroup", - "AWS::SageMaker::ModelPackageGroup", - "AWS::ElastiCache::ParameterGroup", - "AWS::NetworkFirewall::LoggingConfiguration", - "AWS::Glue::Classifier", - "AWS::CodeDeploy::DeploymentGroup", - "AWS::SageMaker::InferenceExperiment", - "AWS::CloudFormation::StackSet", - "AWS::EC2::Route", - "AWS::FIS::ExperimentTemplate", + "AWS::CloudWatch::AnomalyDetector", + "AWS::CloudWatch::CompositeAlarm", + "AWS::CloudWatch::Dashboard", + "AWS::CloudWatch::InsightRule", + "AWS::CloudWatch::MetricStream", + "AWS::CodeBuild::Project", + "AWS::CodeBuild::ReportGroup", + "AWS::CodeBuild::SourceCredential", "AWS::CodeCommit::Repository", - "AWS::CloudFormation::HookVersion", - "AWS::RolesAnywhere::Profile", - "AWS::XRay::ResourcePolicy", - "AWS::IoT::ResourceSpecificLogging", - "AWS::ServiceCatalog::LaunchTemplateConstraint", - "AWS::WAFv2::LoggingConfiguration", - "AWS::DynamoDB::GlobalTable", - "AWS::Backup::BackupPlan", - "AWS::ImageBuilder::DistributionConfiguration", - "AWS::LakeFormation::Permissions", - "AWS::ResourceExplorer2::View", - "AWS::Glue::DataCatalogEncryptionSettings", - "AWS::CloudFront::PublicKey", - "AWS::PCAConnectorAD::Connector", - "AWS::IdentityStore::Group", - "AWS::RAM::Permission", - "AWS::DataSync::Task", - "AWS::ECS::TaskDefinition", - "AWS::SageMaker::Model", - "AWS::MemoryDB::ParameterGroup", - "AWS::Shield::Protection", - "AWS::IdentityStore::GroupMembership", - "AWS::AppSync::FunctionConfiguration", - "AWS::EC2::SpotFleet", - "AWS::Glue::SchemaVersion", - "AWS::SageMaker::Space", - "AWS::IoT::PolicyPrincipalAttachment", - "AWS::FMS::NotificationChannel", - "AWS::MSK::BatchScramSecret", + "AWS::CodeDeploy::Application", + "AWS::CodeDeploy::DeploymentConfig", + "AWS::CodeDeploy::DeploymentGroup", + "AWS::CodePipeline::CustomActionType", + "AWS::CodePipeline::Pipeline", + "AWS::CodePipeline::Webhook", + "AWS::CodeStarNotifications::NotificationRule", + "AWS::Cognito::IdentityPool", + "AWS::Cognito::IdentityPoolPrincipalTag", + "AWS::Cognito::IdentityPoolRoleAttachment", + "AWS::Cognito::LogDeliveryConfiguration", + "AWS::Cognito::UserPool", + "AWS::Cognito::UserPoolClient", + "AWS::Cognito::UserPoolDomain", + "AWS::Cognito::UserPoolGroup", + "AWS::Cognito::UserPoolIdentityProvider", + "AWS::Cognito::UserPoolResourceServer", + "AWS::Cognito::UserPoolRiskConfigurationAttachment", + "AWS::Cognito::UserPoolUICustomizationAttachment", + "AWS::Cognito::UserPoolUser", + "AWS::Cognito::UserPoolUserToGroupAttachment", + "AWS::Config::AggregationAuthorization", + "AWS::Config::ConfigRule", + "AWS::Config::ConfigurationAggregator", + "AWS::Config::ConfigurationRecorder", + "AWS::Config::ConformancePack", + "AWS::Config::DeliveryChannel", + "AWS::Config::OrganizationConfigRule", + "AWS::Config::RemediationConfiguration", + "AWS::Config::StoredQuery", + "AWS::ControlTower::EnabledBaseline", + "AWS::ControlTower::EnabledControl", + "AWS::ControlTower::LandingZone", + "AWS::DLM::LifecyclePolicy", "AWS::DMS::Certificate", - "AWS::S3::Bucket", - "AWS::GuardDuty::IPSet", - "AWS::ServiceDiscovery::HttpNamespace", - "AWS::EMR::SecurityConfiguration", - "AWS::CloudWatch::InsightRule", - "AWS::ApiGateway::UsagePlan", - "AWS::Batch::SchedulingPolicy", - "AWS::IoT::Authorizer", - "AWS::MediaConnect::BridgeSource", - "AWS::ApiGatewayV2::VpcLink", - "AWS::IoT::JobTemplate", - "AWS::ServiceCatalog::PortfolioProductAssociation", + "AWS::DMS::DataProvider", + "AWS::DMS::Endpoint", + "AWS::DMS::EventSubscription", + "AWS::DMS::InstanceProfile", + "AWS::DMS::MigrationProject", + "AWS::DMS::ReplicationConfig", + "AWS::DMS::ReplicationInstance", + "AWS::DMS::ReplicationSubnetGroup", + "AWS::DMS::ReplicationTask", + "AWS::DataBrew::Dataset", + "AWS::DataBrew::Job", "AWS::DataBrew::Project", - "AWS::Athena::WorkGroup", - "AWS::SageMaker::ImageVersion", - "AWS::ApiGatewayV2::Api", - "AWS::Detective::Graph", - "AWS::ServiceCatalog::PortfolioShare", - "AWS::ApiGateway::VpcLink", - "AWS::NetworkManager::CustomerGatewayAssociation", - "AWS::IAM::ServerCertificate", - "AWS::IoT::SecurityProfile", - "AWS::GlobalAccelerator::CrossAccountAttachment", - "AWS::Events::EventBus", - "AWS::DocDB::EventSubscription", - "AWS::SQS::QueueInlinePolicy", - "AWS::Organizations::Organization", - "AWS::AutoScalingPlans::ScalingPlan", - "AWS::SSM::MaintenanceWindowTarget", - "AWS::ApiGateway::Authorizer", - "AWS::BackupGateway::Hypervisor", - "AWS::IAM::Policy", - "AWS::DataBrew::Schedule", - "AWS::CloudFormation::Publisher", - "AWS::RDS::DBSecurityGroupIngress", - "AWS::SecurityHub::OrganizationConfiguration", - "AWS::EC2::TransitGatewayMulticastGroupMember", - "AWS::EC2::VolumeAttachment", - "AWS::Glue::SecurityConfiguration", - "AWS::NetworkFirewall::TLSInspectionConfiguration", + "AWS::DataBrew::Recipe", "AWS::DataBrew::Ruleset", - "AWS::ApplicationInsights::Application", - "AWS::ECS::ClusterCapacityProviderAssociations", - "AWS::AppConfig::ConfigurationProfile", - "AWS::Route53Resolver::FirewallRuleGroup", - "AWS::MSK::Configuration", - "AWS::EC2::TransitGateway", - "AWS::Cognito::UserPoolGroup", - "AWS::EC2::VPCEndpointServicePermissions", - "AWS::SSM::MaintenanceWindowTask", - "AWS::EC2::TransitGatewayMulticastDomain", - "AWS::VerifiedPermissions::PolicyTemplate", - "AWS::EKS::Cluster", - "AWS::CodeBuild::Project", - "AWS::EFS::FileSystem", - "AWS::Logs::QueryDefinition", - "AWS::SecurityHub::ProductSubscription", - "AWS::IAM::InstanceProfile", - "AWS::IoT::BillingGroup", + "AWS::DataBrew::Schedule", + "AWS::DataPipeline::Pipeline", + "AWS::DataSync::Agent", + "AWS::DataSync::LocationAzureBlob", + "AWS::DataSync::LocationEFS", + "AWS::DataSync::LocationFSxLustre", + "AWS::DataSync::LocationFSxONTAP", + "AWS::DataSync::LocationFSxOpenZFS", + "AWS::DataSync::LocationFSxWindows", + "AWS::DataSync::LocationHDFS", "AWS::DataSync::LocationNFS", - "AWS::Amplify::Domain", - "AWS::KinesisAnalyticsV2::ApplicationOutput", - "AWS::SageMaker::Domain", - "AWS::CertificateManager::Certificate", - "AWS::Glue::SchemaVersionMetadata", - "AWS::SDB::Domain", - "AWS::EC2::SubnetRouteTableAssociation", - "AWS::ServiceCatalog::ServiceActionAssociation", - "AWS::Cognito::UserPoolUICustomizationAttachment", - "AWS::SageMaker::NotebookInstanceLifecycleConfig", - "AWS::ImageBuilder::ContainerRecipe", - "AWS::EFS::AccessPoint", - "AWS::Redshift::ClusterSecurityGroupIngress", - "AWS::ServiceCatalogAppRegistry::AttributeGroupAssociation", - "AWS::ElasticLoadBalancingV2::LoadBalancer", - "AWS::OpenSearchService::Domain", - "AWS::ServiceDiscovery::Instance", - "AWS::Elasticsearch::Domain", - "AWS::KinesisAnalytics::Application", - "AWS::ApiGatewayV2::Deployment", - "AWS::ServiceCatalog::StackSetConstraint", - "AWS::MemoryDB::User", - "AWS::EC2::NetworkInterfacePermission", - "AWS::ServiceCatalog::TagOption", - "AWS::ServiceDiscovery::PrivateDnsNamespace", - "AWS::ServiceCatalog::LaunchRoleConstraint", - "AWS::IoT::RoleAlias", - "AWS::SageMaker::ModelBiasJobDefinition", - "AWS::SecretsManager::ResourcePolicy", - "AWS::CloudFormation::HookDefaultVersion", - "AWS::Config::ConfigRule", - "AWS::IoT::SoftwarePackageVersion", - "AWS::EC2::NetworkInsightsAnalysis", + "AWS::DataSync::LocationObjectStorage", + "AWS::DataSync::LocationS3", + "AWS::DataSync::LocationSMB", + "AWS::DataSync::StorageSystem", + "AWS::DataSync::Task", + "AWS::Detective::Graph", + "AWS::Detective::MemberInvitation", + "AWS::Detective::OrganizationAdmin", + "AWS::DirectoryService::MicrosoftAD", + "AWS::DirectoryService::SimpleAD", + "AWS::DocDB::DBCluster", + "AWS::DocDB::DBClusterParameterGroup", + "AWS::DocDB::DBInstance", + "AWS::DocDB::DBSubnetGroup", + "AWS::DocDB::EventSubscription", + "AWS::DocDBElastic::Cluster", + "AWS::DynamoDB::GlobalTable", + "AWS::DynamoDB::Table", + "AWS::EC2::CapacityReservation", + "AWS::EC2::CapacityReservationFleet", + "AWS::EC2::ClientVpnAuthorizationRule", + "AWS::EC2::ClientVpnEndpoint", "AWS::EC2::ClientVpnRoute", - "AWS::ImageBuilder::Workflow", - "AWS::ECS::TaskSet", - "AWS::AppSync::ApiKey", - "AWS::CloudFormation::TypeActivation", - "AWS::ACMPCA::CertificateAuthorityActivation", - "AWS::GuardDuty::ThreatIntelSet", - "AWS::WAFRegional::RateBasedRule", - "AWS::KinesisVideo::SignalingChannel", - "AWS::Macie::AllowList", - "AWS::EC2::VPC", - "AWS::ARCZonalShift::ZonalAutoshiftConfiguration", - "AWS::MSK::VpcConnection", - "AWS::DataSync::LocationAzureBlob", - "AWS::Logs::LogStream", - "AWS::DMS::ReplicationSubnetGroup", - "AWS::S3Outposts::Bucket", - "AWS::Route53::RecordSetGroup", - "AWS::KinesisAnalytics::ApplicationReferenceDataSource", - "AWS::EC2::LocalGatewayRoute", - "AWS::CloudFormation::PublicTypeVersion", - "AWS::OpsWorks::App", - "AWS::Kinesis::Stream", - "AWS::Backup::ReportPlan", - "AWS::Batch::JobDefinition", - "AWS::IAM::SAMLProvider", - "AWS::CloudFront::KeyGroup", - "AWS::EC2::NetworkInterfaceAttachment", - "AWS::EC2::TransitGatewayAttachment", - "AWS::Glue::CustomEntityType", - "AWS::Cognito::UserPoolUser", - "AWS::CodeDeploy::DeploymentConfig", - "AWS::NetworkManager::GlobalNetwork", - "AWS::StepFunctions::StateMachineVersion", - "AWS::ServiceCatalogAppRegistry::Application", - "AWS::NetworkManager::Site", - "AWS::Glue::Database", - "AWS::Neptune::DBCluster", - "AWS::Backup::BackupVault", + "AWS::EC2::ClientVpnTargetNetworkAssociation", "AWS::EC2::CustomerGateway", - "AWS::IAM::GroupPolicy", - "AWS::Scheduler::Schedule", - "AWS::WAF::ByteMatchSet", - "AWS::Neptune::DBClusterParameterGroup", - "AWS::EMRServerless::Application", + "AWS::EC2::DHCPOptions", + "AWS::EC2::EC2Fleet", + "AWS::EC2::EIP", + "AWS::EC2::EIPAssociation", + "AWS::EC2::EgressOnlyInternetGateway", + "AWS::EC2::EnclaveCertificateIamRoleAssociation", + "AWS::EC2::FlowLog", + "AWS::EC2::GatewayRouteTableAssociation", "AWS::EC2::Host", - "AWS::Lambda::CodeSigningConfig", - "AWS::SystemsManagerSAP::Application", - "AWS::DMS::ReplicationTask", + "AWS::EC2::IPAM", + "AWS::EC2::IPAMAllocation", + "AWS::EC2::IPAMPool", + "AWS::EC2::IPAMPoolCidr", + "AWS::EC2::IPAMResourceDiscovery", + "AWS::EC2::IPAMResourceDiscoveryAssociation", + "AWS::EC2::IPAMScope", + "AWS::EC2::Instance", + "AWS::EC2::InstanceConnectEndpoint", + "AWS::EC2::InternetGateway", + "AWS::EC2::KeyPair", + "AWS::EC2::LaunchTemplate", + "AWS::EC2::LocalGatewayRoute", + "AWS::EC2::LocalGatewayRouteTable", + "AWS::EC2::LocalGatewayRouteTableVPCAssociation", + "AWS::EC2::LocalGatewayRouteTableVirtualInterfaceGroupAssociation", + "AWS::EC2::NatGateway", + "AWS::EC2::NetworkAcl", + "AWS::EC2::NetworkAclEntry", + "AWS::EC2::NetworkInsightsAccessScope", + "AWS::EC2::NetworkInsightsAccessScopeAnalysis", + "AWS::EC2::NetworkInsightsAnalysis", + "AWS::EC2::NetworkInsightsPath", + "AWS::EC2::NetworkInterface", + "AWS::EC2::NetworkInterfaceAttachment", + "AWS::EC2::NetworkInterfacePermission", + "AWS::EC2::NetworkPerformanceMetricSubscription", + "AWS::EC2::PlacementGroup", + "AWS::EC2::PrefixList", + "AWS::EC2::Route", "AWS::EC2::RouteTable", - "AWS::MediaConnect::Gateway", - "AWS::RDS::DBProxyEndpoint", - "AWS::DataSync::LocationSMB", - "AWS::ResilienceHub::App", - "AWS::SecurityHub::Standard", - "AWS::RolesAnywhere::CRL", - "AWS::SNS::TopicInlinePolicy", - "AWS::Redshift::ClusterParameterGroup", - "AWS::Organizations::Policy", - "AWS::Glue::Trigger", - "AWS::GlobalAccelerator::Listener", - "AWS::VerifiedPermissions::PolicyStore", - "AWS::Signer::SigningProfile", - "AWS::EC2::VPCPeeringConnection", - "AWS::SNS::TopicPolicy", - "AWS::MWAA::Environment", - "AWS::NetworkFirewall::RuleGroup", - "AWS::DataSync::LocationFSxOpenZFS", - "AWS::KMS::Key", - "AWS::Route53Resolver::ResolverDNSSECConfig", - "AWS::ServiceCatalog::AcceptedPortfolioShare", - "AWS::Route53Resolver::FirewallRuleGroupAssociation", - "AWS::Route53Resolver::ResolverQueryLoggingConfig", + "AWS::EC2::SecurityGroup", + "AWS::EC2::SecurityGroupEgress", + "AWS::EC2::SecurityGroupIngress", "AWS::EC2::SnapshotBlockPublicAccess", + "AWS::EC2::SpotFleet", "AWS::EC2::Subnet", - "AWS::CloudTrail::ResourcePolicy", - "AWS::S3ObjectLambda::AccessPoint", - "AWS::WAF::Rule", - "AWS::ElasticBeanstalk::ConfigurationTemplate", - "AWS::SQS::QueuePolicy", - "AWS::AppSync::DomainNameApiAssociation", - "AWS::AppSync::ApiCache", - "AWS::ApiGateway::Account", - "AWS::WAFv2::WebACL", - "AWS::GlobalAccelerator::EndpointGroup", + "AWS::EC2::SubnetCidrBlock", + "AWS::EC2::SubnetNetworkAclAssociation", + "AWS::EC2::SubnetRouteTableAssociation", + "AWS::EC2::TrafficMirrorFilter", + "AWS::EC2::TrafficMirrorFilterRule", + "AWS::EC2::TrafficMirrorSession", + "AWS::EC2::TrafficMirrorTarget", + "AWS::EC2::TransitGateway", + "AWS::EC2::TransitGatewayAttachment", "AWS::EC2::TransitGatewayConnect", - "AWS::EC2::SecurityGroup", - "AWS::EC2::CapacityReservationFleet", - "AWS::OpsWorks::Volume", - "AWS::IAM::UserToGroupAddition", - "AWS::Events::Rule", - "AWS::CloudFront::KeyValueStore", - "AWS::GuardDuty::MalwareProtectionPlan", - "AWS::DataBrew::Dataset", + "AWS::EC2::TransitGatewayMulticastDomain", + "AWS::EC2::TransitGatewayMulticastDomainAssociation", + "AWS::EC2::TransitGatewayMulticastGroupMember", + "AWS::EC2::TransitGatewayMulticastGroupSource", + "AWS::EC2::TransitGatewayPeeringAttachment", + "AWS::EC2::TransitGatewayRoute", + "AWS::EC2::TransitGatewayRouteTable", + "AWS::EC2::TransitGatewayRouteTableAssociation", + "AWS::EC2::TransitGatewayRouteTablePropagation", + "AWS::EC2::TransitGatewayVpcAttachment", + "AWS::EC2::VPC", + "AWS::EC2::VPCCidrBlock", + "AWS::EC2::VPCDHCPOptionsAssociation", + "AWS::EC2::VPCEndpoint", + "AWS::EC2::VPCEndpointConnectionNotification", + "AWS::EC2::VPCEndpointService", + "AWS::EC2::VPCEndpointServicePermissions", + "AWS::EC2::VPCGatewayAttachment", + "AWS::EC2::VPCPeeringConnection", + "AWS::EC2::VPNConnection", + "AWS::EC2::VPNConnectionRoute", + "AWS::EC2::VPNGateway", "AWS::EC2::VPNGatewayRoutePropagation", - "AWS::Glue::Crawler", - "AWS::CloudFront::Function", - "AWS::ApiGateway::Method", - "AWS::WAFRegional::RegexPatternSet", - "AWS::SSM::PatchBaseline", - "AWS::ServiceDiscovery::Service", - "AWS::CloudFront::MonitoringSubscription", + "AWS::EC2::Volume", + "AWS::EC2::VolumeAttachment", + "AWS::ECR::PullThroughCacheRule", + "AWS::ECR::RegistryPolicy", + "AWS::ECR::ReplicationConfiguration", + "AWS::ECR::Repository", + "AWS::ECR::RepositoryCreationTemplate", + "AWS::ECS::CapacityProvider", + "AWS::ECS::Cluster", + "AWS::ECS::ClusterCapacityProviderAssociations", + "AWS::ECS::PrimaryTaskSet", + "AWS::ECS::Service", + "AWS::ECS::TaskDefinition", + "AWS::ECS::TaskSet", + "AWS::EFS::AccessPoint", + "AWS::EFS::FileSystem", "AWS::EFS::MountTarget", - "AWS::EC2::VPNConnection", - "AWS::WAF::WebACL", - "AWS::ServiceDiscovery::PublicDnsNamespace", - "AWS::Shield::ProtectionGroup", - "AWS::IAM::User", - "AWS::EMR::InstanceGroupConfig", - "AWS::MediaConnect::Flow", - "AWS::StepFunctions::Activity", - "AWS::SageMaker::Project", - "AWS::EC2::LocalGatewayRouteTableVirtualInterfaceGroupAssociation", - "AWS::Logs::AccountPolicy", - "AWS::S3::BucketPolicy", - "AWS::AppSync::GraphQLSchema", - "AWS::IoT::CustomMetric", - "AWS::Redshift::Cluster", - "AWS::CodeBuild::SourceCredential", - "AWS::EMR::InstanceFleetConfig", + "AWS::EKS::AccessEntry", + "AWS::EKS::Addon", + "AWS::EKS::Cluster", + "AWS::EKS::FargateProfile", + "AWS::EKS::IdentityProviderConfig", + "AWS::EKS::Nodegroup", + "AWS::EKS::PodIdentityAssociation", "AWS::EMR::Cluster", - "AWS::CodePipeline::Webhook", - "AWS::ApiGatewayV2::DomainName", - "AWS::RDS::DBCluster", - "AWS::ServiceCatalog::ResourceUpdateConstraint", - "AWS::Transfer::Agreement", - "AWS::Chatbot::SlackChannelConfiguration", - "AWS::CloudFront::Distribution", - "AWS::ElastiCache::SubnetGroup", - "AWS::XRay::Group", - "AWS::Oam::Link", - "AWS::IoT::DomainConfiguration", - "AWS::SageMaker::Endpoint", - "AWS::ElasticLoadBalancingV2::TrustStoreRevocation", - "AWS::NetworkFirewall::Firewall", - "AWS::EventSchemas::Schema", - "AWS::KMS::ReplicaKey", - "AWS::Redshift::ClusterSecurityGroup", - "AWS::Route53::CidrCollection", - "AWS::ECR::PullThroughCacheRule", - "AWS::Glue::MLTransform", - "AWS::AppConfig::HostedConfigurationVersion", - "AWS::DataSync::LocationEFS", - "AWS::EC2::LocalGatewayRouteTable", - "AWS::ApiGateway::Resource", - "AWS::SageMaker::AppImageConfig", - "AWS::Macie::Session", - "AWS::ElasticLoadBalancingV2::TargetGroup", - "AWS::ApplicationAutoScaling::ScalingPolicy", - "AWS::Pipes::Pipe", + "AWS::EMR::InstanceFleetConfig", + "AWS::EMR::InstanceGroupConfig", + "AWS::EMR::SecurityConfiguration", + "AWS::EMR::Step", + "AWS::EMR::Studio", "AWS::EMR::StudioSessionMapping", - "AWS::CloudFormation::Macro", - "AWS::SageMaker::Workteam", - "AWS::Lambda::LayerVersionPermission", - "AWS::SecretsManager::Secret", - "AWS::Route53Resolver::ResolverConfig", + "AWS::EMRServerless::Application", + "AWS::ElastiCache::CacheCluster", + "AWS::ElastiCache::ParameterGroup", + "AWS::ElastiCache::ReplicationGroup", + "AWS::ElastiCache::SecurityGroup", + "AWS::ElastiCache::SecurityGroupIngress", + "AWS::ElastiCache::ServerlessCache", + "AWS::ElastiCache::SubnetGroup", "AWS::ElastiCache::User", - "AWS::Neptune::DBInstance", - "AWS::SageMaker::Image", - "AWS::Logs::SubscriptionFilter", - "AWS::CodeDeploy::Application", - "AWS::DMS::EventSubscription", - "AWS::IoT::TopicRule", - "AWS::LakeFormation::PrincipalPermissions", - "AWS::DataSync::LocationS3", - "AWS::AutoScaling::LifecycleHook", + "AWS::ElastiCache::UserGroup", + "AWS::ElasticBeanstalk::Application", + "AWS::ElasticBeanstalk::ApplicationVersion", + "AWS::ElasticBeanstalk::ConfigurationTemplate", + "AWS::ElasticBeanstalk::Environment", + "AWS::ElasticLoadBalancing::LoadBalancer", + "AWS::ElasticLoadBalancingV2::Listener", + "AWS::ElasticLoadBalancingV2::ListenerCertificate", + "AWS::ElasticLoadBalancingV2::ListenerRule", + "AWS::ElasticLoadBalancingV2::LoadBalancer", + "AWS::ElasticLoadBalancingV2::TargetGroup", + "AWS::ElasticLoadBalancingV2::TrustStore", + "AWS::ElasticLoadBalancingV2::TrustStoreRevocation", + "AWS::Elasticsearch::Domain", + "AWS::EventSchemas::Discoverer", + "AWS::EventSchemas::Registry", + "AWS::EventSchemas::RegistryPolicy", + "AWS::EventSchemas::Schema", + "AWS::Events::ApiDestination", + "AWS::Events::Archive", + "AWS::Events::Connection", + "AWS::Events::EventBus", + "AWS::Events::EventBusPolicy", + "AWS::Events::Rule", + "AWS::FIS::ExperimentTemplate", + "AWS::FIS::TargetAccountConfiguration", + "AWS::FMS::NotificationChannel", + "AWS::FMS::Policy", + "AWS::FMS::ResourceSet", "AWS::FSx::DataRepositoryAssociation", - "AWS::EC2::NetworkInterface", - "AWS::SageMaker::FeatureGroup", - "AWS::AppSync::Resolver", - "AWS::ControlTower::LandingZone", - "AWS::RolesAnywhere::TrustAnchor", - "AWS::Route53Resolver::ResolverQueryLoggingConfigAssociation", - "AWS::ImageBuilder::LifecyclePolicy", - "AWS::KinesisAnalyticsV2::ApplicationReferenceDataSource", - "AWS::Lambda::EventInvokeConfig", - "AWS::MediaConnect::FlowOutput", - "AWS::Lambda::LayerVersion", - "AWS::KinesisVideo::Stream", - "AWS::RDS::OptionGroup", - "AWS::OpsWorks::UserProfile", + "AWS::FSx::FileSystem", + "AWS::FSx::Snapshot", + "AWS::FSx::StorageVirtualMachine", + "AWS::FSx::Volume", + "AWS::GameLift::Alias", + "AWS::GameLift::Build", + "AWS::GameLift::Fleet", + "AWS::GlobalAccelerator::Accelerator", + "AWS::GlobalAccelerator::CrossAccountAttachment", + "AWS::GlobalAccelerator::EndpointGroup", + "AWS::GlobalAccelerator::Listener", + "AWS::Glue::Classifier", + "AWS::Glue::Connection", + "AWS::Glue::Crawler", + "AWS::Glue::CustomEntityType", + "AWS::Glue::DataCatalogEncryptionSettings", + "AWS::Glue::DataQualityRuleset", + "AWS::Glue::Database", + "AWS::Glue::DevEndpoint", + "AWS::Glue::Job", + "AWS::Glue::MLTransform", + "AWS::Glue::Partition", + "AWS::Glue::Registry", "AWS::Glue::Schema", - "AWS::DocDB::DBSubnetGroup", - "AWS::Logs::Delivery", - "AWS::ServiceCatalog::Portfolio", - "AWS::IoT::Policy", - "AWS::EC2::TransitGatewayRoute", - "AWS::SSM::MaintenanceWindow", - "AWS::LakeFormation::TagAssociation", - "AWS::EC2::IPAMResourceDiscovery", - "AWS::DataSync::StorageSystem", - "AWS::ImageBuilder::InfrastructureConfiguration", - "AWS::IoT::Logging", - "AWS::CloudFormation::WaitCondition", - "AWS::Route53Resolver::ResolverEndpoint", - "AWS::IoT::ScheduledAudit", - "AWS::NetworkManager::Link", - "AWS::SageMaker::NotebookInstance", - "AWS::SSO::InstanceAccessControlAttributeConfiguration", - "AWS::WAFRegional::ByteMatchSet", - "AWS::CloudWatch::AnomalyDetector", - "AWS::EC2::SubnetNetworkAclAssociation", - "AWS::ServiceCatalog::ServiceAction", - "AWS::DMS::MigrationProject", + "AWS::Glue::SchemaVersion", + "AWS::Glue::SchemaVersionMetadata", + "AWS::Glue::SecurityConfiguration", + "AWS::Glue::Table", + "AWS::Glue::Trigger", + "AWS::Glue::Workflow", + "AWS::GuardDuty::Detector", + "AWS::GuardDuty::Filter", + "AWS::GuardDuty::IPSet", + "AWS::GuardDuty::MalwareProtectionPlan", + "AWS::GuardDuty::Master", + "AWS::GuardDuty::Member", + "AWS::GuardDuty::ThreatIntelSet", + "AWS::IAM::AccessKey", + "AWS::IAM::Group", + "AWS::IAM::GroupPolicy", + "AWS::IAM::InstanceProfile", + "AWS::IAM::ManagedPolicy", + "AWS::IAM::OIDCProvider", + "AWS::IAM::Policy", + "AWS::IAM::Role", + "AWS::IAM::RolePolicy", + "AWS::IAM::SAMLProvider", + "AWS::IAM::ServerCertificate", + "AWS::IAM::ServiceLinkedRole", + "AWS::IAM::User", "AWS::IAM::UserPolicy", - "AWS::CloudFront::OriginAccessControl", - "AWS::InspectorV2::CisScanConfiguration", - "AWS::IoT::MitigationAction", - "AWS::Cognito::UserPool", - "AWS::SecretsManager::RotationSchedule", - "AWS::SecurityHub::SecurityControl", - "AWS::Lambda::Permission", - "AWS::NetworkFirewall::FirewallPolicy", - "AWS::EKS::IdentityProviderConfig", - "AWS::EC2::IPAMResourceDiscoveryAssociation", - "AWS::ServiceCatalogAppRegistry::AttributeGroup", - "AWS::EC2::ClientVpnTargetNetworkAssociation", - "AWS::AppSync::GraphQLApi", - "AWS::EC2::EgressOnlyInternetGateway", - "AWS::SecurityHub::Insight", - "AWS::Config::ConformancePack", - "AWS::EC2::VPCCidrBlock", + "AWS::IAM::UserToGroupAddition", "AWS::IAM::VirtualMFADevice", - "AWS::EC2::NetworkInsightsPath", - "AWS::Neptune::DBParameterGroup", - "AWS::ACMPCA::CertificateAuthority", - "AWS::Athena::PreparedStatement", - "AWS::AutoScaling::ScheduledAction", - "AWS::ApiGatewayV2::Route", - "AWS::LakeFormation::Resource", - "AWS::Detective::MemberInvitation", - "AWS::EC2::IPAMScope", - "AWS::SageMaker::DataQualityJobDefinition", - "AWS::DirectoryService::SimpleAD", - "AWS::CloudFront::StreamingDistribution", - "AWS::EC2::VPCEndpoint", - "AWS::RDS::EventSubscription", - "AWS::Config::AggregationAuthorization", - "AWS::DataSync::Agent", - "AWS::Cognito::UserPoolIdentityProvider", - "AWS::ResilienceHub::ResiliencyPolicy", + "AWS::IdentityStore::Group", + "AWS::IdentityStore::GroupMembership", + "AWS::ImageBuilder::Component", + "AWS::ImageBuilder::ContainerRecipe", + "AWS::ImageBuilder::DistributionConfiguration", + "AWS::ImageBuilder::Image", + "AWS::ImageBuilder::ImagePipeline", + "AWS::ImageBuilder::ImageRecipe", + "AWS::ImageBuilder::InfrastructureConfiguration", + "AWS::ImageBuilder::LifecyclePolicy", + "AWS::ImageBuilder::Workflow", + "AWS::InspectorV2::CisScanConfiguration", + "AWS::InspectorV2::Filter", + "AWS::InternetMonitor::Monitor", + "AWS::IoT::AccountAuditConfiguration", + "AWS::IoT::Authorizer", + "AWS::IoT::BillingGroup", + "AWS::IoT::CACertificate", + "AWS::IoT::Certificate", + "AWS::IoT::CertificateProvider", + "AWS::IoT::CustomMetric", "AWS::IoT::Dimension", - "AWS::Logs::LogGroup", - "AWS::ECS::Cluster", - "AWS::EC2::TrafficMirrorFilterRule", - "AWS::PCAConnectorAD::Template", - "AWS::EC2::PlacementGroup", - "AWS::Organizations::Account", - "AWS::ECR::Repository", + "AWS::IoT::DomainConfiguration", "AWS::IoT::FleetMetric", - "AWS::MediaConnect::FlowSource", - "AWS::AppConfig::Extension", - "AWS::ElasticLoadBalancingV2::ListenerRule", - "AWS::ElasticLoadBalancingV2::TrustStore", - "AWS::Glue::Registry", - "AWS::EC2::KeyPair", - "AWS::FSx::FileSystem", - "AWS::EC2::EIPAssociation", - "AWS::ElasticBeanstalk::Application", + "AWS::IoT::JobTemplate", + "AWS::IoT::Logging", + "AWS::IoT::MitigationAction", + "AWS::IoT::Policy", + "AWS::IoT::PolicyPrincipalAttachment", + "AWS::IoT::ProvisioningTemplate", + "AWS::IoT::ResourceSpecificLogging", + "AWS::IoT::RoleAlias", + "AWS::IoT::ScheduledAudit", + "AWS::IoT::SecurityProfile", + "AWS::IoT::SoftwarePackage", + "AWS::IoT::SoftwarePackageVersion", + "AWS::IoT::Thing", + "AWS::IoT::ThingGroup", "AWS::IoT::ThingPrincipalAttachment", - "AWS::DLM::LifecyclePolicy", - "AWS::EC2::CapacityReservation", - "AWS::ElasticLoadBalancing::LoadBalancer", - "AWS::Transfer::User", - "AWS::IAM::RolePolicy", - "AWS::Cognito::IdentityPool", - "AWS::EC2::TrafficMirrorTarget", - "AWS::StepFunctions::StateMachine", - "AWS::RDS::DBClusterParameterGroup", - "AWS::WAF::XssMatchSet", - "AWS::AppMesh::VirtualRouter", - "AWS::IoT::CertificateProvider", - "AWS::Scheduler::ScheduleGroup", - "AWS::FSx::Snapshot", - "AWS::EventSchemas::RegistryPolicy", - "AWS::Route53::KeySigningKey", - "AWS::EventSchemas::Registry", - "AWS::Config::RemediationConfiguration", - "AWS::Detective::OrganizationAdmin", - "AWS::Events::Connection", - "AWS::Athena::DataCatalog", - "AWS::DocDB::DBCluster", + "AWS::IoT::ThingType", + "AWS::IoT::TopicRule", + "AWS::IoT::TopicRuleDestination", + "AWS::KMS::Alias", + "AWS::KMS::Key", + "AWS::KMS::ReplicaKey", + "AWS::Kinesis::Stream", + "AWS::Kinesis::StreamConsumer", + "AWS::KinesisAnalytics::Application", + "AWS::KinesisAnalytics::ApplicationOutput", + "AWS::KinesisAnalytics::ApplicationReferenceDataSource", + "AWS::KinesisAnalyticsV2::Application", + "AWS::KinesisAnalyticsV2::ApplicationCloudWatchLoggingOption", + "AWS::KinesisAnalyticsV2::ApplicationOutput", + "AWS::KinesisAnalyticsV2::ApplicationReferenceDataSource", + "AWS::KinesisFirehose::DeliveryStream", + "AWS::KinesisVideo::SignalingChannel", + "AWS::KinesisVideo::Stream", + "AWS::LakeFormation::DataCellsFilter", + "AWS::LakeFormation::DataLakeSettings", + "AWS::LakeFormation::Permissions", + "AWS::LakeFormation::PrincipalPermissions", + "AWS::LakeFormation::Resource", + "AWS::LakeFormation::Tag", + "AWS::LakeFormation::TagAssociation", + "AWS::Lambda::Alias", + "AWS::Lambda::CodeSigningConfig", + "AWS::Lambda::EventInvokeConfig", + "AWS::Lambda::EventSourceMapping", + "AWS::Lambda::Function", + "AWS::Lambda::LayerVersion", + "AWS::Lambda::LayerVersionPermission", + "AWS::Lambda::Permission", + "AWS::Lambda::Url", + "AWS::Lambda::Version", + "AWS::LaunchWizard::Deployment", + "AWS::Logs::AccountPolicy", + "AWS::Logs::Delivery", + "AWS::Logs::DeliveryDestination", + "AWS::Logs::DeliverySource", + "AWS::Logs::Destination", + "AWS::Logs::LogAnomalyDetector", + "AWS::Logs::LogGroup", + "AWS::Logs::LogStream", + "AWS::Logs::MetricFilter", + "AWS::Logs::QueryDefinition", + "AWS::Logs::ResourcePolicy", + "AWS::Logs::SubscriptionFilter", + "AWS::MSK::BatchScramSecret", + "AWS::MSK::Cluster", + "AWS::MSK::ClusterPolicy", + "AWS::MSK::Configuration", + "AWS::MSK::VpcConnection", + "AWS::MWAA::Environment", + "AWS::Macie::AllowList", + "AWS::Macie::CustomDataIdentifier", + "AWS::Macie::FindingsFilter", + "AWS::Macie::Session", + "AWS::MediaConnect::Bridge", + "AWS::MediaConnect::BridgeOutput", + "AWS::MediaConnect::BridgeSource", + "AWS::MediaConnect::Flow", + "AWS::MediaConnect::FlowEntitlement", + "AWS::MediaConnect::FlowOutput", + "AWS::MediaConnect::FlowSource", "AWS::MediaConnect::FlowVpcInterface", - "AWS::Glue::Workflow", - "AWS::ApiGatewayV2::Authorizer", - "AWS::IoT::AccountAuditConfiguration", - "AWS::SageMaker::UserProfile", - "AWS::EC2::PrefixList", - "AWS::EC2::Instance", + "AWS::MediaConnect::Gateway", + "AWS::MemoryDB::ACL", + "AWS::MemoryDB::Cluster", + "AWS::MemoryDB::ParameterGroup", + "AWS::MemoryDB::SubnetGroup", + "AWS::MemoryDB::User", + "AWS::Neptune::DBCluster", + "AWS::Neptune::DBClusterParameterGroup", + "AWS::Neptune::DBInstance", + "AWS::Neptune::DBParameterGroup", + "AWS::Neptune::DBSubnetGroup", + "AWS::Neptune::EventSubscription", + "AWS::NetworkFirewall::Firewall", + "AWS::NetworkFirewall::FirewallPolicy", + "AWS::NetworkFirewall::LoggingConfiguration", + "AWS::NetworkFirewall::RuleGroup", + "AWS::NetworkFirewall::TLSInspectionConfiguration", + "AWS::NetworkManager::CustomerGatewayAssociation", "AWS::NetworkManager::Device", - "AWS::EC2::SubnetCidrBlock", - "AWS::ElasticBeanstalk::ApplicationVersion", - "AWS::AppMesh::VirtualGateway", - "AWS::WAF::SqlInjectionMatchSet", - "AWS::EC2::TransitGatewayVpcAttachment", - "AWS::EC2::FlowLog", - "AWS::AmazonMQ::Broker", - "AWS::EMR::Step", - "AWS::SSM::Association", - "AWS::EC2::ClientVpnEndpoint", - "AWS::CloudFront::ResponseHeadersPolicy", - "AWS::SecurityHub::AutomationRule", - "AWS::MSK::ClusterPolicy", - "AWS::GuardDuty::Master", - "AWS::KMS::Alias", - "AWS::XRay::SamplingRule", - "AWS::Route53Resolver::ResolverRule", - "AWS::Transfer::Connector", - "AWS::AppMesh::VirtualNode", - "AWS::ApiGateway::DocumentationVersion", - "AWS::WAFv2::WebACLAssociation", + "AWS::NetworkManager::GlobalNetwork", + "AWS::NetworkManager::Link", + "AWS::NetworkManager::LinkAssociation", + "AWS::NetworkManager::Site", + "AWS::NetworkManager::TransitGatewayRegistration", + "AWS::Oam::Link", "AWS::Oam::Sink", - "AWS::CodeBuild::ReportGroup", - "AWS::ApiGateway::GatewayResponse", - "AWS::EC2::ClientVpnAuthorizationRule", - "AWS::EC2::EnclaveCertificateIamRoleAssociation", - "AWS::SSO::Application", - "AWS::FSx::Volume", - "AWS::Route53Resolver::OutpostResolver", - "AWS::ACMPCA::Certificate", - "AWS::EC2::IPAMAllocation", - "AWS::WorkSpaces::Workspace", - "AWS::EMR::Studio", - "AWS::EC2::InstanceConnectEndpoint", - "AWS::DirectoryService::MicrosoftAD", - "AWS::MemoryDB::SubnetGroup", - "AWS::AppSync::SourceApiAssociation", - "AWS::DataSync::LocationObjectStorage", - "AWS::ECS::CapacityProvider", - "AWS::ElastiCache::CacheCluster", - "AWS::SageMaker::ModelCard", - "AWS::Logs::Destination", - "AWS::EKS::Nodegroup", + "AWS::OpenSearchService::Domain", + "AWS::OpsWorks::App", + "AWS::OpsWorks::ElasticLoadBalancerAttachment", + "AWS::OpsWorks::Instance", + "AWS::OpsWorks::Layer", + "AWS::OpsWorks::Stack", + "AWS::OpsWorks::UserProfile", + "AWS::OpsWorks::Volume", + "AWS::Organizations::Account", + "AWS::Organizations::Organization", "AWS::Organizations::OrganizationalUnit", - "AWS::AppSync::DataSource", - "AWS::SQS::Queue", - "AWS::EC2::SecurityGroupIngress", - "AWS::GuardDuty::Detector", - "AWS::SageMaker::ModelQualityJobDefinition", - "AWS::IoT::ProvisioningTemplate", - "AWS::ApiGateway::Stage", - "AWS::Batch::ComputeEnvironment", - "AWS::DataPipeline::Pipeline", - "AWS::IoT::Thing", - "AWS::Route53::HealthCheck", - "AWS::Events::EventBusPolicy", - "AWS::Athena::NamedQuery", - "AWS::EC2::TrafficMirrorFilter", - "AWS::ApiGateway::Deployment", - "AWS::WAFRegional::Rule", - "AWS::LakeFormation::DataLakeSettings", - "AWS::AutoScaling::ScalingPolicy", - "AWS::ResourceExplorer2::DefaultViewAssociation", - "AWS::ECR::RegistryPolicy", - "AWS::Redshift::ScheduledAction", - "AWS::RDS::DBSecurityGroup", - "AWS::ApiGatewayV2::RouteResponse", - "AWS::CloudWatch::MetricStream", - "AWS::SSO::ApplicationAssignment", - "AWS::DMS::DataProvider", - "AWS::SSM::Parameter", - "AWS::ApiGatewayV2::ApiGatewayManagedOverrides", - "AWS::Config::DeliveryChannel", - "AWS::CertificateManager::Account", - "AWS::SageMaker::MonitoringSchedule", - "AWS::IAM::OIDCProvider", - "AWS::LakeFormation::Tag", - "AWS::CE::AnomalyMonitor", - "AWS::ServiceCatalogAppRegistry::ResourceAssociation", - "AWS::EC2::VPNGateway", - "AWS::CloudFormation::Stack", - "AWS::ResourceGroups::Group", - "AWS::CloudFormation::ResourceDefaultVersion", - "AWS::Signer::ProfilePermission", - "AWS::Backup::RestoreTestingPlan", - "AWS::DocDB::DBClusterParameterGroup", - "AWS::ServiceCatalog::TagOptionAssociation", - "AWS::EC2::IPAM", + "AWS::Organizations::Policy", + "AWS::Organizations::ResourcePolicy", + "AWS::PCAConnectorAD::Connector", + "AWS::PCAConnectorAD::DirectoryRegistration", + "AWS::PCAConnectorAD::ServicePrincipalName", + "AWS::PCAConnectorAD::Template", "AWS::PCAConnectorAD::TemplateGroupAccessControlEntry", - "AWS::DataBrew::Job", - "AWS::EC2::TransitGatewayPeeringAttachment", - "AWS::ECR::RepositoryCreationTemplate", - "AWS::CloudFront::CachePolicy", - "AWS::IAM::AccessKey", + "AWS::Pipes::Pipe", + "AWS::RAM::Permission", + "AWS::RAM::ResourceShare", + "AWS::RDS::DBCluster", + "AWS::RDS::DBClusterParameterGroup", + "AWS::RDS::DBInstance", + "AWS::RDS::DBParameterGroup", + "AWS::RDS::DBProxy", + "AWS::RDS::DBProxyEndpoint", + "AWS::RDS::DBProxyTargetGroup", + "AWS::RDS::DBSecurityGroup", + "AWS::RDS::DBSecurityGroupIngress", "AWS::RDS::DBSubnetGroup", - "AWS::SecretsManager::SecretTargetAttachment", - "AWS::AmazonMQ::Configuration", - "AWS::AppConfig::Deployment", - "AWS::CodePipeline::CustomActionType", - "AWS::AccessAnalyzer::Analyzer", - "AWS::EC2::EC2Fleet", - "AWS::DMS::ReplicationInstance", - "AWS::ServiceCatalog::CloudFormationProduct", - "AWS::EC2::VPCEndpointService", - "AWS::IAM::ManagedPolicy", - "AWS::EC2::LaunchTemplate", - "AWS::CloudFront::OriginRequestPolicy", - "AWS::DataSync::LocationFSxONTAP", - "AWS::NetworkManager::LinkAssociation", - "AWS::Cognito::UserPoolRiskConfigurationAttachment", - "AWS::PCAConnectorAD::ServicePrincipalName", - "AWS::ElasticBeanstalk::Environment", - "AWS::Cognito::UserPoolClient", - "AWS::WAFRegional::SqlInjectionMatchSet", - "AWS::Lambda::Version", - "AWS::EC2::DHCPOptions", - "AWS::EC2::IPAMPool", - "AWS::Kinesis::StreamConsumer", - "AWS::IAM::ServiceLinkedRole", - "AWS::CloudFormation::HookTypeConfig", - "AWS::EC2::Volume", - "AWS::IoT::Certificate", - "AWS::EC2::EIP", - "AWS::VerifiedPermissions::Policy", - "AWS::CloudFormation::ResourceVersion", - "AWS::SageMaker::ModelExplainabilityJobDefinition", - "AWS::ApiGatewayV2::Stage", - "AWS::Chatbot::MicrosoftTeamsChannelConfiguration", - "AWS::RDS::DBProxy", - "AWS::RDS::DBParameterGroup", - "AWS::SecurityHub::Hub", + "AWS::RDS::EventSubscription", + "AWS::RDS::GlobalCluster", + "AWS::RDS::Integration", + "AWS::RDS::OptionGroup", + "AWS::Redshift::Cluster", + "AWS::Redshift::ClusterParameterGroup", + "AWS::Redshift::ClusterSecurityGroup", + "AWS::Redshift::ClusterSecurityGroupIngress", + "AWS::Redshift::ClusterSubnetGroup", + "AWS::Redshift::EndpointAccess", + "AWS::Redshift::EndpointAuthorization", + "AWS::Redshift::EventSubscription", + "AWS::Redshift::ScheduledAction", + "AWS::ResilienceHub::App", + "AWS::ResilienceHub::ResiliencyPolicy", + "AWS::ResourceExplorer2::DefaultViewAssociation", + "AWS::ResourceExplorer2::Index", + "AWS::ResourceExplorer2::View", + "AWS::ResourceGroups::Group", + "AWS::RolesAnywhere::CRL", + "AWS::RolesAnywhere::Profile", + "AWS::RolesAnywhere::TrustAnchor", + "AWS::Route53::CidrCollection", + "AWS::Route53::DNSSEC", + "AWS::Route53::HealthCheck", + "AWS::Route53::HostedZone", + "AWS::Route53::KeySigningKey", + "AWS::Route53::RecordSet", + "AWS::Route53::RecordSetGroup", + "AWS::Route53Profiles::Profile", + "AWS::Route53Profiles::ProfileAssociation", + "AWS::Route53Profiles::ProfileResourceAssociation", + "AWS::Route53Resolver::FirewallDomainList", + "AWS::Route53Resolver::FirewallRuleGroup", + "AWS::Route53Resolver::FirewallRuleGroupAssociation", + "AWS::Route53Resolver::OutpostResolver", + "AWS::Route53Resolver::ResolverConfig", + "AWS::Route53Resolver::ResolverDNSSECConfig", + "AWS::Route53Resolver::ResolverEndpoint", + "AWS::Route53Resolver::ResolverQueryLoggingConfig", + "AWS::Route53Resolver::ResolverQueryLoggingConfigAssociation", + "AWS::Route53Resolver::ResolverRule", + "AWS::Route53Resolver::ResolverRuleAssociation", + "AWS::S3::AccessGrant", + "AWS::S3::AccessGrantsInstance", + "AWS::S3::AccessGrantsLocation", "AWS::S3::AccessPoint", - "AWS::EC2::TrafficMirrorSession", + "AWS::S3::Bucket", + "AWS::S3::BucketPolicy", + "AWS::S3ObjectLambda::AccessPoint", + "AWS::S3ObjectLambda::AccessPointPolicy", + "AWS::S3Outposts::AccessPoint", + "AWS::S3Outposts::Bucket", "AWS::S3Outposts::BucketPolicy", - "AWS::Batch::JobQueue", - "AWS::ElasticLoadBalancingV2::Listener", - "AWS::Redshift::EventSubscription", - "AWS::MemoryDB::ACL", - "AWS::CloudFormation::WaitConditionHandle", - "AWS::GlobalAccelerator::Accelerator", - "AWS::EKS::Addon", + "AWS::S3Outposts::Endpoint", + "AWS::SDB::Domain", + "AWS::SNS::Subscription", + "AWS::SNS::Topic", + "AWS::SNS::TopicInlinePolicy", + "AWS::SNS::TopicPolicy", + "AWS::SQS::Queue", + "AWS::SQS::QueueInlinePolicy", + "AWS::SQS::QueuePolicy", + "AWS::SSM::Association", + "AWS::SSM::Document", + "AWS::SSM::MaintenanceWindow", + "AWS::SSM::MaintenanceWindowTarget", + "AWS::SSM::MaintenanceWindowTask", + "AWS::SSM::Parameter", + "AWS::SSM::PatchBaseline", + "AWS::SSO::Application", + "AWS::SSO::ApplicationAssignment", + "AWS::SSO::Assignment", + "AWS::SSO::Instance", + "AWS::SSO::InstanceAccessControlAttributeConfiguration", + "AWS::SSO::PermissionSet", + "AWS::SageMaker::App", + "AWS::SageMaker::AppImageConfig", + "AWS::SageMaker::CodeRepository", + "AWS::SageMaker::DataQualityJobDefinition", + "AWS::SageMaker::Domain", + "AWS::SageMaker::Endpoint", + "AWS::SageMaker::EndpointConfig", + "AWS::SageMaker::FeatureGroup", + "AWS::SageMaker::Image", + "AWS::SageMaker::ImageVersion", + "AWS::SageMaker::InferenceExperiment", + "AWS::SageMaker::Model", + "AWS::SageMaker::ModelBiasJobDefinition", + "AWS::SageMaker::ModelCard", + "AWS::SageMaker::ModelExplainabilityJobDefinition", + "AWS::SageMaker::ModelPackage", + "AWS::SageMaker::ModelPackageGroup", + "AWS::SageMaker::ModelQualityJobDefinition", + "AWS::SageMaker::MonitoringSchedule", + "AWS::SageMaker::NotebookInstance", + "AWS::SageMaker::NotebookInstanceLifecycleConfig", + "AWS::SageMaker::Pipeline", + "AWS::SageMaker::Project", + "AWS::SageMaker::Space", + "AWS::SageMaker::UserProfile", + "AWS::SageMaker::Workteam", + "AWS::Scheduler::Schedule", + "AWS::Scheduler::ScheduleGroup", + "AWS::SecretsManager::ResourcePolicy", + "AWS::SecretsManager::RotationSchedule", + "AWS::SecretsManager::Secret", + "AWS::SecretsManager::SecretTargetAttachment", + "AWS::SecurityHub::AutomationRule", + "AWS::SecurityHub::DelegatedAdmin", + "AWS::SecurityHub::Hub", + "AWS::SecurityHub::Insight", + "AWS::SecurityHub::OrganizationConfiguration", + "AWS::SecurityHub::ProductSubscription", + "AWS::SecurityHub::SecurityControl", + "AWS::SecurityHub::Standard", + "AWS::ServiceCatalog::AcceptedPortfolioShare", + "AWS::ServiceCatalog::CloudFormationProduct", + "AWS::ServiceCatalog::CloudFormationProvisionedProduct", + "AWS::ServiceCatalog::LaunchNotificationConstraint", + "AWS::ServiceCatalog::LaunchRoleConstraint", + "AWS::ServiceCatalog::LaunchTemplateConstraint", + "AWS::ServiceCatalog::Portfolio", + "AWS::ServiceCatalog::PortfolioPrincipalAssociation", + "AWS::ServiceCatalog::PortfolioProductAssociation", + "AWS::ServiceCatalog::PortfolioShare", + "AWS::ServiceCatalog::ResourceUpdateConstraint", + "AWS::ServiceCatalog::ServiceAction", + "AWS::ServiceCatalog::ServiceActionAssociation", + "AWS::ServiceCatalog::StackSetConstraint", + "AWS::ServiceCatalog::TagOption", + "AWS::ServiceCatalog::TagOptionAssociation", + "AWS::ServiceCatalogAppRegistry::Application", + "AWS::ServiceCatalogAppRegistry::AttributeGroup", + "AWS::ServiceCatalogAppRegistry::AttributeGroupAssociation", + "AWS::ServiceCatalogAppRegistry::ResourceAssociation", + "AWS::ServiceDiscovery::HttpNamespace", + "AWS::ServiceDiscovery::Instance", + "AWS::ServiceDiscovery::PrivateDnsNamespace", + "AWS::ServiceDiscovery::PublicDnsNamespace", + "AWS::ServiceDiscovery::Service", + "AWS::Shield::DRTAccess", + "AWS::Shield::ProactiveEngagement", + "AWS::Shield::Protection", + "AWS::Shield::ProtectionGroup", + "AWS::Signer::ProfilePermission", + "AWS::Signer::SigningProfile", + "AWS::StepFunctions::Activity", + "AWS::StepFunctions::StateMachine", + "AWS::StepFunctions::StateMachineAlias", + "AWS::StepFunctions::StateMachineVersion", + "AWS::Synthetics::Canary", + "AWS::SystemsManagerSAP::Application", + "AWS::Transfer::Agreement", + "AWS::Transfer::Certificate", + "AWS::Transfer::Connector", + "AWS::Transfer::Profile", + "AWS::Transfer::Server", + "AWS::Transfer::User", + "AWS::Transfer::Workflow", + "AWS::VerifiedPermissions::Policy", + "AWS::VerifiedPermissions::PolicyStore", + "AWS::VerifiedPermissions::PolicyTemplate", + "AWS::WAF::ByteMatchSet", + "AWS::WAF::IPSet", + "AWS::WAF::Rule", + "AWS::WAF::SizeConstraintSet", + "AWS::WAF::SqlInjectionMatchSet", + "AWS::WAF::WebACL", + "AWS::WAF::XssMatchSet", + "AWS::WAFRegional::ByteMatchSet", + "AWS::WAFRegional::GeoMatchSet", + "AWS::WAFRegional::IPSet", + "AWS::WAFRegional::RateBasedRule", + "AWS::WAFRegional::RegexPatternSet", + "AWS::WAFRegional::Rule", + "AWS::WAFRegional::SizeConstraintSet", + "AWS::WAFRegional::SqlInjectionMatchSet", + "AWS::WAFRegional::WebACL", + "AWS::WAFRegional::WebACLAssociation", + "AWS::WAFRegional::XssMatchSet", + "AWS::WAFv2::IPSet", + "AWS::WAFv2::LoggingConfiguration", + "AWS::WAFv2::RegexPatternSet", + "AWS::WAFv2::RuleGroup", + "AWS::WAFv2::WebACL", + "AWS::WAFv2::WebACLAssociation", + "AWS::WorkSpaces::Workspace", + "AWS::XRay::Group", + "AWS::XRay::ResourcePolicy", + "AWS::XRay::SamplingRule", + "Module", ] # pylint: disable=too-many-lines -cached: List[str] = [ +cached: list[str] = [ "Module", - "aws-apigatewayv2-integration.json", - "aws-apigatewayv2-apimapping.json", - "aws-ce-anomalysubscription.json", - "aws-shield-drtaccess.json", - "aws-sso-assignment.json", - "aws-glue-partition.json", - "aws-rds-integration.json", - "aws-ec2-transitgatewayroutetablepropagation.json", - "aws-shield-proactiveengagement.json", - "aws-apigateway-basepathmapping.json", - "aws-s3-accessgrantslocation.json", - "aws-guardduty-filter.json", - "aws-ecs-service.json", - "aws-ram-resourceshare.json", - "aws-memorydb-cluster.json", - "aws-dms-replicationconfig.json", - "aws-dynamodb-table.json", - "aws-ec2-securitygroupegress.json", - "aws-ec2-localgatewayroutetablevpcassociation.json", - "aws-config-organizationconfigrule.json", - "aws-glue-dataqualityruleset.json", - "aws-mediaconnect-bridge.json", - "aws-route53profiles-profileassociation.json", - "aws-config-configurationrecorder.json", - "aws-ec2-networkperformancemetricsubscription.json", - "aws-cloudfront-continuousdeploymentpolicy.json", - "aws-ecr-replicationconfiguration.json", - "aws-appconfig-extensionassociation.json", - "aws-s3outposts-accesspoint.json", - "aws-ec2-ipampoolcidr.json", - "aws-iot-topicruledestination.json", + "aws-accessanalyzer-analyzer.json", + "aws-acmpca-certificate.json", + "aws-acmpca-certificateauthority.json", + "aws-acmpca-certificateauthorityactivation.json", + "aws-acmpca-permission.json", + "aws-amazonmq-broker.json", + "aws-amazonmq-configuration.json", + "aws-amplify-app.json", "aws-amplify-branch.json", - "aws-redshift-clustersubnetgroup.json", - "aws-rds-dbinstance.json", - "aws-ec2-vpcdhcpoptionsassociation.json", - "aws-apigateway-model.json", - "aws-apigatewayv2-integrationresponse.json", - "aws-ec2-networkacl.json", - "aws-lambda-eventsourcemapping.json", - "aws-logs-resourcepolicy.json", - "aws-servicecatalog-launchnotificationconstraint.json", - "aws-dms-instanceprofile.json", - "aws-ec2-networkinsightsaccessscopeanalysis.json", - "aws-transfer-certificate.json", - "aws-apigateway-documentationpart.json", - "aws-route53profiles-profile.json", - "aws-cloudwatch-compositealarm.json", - "aws-route53resolver-firewalldomainlist.json", - "aws-redshift-endpointaccess.json", - "aws-appconfig-application.json", - "aws-opsworks-stack.json", - "aws-lambda-url.json", - "aws-datasync-locationfsxwindows.json", - "aws-apigateway-requestvalidator.json", - "aws-autoscaling-warmpool.json", - "aws-applicationautoscaling-scalabletarget.json", - "aws-apigatewayv2-model.json", - "aws-config-storedquery.json", - "aws-acmpca-permission.json", - "aws-neptune-dbsubnetgroup.json", - "aws-cassandra-keyspace.json", - "aws-transfer-server.json", - "aws-apigateway-domainname.json", - "aws-ecs-primarytaskset.json", - "aws-fms-resourceset.json", - "aws-autoscaling-autoscalinggroup.json", - "aws-wafv2-regexpatternset.json", - "aws-eks-fargateprofile.json", - "aws-route53-dnssec.json", - "aws-redshift-endpointauthorization.json", - "aws-ec2-transitgatewayroutetable.json", - "aws-controltower-enabledcontrol.json", - "aws-s3-accessgrantsinstance.json", - "aws-macie-customdataidentifier.json", - "aws-route53-recordset.json", - "aws-eks-accessentry.json", - "aws-elasticache-securitygroup.json", - "aws-backup-framework.json", - "aws-opsworks-layer.json", - "aws-kinesisfirehose-deliverystream.json", - "aws-ec2-networkinsightsaccessscope.json", - "aws-pcaconnectorad-directoryregistration.json", - "aws-sagemaker-coderepository.json", - "aws-imagebuilder-component.json", - "aws-mediaconnect-flowentitlement.json", - "aws-glue-connection.json", - "aws-appmesh-route.json", - "aws-iam-group.json", - "aws-macie-findingsfilter.json", - "aws-organizations-resourcepolicy.json", - "aws-wafregional-webaclassociation.json", - "aws-ec2-transitgatewaymulticastgroupsource.json", - "aws-transfer-profile.json", - "aws-databrew-recipe.json", - "aws-sso-instance.json", - "aws-appsync-domainname.json", - "aws-apigateway-usageplankey.json", - "aws-fms-policy.json", - "aws-cloudfront-realtimelogconfig.json", - "aws-sagemaker-pipeline.json", - "aws-cloudtrail-channel.json", - "aws-docdb-dbinstance.json", - "aws-lakeformation-datacellsfilter.json", - "aws-datasync-locationhdfs.json", - "aws-events-archive.json", - "aws-msk-cluster.json", - "aws-securityhub-delegatedadmin.json", - "aws-controltower-enabledbaseline.json", - "aws-ec2-vpcendpointconnectionnotification.json", - "aws-codepipeline-pipeline.json", - "aws-opsworks-instance.json", - "aws-config-configurationaggregator.json", - "aws-imagebuilder-imagepipeline.json", - "aws-elasticloadbalancingv2-listenercertificate.json", - "aws-cloudformation-moduleversion.json", - "aws-cloud9-environmentec2.json", - "aws-route53resolver-resolverruleassociation.json", - "aws-fsx-storagevirtualmachine.json", - "aws-synthetics-canary.json", - "aws-backup-restoretestingselection.json", - "aws-sns-subscription.json", - "aws-appmesh-mesh.json", - "aws-ec2-natgateway.json", - "aws-internetmonitor-monitor.json", - "aws-transfer-workflow.json", - "aws-s3-accessgrant.json", - "aws-appconfig-deploymentstrategy.json", - "aws-glue-devendpoint.json", - "aws-sagemaker-modelpackage.json", - "aws-eventschemas-discoverer.json", - "aws-elasticache-usergroup.json", - "aws-iot-thinggroup.json", - "aws-imagebuilder-imagerecipe.json", - "aws-iot-softwarepackage.json", - "aws-apigateway-restapi.json", - "aws-opsworks-elasticloadbalancerattachment.json", - "aws-appmesh-virtualservice.json", - "aws-s3objectlambda-accesspointpolicy.json", - "aws-networkmanager-transitgatewayregistration.json", - "aws-amplify-app.json", - "aws-inspectorv2-filter.json", - "aws-elasticache-replicationgroup.json", - "aws-stepfunctions-statemachinealias.json", - "aws-cassandra-table.json", - "aws-rds-globalcluster.json", - "aws-cloudformation-moduledefaultversion.json", - "aws-ce-costcategory.json", - "aws-applicationsignals-servicelevelobjective.json", - "aws-route53profiles-profileresourceassociation.json", - "aws-sso-permissionset.json", - "aws-glue-job.json", - "aws-servicecatalog-cloudformationprovisionedproduct.json", - "aws-route53-hostedzone.json", - "aws-eks-podidentityassociation.json", - "aws-resourceexplorer2-index.json", - "aws-glue-table.json", - "aws-logs-metricfilter.json", - "aws-sns-topic.json", - "aws-backup-backupselection.json", - "aws-datasync-locationfsxlustre.json", - "aws-sagemaker-app.json", - "aws-ec2-vpcgatewayattachment.json", - "aws-cloudtrail-trail.json", - "aws-ec2-vpnconnectionroute.json", - "aws-ec2-internetgateway.json", - "aws-ec2-gatewayroutetableassociation.json", - "aws-wafv2-ipset.json", - "aws-mediaconnect-bridgeoutput.json", - "aws-ssm-document.json", - "aws-iam-role.json", - "aws-dms-endpoint.json", - "aws-elasticache-serverlesscache.json", - "aws-cloudfront-cloudfrontoriginaccessidentity.json", - "aws-codestarnotifications-notificationrule.json", - "aws-sagemaker-endpointconfig.json", - "aws-appmesh-gatewayroute.json", + "aws-amplify-domain.json", + "aws-apigateway-account.json", "aws-apigateway-apikey.json", - "aws-autoscaling-launchconfiguration.json", - "aws-apigateway-clientcertificate.json", - "aws-kinesisanalyticsv2-application.json", - "aws-lambda-alias.json", - "aws-logs-loganomalydetector.json", - "aws-waf-ipset.json", - "aws-ec2-transitgatewaymulticastdomainassociation.json", - "aws-s3outposts-endpoint.json", - "aws-waf-sizeconstraintset.json", - "aws-ec2-transitgatewayroutetableassociation.json", - "aws-appconfig-environment.json", - "aws-neptune-eventsubscription.json", - "aws-imagebuilder-image.json", - "aws-elasticache-securitygroupingress.json", - "aws-wafregional-xssmatchset.json", - "aws-rds-dbproxytargetgroup.json", - "aws-cloudwatch-alarm.json", - "aws-iot-thingtype.json", - "aws-guardduty-member.json", - "aws-cloudformation-customresource.json", - "aws-fis-targetaccountconfiguration.json", - "aws-kinesisanalytics-applicationoutput.json", - "aws-wafv2-rulegroup.json", - "aws-sagemaker-modelpackagegroup.json", - "aws-networkfirewall-loggingconfiguration.json", - "aws-glue-classifier.json", - "aws-codedeploy-deploymentgroup.json", - "aws-sagemaker-inferenceexperiment.json", - "aws-cloudformation-stackset.json", - "aws-ec2-route.json", - "aws-fis-experimenttemplate.json", - "aws-codecommit-repository.json", - "aws-cloudformation-hookversion.json", - "aws-rolesanywhere-profile.json", - "aws-xray-resourcepolicy.json", - "aws-iot-resourcespecificlogging.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", - "aws-resourceexplorer2-view.json", - "aws-glue-datacatalogencryptionsettings.json", - "aws-cloudfront-publickey.json", - "aws-pcaconnectorad-connector.json", - "aws-identitystore-group.json", - "aws-ram-permission.json", - "aws-datasync-task.json", - "aws-ecs-taskdefinition.json", - "aws-sagemaker-model.json", - "aws-memorydb-parametergroup.json", - "aws-shield-protection.json", - "aws-identitystore-groupmembership.json", - "aws-appsync-functionconfiguration.json", - "aws-ec2-spotfleet.json", - "aws-glue-schemaversion.json", - "aws-sagemaker-space.json", - "aws-iot-policyprincipalattachment.json", - "aws-fms-notificationchannel.json", - "aws-msk-batchscramsecret.json", - "aws-dms-certificate.json", - "aws-s3-bucket.json", - "aws-guardduty-ipset.json", - "aws-servicediscovery-httpnamespace.json", - "aws-emr-securityconfiguration.json", - "aws-cloudwatch-insightrule.json", - "aws-apigateway-usageplan.json", - "aws-batch-schedulingpolicy.json", - "aws-mediaconnect-bridgesource.json", - "aws-iot-jobtemplate.json", - "aws-databrew-project.json", - "aws-athena-workgroup.json", - "aws-sagemaker-imageversion.json", - "aws-apigatewayv2-api.json", - "aws-detective-graph.json", - "aws-servicecatalog-portfolioshare.json", - "aws-apigateway-vpclink.json", - "aws-networkmanager-customergatewayassociation.json", - "aws-iam-servercertificate.json", - "aws-iot-securityprofile.json", - "aws-globalaccelerator-crossaccountattachment.json", - "aws-events-eventbus.json", - "aws-docdb-eventsubscription.json", - "aws-sqs-queueinlinepolicy.json", - "aws-organizations-organization.json", - "aws-ssm-maintenancewindowtarget.json", "aws-apigateway-authorizer.json", - "aws-backupgateway-hypervisor.json", - "aws-iam-policy.json", - "aws-databrew-schedule.json", - "aws-cloudformation-publisher.json", - "aws-rds-dbsecuritygroupingress.json", - "aws-securityhub-organizationconfiguration.json", - "aws-ec2-transitgatewaymulticastgroupmember.json", - "aws-ec2-volumeattachment.json", - "aws-glue-securityconfiguration.json", - "aws-networkfirewall-tlsinspectionconfiguration.json", - "aws-databrew-ruleset.json", - "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-ec2-vpcendpointservicepermissions.json", - "aws-ssm-maintenancewindowtask.json", - "aws-ec2-transitgatewaymulticastdomain.json", - "aws-verifiedpermissions-policytemplate.json", - "aws-eks-cluster.json", - "aws-codebuild-project.json", - "aws-efs-filesystem.json", - "aws-logs-querydefinition.json", - "aws-securityhub-productsubscription.json", - "aws-iam-instanceprofile.json", - "aws-iot-billinggroup.json", - "aws-datasync-locationnfs.json", - "aws-amplify-domain.json", - "aws-kinesisanalyticsv2-applicationoutput.json", - "aws-sagemaker-domain.json", - "aws-certificatemanager-certificate.json", - "aws-glue-schemaversionmetadata.json", - "aws-sdb-domain.json", - "aws-ec2-subnetroutetableassociation.json", - "aws-servicecatalog-serviceactionassociation.json", - "aws-sagemaker-notebookinstancelifecycleconfig.json", - "aws-imagebuilder-containerrecipe.json", - "aws-efs-accesspoint.json", - "aws-redshift-clustersecuritygroupingress.json", - "aws-servicecatalogappregistry-attributegroupassociation.json", - "aws-elasticloadbalancingv2-loadbalancer.json", - "aws-opensearchservice-domain.json", - "aws-servicediscovery-instance.json", - "aws-elasticsearch-domain.json", - "aws-apigatewayv2-deployment.json", - "aws-servicecatalog-stacksetconstraint.json", - "aws-memorydb-user.json", - "aws-ec2-networkinterfacepermission.json", - "aws-servicecatalog-tagoption.json", - "aws-servicediscovery-privatednsnamespace.json", - "aws-servicecatalog-launchroleconstraint.json", - "aws-sagemaker-modelbiasjobdefinition.json", - "aws-secretsmanager-resourcepolicy.json", - "aws-cloudformation-hookdefaultversion.json", - "aws-config-configrule.json", - "aws-iot-softwarepackageversion.json", - "aws-ec2-networkinsightsanalysis.json", - "aws-ec2-clientvpnroute.json", - "aws-imagebuilder-workflow.json", - "aws-ecs-taskset.json", + "aws-apigateway-basepathmapping.json", + "aws-apigateway-clientcertificate.json", + "aws-apigateway-deployment.json", + "aws-apigateway-documentationpart.json", + "aws-apigateway-documentationversion.json", + "aws-apigateway-domainname.json", + "aws-apigateway-gatewayresponse.json", + "aws-apigateway-method.json", + "aws-apigateway-model.json", + "aws-apigateway-requestvalidator.json", + "aws-apigateway-resource.json", + "aws-apigateway-restapi.json", + "aws-apigateway-stage.json", + "aws-apigateway-usageplan.json", + "aws-apigateway-usageplankey.json", + "aws-apigateway-vpclink.json", + "aws-apigatewayv2-api.json", + "aws-apigatewayv2-apigatewaymanagedoverrides.json", + "aws-apigatewayv2-apimapping.json", + "aws-apigatewayv2-authorizer.json", + "aws-apigatewayv2-deployment.json", + "aws-apigatewayv2-domainname.json", + "aws-apigatewayv2-integration.json", + "aws-apigatewayv2-integrationresponse.json", + "aws-apigatewayv2-model.json", + "aws-apigatewayv2-route.json", + "aws-apigatewayv2-routeresponse.json", + "aws-apigatewayv2-stage.json", + "aws-appconfig-application.json", + "aws-appconfig-configurationprofile.json", + "aws-appconfig-deployment.json", + "aws-appconfig-deploymentstrategy.json", + "aws-appconfig-environment.json", + "aws-appconfig-extension.json", + "aws-appconfig-extensionassociation.json", + "aws-appconfig-hostedconfigurationversion.json", + "aws-applicationautoscaling-scalabletarget.json", + "aws-applicationautoscaling-scalingpolicy.json", + "aws-applicationinsights-application.json", + "aws-applicationsignals-servicelevelobjective.json", + "aws-appmesh-gatewayroute.json", + "aws-appmesh-mesh.json", + "aws-appmesh-route.json", + "aws-appmesh-virtualgateway.json", + "aws-appmesh-virtualnode.json", + "aws-appmesh-virtualrouter.json", + "aws-appmesh-virtualservice.json", + "aws-appsync-apicache.json", "aws-appsync-apikey.json", - "aws-cloudformation-typeactivation.json", - "aws-acmpca-certificateauthorityactivation.json", - "aws-guardduty-threatintelset.json", - "aws-kinesisvideo-signalingchannel.json", - "aws-macie-allowlist.json", - "aws-ec2-vpc.json", + "aws-appsync-datasource.json", + "aws-appsync-domainname.json", + "aws-appsync-domainnameapiassociation.json", + "aws-appsync-functionconfiguration.json", + "aws-appsync-graphqlapi.json", + "aws-appsync-graphqlschema.json", + "aws-appsync-resolver.json", + "aws-appsync-sourceapiassociation.json", "aws-arczonalshift-zonalautoshiftconfiguration.json", - "aws-msk-vpcconnection.json", - "aws-datasync-locationazureblob.json", - "aws-logs-logstream.json", - "aws-dms-replicationsubnetgroup.json", - "aws-s3outposts-bucket.json", - "aws-route53-recordsetgroup.json", - "aws-ec2-localgatewayroute.json", - "aws-cloudformation-publictypeversion.json", - "aws-opsworks-app.json", - "aws-kinesis-stream.json", + "aws-athena-datacatalog.json", + "aws-athena-namedquery.json", + "aws-athena-preparedstatement.json", + "aws-athena-workgroup.json", + "aws-autoscaling-autoscalinggroup.json", + "aws-autoscaling-launchconfiguration.json", + "aws-autoscaling-lifecyclehook.json", + "aws-autoscaling-scalingpolicy.json", + "aws-autoscaling-scheduledaction.json", + "aws-autoscaling-warmpool.json", + "aws-backup-backupplan.json", + "aws-backup-backupselection.json", + "aws-backup-backupvault.json", + "aws-backup-framework.json", "aws-backup-reportplan.json", + "aws-backup-restoretestingplan.json", + "aws-backup-restoretestingselection.json", + "aws-backupgateway-hypervisor.json", + "aws-batch-computeenvironment.json", "aws-batch-jobdefinition.json", - "aws-iam-samlprovider.json", + "aws-batch-jobqueue.json", + "aws-batch-schedulingpolicy.json", + "aws-cassandra-keyspace.json", + "aws-cassandra-table.json", + "aws-ce-anomalymonitor.json", + "aws-ce-anomalysubscription.json", + "aws-ce-costcategory.json", + "aws-certificatemanager-account.json", + "aws-certificatemanager-certificate.json", + "aws-chatbot-microsoftteamschannelconfiguration.json", + "aws-chatbot-slackchannelconfiguration.json", + "aws-cloud9-environmentec2.json", + "aws-cloudformation-customresource.json", + "aws-cloudformation-hookdefaultversion.json", + "aws-cloudformation-hooktypeconfig.json", + "aws-cloudformation-hookversion.json", + "aws-cloudformation-macro.json", + "aws-cloudformation-moduledefaultversion.json", + "aws-cloudformation-moduleversion.json", + "aws-cloudformation-publictypeversion.json", + "aws-cloudformation-publisher.json", + "aws-cloudformation-resourcedefaultversion.json", + "aws-cloudformation-resourceversion.json", + "aws-cloudformation-stack.json", + "aws-cloudformation-stackset.json", + "aws-cloudformation-typeactivation.json", + "aws-cloudformation-waitcondition.json", + "aws-cloudformation-waitconditionhandle.json", + "aws-cloudfront-cachepolicy.json", + "aws-cloudfront-cloudfrontoriginaccessidentity.json", + "aws-cloudfront-continuousdeploymentpolicy.json", + "aws-cloudfront-distribution.json", + "aws-cloudfront-function.json", "aws-cloudfront-keygroup.json", - "aws-ec2-networkinterfaceattachment.json", - "aws-glue-customentitytype.json", + "aws-cloudfront-keyvaluestore.json", + "aws-cloudfront-monitoringsubscription.json", + "aws-cloudfront-originaccesscontrol.json", + "aws-cloudfront-originrequestpolicy.json", + "aws-cloudfront-publickey.json", + "aws-cloudfront-realtimelogconfig.json", + "aws-cloudfront-responseheaderspolicy.json", + "aws-cloudtrail-channel.json", + "aws-cloudtrail-resourcepolicy.json", + "aws-cloudtrail-trail.json", + "aws-cloudwatch-alarm.json", + "aws-cloudwatch-anomalydetector.json", + "aws-cloudwatch-compositealarm.json", + "aws-cloudwatch-insightrule.json", + "aws-cloudwatch-metricstream.json", + "aws-codebuild-project.json", + "aws-codebuild-reportgroup.json", + "aws-codebuild-sourcecredential.json", + "aws-codecommit-repository.json", + "aws-codedeploy-application.json", "aws-codedeploy-deploymentconfig.json", - "aws-networkmanager-globalnetwork.json", - "aws-stepfunctions-statemachineversion.json", - "aws-servicecatalogappregistry-application.json", - "aws-networkmanager-site.json", - "aws-glue-database.json", - "aws-neptune-dbcluster.json", - "aws-backup-backupvault.json", + "aws-codedeploy-deploymentgroup.json", + "aws-codepipeline-customactiontype.json", + "aws-codepipeline-pipeline.json", + "aws-codepipeline-webhook.json", + "aws-codestarnotifications-notificationrule.json", + "aws-cognito-identitypool.json", + "aws-cognito-identitypoolprincipaltag.json", + "aws-cognito-identitypoolroleattachment.json", + "aws-cognito-logdeliveryconfiguration.json", + "aws-cognito-userpool.json", + "aws-cognito-userpoolclient.json", + "aws-cognito-userpoolgroup.json", + "aws-cognito-userpoolidentityprovider.json", + "aws-cognito-userpoolriskconfigurationattachment.json", + "aws-cognito-userpooluser.json", + "aws-cognito-userpoolusertogroupattachment.json", + "aws-config-aggregationauthorization.json", + "aws-config-configrule.json", + "aws-config-configurationaggregator.json", + "aws-config-configurationrecorder.json", + "aws-config-conformancepack.json", + "aws-config-deliverychannel.json", + "aws-config-organizationconfigrule.json", + "aws-config-remediationconfiguration.json", + "aws-config-storedquery.json", + "aws-controltower-enabledbaseline.json", + "aws-controltower-enabledcontrol.json", + "aws-controltower-landingzone.json", + "aws-databrew-dataset.json", + "aws-databrew-job.json", + "aws-databrew-project.json", + "aws-databrew-recipe.json", + "aws-databrew-ruleset.json", + "aws-databrew-schedule.json", + "aws-datasync-agent.json", + "aws-datasync-locationazureblob.json", + "aws-datasync-locationefs.json", + "aws-datasync-locationfsxlustre.json", + "aws-datasync-locationfsxontap.json", + "aws-datasync-locationfsxopenzfs.json", + "aws-datasync-locationfsxwindows.json", + "aws-datasync-locationhdfs.json", + "aws-datasync-locationnfs.json", + "aws-datasync-locationobjectstorage.json", + "aws-datasync-locations3.json", + "aws-datasync-locationsmb.json", + "aws-datasync-storagesystem.json", + "aws-datasync-task.json", + "aws-detective-graph.json", + "aws-detective-memberinvitation.json", + "aws-detective-organizationadmin.json", + "aws-directoryservice-microsoftad.json", + "aws-dlm-lifecyclepolicy.json", + "aws-dms-certificate.json", + "aws-dms-dataprovider.json", + "aws-dms-endpoint.json", + "aws-dms-eventsubscription.json", + "aws-dms-instanceprofile.json", + "aws-dms-migrationproject.json", + "aws-dms-replicationconfig.json", + "aws-dms-replicationinstance.json", + "aws-dms-replicationsubnetgroup.json", + "aws-dms-replicationtask.json", + "aws-docdb-dbcluster.json", + "aws-docdb-dbinstance.json", + "aws-docdb-dbsubnetgroup.json", + "aws-docdb-eventsubscription.json", + "aws-docdbelastic-cluster.json", + "aws-dynamodb-globaltable.json", + "aws-dynamodb-table.json", + "aws-ec2-capacityreservation.json", + "aws-ec2-capacityreservationfleet.json", + "aws-ec2-clientvpnendpoint.json", + "aws-ec2-clientvpnroute.json", + "aws-ec2-clientvpntargetnetworkassociation.json", "aws-ec2-customergateway.json", - "aws-iam-grouppolicy.json", - "aws-scheduler-schedule.json", - "aws-waf-bytematchset.json", - "aws-emrserverless-application.json", + "aws-ec2-dhcpoptions.json", + "aws-ec2-ec2fleet.json", + "aws-ec2-egressonlyinternetgateway.json", + "aws-ec2-eip.json", + "aws-ec2-eipassociation.json", + "aws-ec2-enclavecertificateiamroleassociation.json", + "aws-ec2-flowlog.json", + "aws-ec2-gatewayroutetableassociation.json", "aws-ec2-host.json", - "aws-lambda-codesigningconfig.json", - "aws-systemsmanagersap-application.json", - "aws-dms-replicationtask.json", - "aws-ec2-routetable.json", - "aws-mediaconnect-gateway.json", - "aws-rds-dbproxyendpoint.json", - "aws-datasync-locationsmb.json", - "aws-resiliencehub-app.json", - "aws-securityhub-standard.json", - "aws-rolesanywhere-crl.json", - "aws-sns-topicinlinepolicy.json", - "aws-redshift-clusterparametergroup.json", - "aws-organizations-policy.json", - "aws-glue-trigger.json", - "aws-globalaccelerator-listener.json", - "aws-verifiedpermissions-policystore.json", - "aws-signer-signingprofile.json", - "aws-ec2-vpcpeeringconnection.json", - "aws-sns-topicpolicy.json", - "aws-mwaa-environment.json", - "aws-networkfirewall-rulegroup.json", - "aws-datasync-locationfsxopenzfs.json", - "aws-kms-key.json", - "aws-route53resolver-resolverdnssecconfig.json", - "aws-route53resolver-firewallrulegroupassociation.json", - "aws-route53resolver-resolverqueryloggingconfig.json", + "aws-ec2-instance.json", + "aws-ec2-instanceconnectendpoint.json", + "aws-ec2-internetgateway.json", + "aws-ec2-ipam.json", + "aws-ec2-ipamallocation.json", + "aws-ec2-ipampool.json", + "aws-ec2-ipampoolcidr.json", + "aws-ec2-ipamresourcediscovery.json", + "aws-ec2-ipamresourcediscoveryassociation.json", + "aws-ec2-ipamscope.json", + "aws-ec2-keypair.json", + "aws-ec2-launchtemplate.json", + "aws-ec2-localgatewayroute.json", + "aws-ec2-localgatewayroutetable.json", + "aws-ec2-localgatewayroutetablevirtualinterfacegroupassociation.json", + "aws-ec2-localgatewayroutetablevpcassociation.json", + "aws-ec2-natgateway.json", + "aws-ec2-networkacl.json", + "aws-ec2-networkinsightsaccessscope.json", + "aws-ec2-networkinsightsaccessscopeanalysis.json", + "aws-ec2-networkinsightsanalysis.json", + "aws-ec2-networkinsightspath.json", + "aws-ec2-networkinterface.json", + "aws-ec2-networkinterfaceattachment.json", + "aws-ec2-networkinterfacepermission.json", + "aws-ec2-networkperformancemetricsubscription.json", + "aws-ec2-placementgroup.json", + "aws-ec2-prefixlist.json", + "aws-ec2-route.json", + "aws-ec2-routetable.json", + "aws-ec2-securitygroup.json", + "aws-ec2-securitygroupegress.json", + "aws-ec2-securitygroupingress.json", "aws-ec2-snapshotblockpublicaccess.json", + "aws-ec2-spotfleet.json", "aws-ec2-subnet.json", - "aws-cloudtrail-resourcepolicy.json", - "aws-s3objectlambda-accesspoint.json", - "aws-waf-rule.json", - "aws-elasticbeanstalk-configurationtemplate.json", - "aws-sqs-queuepolicy.json", - "aws-appsync-domainnameapiassociation.json", - "aws-appsync-apicache.json", - "aws-apigateway-account.json", - "aws-wafv2-webacl.json", - "aws-globalaccelerator-endpointgroup.json", + "aws-ec2-subnetcidrblock.json", + "aws-ec2-subnetnetworkaclassociation.json", + "aws-ec2-subnetroutetableassociation.json", + "aws-ec2-trafficmirrorfilter.json", + "aws-ec2-trafficmirrortarget.json", + "aws-ec2-transitgateway.json", "aws-ec2-transitgatewayconnect.json", - "aws-ec2-securitygroup.json", - "aws-ec2-capacityreservationfleet.json", - "aws-opsworks-volume.json", - "aws-iam-usertogroupaddition.json", - "aws-events-rule.json", - "aws-cloudfront-keyvaluestore.json", - "aws-guardduty-malwareprotectionplan.json", - "aws-databrew-dataset.json", + "aws-ec2-transitgatewaymulticastdomain.json", + "aws-ec2-transitgatewaymulticastdomainassociation.json", + "aws-ec2-transitgatewaymulticastgroupmember.json", + "aws-ec2-transitgatewaymulticastgroupsource.json", + "aws-ec2-transitgatewaypeeringattachment.json", + "aws-ec2-transitgatewayroute.json", + "aws-ec2-transitgatewayroutetable.json", + "aws-ec2-transitgatewayroutetableassociation.json", + "aws-ec2-transitgatewayroutetablepropagation.json", + "aws-ec2-transitgatewayvpcattachment.json", + "aws-ec2-volume.json", + "aws-ec2-volumeattachment.json", + "aws-ec2-vpc.json", + "aws-ec2-vpccidrblock.json", + "aws-ec2-vpcdhcpoptionsassociation.json", + "aws-ec2-vpcendpoint.json", + "aws-ec2-vpcendpointconnectionnotification.json", + "aws-ec2-vpcendpointservice.json", + "aws-ec2-vpcendpointservicepermissions.json", + "aws-ec2-vpcgatewayattachment.json", + "aws-ec2-vpcpeeringconnection.json", + "aws-ec2-vpnconnection.json", + "aws-ec2-vpnconnectionroute.json", + "aws-ec2-vpngateway.json", "aws-ec2-vpngatewayroutepropagation.json", - "aws-glue-crawler.json", - "aws-cloudfront-function.json", - "aws-apigateway-method.json", - "aws-wafregional-regexpatternset.json", - "aws-ssm-patchbaseline.json", - "aws-servicediscovery-service.json", - "aws-cloudfront-monitoringsubscription.json", + "aws-ecr-pullthroughcacherule.json", + "aws-ecr-registrypolicy.json", + "aws-ecr-replicationconfiguration.json", + "aws-ecr-repository.json", + "aws-ecr-repositorycreationtemplate.json", + "aws-ecs-capacityprovider.json", + "aws-ecs-cluster.json", + "aws-ecs-clustercapacityproviderassociations.json", + "aws-ecs-primarytaskset.json", + "aws-ecs-service.json", + "aws-ecs-taskdefinition.json", + "aws-ecs-taskset.json", + "aws-efs-accesspoint.json", + "aws-efs-filesystem.json", "aws-efs-mounttarget.json", - "aws-ec2-vpnconnection.json", - "aws-waf-webacl.json", - "aws-servicediscovery-publicdnsnamespace.json", - "aws-shield-protectiongroup.json", - "aws-iam-user.json", - "aws-emr-instancegroupconfig.json", - "aws-mediaconnect-flow.json", - "aws-stepfunctions-activity.json", - "aws-sagemaker-project.json", - "aws-ec2-localgatewayroutetablevirtualinterfacegroupassociation.json", - "aws-logs-accountpolicy.json", - "aws-s3-bucketpolicy.json", - "aws-appsync-graphqlschema.json", - "aws-iot-custommetric.json", - "aws-redshift-cluster.json", - "aws-codebuild-sourcecredential.json", - "aws-emr-instancefleetconfig.json", - "aws-emr-cluster.json", - "aws-codepipeline-webhook.json", - "aws-apigatewayv2-domainname.json", - "aws-rds-dbcluster.json", - "aws-servicecatalog-resourceupdateconstraint.json", - "aws-transfer-agreement.json", - "aws-chatbot-slackchannelconfiguration.json", - "aws-cloudfront-distribution.json", + "aws-eks-accessentry.json", + "aws-eks-addon.json", + "aws-eks-cluster.json", + "aws-eks-fargateprofile.json", + "aws-eks-identityproviderconfig.json", + "aws-eks-nodegroup.json", + "aws-eks-podidentityassociation.json", + "aws-elasticache-cachecluster.json", + "aws-elasticache-parametergroup.json", + "aws-elasticache-replicationgroup.json", + "aws-elasticache-securitygroup.json", + "aws-elasticache-securitygroupingress.json", + "aws-elasticache-serverlesscache.json", "aws-elasticache-subnetgroup.json", - "aws-xray-group.json", - "aws-oam-link.json", - "aws-sagemaker-endpoint.json", + "aws-elasticache-user.json", + "aws-elasticache-usergroup.json", + "aws-elasticbeanstalk-application.json", + "aws-elasticbeanstalk-applicationversion.json", + "aws-elasticbeanstalk-configurationtemplate.json", + "aws-elasticbeanstalk-environment.json", + "aws-elasticloadbalancing-loadbalancer.json", + "aws-elasticloadbalancingv2-listener.json", + "aws-elasticloadbalancingv2-listenercertificate.json", + "aws-elasticloadbalancingv2-listenerrule.json", + "aws-elasticloadbalancingv2-loadbalancer.json", + "aws-elasticloadbalancingv2-targetgroup.json", + "aws-elasticloadbalancingv2-truststore.json", "aws-elasticloadbalancingv2-truststorerevocation.json", - "aws-networkfirewall-firewall.json", + "aws-elasticsearch-domain.json", + "aws-emr-cluster.json", + "aws-emr-instancefleetconfig.json", + "aws-emr-instancegroupconfig.json", + "aws-emr-securityconfiguration.json", + "aws-emr-step.json", + "aws-emr-studio.json", + "aws-emr-studiosessionmapping.json", + "aws-emrserverless-application.json", + "aws-events-archive.json", + "aws-events-eventbus.json", + "aws-events-eventbuspolicy.json", + "aws-events-rule.json", + "aws-eventschemas-discoverer.json", + "aws-eventschemas-registry.json", + "aws-eventschemas-registrypolicy.json", "aws-eventschemas-schema.json", - "aws-kms-replicakey.json", - "aws-redshift-clustersecuritygroup.json", - "aws-route53-cidrcollection.json", - "aws-ecr-pullthroughcacherule.json", + "aws-fis-experimenttemplate.json", + "aws-fis-targetaccountconfiguration.json", + "aws-fms-notificationchannel.json", + "aws-fms-policy.json", + "aws-fms-resourceset.json", + "aws-fsx-datarepositoryassociation.json", + "aws-fsx-filesystem.json", + "aws-fsx-snapshot.json", + "aws-fsx-storagevirtualmachine.json", + "aws-fsx-volume.json", + "aws-globalaccelerator-accelerator.json", + "aws-globalaccelerator-crossaccountattachment.json", + "aws-globalaccelerator-endpointgroup.json", + "aws-globalaccelerator-listener.json", + "aws-glue-classifier.json", + "aws-glue-connection.json", + "aws-glue-crawler.json", + "aws-glue-customentitytype.json", + "aws-glue-database.json", + "aws-glue-datacatalogencryptionsettings.json", + "aws-glue-dataqualityruleset.json", + "aws-glue-devendpoint.json", + "aws-glue-job.json", "aws-glue-mltransform.json", - "aws-appconfig-hostedconfigurationversion.json", - "aws-datasync-locationefs.json", - "aws-ec2-localgatewayroutetable.json", - "aws-apigateway-resource.json", - "aws-sagemaker-appimageconfig.json", - "aws-macie-session.json", - "aws-elasticloadbalancingv2-targetgroup.json", - "aws-applicationautoscaling-scalingpolicy.json", - "aws-pipes-pipe.json", - "aws-emr-studiosessionmapping.json", - "aws-cloudformation-macro.json", - "aws-sagemaker-workteam.json", - "aws-lambda-layerversionpermission.json", - "aws-route53resolver-resolverconfig.json", - "aws-elasticache-user.json", - "aws-sagemaker-image.json", - "aws-logs-subscriptionfilter.json", - "aws-codedeploy-application.json", - "aws-dms-eventsubscription.json", + "aws-glue-partition.json", + "aws-glue-registry.json", + "aws-glue-schema.json", + "aws-glue-schemaversion.json", + "aws-glue-schemaversionmetadata.json", + "aws-glue-securityconfiguration.json", + "aws-glue-table.json", + "aws-glue-trigger.json", + "aws-glue-workflow.json", + "aws-guardduty-detector.json", + "aws-guardduty-filter.json", + "aws-guardduty-ipset.json", + "aws-guardduty-malwareprotectionplan.json", + "aws-guardduty-master.json", + "aws-guardduty-member.json", + "aws-guardduty-threatintelset.json", + "aws-iam-accesskey.json", + "aws-iam-group.json", + "aws-iam-grouppolicy.json", + "aws-iam-instanceprofile.json", + "aws-iam-oidcprovider.json", + "aws-iam-policy.json", + "aws-iam-role.json", + "aws-iam-rolepolicy.json", + "aws-iam-samlprovider.json", + "aws-iam-servercertificate.json", + "aws-iam-servicelinkedrole.json", + "aws-iam-user.json", + "aws-iam-userpolicy.json", + "aws-iam-usertogroupaddition.json", + "aws-iam-virtualmfadevice.json", + "aws-identitystore-group.json", + "aws-identitystore-groupmembership.json", + "aws-imagebuilder-component.json", + "aws-imagebuilder-containerrecipe.json", + "aws-imagebuilder-distributionconfiguration.json", + "aws-imagebuilder-image.json", + "aws-imagebuilder-imagepipeline.json", + "aws-imagebuilder-imagerecipe.json", + "aws-imagebuilder-infrastructureconfiguration.json", + "aws-imagebuilder-lifecyclepolicy.json", + "aws-imagebuilder-workflow.json", + "aws-inspectorv2-cisscanconfiguration.json", + "aws-inspectorv2-filter.json", + "aws-internetmonitor-monitor.json", + "aws-iot-accountauditconfiguration.json", + "aws-iot-authorizer.json", + "aws-iot-billinggroup.json", + "aws-iot-cacertificate.json", + "aws-iot-certificate.json", + "aws-iot-certificateprovider.json", + "aws-iot-custommetric.json", + "aws-iot-dimension.json", + "aws-iot-domainconfiguration.json", + "aws-iot-fleetmetric.json", + "aws-iot-jobtemplate.json", + "aws-iot-logging.json", + "aws-iot-mitigationaction.json", + "aws-iot-policy.json", + "aws-iot-policyprincipalattachment.json", + "aws-iot-provisioningtemplate.json", + "aws-iot-resourcespecificlogging.json", + "aws-iot-rolealias.json", + "aws-iot-scheduledaudit.json", + "aws-iot-securityprofile.json", + "aws-iot-softwarepackage.json", + "aws-iot-softwarepackageversion.json", + "aws-iot-thing.json", + "aws-iot-thinggroup.json", + "aws-iot-thingprincipalattachment.json", + "aws-iot-thingtype.json", "aws-iot-topicrule.json", + "aws-iot-topicruledestination.json", + "aws-kinesis-stream.json", + "aws-kinesisanalytics-applicationoutput.json", + "aws-kinesisanalyticsv2-application.json", + "aws-kinesisanalyticsv2-applicationoutput.json", + "aws-kinesisfirehose-deliverystream.json", + "aws-kinesisvideo-signalingchannel.json", + "aws-kinesisvideo-stream.json", + "aws-kms-alias.json", + "aws-kms-key.json", + "aws-kms-replicakey.json", + "aws-lakeformation-datacellsfilter.json", + "aws-lakeformation-datalakesettings.json", + "aws-lakeformation-permissions.json", "aws-lakeformation-principalpermissions.json", - "aws-datasync-locations3.json", - "aws-autoscaling-lifecyclehook.json", - "aws-fsx-datarepositoryassociation.json", - "aws-ec2-networkinterface.json", - "aws-sagemaker-featuregroup.json", - "aws-appsync-resolver.json", - "aws-controltower-landingzone.json", - "aws-rolesanywhere-trustanchor.json", - "aws-route53resolver-resolverqueryloggingconfigassociation.json", - "aws-imagebuilder-lifecyclepolicy.json", + "aws-lakeformation-resource.json", + "aws-lakeformation-tag.json", + "aws-lakeformation-tagassociation.json", + "aws-lambda-alias.json", + "aws-lambda-codesigningconfig.json", "aws-lambda-eventinvokeconfig.json", - "aws-mediaconnect-flowoutput.json", + "aws-lambda-eventsourcemapping.json", + "aws-lambda-function.json", "aws-lambda-layerversion.json", - "aws-kinesisvideo-stream.json", - "aws-rds-optiongroup.json", - "aws-opsworks-userprofile.json", - "aws-glue-schema.json", - "aws-docdb-dbsubnetgroup.json", - "aws-ec2-transitgatewayroute.json", - "aws-ssm-maintenancewindow.json", - "aws-lakeformation-tagassociation.json", - "aws-ec2-ipamresourcediscovery.json", - "aws-datasync-storagesystem.json", - "aws-imagebuilder-infrastructureconfiguration.json", - "aws-iot-logging.json", - "aws-cloudformation-waitcondition.json", - "aws-route53resolver-resolverendpoint.json", - "aws-iot-scheduledaudit.json", - "aws-networkmanager-link.json", - "aws-sagemaker-notebookinstance.json", - "aws-sso-instanceaccesscontrolattributeconfiguration.json", - "aws-wafregional-bytematchset.json", - "aws-cloudwatch-anomalydetector.json", - "aws-ec2-subnetnetworkaclassociation.json", - "aws-servicecatalog-serviceaction.json", - "aws-dms-migrationproject.json", - "aws-iam-userpolicy.json", - "aws-cloudfront-originaccesscontrol.json", - "aws-inspectorv2-cisscanconfiguration.json", - "aws-iot-mitigationaction.json", - "aws-secretsmanager-rotationschedule.json", - "aws-securityhub-securitycontrol.json", + "aws-lambda-layerversionpermission.json", "aws-lambda-permission.json", - "aws-networkfirewall-firewallpolicy.json", - "aws-eks-identityproviderconfig.json", - "aws-ec2-ipamresourcediscoveryassociation.json", - "aws-servicecatalogappregistry-attributegroup.json", - "aws-ec2-clientvpntargetnetworkassociation.json", - "aws-appsync-graphqlapi.json", - "aws-ec2-egressonlyinternetgateway.json", - "aws-securityhub-insight.json", - "aws-config-conformancepack.json", - "aws-ec2-vpccidrblock.json", - "aws-iam-virtualmfadevice.json", - "aws-ec2-networkinsightspath.json", - "aws-acmpca-certificateauthority.json", - "aws-athena-preparedstatement.json", - "aws-autoscaling-scheduledaction.json", - "aws-apigatewayv2-route.json", - "aws-lakeformation-resource.json", - "aws-detective-memberinvitation.json", - "aws-ec2-ipamscope.json", - "aws-sagemaker-dataqualityjobdefinition.json", - "aws-ec2-vpcendpoint.json", - "aws-rds-eventsubscription.json", - "module.json", - "aws-config-aggregationauthorization.json", - "aws-datasync-agent.json", - "aws-cognito-userpoolidentityprovider.json", - "aws-resiliencehub-resiliencypolicy.json", - "aws-iot-dimension.json", + "aws-lambda-url.json", + "aws-lambda-version.json", + "aws-launchwizard-deployment.json", + "aws-logs-accountpolicy.json", + "aws-logs-delivery.json", + "aws-logs-deliverydestination.json", + "aws-logs-deliverysource.json", + "aws-logs-destination.json", + "aws-logs-loganomalydetector.json", "aws-logs-loggroup.json", - "aws-ecs-cluster.json", - "aws-pcaconnectorad-template.json", - "aws-ec2-placementgroup.json", - "aws-organizations-account.json", - "aws-ecr-repository.json", - "aws-iot-fleetmetric.json", + "aws-logs-logstream.json", + "aws-logs-metricfilter.json", + "aws-logs-querydefinition.json", + "aws-logs-resourcepolicy.json", + "aws-logs-subscriptionfilter.json", + "aws-macie-allowlist.json", + "aws-macie-customdataidentifier.json", + "aws-macie-findingsfilter.json", + "aws-macie-session.json", + "aws-mediaconnect-bridge.json", + "aws-mediaconnect-bridgeoutput.json", + "aws-mediaconnect-bridgesource.json", + "aws-mediaconnect-flow.json", + "aws-mediaconnect-flowentitlement.json", + "aws-mediaconnect-flowoutput.json", "aws-mediaconnect-flowsource.json", - "aws-appconfig-extension.json", - "aws-elasticloadbalancingv2-listenerrule.json", - "aws-elasticloadbalancingv2-truststore.json", - "aws-glue-registry.json", - "aws-ec2-keypair.json", - "aws-fsx-filesystem.json", - "aws-ec2-eipassociation.json", - "aws-elasticbeanstalk-application.json", - "aws-iot-thingprincipalattachment.json", - "aws-dlm-lifecyclepolicy.json", - "aws-ec2-capacityreservation.json", - "aws-elasticloadbalancing-loadbalancer.json", - "aws-transfer-user.json", - "aws-iam-rolepolicy.json", - "aws-ec2-trafficmirrortarget.json", - "aws-stepfunctions-statemachine.json", - "aws-rds-dbclusterparametergroup.json", - "aws-waf-xssmatchset.json", - "aws-appmesh-virtualrouter.json", - "aws-scheduler-schedulegroup.json", - "aws-fsx-snapshot.json", - "aws-eventschemas-registrypolicy.json", - "aws-route53-keysigningkey.json", - "aws-eventschemas-registry.json", - "aws-config-remediationconfiguration.json", - "aws-detective-organizationadmin.json", - "aws-athena-datacatalog.json", - "aws-docdb-dbcluster.json", "aws-mediaconnect-flowvpcinterface.json", - "aws-glue-workflow.json", - "aws-apigatewayv2-authorizer.json", - "aws-iot-accountauditconfiguration.json", - "aws-sagemaker-userprofile.json", - "aws-ec2-prefixlist.json", - "aws-ec2-instance.json", - "aws-networkmanager-device.json", - "aws-ec2-subnetcidrblock.json", - "aws-elasticbeanstalk-applicationversion.json", - "aws-appmesh-virtualgateway.json", - "aws-waf-sqlinjectionmatchset.json", - "aws-ec2-transitgatewayvpcattachment.json", - "aws-ec2-flowlog.json", - "aws-amazonmq-broker.json", - "aws-emr-step.json", - "aws-ssm-association.json", - "aws-ec2-clientvpnendpoint.json", - "aws-cloudfront-responseheaderspolicy.json", - "aws-securityhub-automationrule.json", + "aws-mediaconnect-gateway.json", + "aws-memorydb-acl.json", + "aws-memorydb-cluster.json", + "aws-memorydb-parametergroup.json", + "aws-memorydb-subnetgroup.json", + "aws-memorydb-user.json", + "aws-msk-batchscramsecret.json", + "aws-msk-cluster.json", "aws-msk-clusterpolicy.json", - "aws-guardduty-master.json", - "aws-kms-alias.json", - "aws-xray-samplingrule.json", - "aws-route53resolver-resolverrule.json", - "aws-transfer-connector.json", - "aws-appmesh-virtualnode.json", - "aws-apigateway-documentationversion.json", - "aws-wafv2-webaclassociation.json", + "aws-msk-configuration.json", + "aws-msk-vpcconnection.json", + "aws-mwaa-environment.json", + "aws-neptune-dbcluster.json", + "aws-neptune-dbsubnetgroup.json", + "aws-neptune-eventsubscription.json", + "aws-networkfirewall-firewall.json", + "aws-networkfirewall-firewallpolicy.json", + "aws-networkfirewall-loggingconfiguration.json", + "aws-networkfirewall-rulegroup.json", + "aws-networkfirewall-tlsinspectionconfiguration.json", + "aws-networkmanager-customergatewayassociation.json", + "aws-networkmanager-device.json", + "aws-networkmanager-globalnetwork.json", + "aws-networkmanager-link.json", + "aws-networkmanager-linkassociation.json", + "aws-networkmanager-site.json", + "aws-networkmanager-transitgatewayregistration.json", + "aws-oam-link.json", "aws-oam-sink.json", - "aws-codebuild-reportgroup.json", - "aws-apigateway-gatewayresponse.json", - "aws-ec2-enclavecertificateiamroleassociation.json", - "aws-sso-application.json", - "aws-fsx-volume.json", + "aws-opensearchservice-domain.json", + "aws-opsworks-app.json", + "aws-opsworks-elasticloadbalancerattachment.json", + "aws-opsworks-instance.json", + "aws-opsworks-layer.json", + "aws-opsworks-stack.json", + "aws-opsworks-userprofile.json", + "aws-opsworks-volume.json", + "aws-organizations-account.json", + "aws-organizations-organization.json", + "aws-organizations-organizationalunit.json", + "aws-organizations-policy.json", + "aws-organizations-resourcepolicy.json", + "aws-pcaconnectorad-connector.json", + "aws-pcaconnectorad-directoryregistration.json", + "aws-pcaconnectorad-serviceprincipalname.json", + "aws-pcaconnectorad-template.json", + "aws-pcaconnectorad-templategroupaccesscontrolentry.json", + "aws-pipes-pipe.json", + "aws-ram-permission.json", + "aws-ram-resourceshare.json", + "aws-rds-dbcluster.json", + "aws-rds-dbclusterparametergroup.json", + "aws-rds-dbinstance.json", + "aws-rds-dbparametergroup.json", + "aws-rds-dbproxy.json", + "aws-rds-dbproxyendpoint.json", + "aws-rds-dbproxytargetgroup.json", + "aws-rds-dbsecuritygroup.json", + "aws-rds-dbsecuritygroupingress.json", + "aws-rds-dbsubnetgroup.json", + "aws-rds-eventsubscription.json", + "aws-rds-globalcluster.json", + "aws-rds-integration.json", + "aws-rds-optiongroup.json", + "aws-redshift-cluster.json", + "aws-redshift-clusterparametergroup.json", + "aws-redshift-clustersecuritygroup.json", + "aws-redshift-clustersecuritygroupingress.json", + "aws-redshift-clustersubnetgroup.json", + "aws-redshift-endpointaccess.json", + "aws-redshift-endpointauthorization.json", + "aws-redshift-eventsubscription.json", + "aws-redshift-scheduledaction.json", + "aws-resiliencehub-app.json", + "aws-resiliencehub-resiliencypolicy.json", + "aws-resourceexplorer2-defaultviewassociation.json", + "aws-resourceexplorer2-index.json", + "aws-resourceexplorer2-view.json", + "aws-resourcegroups-group.json", + "aws-rolesanywhere-crl.json", + "aws-rolesanywhere-profile.json", + "aws-rolesanywhere-trustanchor.json", + "aws-route53-cidrcollection.json", + "aws-route53-dnssec.json", + "aws-route53-healthcheck.json", + "aws-route53-hostedzone.json", + "aws-route53-keysigningkey.json", + "aws-route53-recordset.json", + "aws-route53-recordsetgroup.json", + "aws-route53profiles-profile.json", + "aws-route53profiles-profileassociation.json", + "aws-route53profiles-profileresourceassociation.json", + "aws-route53resolver-firewalldomainlist.json", + "aws-route53resolver-firewallrulegroup.json", + "aws-route53resolver-firewallrulegroupassociation.json", "aws-route53resolver-outpostresolver.json", - "aws-acmpca-certificate.json", - "aws-ec2-ipamallocation.json", - "aws-workspaces-workspace.json", - "aws-emr-studio.json", - "aws-ec2-instanceconnectendpoint.json", - "aws-directoryservice-microsoftad.json", - "aws-memorydb-subnetgroup.json", - "aws-appsync-sourceapiassociation.json", - "aws-datasync-locationobjectstorage.json", - "aws-ecs-capacityprovider.json", - "aws-elasticache-cachecluster.json", + "aws-route53resolver-resolverconfig.json", + "aws-route53resolver-resolverdnssecconfig.json", + "aws-route53resolver-resolverendpoint.json", + "aws-route53resolver-resolverqueryloggingconfig.json", + "aws-route53resolver-resolverqueryloggingconfigassociation.json", + "aws-route53resolver-resolverrule.json", + "aws-route53resolver-resolverruleassociation.json", + "aws-s3-accessgrant.json", + "aws-s3-accessgrantsinstance.json", + "aws-s3-accessgrantslocation.json", + "aws-s3-accesspoint.json", + "aws-s3-bucket.json", + "aws-s3-bucketpolicy.json", + "aws-s3objectlambda-accesspoint.json", + "aws-s3objectlambda-accesspointpolicy.json", + "aws-s3outposts-accesspoint.json", + "aws-s3outposts-bucket.json", + "aws-s3outposts-bucketpolicy.json", + "aws-s3outposts-endpoint.json", + "aws-sagemaker-app.json", + "aws-sagemaker-appimageconfig.json", + "aws-sagemaker-coderepository.json", + "aws-sagemaker-dataqualityjobdefinition.json", + "aws-sagemaker-domain.json", + "aws-sagemaker-endpoint.json", + "aws-sagemaker-endpointconfig.json", + "aws-sagemaker-featuregroup.json", + "aws-sagemaker-image.json", + "aws-sagemaker-imageversion.json", + "aws-sagemaker-inferenceexperiment.json", + "aws-sagemaker-model.json", + "aws-sagemaker-modelbiasjobdefinition.json", "aws-sagemaker-modelcard.json", - "aws-logs-destination.json", - "aws-eks-nodegroup.json", - "aws-organizations-organizationalunit.json", - "aws-appsync-datasource.json", - "aws-sqs-queue.json", - "aws-ec2-securitygroupingress.json", - "aws-guardduty-detector.json", + "aws-sagemaker-modelexplainabilityjobdefinition.json", + "aws-sagemaker-modelpackage.json", + "aws-sagemaker-modelpackagegroup.json", "aws-sagemaker-modelqualityjobdefinition.json", - "aws-apigateway-stage.json", - "aws-batch-computeenvironment.json", - "aws-iot-thing.json", - "aws-route53-healthcheck.json", - "aws-events-eventbuspolicy.json", - "aws-athena-namedquery.json", - "aws-ec2-trafficmirrorfilter.json", - "aws-apigateway-deployment.json", - "aws-lakeformation-datalakesettings.json", - "aws-autoscaling-scalingpolicy.json", - "aws-resourceexplorer2-defaultviewassociation.json", - "aws-ecr-registrypolicy.json", - "aws-redshift-scheduledaction.json", - "aws-rds-dbsecuritygroup.json", - "aws-apigatewayv2-routeresponse.json", - "aws-cloudwatch-metricstream.json", - "aws-sso-applicationassignment.json", - "aws-dms-dataprovider.json", - "aws-ssm-parameter.json", - "aws-apigatewayv2-apigatewaymanagedoverrides.json", - "aws-config-deliverychannel.json", - "aws-certificatemanager-account.json", "aws-sagemaker-monitoringschedule.json", - "aws-iam-oidcprovider.json", - "aws-lakeformation-tag.json", - "aws-ce-anomalymonitor.json", + "aws-sagemaker-notebookinstance.json", + "aws-sagemaker-notebookinstancelifecycleconfig.json", + "aws-sagemaker-pipeline.json", + "aws-sagemaker-project.json", + "aws-sagemaker-space.json", + "aws-sagemaker-userprofile.json", + "aws-sagemaker-workteam.json", + "aws-scheduler-schedule.json", + "aws-scheduler-schedulegroup.json", + "aws-sdb-domain.json", + "aws-secretsmanager-resourcepolicy.json", + "aws-secretsmanager-rotationschedule.json", + "aws-secretsmanager-secret.json", + "aws-securityhub-automationrule.json", + "aws-securityhub-delegatedadmin.json", + "aws-securityhub-hub.json", + "aws-securityhub-insight.json", + "aws-securityhub-organizationconfiguration.json", + "aws-securityhub-productsubscription.json", + "aws-securityhub-securitycontrol.json", + "aws-securityhub-standard.json", + "aws-servicecatalog-cloudformationproduct.json", + "aws-servicecatalog-cloudformationprovisionedproduct.json", + "aws-servicecatalog-launchnotificationconstraint.json", + "aws-servicecatalog-launchroleconstraint.json", + "aws-servicecatalog-launchtemplateconstraint.json", + "aws-servicecatalog-portfolioshare.json", + "aws-servicecatalog-resourceupdateconstraint.json", + "aws-servicecatalog-serviceaction.json", + "aws-servicecatalog-serviceactionassociation.json", + "aws-servicecatalog-stacksetconstraint.json", + "aws-servicecatalog-tagoption.json", + "aws-servicecatalogappregistry-application.json", + "aws-servicecatalogappregistry-attributegroup.json", + "aws-servicecatalogappregistry-attributegroupassociation.json", "aws-servicecatalogappregistry-resourceassociation.json", - "aws-ec2-vpngateway.json", - "aws-cloudformation-stack.json", - "aws-resourcegroups-group.json", - "aws-cloudformation-resourcedefaultversion.json", + "aws-servicediscovery-httpnamespace.json", + "aws-servicediscovery-instance.json", + "aws-servicediscovery-privatednsnamespace.json", + "aws-servicediscovery-publicdnsnamespace.json", + "aws-servicediscovery-service.json", + "aws-shield-drtaccess.json", + "aws-shield-proactiveengagement.json", + "aws-shield-protection.json", + "aws-shield-protectiongroup.json", "aws-signer-profilepermission.json", - "aws-backup-restoretestingplan.json", - "aws-ec2-ipam.json", - "aws-pcaconnectorad-templategroupaccesscontrolentry.json", - "aws-databrew-job.json", - "aws-ec2-transitgatewaypeeringattachment.json", - "aws-ecr-repositorycreationtemplate.json", - "aws-cloudfront-cachepolicy.json", - "aws-iam-accesskey.json", - "aws-rds-dbsubnetgroup.json", - "aws-amazonmq-configuration.json", - "aws-appconfig-deployment.json", - "aws-codepipeline-customactiontype.json", - "aws-accessanalyzer-analyzer.json", - "aws-ec2-ec2fleet.json", - "aws-dms-replicationinstance.json", - "aws-servicecatalog-cloudformationproduct.json", - "aws-ec2-vpcendpointservice.json", - "aws-ec2-launchtemplate.json", - "aws-cloudfront-originrequestpolicy.json", - "aws-datasync-locationfsxontap.json", - "aws-networkmanager-linkassociation.json", - "aws-pcaconnectorad-serviceprincipalname.json", - "aws-wafregional-sqlinjectionmatchset.json", - "aws-lambda-version.json", - "aws-ec2-dhcpoptions.json", - "aws-ec2-ipampool.json", - "aws-iam-servicelinkedrole.json", - "aws-cloudformation-hooktypeconfig.json", - "aws-ec2-volume.json", - "aws-iot-certificate.json", - "aws-ec2-eip.json", + "aws-signer-signingprofile.json", + "aws-sns-subscription.json", + "aws-sns-topic.json", + "aws-sns-topicinlinepolicy.json", + "aws-sns-topicpolicy.json", + "aws-sqs-queue.json", + "aws-sqs-queueinlinepolicy.json", + "aws-sqs-queuepolicy.json", + "aws-ssm-association.json", + "aws-ssm-document.json", + "aws-ssm-maintenancewindow.json", + "aws-ssm-maintenancewindowtarget.json", + "aws-ssm-maintenancewindowtask.json", + "aws-ssm-parameter.json", + "aws-ssm-patchbaseline.json", + "aws-sso-application.json", + "aws-sso-applicationassignment.json", + "aws-sso-assignment.json", + "aws-sso-instance.json", + "aws-sso-instanceaccesscontrolattributeconfiguration.json", + "aws-sso-permissionset.json", + "aws-stepfunctions-statemachinealias.json", + "aws-stepfunctions-statemachineversion.json", + "aws-synthetics-canary.json", + "aws-systemsmanagersap-application.json", + "aws-transfer-agreement.json", + "aws-transfer-certificate.json", + "aws-transfer-connector.json", + "aws-transfer-profile.json", + "aws-transfer-server.json", + "aws-transfer-user.json", + "aws-transfer-workflow.json", "aws-verifiedpermissions-policy.json", - "aws-cloudformation-resourceversion.json", - "aws-sagemaker-modelexplainabilityjobdefinition.json", - "aws-apigatewayv2-stage.json", - "aws-chatbot-microsoftteamschannelconfiguration.json", - "aws-rds-dbproxy.json", - "aws-rds-dbparametergroup.json", - "aws-securityhub-hub.json", - "aws-s3-accesspoint.json", - "aws-s3outposts-bucketpolicy.json", - "aws-batch-jobqueue.json", - "aws-elasticloadbalancingv2-listener.json", - "aws-redshift-eventsubscription.json", - "aws-memorydb-acl.json", - "aws-cloudformation-waitconditionhandle.json", - "aws-globalaccelerator-accelerator.json", - "aws-eks-addon.json", + "aws-verifiedpermissions-policystore.json", + "aws-verifiedpermissions-policytemplate.json", + "aws-waf-bytematchset.json", + "aws-waf-ipset.json", + "aws-waf-rule.json", + "aws-waf-sizeconstraintset.json", + "aws-waf-sqlinjectionmatchset.json", + "aws-waf-webacl.json", + "aws-waf-xssmatchset.json", + "aws-wafregional-bytematchset.json", + "aws-wafregional-regexpatternset.json", + "aws-wafregional-sqlinjectionmatchset.json", + "aws-wafregional-webaclassociation.json", + "aws-wafregional-xssmatchset.json", + "aws-wafv2-ipset.json", + "aws-wafv2-loggingconfiguration.json", + "aws-wafv2-regexpatternset.json", + "aws-wafv2-rulegroup.json", + "aws-wafv2-webacl.json", + "aws-wafv2-webaclassociation.json", + "aws-workspaces-workspace.json", + "aws-xray-group.json", + "aws-xray-resourcepolicy.json", + "aws-xray-samplingrule.json", + "module.json", ] diff --git a/src/cfnlint/data/schemas/providers/ap_east_1/aws-cognito-identitypool.json b/src/cfnlint/data/schemas/providers/ap_east_1/aws-cognito-identitypool.json deleted file mode 100644 index b511032158..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_east_1/aws-cognito-identitypool.json +++ /dev/null @@ -1,123 +0,0 @@ -{ - "additionalProperties": false, - "definitions": { - "CognitoIdentityProvider": { - "additionalProperties": false, - "properties": { - "ClientId": { - "type": "string" - }, - "ProviderName": { - "type": "string" - }, - "ServerSideTokenCheck": { - "type": "boolean" - } - }, - "type": "object" - }, - "CognitoStreams": { - "additionalProperties": false, - "properties": { - "RoleArn": { - "type": "string" - }, - "StreamName": { - "type": "string" - }, - "StreamingStatus": { - "type": "string" - } - }, - "type": "object" - }, - "PushSync": { - "additionalProperties": false, - "properties": { - "ApplicationArns": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "RoleArn": { - "type": "string" - } - }, - "type": "object" - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AllowClassicFlow": { - "type": "boolean" - }, - "AllowUnauthenticatedIdentities": { - "type": "boolean" - }, - "CognitoEvents": { - "format": "json", - "type": [ - "object", - "string" - ] - }, - "CognitoIdentityProviders": { - "items": { - "$ref": "#/definitions/CognitoIdentityProvider" - }, - "type": "array", - "uniqueItems": false - }, - "CognitoStreams": { - "$ref": "#/definitions/CognitoStreams" - }, - "DeveloperProviderName": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "IdentityPoolName": { - "type": "string" - }, - "Name": { - "type": "string" - }, - "OpenIdConnectProviderARNs": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "PushSync": { - "$ref": "#/definitions/PushSync" - }, - "SamlProviderARNs": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SupportedLoginProviders": { - "format": "json", - "type": [ - "object", - "string" - ] - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Name" - ], - "required": [ - "AllowUnauthenticatedIdentities" - ], - "typeName": "AWS::Cognito::IdentityPool" -} diff --git a/src/cfnlint/data/schemas/providers/ap_east_1/aws-cognito-identitypoolroleattachment.json b/src/cfnlint/data/schemas/providers/ap_east_1/aws-cognito-identitypoolroleattachment.json deleted file mode 100644 index ca2e8a5a88..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_east_1/aws-cognito-identitypoolroleattachment.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/IdentityPoolId" - ], - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Id": { - "type": "string" - }, - "IdentityPoolId": { - "type": "string" - }, - "RoleMappings": { - "format": "json", - "type": [ - "object", - "string" - ] - }, - "Roles": { - "format": "json", - "type": [ - "object", - "string" - ] - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "IdentityPoolId" - ], - "typeName": "AWS::Cognito::IdentityPoolRoleAttachment" -} diff --git a/src/cfnlint/data/schemas/providers/ap_east_1/aws-cognito-userpool.json b/src/cfnlint/data/schemas/providers/ap_east_1/aws-cognito-userpool.json deleted file mode 100644 index ad6a681586..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_east_1/aws-cognito-userpool.json +++ /dev/null @@ -1,395 +0,0 @@ -{ - "additionalProperties": false, - "definitions": { - "AccountRecoverySetting": { - "additionalProperties": false, - "properties": { - "RecoveryMechanisms": { - "items": { - "$ref": "#/definitions/RecoveryOption" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - }, - "AdminCreateUserConfig": { - "additionalProperties": false, - "properties": { - "AllowAdminCreateUserOnly": { - "type": "boolean" - }, - "InviteMessageTemplate": { - "$ref": "#/definitions/InviteMessageTemplate" - }, - "UnusedAccountValidityDays": { - "type": "integer" - } - }, - "type": "object" - }, - "DeviceConfiguration": { - "additionalProperties": false, - "properties": { - "ChallengeRequiredOnNewDevice": { - "type": "boolean" - }, - "DeviceOnlyRememberedOnUserPrompt": { - "type": "boolean" - } - }, - "type": "object" - }, - "EmailConfiguration": { - "additionalProperties": false, - "properties": { - "ConfigurationSet": { - "type": "string" - }, - "EmailSendingAccount": { - "type": "string" - }, - "From": { - "type": "string" - }, - "ReplyToEmailAddress": { - "type": "string" - }, - "SourceArn": { - "type": "string" - } - }, - "type": "object" - }, - "InviteMessageTemplate": { - "additionalProperties": false, - "properties": { - "EmailMessage": { - "type": "string" - }, - "EmailSubject": { - "type": "string" - }, - "SMSMessage": { - "type": "string" - } - }, - "type": "object" - }, - "LambdaConfig": { - "additionalProperties": false, - "properties": { - "CreateAuthChallenge": { - "type": "string" - }, - "CustomMessage": { - "type": "string" - }, - "DefineAuthChallenge": { - "type": "string" - }, - "PostAuthentication": { - "type": "string" - }, - "PostConfirmation": { - "type": "string" - }, - "PreAuthentication": { - "type": "string" - }, - "PreSignUp": { - "type": "string" - }, - "PreTokenGeneration": { - "type": "string" - }, - "UserMigration": { - "type": "string" - }, - "VerifyAuthChallengeResponse": { - "type": "string" - } - }, - "type": "object" - }, - "NumberAttributeConstraints": { - "additionalProperties": false, - "properties": { - "MaxValue": { - "type": "string" - }, - "MinValue": { - "type": "string" - } - }, - "type": "object" - }, - "PasswordPolicy": { - "additionalProperties": false, - "properties": { - "MinimumLength": { - "type": "integer" - }, - "RequireLowercase": { - "type": "boolean" - }, - "RequireNumbers": { - "type": "boolean" - }, - "RequireSymbols": { - "type": "boolean" - }, - "RequireUppercase": { - "type": "boolean" - }, - "TemporaryPasswordValidityDays": { - "type": "integer" - } - }, - "type": "object" - }, - "Policies": { - "additionalProperties": false, - "properties": { - "PasswordPolicy": { - "$ref": "#/definitions/PasswordPolicy" - } - }, - "type": "object" - }, - "RecoveryOption": { - "additionalProperties": false, - "properties": { - "Name": { - "type": "string" - }, - "Priority": { - "type": "integer" - } - }, - "type": "object" - }, - "SchemaAttribute": { - "additionalProperties": false, - "properties": { - "AttributeDataType": { - "type": "string" - }, - "DeveloperOnlyAttribute": { - "type": "boolean" - }, - "Mutable": { - "type": "boolean" - }, - "Name": { - "type": "string" - }, - "NumberAttributeConstraints": { - "$ref": "#/definitions/NumberAttributeConstraints" - }, - "Required": { - "type": "boolean" - }, - "StringAttributeConstraints": { - "$ref": "#/definitions/StringAttributeConstraints" - } - }, - "type": "object" - }, - "SmsConfiguration": { - "additionalProperties": false, - "properties": { - "ExternalId": { - "type": "string" - }, - "SnsCallerArn": { - "type": "string" - } - }, - "type": "object" - }, - "StringAttributeConstraints": { - "additionalProperties": false, - "properties": { - "MaxLength": { - "type": "string" - }, - "MinLength": { - "type": "string" - } - }, - "type": "object" - }, - "UserPoolAddOns": { - "additionalProperties": false, - "properties": { - "AdvancedSecurityMode": { - "type": "string" - } - }, - "type": "object" - }, - "UsernameConfiguration": { - "additionalProperties": false, - "properties": { - "CaseSensitive": { - "type": "boolean" - } - }, - "type": "object" - }, - "VerificationMessageTemplate": { - "additionalProperties": false, - "properties": { - "DefaultEmailOption": { - "type": "string" - }, - "EmailMessage": { - "type": "string" - }, - "EmailMessageByLink": { - "type": "string" - }, - "EmailSubject": { - "type": "string" - }, - "EmailSubjectByLink": { - "type": "string" - }, - "SmsMessage": { - "type": "string" - } - }, - "type": "object" - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AccountRecoverySetting": { - "$ref": "#/definitions/AccountRecoverySetting" - }, - "AdminCreateUserConfig": { - "$ref": "#/definitions/AdminCreateUserConfig" - }, - "AliasAttributes": { - "items": { - "enum": [ - "email", - "phone_number", - "preferred_username" - ], - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Arn": { - "type": "string" - }, - "AutoVerifiedAttributes": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "DeviceConfiguration": { - "$ref": "#/definitions/DeviceConfiguration" - }, - "EmailConfiguration": { - "$ref": "#/definitions/EmailConfiguration" - }, - "EmailVerificationMessage": { - "type": "string" - }, - "EmailVerificationSubject": { - "type": "string" - }, - "EnabledMfas": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Id": { - "type": "string" - }, - "LambdaConfig": { - "$ref": "#/definitions/LambdaConfig" - }, - "MfaConfiguration": { - "enum": [ - "OFF", - "ON", - "OPTIONAL" - ], - "type": "string" - }, - "Policies": { - "$ref": "#/definitions/Policies" - }, - "ProviderName": { - "type": "string" - }, - "ProviderURL": { - "type": "string" - }, - "Schema": { - "items": { - "$ref": "#/definitions/SchemaAttribute" - }, - "type": "array", - "uniqueItems": false - }, - "SmsAuthenticationMessage": { - "type": "string" - }, - "SmsConfiguration": { - "$ref": "#/definitions/SmsConfiguration" - }, - "SmsVerificationMessage": { - "type": "string" - }, - "UserPoolAddOns": { - "$ref": "#/definitions/UserPoolAddOns" - }, - "UserPoolName": { - "type": "string" - }, - "UserPoolTags": { - "format": "json", - "type": [ - "object", - "string" - ] - }, - "UsernameAttributes": { - "items": { - "enum": [ - "email", - "phone_number" - ], - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "UsernameConfiguration": { - "$ref": "#/definitions/UsernameConfiguration" - }, - "VerificationMessageTemplate": { - "$ref": "#/definitions/VerificationMessageTemplate" - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Arn", - "/properties/ProviderName", - "/properties/ProviderURL" - ], - "typeName": "AWS::Cognito::UserPool" -} diff --git a/src/cfnlint/data/schemas/providers/ap_east_1/aws-cognito-userpoolclient.json b/src/cfnlint/data/schemas/providers/ap_east_1/aws-cognito-userpoolclient.json deleted file mode 100644 index ab5534da43..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_east_1/aws-cognito-userpoolclient.json +++ /dev/null @@ -1,166 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/UserPoolId", - "/properties/GenerateSecret" - ], - "definitions": { - "AnalyticsConfiguration": { - "additionalProperties": false, - "properties": { - "ApplicationId": { - "type": "string" - }, - "ExternalId": { - "type": "string" - }, - "RoleArn": { - "type": "string" - }, - "UserDataShared": { - "type": "boolean" - } - }, - "type": "object" - }, - "TokenValidityUnits": { - "additionalProperties": false, - "properties": { - "AccessToken": { - "type": "string" - }, - "IdToken": { - "type": "string" - }, - "RefreshToken": { - "type": "string" - } - }, - "type": "object" - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AccessTokenValidity": { - "type": "integer" - }, - "AllowedOAuthFlows": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "AllowedOAuthFlowsUserPoolClient": { - "type": "boolean" - }, - "AllowedOAuthScopes": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "AnalyticsConfiguration": { - "$ref": "#/definitions/AnalyticsConfiguration" - }, - "CallbackURLs": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "ClientName": { - "type": "string" - }, - "ClientSecret": { - "type": "string" - }, - "DefaultRedirectURI": { - "type": "string" - }, - "ExplicitAuthFlows": { - "items": { - "enum": [ - "ADMIN_NO_SRP_AUTH", - "ALLOW_ADMIN_USER_PASSWORD_AUTH", - "ALLOW_CUSTOM_AUTH", - "ALLOW_REFRESH_TOKEN_AUTH", - "ALLOW_USER_PASSWORD_AUTH", - "ALLOW_USER_SRP_AUTH", - "CUSTOM_AUTH_FLOW_ONLY", - "USER_PASSWORD_AUTH" - ], - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "GenerateSecret": { - "type": "boolean" - }, - "Id": { - "type": "string" - }, - "IdTokenValidity": { - "type": "integer" - }, - "LogoutURLs": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "Name": { - "type": "string" - }, - "PreventUserExistenceErrors": { - "type": "string" - }, - "ReadAttributes": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "RefreshTokenValidity": { - "maximum": 3650, - "minimum": 0, - "type": "integer" - }, - "SupportedIdentityProviders": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "TokenValidityUnits": { - "$ref": "#/definitions/TokenValidityUnits" - }, - "UserPoolId": { - "type": "string" - }, - "WriteAttributes": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id", - "/properties/Name", - "/properties/ClientSecret" - ], - "required": [ - "UserPoolId" - ], - "typeName": "AWS::Cognito::UserPoolClient" -} diff --git a/src/cfnlint/data/schemas/providers/ap_east_1/aws-cognito-userpoolgroup.json b/src/cfnlint/data/schemas/providers/ap_east_1/aws-cognito-userpoolgroup.json deleted file mode 100644 index 045cd8e244..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_east_1/aws-cognito-userpoolgroup.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/GroupName", - "/properties/UserPoolId" - ], - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Description": { - "type": "string" - }, - "GroupName": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "Precedence": { - "type": "number" - }, - "RoleArn": { - "type": "string" - }, - "UserPoolId": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "UserPoolId" - ], - "typeName": "AWS::Cognito::UserPoolGroup" -} diff --git a/src/cfnlint/data/schemas/providers/ap_east_1/aws-cognito-userpoolriskconfigurationattachment.json b/src/cfnlint/data/schemas/providers/ap_east_1/aws-cognito-userpoolriskconfigurationattachment.json deleted file mode 100644 index 3647784062..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_east_1/aws-cognito-userpoolriskconfigurationattachment.json +++ /dev/null @@ -1,182 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/UserPoolId", - "/properties/ClientId" - ], - "definitions": { - "AccountTakeoverActionType": { - "additionalProperties": false, - "properties": { - "EventAction": { - "type": "string" - }, - "Notify": { - "type": "boolean" - } - }, - "required": [ - "Notify", - "EventAction" - ], - "type": "object" - }, - "AccountTakeoverActionsType": { - "additionalProperties": false, - "properties": { - "HighAction": { - "$ref": "#/definitions/AccountTakeoverActionType" - }, - "LowAction": { - "$ref": "#/definitions/AccountTakeoverActionType" - }, - "MediumAction": { - "$ref": "#/definitions/AccountTakeoverActionType" - } - }, - "type": "object" - }, - "AccountTakeoverRiskConfigurationType": { - "additionalProperties": false, - "properties": { - "Actions": { - "$ref": "#/definitions/AccountTakeoverActionsType" - }, - "NotifyConfiguration": { - "$ref": "#/definitions/NotifyConfigurationType" - } - }, - "required": [ - "Actions" - ], - "type": "object" - }, - "CompromisedCredentialsActionsType": { - "additionalProperties": false, - "properties": { - "EventAction": { - "type": "string" - } - }, - "required": [ - "EventAction" - ], - "type": "object" - }, - "CompromisedCredentialsRiskConfigurationType": { - "additionalProperties": false, - "properties": { - "Actions": { - "$ref": "#/definitions/CompromisedCredentialsActionsType" - }, - "EventFilter": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "required": [ - "Actions" - ], - "type": "object" - }, - "NotifyConfigurationType": { - "additionalProperties": false, - "properties": { - "BlockEmail": { - "$ref": "#/definitions/NotifyEmailType" - }, - "From": { - "type": "string" - }, - "MfaEmail": { - "$ref": "#/definitions/NotifyEmailType" - }, - "NoActionEmail": { - "$ref": "#/definitions/NotifyEmailType" - }, - "ReplyTo": { - "type": "string" - }, - "SourceArn": { - "type": "string" - } - }, - "required": [ - "SourceArn" - ], - "type": "object" - }, - "NotifyEmailType": { - "additionalProperties": false, - "properties": { - "HtmlBody": { - "type": "string" - }, - "Subject": { - "type": "string" - }, - "TextBody": { - "type": "string" - } - }, - "required": [ - "Subject" - ], - "type": "object" - }, - "RiskExceptionConfigurationType": { - "additionalProperties": false, - "properties": { - "BlockedIPRangeList": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "SkippedIPRangeList": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": false - } - }, - "type": "object" - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "AccountTakeoverRiskConfiguration": { - "$ref": "#/definitions/AccountTakeoverRiskConfigurationType" - }, - "ClientId": { - "type": "string" - }, - "CompromisedCredentialsRiskConfiguration": { - "$ref": "#/definitions/CompromisedCredentialsRiskConfigurationType" - }, - "Id": { - "type": "string" - }, - "RiskExceptionConfiguration": { - "$ref": "#/definitions/RiskExceptionConfigurationType" - }, - "UserPoolId": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "UserPoolId", - "ClientId" - ], - "typeName": "AWS::Cognito::UserPoolRiskConfigurationAttachment" -} diff --git a/src/cfnlint/data/schemas/providers/ap_east_1/aws-cognito-userpooluser.json b/src/cfnlint/data/schemas/providers/ap_east_1/aws-cognito-userpooluser.json deleted file mode 100644 index 4f48fd800f..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_east_1/aws-cognito-userpooluser.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ClientMetadata", - "/properties/ValidationData", - "/properties/UserPoolId", - "/properties/MessageAction", - "/properties/ForceAliasCreation", - "/properties/DesiredDeliveryMediums", - "/properties/UserAttributes", - "/properties/Username" - ], - "definitions": { - "AttributeType": { - "additionalProperties": false, - "properties": { - "Name": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "type": "object" - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "ClientMetadata": { - "format": "json", - "type": [ - "object", - "string" - ] - }, - "DesiredDeliveryMediums": { - "items": { - "enum": [ - "EMAIL", - "SMS" - ], - "type": "string" - }, - "type": "array", - "uniqueItems": false - }, - "ForceAliasCreation": { - "type": "boolean" - }, - "Id": { - "type": "string" - }, - "MessageAction": { - "enum": [ - "RESEND", - "SUPPRESS" - ], - "type": "string" - }, - "UserAttributes": { - "items": { - "$ref": "#/definitions/AttributeType" - }, - "type": "array", - "uniqueItems": false - }, - "UserPoolId": { - "type": "string" - }, - "Username": { - "type": "string" - }, - "ValidationData": { - "items": { - "$ref": "#/definitions/AttributeType" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "UserPoolId" - ], - "typeName": "AWS::Cognito::UserPoolUser" -} diff --git a/src/cfnlint/data/schemas/providers/ap_east_1/aws-cognito-userpoolusertogroupattachment.json b/src/cfnlint/data/schemas/providers/ap_east_1/aws-cognito-userpoolusertogroupattachment.json deleted file mode 100644 index 036f8bcc8a..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_east_1/aws-cognito-userpoolusertogroupattachment.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/GroupName", - "/properties/UserPoolId", - "/properties/Username" - ], - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "GroupName": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "UserPoolId": { - "type": "string" - }, - "Username": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "GroupName", - "UserPoolId", - "Username" - ], - "typeName": "AWS::Cognito::UserPoolUserToGroupAttachment" -} diff --git a/src/cfnlint/data/schemas/providers/ap_east_1/aws-elasticache-parametergroup.json b/src/cfnlint/data/schemas/providers/ap_east_1/aws-elasticache-parametergroup.json deleted file mode 100644 index c524f26845..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_east_1/aws-elasticache-parametergroup.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/CacheParameterGroupFamily" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "CacheParameterGroupFamily": { - "type": "string" - }, - "Description": { - "type": "string" - }, - "Id": { - "type": "string" - }, - "Properties": { - "patternProperties": { - "[a-zA-Z0-9]+": { - "type": "string" - } - }, - "type": "object" - }, - "Tags": { - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - } - }, - "readOnlyProperties": [ - "/properties/Id" - ], - "required": [ - "Description", - "CacheParameterGroupFamily" - ], - "typeName": "AWS::ElastiCache::ParameterGroup" -} diff --git a/src/cfnlint/data/schemas/providers/ap_east_1/aws-elasticbeanstalk-environment.json b/src/cfnlint/data/schemas/providers/ap_east_1/aws-elasticbeanstalk-environment.json deleted file mode 100644 index 2fa4fe9b33..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_east_1/aws-elasticbeanstalk-environment.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/aws-cloudformation/cloudformation-resource-schema/master/src/main/resources/schema/provider.definition.schema.v1.json", - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/CNAMEPrefix", - "/properties/EnvironmentName", - "/properties/ApplicationName", - "/properties/SolutionStackName", - "/properties/Tier/Name", - "/properties/Tier/Type" - ], - "definitions": { - "OptionSetting": { - "additionalProperties": false, - "properties": { - "Namespace": { - "type": "string" - }, - "OptionName": { - "type": "string" - }, - "ResourceName": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Namespace", - "OptionName" - ], - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - }, - "Tier": { - "additionalProperties": false, - "properties": { - "Name": { - "type": "string" - }, - "Type": { - "type": "string" - }, - "Version": { - "type": "string" - } - }, - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "elasticbeanstalk:DescribeEnvironments", - "elasticbeanstalk:CreateEnvironment", - "iam:PassRole" - ], - "timeoutInMinutes": 120 - }, - "delete": { - "permissions": [ - "elasticbeanstalk:DescribeEnvironments", - "elasticbeanstalk:TerminateEnvironment" - ], - "timeoutInMinutes": 210 - }, - "list": { - "permissions": [ - "elasticbeanstalk:DescribeEnvironments" - ] - }, - "read": { - "permissions": [ - "elasticbeanstalk:DescribeEnvironments", - "elasticbeanstalk:DescribeConfigurationSettings", - "elasticbeanstalk:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "elasticbeanstalk:DescribeEnvironments", - "elasticbeanstalk:UpdateEnvironment", - "elasticbeanstalk:UpdateTagsForResource", - "elasticbeanstalk:AssociateEnvironmentOperationsRole", - "elasticbeanstalk:DisassociateEnvironmentOperationsRole", - "iam:PassRole" - ], - "timeoutInMinutes": 300 - } - }, - "primaryIdentifier": [ - "/properties/EnvironmentName" - ], - "properties": { - "ApplicationName": { - "type": "string" - }, - "CNAMEPrefix": { - "type": "string" - }, - "Description": { - "type": "string" - }, - "EndpointURL": { - "type": "string" - }, - "EnvironmentName": { - "type": "string" - }, - "OperationsRole": { - "type": "string" - }, - "OptionSettings": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/OptionSetting" - }, - "type": "array", - "uniqueItems": false - }, - "PlatformArn": { - "type": "string" - }, - "SolutionStackName": { - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "TemplateName": { - "type": "string" - }, - "Tier": { - "$ref": "#/definitions/Tier" - }, - "VersionLabel": { - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/EndpointURL" - ], - "required": [ - "ApplicationName" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::ElasticBeanstalk::Environment", - "writeOnlyProperties": [ - "/properties/TemplateName", - "/properties/OptionSettings", - "/properties/OptionSettings/*/OptionName", - "/properties/OptionSettings/*/ResourceName", - "/properties/OptionSettings/*/Namespace", - "/properties/OptionSettings/*/Value" - ] -} diff --git a/src/cfnlint/data/schemas/providers/ap_east_1/aws-iot-authorizer.json b/src/cfnlint/data/schemas/providers/ap_east_1/aws-iot-authorizer.json deleted file mode 100644 index 6f5075023c..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_east_1/aws-iot-authorizer.json +++ /dev/null @@ -1,127 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/SigningDisabled", - "/properties/AuthorizerName" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "iot:CreateAuthorizer", - "iot:DescribeAuthorizer", - "iot:TagResource", - "iot:ListTagsForResource" - ] - }, - "delete": { - "permissions": [ - "iot:UpdateAuthorizer", - "iot:DeleteAuthorizer", - "iot:DescribeAuthorizer" - ] - }, - "list": { - "permissions": [ - "iot:ListAuthorizers" - ] - }, - "read": { - "permissions": [ - "iot:DescribeAuthorizer", - "iot:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "iot:UpdateAuthorizer", - "iot:DescribeAuthorizer", - "iot:TagResource", - "iot:UntagResource", - "iot:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/AuthorizerName" - ], - "properties": { - "Arn": { - "type": "string" - }, - "AuthorizerFunctionArn": { - "type": "string" - }, - "AuthorizerName": { - "maxLength": 128, - "minLength": 1, - "pattern": "[\\w=,@-]+", - "type": "string" - }, - "EnableCachingForHttp": { - "type": "boolean" - }, - "SigningDisabled": { - "type": "boolean" - }, - "Status": { - "enum": [ - "ACTIVE", - "INACTIVE" - ], - "type": "string" - }, - "Tags": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - }, - "TokenKeyName": { - "type": "string" - }, - "TokenSigningPublicKeys": { - "additionalProperties": false, - "patternProperties": { - "[a-zA-Z0-9:_-]+": { - "maxLength": 5120, - "type": "string" - } - }, - "type": "object" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "AuthorizerFunctionArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::IoT::Authorizer" -} diff --git a/src/cfnlint/data/schemas/providers/ap_east_1/aws-iot-cacertificate.json b/src/cfnlint/data/schemas/providers/ap_east_1/aws-iot-cacertificate.json deleted file mode 100644 index eb632b3219..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_east_1/aws-iot-cacertificate.json +++ /dev/null @@ -1,173 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/VerificationCertificatePem", - "/properties/CertificateMode", - "/properties/CACertificatePem" - ], - "definitions": { - "RegistrationConfig": { - "additionalProperties": false, - "properties": { - "RoleArn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "arn:(aws[a-zA-Z-]*)?:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+", - "type": "string" - }, - "TemplateBody": { - "maxLength": 10240, - "minLength": 0, - "pattern": "[\\s\\S]*", - "type": "string" - }, - "TemplateName": { - "maxLength": 36, - "minLength": 1, - "pattern": "^[0-9A-Za-z_-]+$", - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 127, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 255, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "iam:GetRole", - "iam:PassRole", - "iot:RegisterCACertificate", - "iot:DescribeCACertificate", - "iot:TagResource", - "iot:ListTagsForResource" - ] - }, - "delete": { - "permissions": [ - "iot:UpdateCACertificate", - "iot:DeleteCACertificate", - "iot:DescribeCACertificate" - ] - }, - "list": { - "permissions": [ - "iot:ListCACertificates" - ] - }, - "read": { - "permissions": [ - "iot:DescribeCACertificate", - "iot:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "iam:GetRole", - "iam:PassRole", - "iot:UpdateCACertificate", - "iot:DescribeCACertificate", - "iot:TagResource", - "iot:UntagResource", - "iot:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/Id" - ], - "properties": { - "Arn": { - "type": "string" - }, - "AutoRegistrationStatus": { - "enum": [ - "ENABLE", - "DISABLE" - ], - "type": "string" - }, - "CACertificatePem": { - "maxLength": 65536, - "minLength": 1, - "pattern": "[\\s\\S]*", - "type": "string" - }, - "CertificateMode": { - "enum": [ - "DEFAULT", - "SNI_ONLY" - ], - "type": "string" - }, - "Id": { - "type": "string" - }, - "RegistrationConfig": { - "$ref": "#/definitions/RegistrationConfig" - }, - "RemoveAutoRegistration": { - "type": "boolean" - }, - "Status": { - "enum": [ - "ACTIVE", - "INACTIVE" - ], - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - }, - "VerificationCertificatePem": { - "maxLength": 65536, - "minLength": 1, - "pattern": "[\\s\\S]*", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/Id" - ], - "required": [ - "CACertificatePem", - "Status" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::IoT::CACertificate", - "writeOnlyProperties": [ - "/properties/VerificationCertificatePem", - "/properties/RemoveAutoRegistration" - ] -} diff --git a/src/cfnlint/data/schemas/providers/ap_east_1/aws-iot-certificateprovider.json b/src/cfnlint/data/schemas/providers/ap_east_1/aws-iot-certificateprovider.json deleted file mode 100644 index e0d97244bc..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_east_1/aws-iot-certificateprovider.json +++ /dev/null @@ -1,124 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/CertificateProviderName" - ], - "definitions": { - "CertificateProviderOperation": { - "enum": [ - "CreateCertificateFromCsr" - ], - "type": "string" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 127, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 255, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "iot:CreateCertificateProvider", - "iot:DescribeCertificateProvider", - "iot:TagResource", - "iot:ListTagsForResource" - ] - }, - "delete": { - "permissions": [ - "iot:DeleteCertificateProvider", - "iot:DescribeCertificateProvider" - ] - }, - "list": { - "permissions": [ - "iot:ListCertificateProviders" - ] - }, - "read": { - "permissions": [ - "iot:DescribeCertificateProvider", - "iot:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "iot:UpdateCertificateProvider", - "iot:DescribeCertificateProvider", - "iot:TagResource", - "iot:UntagResource", - "iot:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/CertificateProviderName" - ], - "properties": { - "AccountDefaultForOperations": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/CertificateProviderOperation" - }, - "maxItems": 1, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "Arn": { - "type": "string" - }, - "CertificateProviderName": { - "maxLength": 128, - "minLength": 1, - "pattern": "[\\w=,@-]+", - "type": "string" - }, - "LambdaFunctionArn": { - "maxLength": 170, - "minLength": 1, - "type": "string" - }, - "Tags": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Tag" - }, - "maxItems": 50, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "replacementStrategy": "delete_then_create", - "required": [ - "LambdaFunctionArn", - "AccountDefaultForOperations" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::IoT::CertificateProvider" -} diff --git a/src/cfnlint/data/schemas/providers/ap_east_1/aws-iot-domainconfiguration.json b/src/cfnlint/data/schemas/providers/ap_east_1/aws-iot-domainconfiguration.json deleted file mode 100644 index 6fb0a77acb..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_east_1/aws-iot-domainconfiguration.json +++ /dev/null @@ -1,223 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/DomainConfigurationName", - "/properties/DomainName", - "/properties/ServiceType", - "/properties/ValidationCertificateArn", - "/properties/ServerCertificateArns" - ], - "definitions": { - "AuthorizerConfig": { - "additionalProperties": false, - "properties": { - "AllowAuthorizerOverride": { - "type": "boolean" - }, - "DefaultAuthorizerName": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[\\w=,@-]+$", - "type": "string" - } - }, - "type": "object" - }, - "ServerCertificateConfig": { - "additionalProperties": false, - "properties": { - "EnableOCSPCheck": { - "type": "boolean" - } - }, - "type": "object" - }, - "ServerCertificateSummary": { - "additionalProperties": false, - "properties": { - "ServerCertificateArn": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^arn:aws(-cn|-us-gov|-iso-b|-iso)?:acm:[a-z]{2}-(gov-|iso-|isob-)?[a-z]{4,9}-\\d{1}:\\d{12}:certificate/[a-zA-Z0-9/-]+$", - "type": "string" - }, - "ServerCertificateStatus": { - "enum": [ - "INVALID", - "VALID" - ], - "type": "string" - }, - "ServerCertificateStatusDetail": { - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - }, - "TlsConfig": { - "additionalProperties": false, - "properties": { - "SecurityPolicy": { - "maxLength": 128, - "type": "string" - } - }, - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "iot:CreateDomainConfiguration", - "iot:UpdateDomainConfiguration", - "iot:DescribeDomainConfiguration", - "iot:TagResource", - "iot:ListTagsForResource", - "acm:GetCertificate" - ] - }, - "delete": { - "permissions": [ - "iot:DescribeDomainConfiguration", - "iot:DeleteDomainConfiguration", - "iot:UpdateDomainConfiguration" - ] - }, - "list": { - "permissions": [ - "iot:ListDomainConfigurations" - ] - }, - "read": { - "permissions": [ - "iot:DescribeDomainConfiguration", - "iot:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "iot:UpdateDomainConfiguration", - "iot:DescribeDomainConfiguration", - "iot:ListTagsForResource", - "iot:TagResource", - "iot:UntagResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/DomainConfigurationName" - ], - "properties": { - "Arn": { - "type": "string" - }, - "AuthorizerConfig": { - "$ref": "#/definitions/AuthorizerConfig" - }, - "DomainConfigurationName": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[\\w.-]+$", - "type": "string" - }, - "DomainConfigurationStatus": { - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string" - }, - "DomainName": { - "maxLength": 253, - "minLength": 1, - "type": "string" - }, - "DomainType": { - "enum": [ - "ENDPOINT", - "AWS_MANAGED", - "CUSTOMER_MANAGED" - ], - "type": "string" - }, - "ServerCertificateArns": { - "insertionOrder": true, - "items": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^arn:aws(-cn|-us-gov|-iso-b|-iso)?:acm:[a-z]{2}-(gov-|iso-|isob-)?[a-z]{4,9}-\\d{1}:\\d{12}:certificate/[a-zA-Z0-9/-]+$", - "type": "string" - }, - "maxItems": 1, - "minItems": 0, - "type": "array" - }, - "ServerCertificateConfig": { - "$ref": "#/definitions/ServerCertificateConfig" - }, - "ServerCertificates": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/ServerCertificateSummary" - }, - "type": "array" - }, - "ServiceType": { - "enum": [ - "DATA", - "CREDENTIAL_PROVIDER", - "JOBS" - ], - "type": "string" - }, - "Tags": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - }, - "TlsConfig": { - "$ref": "#/definitions/TlsConfig" - }, - "ValidationCertificateArn": { - "pattern": "^arn:aws(-cn|-us-gov|-iso-b|-iso)?:acm:[a-z]{2}-(gov-|iso-|isob-)?[a-z]{4,9}-\\d{1}:\\d{12}:certificate/[a-zA-Z0-9/-]+$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/DomainType", - "/properties/ServerCertificates" - ], - "required": [], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::IoT::DomainConfiguration", - "writeOnlyProperties": [ - "/properties/ValidationCertificateArn", - "/properties/ServerCertificateArns" - ] -} diff --git a/src/cfnlint/data/schemas/providers/ap_east_1/aws-iot-provisioningtemplate.json b/src/cfnlint/data/schemas/providers/ap_east_1/aws-iot-provisioningtemplate.json deleted file mode 100644 index 52368e152b..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_east_1/aws-iot-provisioningtemplate.json +++ /dev/null @@ -1,139 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/TemplateName", - "/properties/TemplateType" - ], - "definitions": { - "ProvisioningHook": { - "properties": { - "PayloadVersion": { - "type": "string" - }, - "TargetArn": { - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "required": [ - "Key", - "Value" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "iam:GetRole", - "iam:PassRole", - "iot:CreateProvisioningTemplate", - "iot:DescribeProvisioningTemplate", - "iot:TagResource", - "iot:ListTagsForResource" - ] - }, - "delete": { - "permissions": [ - "iot:DeleteProvisioningTemplate", - "iot:DescribeProvisioningTemplate" - ] - }, - "list": { - "permissions": [ - "iot:ListProvisioningTemplates" - ] - }, - "read": { - "permissions": [ - "iot:DescribeProvisioningTemplate", - "iot:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "iam:GetRole", - "iam:PassRole", - "iot:UpdateProvisioningTemplate", - "iot:CreateProvisioningTemplateVersion", - "iot:ListProvisioningTemplateVersions", - "iot:DeleteProvisioningTemplateVersion", - "iot:DescribeProvisioningTemplate", - "iot:TagResource", - "iot:UntagResource", - "iot:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/TemplateName" - ], - "properties": { - "Description": { - "maxLength": 500, - "type": "string" - }, - "Enabled": { - "type": "boolean" - }, - "PreProvisioningHook": { - "$ref": "#/definitions/ProvisioningHook" - }, - "ProvisioningRoleArn": { - "type": "string" - }, - "Tags": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - }, - "TemplateArn": { - "type": "string" - }, - "TemplateBody": { - "type": "string" - }, - "TemplateName": { - "maxLength": 36, - "minLength": 1, - "pattern": "^[0-9A-Za-z_-]+$", - "type": "string" - }, - "TemplateType": { - "enum": [ - "FLEET_PROVISIONING", - "JITP" - ], - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/TemplateArn" - ], - "required": [ - "ProvisioningRoleArn", - "TemplateBody" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::IoT::ProvisioningTemplate" -} diff --git a/src/cfnlint/data/schemas/providers/ap_east_1/aws-iot-rolealias.json b/src/cfnlint/data/schemas/providers/ap_east_1/aws-iot-rolealias.json deleted file mode 100644 index 6a2e419b45..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_east_1/aws-iot-rolealias.json +++ /dev/null @@ -1,123 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/RoleAlias" - ], - "definitions": { - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 127, - "minLength": 1, - "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", - "type": "string" - }, - "Value": { - "maxLength": 255, - "minLength": 1, - "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", - "type": "string" - } - }, - "required": [ - "Value", - "Key" - ], - "type": "object" - } - }, - "handlers": { - "create": { - "permissions": [ - "iam:GetRole", - "iam:PassRole", - "iot:CreateRoleAlias", - "iot:DescribeRoleAlias", - "iot:TagResource", - "iot:ListTagsForResource" - ] - }, - "delete": { - "permissions": [ - "iot:DeleteRoleAlias", - "iot:DescribeRoleAlias" - ] - }, - "list": { - "permissions": [ - "iot:ListRoleAliases" - ] - }, - "read": { - "permissions": [ - "iam:GetRole", - "iam:PassRole", - "iot:DescribeRoleAlias", - "iot:ListTagsForResource" - ] - }, - "update": { - "permissions": [ - "iam:GetRole", - "iam:PassRole", - "iot:UpdateRoleAlias", - "iot:DescribeRoleAlias", - "iot:TagResource", - "iot:UntagResource", - "iot:ListTagsForResource" - ] - } - }, - "primaryIdentifier": [ - "/properties/RoleAlias" - ], - "properties": { - "CredentialDurationSeconds": { - "default": 3600, - "maximum": 43200, - "minimum": 900, - "type": "integer" - }, - "RoleAlias": { - "maxLength": 128, - "minLength": 1, - "pattern": "[\\w=,@-]+", - "type": "string" - }, - "RoleAliasArn": { - "maxLength": 128, - "minLength": 1, - "pattern": "[\\w=,@-]+", - "type": "string" - }, - "RoleArn": { - "maxLength": 2048, - "minLength": 20, - "pattern": "arn:(aws[a-zA-Z-]*)?:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+", - "type": "string" - }, - "Tags": { - "insertionOrder": true, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array" - } - }, - "readOnlyProperties": [ - "/properties/RoleAliasArn" - ], - "required": [ - "RoleArn" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::IoT::RoleAlias" -} diff --git a/src/cfnlint/data/schemas/providers/ap_east_1/aws-lambda-function.json b/src/cfnlint/data/schemas/providers/ap_east_1/aws-lambda-function.json deleted file mode 100644 index 39009ea83f..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_east_1/aws-lambda-function.json +++ /dev/null @@ -1,559 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/FunctionName" - ], - "definitions": { - "Code": { - "additionalProperties": false, - "properties": { - "ImageUri": { - "type": "string" - }, - "S3Bucket": { - "maxLength": 63, - "minLength": 3, - "pattern": "^[0-9A-Za-z\\.\\-_]*(? Tuple[Any, Any]: """ Filter the schemas to only include the ones that are required @@ -104,7 +109,7 @@ def _filter_schemas(self, schema, validator: Validator) -> Tuple[Any, Any]: def filter(self, validator: Any, instance: Any, schema: Any): # Lets validate dynamic references when appropriate - if validator.is_type(instance, "string"): + if validator.is_type(instance, "string") and self.validate_dynamic_references: if REGEX_DYN_REF.findall(instance): # if we are in a function we can't validate # dynamic references the same way diff --git a/src/cfnlint/jsonschema/_keywords.py b/src/cfnlint/jsonschema/_keywords.py index fc3d2e1af2..3d9457225b 100644 --- a/src/cfnlint/jsonschema/_keywords.py +++ b/src/cfnlint/jsonschema/_keywords.py @@ -105,7 +105,14 @@ def anyOf( ) all_errors = [] for index, subschema in enumerate(anyOf): - errs = list(validator.descend(instance, subschema, schema_path=index)) + errs = [] + # warning and informational errors need to be returned but shouldn't + # be part of if the anyOf is valid + for err in validator.descend(instance, subschema, schema_path=index): + if err.rule is not None and not err.rule.id.startswith("E"): + yield err + continue + errs.append(err) if not errs: break all_errors.extend(errs) diff --git a/src/cfnlint/jsonschema/_resolvers_cfn.py b/src/cfnlint/jsonschema/_resolvers_cfn.py index 77edff1b6b..5c84aa3539 100644 --- a/src/cfnlint/jsonschema/_resolvers_cfn.py +++ b/src/cfnlint/jsonschema/_resolvers_cfn.py @@ -25,11 +25,11 @@ def ref(validator: Validator, instance: Any) -> ResolutionResult: if not isinstance(instance, (str, dict)): return - for instance, _, _ in validator.resolve_value(instance): + for instance, instance_validator, _ in validator.resolve_value(instance): if validator.is_type(instance, "string"): # if the ref is to pseudo-parameter or parameter we can validate the values - for v, c in validator.context.ref_value(instance): - yield v, validator.evolve(context=c), None + for v, c in instance_validator.context.ref_value(instance): + yield v, instance_validator.evolve(context=c), None return @@ -54,11 +54,13 @@ def find_in_map(validator: Validator, instance: Any) -> ResolutionResult: ), None default_value_found = True - if not default_value_found and not validator.context.mappings: + if not default_value_found and not validator.context.mappings.maps: + if validator.context.mappings.is_transform: + return yield None, validator, ValidationError( ( f"{instance[0]!r} is not one of " - f"{list(validator.context.mappings.keys())!r}" + f"{list(validator.context.mappings.maps.keys())!r}" ), path=deque([0]), ) @@ -71,13 +73,13 @@ def find_in_map(validator: Validator, instance: Any) -> ResolutionResult: ) and validator.is_type(instance[2], "string") ): - map = validator.context.mappings.get(instance[0]) + map = validator.context.mappings.maps.get(instance[0]) if map is None: if not default_value_found: yield None, validator, ValidationError( ( f"{instance[0]!r} is not one of " - f"{list(validator.context.mappings.keys())!r}" + f"{list(validator.context.mappings.maps.keys())!r}" ), path=deque([0]), ) diff --git a/src/cfnlint/jsonschema/validators.py b/src/cfnlint/jsonschema/validators.py index 0dcee07ae0..e6c5ada5a3 100644 --- a/src/cfnlint/jsonschema/validators.py +++ b/src/cfnlint/jsonschema/validators.py @@ -172,16 +172,23 @@ def resolve_value(self, instance: Any) -> ResolutionResult: for r_value, r_validator, r_errs in self._resolve_fn(key, value): # type: ignore if not r_errs: try: - if self.cfn.conditions.satisfiable( - r_validator.context.conditions.status, - r_validator.context.ref_values, + for _, region_context in r_validator.context.ref_value( + "AWS::Region" ): - yield r_value, r_validator, r_errs + if self.cfn.conditions.satisfiable( + region_context.conditions.status, + region_context.ref_values, + ): + yield r_value, r_validator.evolve( + context=region_context.evolve( + is_resolved_value=True, + ) + ), r_errs except UnknownSatisfisfaction as err: LOGGER.debug(err) return else: - yield None, self, r_errs # type: ignore + yield None, r_validator, r_errs # type: ignore return # The return type is a Protocol and we are returning an instance diff --git a/src/cfnlint/rules/functions/DynamicReference.py b/src/cfnlint/rules/functions/DynamicReference.py index 745e3c6bc8..7819ba0bf9 100644 --- a/src/cfnlint/rules/functions/DynamicReference.py +++ b/src/cfnlint/rules/functions/DynamicReference.py @@ -95,12 +95,17 @@ def dynamicReference( # SSM parameters can be used in Resources and Outputs and Parameters # SSM secrets are only used in a small number of locations # Secrets manager can be used only in resource properties + validator = validator.evolve( + function_filter=validator.function_filter.evolve( + add_cfn_lint_keyword=False, + ), + ) for v in REGEX_DYN_REF.findall(instance): parts = v.split(":") - evolved = validator.evolve(schema=_all) found = False + evolved = validator.evolve(schema=_all) for err in evolved.iter_errors(parts): yield self._clean_errors(err) found = True @@ -126,4 +131,3 @@ def dynamicReference( for err in evolved.iter_errors(parts): yield self._clean_errors(err) - found = True diff --git a/src/cfnlint/rules/functions/GetAtt.py b/src/cfnlint/rules/functions/GetAtt.py index 03e2020464..006bf1922c 100644 --- a/src/cfnlint/rules/functions/GetAtt.py +++ b/src/cfnlint/rules/functions/GetAtt.py @@ -102,10 +102,6 @@ def _resolve_getatt( yield err continue - # because of the complexities of schemas ($ref, anyOf, allOf, etc.) - # we will simplify the validator to just have a type check - # then we will provide a simple value to represent the type from the - # getAtt evolved = validator.evolve(schema=s) # type: ignore evolved.validators = { # type: ignore "type": validator.validators.get("type"), # type: ignore @@ -124,7 +120,6 @@ def _resolve_getatt( t, validator.context.regions ): getatt_schema = schema.resolver.resolve_cfn_pointer(pointer) - if not getatt_schema.get("type") or not s.get("type"): continue diff --git a/src/cfnlint/rules/functions/GetAttFormat.py b/src/cfnlint/rules/functions/GetAttFormat.py index a7fd660855..7495b2eb0c 100644 --- a/src/cfnlint/rules/functions/GetAttFormat.py +++ b/src/cfnlint/rules/functions/GetAttFormat.py @@ -30,6 +30,7 @@ def __init__(self): self._resource_type_exceptions = [ "AWS::CloudFormation::CustomResource", "AWS::CloudFormation::Stack", + "AWS::ServiceCatalog::CloudFormationProvisionedProduct", ] def validate( diff --git a/src/cfnlint/rules/functions/SubUnneeded.py b/src/cfnlint/rules/functions/SubUnneeded.py index 48c5acd1ad..dc7b908c23 100644 --- a/src/cfnlint/rules/functions/SubUnneeded.py +++ b/src/cfnlint/rules/functions/SubUnneeded.py @@ -7,7 +7,7 @@ import regex as re -from cfnlint.helpers import REGEX_SUB_PARAMETERS +from cfnlint.helpers import REGEX_SUB_PARAMETERS, ensure_list from cfnlint.jsonschema import ValidationError, ValidationResult, Validator from cfnlint.rules import CloudFormationLintRule @@ -24,6 +24,10 @@ class SubUnneeded(CloudFormationLintRule): def validate( self, validator: Validator, s: Any, instance: Any, schema: Any ) -> ValidationResult: + if "AWS::Serverless-2016-10-31" in ensure_list( + validator.cfn.transform_pre.get("Transform") + ): + return if validator.is_type(instance, "string"): variables = re.findall(REGEX_SUB_PARAMETERS, instance) path = [] diff --git a/src/cfnlint/rules/functions/_BaseFn.py b/src/cfnlint/rules/functions/_BaseFn.py index cc48f886eb..8385045e56 100644 --- a/src/cfnlint/rules/functions/_BaseFn.py +++ b/src/cfnlint/rules/functions/_BaseFn.py @@ -8,7 +8,7 @@ from collections import namedtuple from typing import Any, Tuple -from cfnlint.helpers import ToPy, ensure_list +from cfnlint.helpers import ToPy, ensure_list, is_types_compatible from cfnlint.jsonschema import ValidationError, ValidationResult, Validator from cfnlint.rules import CloudFormationLintRule @@ -62,7 +62,12 @@ def resolve( ) -> ValidationResult: key, _ = self.key_value(instance) - return_err: ValidationError | None = None + validator = validator.evolve( + context=validator.context.evolve( + strict_types=False, + ), + ) + all_errs = [] for value, v, resolve_err in validator.resolve_value(instance): if resolve_err: yield resolve_err @@ -80,16 +85,12 @@ def resolve( if not errs: return - return_err = errs[0] + for err in errs: + err.message = err.message.replace(f"{value!r}", f"{instance!r}") + err.message = f"{err.message} when {self.fn.name!r} is resolved" + all_errs.append(err) - if return_err: - return_err.message = return_err.message.replace( - f"{value!r}", f"{instance!r}" - ) - return_err.message = ( - f"{return_err.message} when {self.fn.name!r} is resolved" - ) - yield return_err + yield from iter(all_errs) def _resolve_ref(self, validator, schema) -> Any: @@ -118,7 +119,7 @@ def validate_fn_output_types( ) -> ValidationResult: tS = self.resolve_type(validator, s) if tS: - if not any(t in self.types for t in tS): + if not is_types_compatible(self.types, tS): reprs = ", ".join(repr(type) for type in tS) yield ValidationError(f"{instance!r} is not of type {reprs}") diff --git a/src/cfnlint/rules/jsonschema/CfnLintJsonSchema.py b/src/cfnlint/rules/jsonschema/CfnLintJsonSchema.py index e00f58ec51..8e3fda748c 100644 --- a/src/cfnlint/rules/jsonschema/CfnLintJsonSchema.py +++ b/src/cfnlint/rules/jsonschema/CfnLintJsonSchema.py @@ -67,7 +67,12 @@ def validate( schema = self._schema cfn_validator = self.extend_validator( - validator=validator, + validator=validator.evolve( + function_filter=validator.function_filter.evolve( + validate_dynamic_references=False, + add_cfn_lint_keyword=False, + ) + ), schema=schema, context=validator.context.evolve( functions=[], diff --git a/src/cfnlint/rules/mappings/Used.py b/src/cfnlint/rules/mappings/Used.py index af34cefbff..0c2488b3fc 100644 --- a/src/cfnlint/rules/mappings/Used.py +++ b/src/cfnlint/rules/mappings/Used.py @@ -4,6 +4,7 @@ """ from cfnlint._typing import RuleMatches +from cfnlint.helpers import is_function from cfnlint.rules import CloudFormationLintRule, RuleMatch from cfnlint.template import Template @@ -22,6 +23,12 @@ def match(self, cfn: Template) -> RuleMatches: findinmap_mappings = [] mappings = cfn.template.get("Mappings", {}) + k, _ = is_function(mappings) + if k == "Fn::Transform": + self.logger.debug( + (f"Mapping Name has a transform. Disabling check {self.id!r}"), + ) + return matches if mappings: # Get all "FindInMaps" that reference a Mapping diff --git a/src/cfnlint/rules/parameters/Configuration.py b/src/cfnlint/rules/parameters/Configuration.py index 5b80d4c21c..f7d62cd8ea 100644 --- a/src/cfnlint/rules/parameters/Configuration.py +++ b/src/cfnlint/rules/parameters/Configuration.py @@ -72,7 +72,7 @@ def validate(self, validator: Validator, _: Any, instance: Any, schema: Any): for err in super()._iter_errors(cfn_validator, instance): # we use enum twice. Once for the type and once for the property - # names. There are seperate error numbers so we do this. + # names. There are separate error numbers so we do this. if "propertyNames" in err.schema_path and "enum" in err.schema_path: err.rule = self yield err diff --git a/src/cfnlint/rules/parameters/Default.py b/src/cfnlint/rules/parameters/Default.py index 8d7f7dd62e..240cea7cae 100644 --- a/src/cfnlint/rules/parameters/Default.py +++ b/src/cfnlint/rules/parameters/Default.py @@ -6,6 +6,7 @@ import regex as re from cfnlint._typing import RuleMatches +from cfnlint.helpers import VALID_PARAMETER_TYPES_LIST from cfnlint.rules import CloudFormationLintRule, RuleMatch from cfnlint.template import Template @@ -127,8 +128,8 @@ def match_default_value(self, paramname, paramvalue, default_value): matches.extend(self.check_max_length(default_value, max_length, path)) return matches - def is_cdl(self, paramvalue): - return paramvalue.get("Type") == "CommaDelimitedList" + def is_list(self, paramvalue): + return paramvalue.get("Type") in VALID_PARAMETER_TYPES_LIST def match(self, cfn: Template) -> RuleMatches: matches = [] @@ -137,7 +138,7 @@ def match(self, cfn: Template) -> RuleMatches: param_cdl_matches = [] param_matches = [] default_value = paramvalue.get("Default") - if default_value is not None and self.is_cdl(paramvalue): + if default_value is not None and self.is_list(paramvalue): comma_delimited_default_values = [ x.strip() for x in default_value.split(",") ] @@ -146,7 +147,7 @@ def match(self, cfn: Template) -> RuleMatches: self.match_default_value(paramname, paramvalue, value) ) - if param_cdl_matches or not self.is_cdl(paramvalue): + if param_cdl_matches or not self.is_list(paramvalue): param_matches.extend( self.match_default_value(paramname, paramvalue, default_value) ) diff --git a/src/cfnlint/rules/resources/PrimaryIdentifiers.py b/src/cfnlint/rules/resources/PrimaryIdentifiers.py index 4dda66b073..bf3305c447 100644 --- a/src/cfnlint/rules/resources/PrimaryIdentifiers.py +++ b/src/cfnlint/rules/resources/PrimaryIdentifiers.py @@ -145,6 +145,9 @@ def match(self, cfn: Template) -> RuleMatches: # by the customer so if any primary identifiers are read # only we have to skip evaluation primary_ids = schema.schema.get("primaryIdentifier", []) + if not primary_ids: + continue + read_only_ids = schema.schema.get("readOnlyProperties", []) if any(id in read_only_ids for id in primary_ids): diff --git a/src/cfnlint/rules/resources/properties/Type.py b/src/cfnlint/rules/resources/properties/Type.py index 97daeb2c00..19ed7921b1 100644 --- a/src/cfnlint/rules/resources/properties/Type.py +++ b/src/cfnlint/rules/resources/properties/Type.py @@ -46,7 +46,9 @@ def type(self, validator, types, instance, schema): ): return - if self.config.get("strict") or validator.context.strict_types: + if ( + self.config.get("strict") or validator.context.strict_types + ) and not validator.context.is_resolved_value: validator = validator.evolve( context=validator.context.evolve(strict_types=True) ) diff --git a/src/cfnlint/rules/transforms/Configuration.py b/src/cfnlint/rules/transforms/Configuration.py new file mode 100644 index 0000000000..489c4d832a --- /dev/null +++ b/src/cfnlint/rules/transforms/Configuration.py @@ -0,0 +1,31 @@ +""" +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +SPDX-License-Identifier: MIT-0 +""" + +from __future__ import annotations + +import cfnlint.data.schemas.other.transforms +from cfnlint.rules.jsonschema.CfnLintJsonSchema import CfnLintJsonSchema, SchemaDetails + + +class Configuration(CfnLintJsonSchema): + """Check if Parameters are configured correctly""" + + id = "E1005" + shortdesc = "Validate Transform configuration" + description = ( + "Validate that the transforms section of a template is properly configured" + ) + source_url = "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/transform-section-structure.html" + tags = ["transform"] + + def __init__(self): + """Init""" + super().__init__( + keywords=["Transform"], + schema_details=SchemaDetails( + cfnlint.data.schemas.other.transforms, "configuration.json" + ), + all_matches=True, + ) diff --git a/src/cfnlint/rules/transforms/__init__.py b/src/cfnlint/rules/transforms/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/cfnlint/runner.py b/src/cfnlint/runner.py index 54b5aeac3b..b3da758d68 100644 --- a/src/cfnlint/runner.py +++ b/src/cfnlint/runner.py @@ -13,7 +13,7 @@ import cfnlint.formatters import cfnlint.maintenance -from cfnlint.config import ConfigMixIn +from cfnlint.config import ConfigMixIn, configure_logging from cfnlint.decode.decode import decode from cfnlint.rules import Match, Rules from cfnlint.rules.errors import ParseError, TransformError @@ -213,13 +213,15 @@ def __init__(self, config: ConfigMixIn) -> None: self.formatter = get_formatter(self.config) self.rules: Rules = Rules() self._get_rules() + # load registry schemas before patching + if self.config.registry_schemas: + for path in self.config.registry_schemas: + PROVIDER_SCHEMA_MANAGER.load_registry_schemas(path) + # now we can patch after loading all registry schemas if self.config.override_spec: PROVIDER_SCHEMA_MANAGER.patch( self.config.override_spec, self.config.regions ) - if self.config.registry_schemas: - for path in self.config.registry_schemas: - PROVIDER_SCHEMA_MANAGER.load_registry_schemas(path) def _get_rules(self) -> None: """ @@ -398,6 +400,9 @@ def cli(self) -> None: Raises: None: This function does not raise any exceptions. """ + # Add our logging configuration when running CLI + configure_logging(self.config.debug, self.config.info) + if self.config.update_specs: cfnlint.maintenance.update_resource_specs(self.config.force) sys.exit(0) diff --git a/src/cfnlint/schema/_getatts.py b/src/cfnlint/schema/_getatts.py index 22343251fd..7bf89339d1 100644 --- a/src/cfnlint/schema/_getatts.py +++ b/src/cfnlint/schema/_getatts.py @@ -253,6 +253,14 @@ def __init__(self, schema: "Schema") -> None: self._attrs["Outputs\\..*"] = "/properties/CfnLintStringType" return + if schema.type_name == "AWS::ServiceCatalog::CloudFormationProvisionedProduct": + for ro_attr in schema.schema.get("readOnlyProperties", []): + if ro_attr == "/properties/Outputs": + self._attrs["Outputs\\..*"] = "/properties/CfnLintStringType" + else: + self._attrs[self._pointer_to_attr(ro_attr)] = ro_attr + return + for unnamed_type in _unnamed_unknown_types: if schema.type_name.startswith(unnamed_type): self._attrs[".*"] = "/properties/CfnLintAllTypes" diff --git a/src/cfnlint/schema/manager.py b/src/cfnlint/schema/manager.py index eccd6f0f66..9f8886a82c 100644 --- a/src/cfnlint/schema/manager.py +++ b/src/cfnlint/schema/manager.py @@ -144,7 +144,7 @@ def _normalize_resource_type(self, resource_type: str) -> str: @lru_cache(maxsize=None) def get_resource_schema(self, region: str, resource_type: str) -> Schema: - """Get the provider resource shcema and cache it to speed up future lookups + """Get the provider resource schema and cache it to speed up future lookups Args: region (str): the region in which do get the provider schema for @@ -152,7 +152,8 @@ def get_resource_schema(self, region: str, resource_type: str) -> Schema: Returns: dict: returns the schema """ - resource_type = self._normalize_resource_type(resource_type) + if resource_type not in self._registry_schemas: + resource_type = self._normalize_resource_type(resource_type) if resource_type in self._removed_types: raise ResourceNotFoundError(resource_type, region) @@ -160,39 +161,40 @@ def get_resource_schema(self, region: str, resource_type: str) -> Schema: reg = ToPy(region) rt = ToPy(resource_type) - schema = self._schemas[reg.name].get(resource_type) - if schema is None: - # dynamically import the modules as needed - self._provider_schema_modules[reg.name] = __import__( - f"{self._root.module}.{reg.py}", fromlist=[""] - ) - # check cfn-lint provided schemas - if resource_type in self._registry_schemas: - self._schemas[reg.name][rt.name] = self._registry_schemas[rt.name] - return self._schemas[reg.name][rt.name] - - # load the schema - if f"{rt.provider}.json" in self._provider_schema_modules[reg.name].cached: - schema_cached = copy( - self.get_resource_schema( - region=self._region_primary.name, - resource_type=rt.name, - ) + schema = self._schemas[reg.name].get(rt.name) + if schema is not None: + return schema + + # dynamically import the modules as needed + self._provider_schema_modules[reg.name] = __import__( + f"{self._root.module}.{reg.py}", fromlist=[""] + ) + # check cfn-lint provided schemas + if rt.name in self._registry_schemas: + self._schemas[reg.name][rt.name] = self._registry_schemas[rt.name] + return self._schemas[reg.name][rt.name] + + # load the schema + if f"{rt.provider}.json" in self._provider_schema_modules[reg.name].cached: + schema_cached = copy( + self.get_resource_schema( + region=self._region_primary.name, + resource_type=rt.name, ) - schema_cached.is_cached = True - self._schemas[reg.name][rt.name] = schema_cached - return self._schemas[reg.name][rt.name] - try: - self._schemas[reg.name][rt.name] = Schema( - load_resource( - self._provider_schema_modules[reg.name], - filename=f"{rt.provider}.json", - ) + ) + schema_cached.is_cached = True + self._schemas[reg.name][rt.name] = schema_cached + return self._schemas[reg.name][rt.name] + try: + self._schemas[reg.name][rt.name] = Schema( + load_resource( + self._provider_schema_modules[reg.name], + filename=f"{rt.provider}.json", ) - except Exception as e: - raise ResourceNotFoundError(rt.name, region) from e + ) return self._schemas[reg.name][rt.name] - return schema + except Exception as e: + raise ResourceNotFoundError(rt.name, region) from e @lru_cache(maxsize=None) def get_resource_types(self, region: str) -> list[str]: @@ -368,23 +370,23 @@ def _update_provider_schema(self, region: str, force: bool = False) -> None: e, ) with open(f"{directory}__init__.py", encoding="utf-8", mode="w") as f: - f.write("from typing import List\n\n") - f.write("# pylint: disable=too-many-lines\ntypes = [\n") - for rt in all_types: + f.write("from __future__ import annotations\n\n") + f.write("# pylint: disable=too-many-lines\ntypes: list[str] = [\n") + for rt in sorted(all_types): f.write(f' "{rt}",\n') f.write( - "]\n\n# pylint: disable=too-many-lines\ncached: List[str] = [\n" + "]\n\n# pylint: disable=too-many-lines\ncached: list[str] = [\n" ) - for cache_file in cached: + for cache_file in sorted(cached): f.write(f' "{cache_file}",\n') f.write("]\n") else: with open(f"{directory}__init__.py", encoding="utf-8", mode="w") as f: - f.write("from typing import List\n\n") - f.write("# pylint: disable=too-many-lines\ntypes = [\n") - for rt in all_types: + f.write("from __future__ import annotations\n\n") + f.write("# pylint: disable=too-many-lines\ntypes: list[str] = [\n") + for rt in sorted(all_types): f.write(f' "{rt}",\n') - f.write("]\ncached: List[str] = []\n") + f.write("]\ncached: list[str] = []\n") except Exception as e: # pylint: disable=broad-except LOGGER.info("Issuing updating schemas for %s: %s", region, e) diff --git a/src/cfnlint/template/transforms/_sam.py b/src/cfnlint/template/transforms/_sam.py index 00fcf2956b..26fd206fa3 100644 --- a/src/cfnlint/template/transforms/_sam.py +++ b/src/cfnlint/template/transforms/_sam.py @@ -105,6 +105,8 @@ def _replace_local_codeuri(self): if k == "Ref": if v in self._template.get("Parameters"): self._parameters[v] = "Alias" + if isinstance(resource_dict.get("AutoPublishCodeSha256"), dict): + resource_dict["AutoPublishCodeSha256"] = "fakesha" if resource_type in ["AWS::Serverless::LayerVersion"]: if resource_dict.get("ContentUri"): Transform._update_to_s3_uri("ContentUri", resource_dict) diff --git a/src/cfnlint/version.py b/src/cfnlint/version.py index 1c32bb51a5..8098865dd9 100644 --- a/src/cfnlint/version.py +++ b/src/cfnlint/version.py @@ -3,4 +3,4 @@ SPDX-License-Identifier: MIT-0 """ -__version__ = "1.4.2" +__version__ = "1.6.1" diff --git a/test/fixtures/results/integration/dynamic-references.json b/test/fixtures/results/integration/dynamic-references.json new file mode 100644 index 0000000000..70ae3fd909 --- /dev/null +++ b/test/fixtures/results/integration/dynamic-references.json @@ -0,0 +1,31 @@ +[ + { + "Filename": "test/fixtures/templates/integration/dynamic-references.yaml", + "Id": "e019d69f-56db-cf2f-2bbb-f951c3bc9782", + "Level": "Error", + "Location": { + "End": { + "ColumnNumber": 21, + "LineNumber": 16 + }, + "Path": [ + "Resources", + "SESEventSourceMappingBadDynamicReference", + "Properties", + "EventSourceArn" + ], + "Start": { + "ColumnNumber": 7, + "LineNumber": 16 + } + }, + "Message": "'{{:ssm:/SQS_Queue/SQS_ARN}}' does not match 'arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\\\-])+:([a-z]{2}(-gov)?(-iso([a-z])?)?-[a-z]+-\\\\d{1})?:(\\\\d{12})?:(.*)'", + "ParentId": null, + "Rule": { + "Description": "Check if properties have a valid value in case of a pattern (Regular Expression)", + "Id": "E3031", + "ShortDescription": "Check if property values adhere to a specific pattern", + "Source": "https://github.com/aws-cloudformation/cfn-lint/blob/main/docs/cfn-schema-specification.md#pattern" + } + } +] diff --git a/test/fixtures/results/integration/good/resources-cloudformation-init.json b/test/fixtures/results/integration/resources-cloudformation-init.json similarity index 100% rename from test/fixtures/results/integration/good/resources-cloudformation-init.json rename to test/fixtures/results/integration/resources-cloudformation-init.json diff --git a/test/fixtures/results/public/watchmaker.json b/test/fixtures/results/public/watchmaker.json index cf754bb769..0cf1db900d 100644 --- a/test/fixtures/results/public/watchmaker.json +++ b/test/fixtures/results/public/watchmaker.json @@ -929,41 +929,6 @@ "Source": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-sub.html" } }, - { - "Filename": "test/fixtures/templates/public/watchmaker.json", - "Id": "c686663b-d84c-9054-d89b-e04373ffff7a", - "Level": "Error", - "Location": { - "End": { - "ColumnNumber": 46, - "LineNumber": 1374 - }, - "Path": [ - "Resources", - "WatchmakerInstance", - "Properties", - "BlockDeviceMappings", - 1, - "Fn::If", - 1, - "Ebs", - "VolumeSize", - "Ref" - ], - "Start": { - "ColumnNumber": 41, - "LineNumber": 1374 - } - }, - "Message": "{'Ref': 'AppVolumeSize'} is not of type 'integer' when 'Ref' is resolved", - "ParentId": null, - "Rule": { - "Description": "Making sure the Ref has a String value (no other functions are supported)", - "Id": "E1020", - "ShortDescription": "Ref validation of value", - "Source": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-ref.html" - } - }, { "Filename": "test/fixtures/templates/public/watchmaker.json", "Id": "913a07a4-0962-ced6-de7c-a1e4b678ecc9", diff --git a/test/fixtures/templates/bad/resources/primary_identifiers.yaml b/test/fixtures/templates/bad/resources/primary_identifiers.yaml index 95be3b5f2b..3aea9828ca 100644 --- a/test/fixtures/templates/bad/resources/primary_identifiers.yaml +++ b/test/fixtures/templates/bad/resources/primary_identifiers.yaml @@ -154,3 +154,11 @@ Resources: - !Ref 'AWS::NoValue' BadType: Type: !Ref AWS::Region + Module1: + Type: MyCompany::MODULE + Properties: + Attribute1: test + Module2: + Type: MyCompany::MODULE + Properties: + Attribute2: test diff --git a/test/fixtures/templates/good/resources_codepipeline.yaml b/test/fixtures/templates/good/resources_codepipeline.yaml index 0e33cba476..b95fae277d 100644 --- a/test/fixtures/templates/good/resources_codepipeline.yaml +++ b/test/fixtures/templates/good/resources_codepipeline.yaml @@ -9,7 +9,7 @@ Resources: ArtifactStore: Location: 'pipeline-bucket' Type: S3 - RoleArn: arn:aws:iam:::role/AWSCodePipelineRole + RoleArn: !Sub "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/AWSCodePipelineRole" Stages: - Name: Source Actions: diff --git a/test/fixtures/templates/good/transform/auto_publish_code_sha256.yaml b/test/fixtures/templates/good/transform/auto_publish_code_sha256.yaml new file mode 100644 index 0000000000..ef1446e69d --- /dev/null +++ b/test/fixtures/templates/good/transform/auto_publish_code_sha256.yaml @@ -0,0 +1,25 @@ +Transform: AWS::Serverless-2016-10-31 +Parameters: + Basepath: + Type: String + CodeBucket: + Type: String + GitCommit: + Type: String +Resources: + LambdaFunction: + Type: AWS::Serverless::Function + Properties: + AutoPublishAlias: live + AutoPublishCodeSha256: !Ref GitCommit + CodeUri: + Bucket: !Ref CodeBucket + Key: !Sub ${ Basepath }/lambda.zip + DeploymentPreference: + Enabled: false + FunctionName: !Sub ${ AWS::StackName } + Handler: lambda.handler + MemorySize: 256 + Runtime: python3.12 + Timeout: 30 + Tracing: PassThrough diff --git a/test/fixtures/templates/integration/dynamic-references.yaml b/test/fixtures/templates/integration/dynamic-references.yaml new file mode 100644 index 0000000000..cc9dc10042 --- /dev/null +++ b/test/fixtures/templates/integration/dynamic-references.yaml @@ -0,0 +1,31 @@ + +AWSTemplateFormatVersion: '2010-09-09' +Resources: + SESEventSourceMapping: + Type: AWS::Lambda::EventSourceMapping + Properties: + BatchSize: 10 + Enabled: true + EventSourceArn: '{{resolve:ssm:/SQS_Queue/SQS_ARN}}' + FunctionName: MyFunctionNameHere + SESEventSourceMappingBadDynamicReference: + Type: AWS::Lambda::EventSourceMapping + Properties: + BatchSize: 10 + Enabled: true + EventSourceArn: '{{:ssm:/SQS_Queue/SQS_ARN}}' + FunctionName: MyFunctionNameHere + Broker: + Type: AWS::AmazonMQ::Broker + Properties: + Users: + - Username: test + Password: '{{resolve:secretsmanager:MyRDSSecret:SecretString:password}}' + DeploymentMode: SINGLE_INSTANCE + EngineType: RABBITMQ + EngineVersion: test + # testing dynamic reference against the regional schema validation + HostInstanceType: '{{resolve:ssm:/SQS_Queue/SQS_ARN}}' + AutoMinorVersionUpgrade: true + BrokerName: test + PubliclyAccessible: false diff --git a/test/fixtures/templates/integration/good/resources-cloudformation-init.yaml b/test/fixtures/templates/integration/resources-cloudformation-init.yaml similarity index 100% rename from test/fixtures/templates/integration/good/resources-cloudformation-init.yaml rename to test/fixtures/templates/integration/resources-cloudformation-init.yaml diff --git a/test/integration/jsonschema/test_resources_cfn_init.py b/test/integration/test_integration_templates.py similarity index 70% rename from test/integration/jsonschema/test_resources_cfn_init.py rename to test/integration/test_integration_templates.py index e510447d88..87fd92938e 100644 --- a/test/integration/jsonschema/test_resources_cfn_init.py +++ b/test/integration/test_integration_templates.py @@ -14,15 +14,24 @@ class TestQuickStartTemplates(BaseCliTestCase): scenarios = [ { "filename": ( - "test/fixtures/templates/integration/good" + "test/fixtures/templates/integration" "/resources-cloudformation-init.yaml" ), "results_filename": ( "test/fixtures/results/integration/" - "good/resources-cloudformation-init.json" + "resources-cloudformation-init.json" ), "exit_code": 0, }, + { + "filename": ( + "test/fixtures/templates/integration" "/dynamic-references.yaml" + ), + "results_filename": ( + "test/fixtures/results/integration/" "dynamic-references.json" + ), + "exit_code": 2, + }, ] def test_templates(self): diff --git a/test/integration/test_schema_files.py b/test/integration/test_schema_files.py index e00bf3805a..8aa44d2e1e 100644 --- a/test/integration/test_schema_files.py +++ b/test/integration/test_schema_files.py @@ -51,6 +51,7 @@ class TestSchemaFiles(TestCase): "Resources/*/Type", "Resources/*/UpdatePolicy", "Resources/*/UpdateReplacePolicy", + "Transform", ] def setUp(self) -> None: diff --git a/test/unit/module/cfn_yaml/test_yaml.py b/test/unit/module/cfn_yaml/test_yaml.py index 1b60db93ab..7b67073f02 100644 --- a/test/unit/module/cfn_yaml/test_yaml.py +++ b/test/unit/module/cfn_yaml/test_yaml.py @@ -27,7 +27,7 @@ def setUp(self): }, "generic_bad": { "filename": "test/fixtures/templates/bad/generic.yaml", - "failures": 28, + "failures": 32, }, } diff --git a/test/unit/module/conditions/test_conditions.py b/test/unit/module/conditions/test_conditions.py index 9668c81190..4012a69fa2 100644 --- a/test/unit/module/conditions/test_conditions.py +++ b/test/unit/module/conditions/test_conditions.py @@ -216,47 +216,43 @@ def test_check_condition_region(self): cfn = Template("", template) self.assertEqual(len(cfn.conditions._conditions), 3) self.assertListEqual( - list(cfn.conditions.build_scenerios_on_region("IsUsEast1", "us-east-1")), + cfn.conditions.build_scenerios_on_region("IsUsEast1", "us-east-1"), [ True, ], ) self.assertListEqual( - list(cfn.conditions.build_scenerios_on_region("IsUsEast1", "us-west-2")), + cfn.conditions.build_scenerios_on_region("IsUsEast1", "us-west-2"), [ False, ], ) self.assertListEqual( - list(cfn.conditions.build_scenerios_on_region("IsUsWest2", "us-west-2")), + cfn.conditions.build_scenerios_on_region("IsUsWest2", "us-west-2"), [ True, ], ) self.assertListEqual( - list(cfn.conditions.build_scenerios_on_region("IsUsWest2", "us-east-1")), + cfn.conditions.build_scenerios_on_region("IsUsWest2", "us-east-1"), [ False, ], ) self.assertListEqual( - list(cfn.conditions.build_scenerios_on_region("IsProd", "us-east-1")), + cfn.conditions.build_scenerios_on_region("IsProd", "us-east-1"), [ True, False, ], ) self.assertListEqual( - list(cfn.conditions.build_scenerios_on_region("Foo", "us-east-1")), + cfn.conditions.build_scenerios_on_region("Foo", "us-east-1"), [ True, False, ], ) - self.assertListEqual( - list(cfn.conditions.build_scenerios_on_region({"Ref": "Foo"}, "us-east-1")), - [], - ) def test_test_condition(self): """Get condition and test""" diff --git a/test/unit/module/config/test_logging.py b/test/unit/module/config/test_logging.py index d8c0259bb2..5a32737327 100644 --- a/test/unit/module/config/test_logging.py +++ b/test/unit/module/config/test_logging.py @@ -37,5 +37,5 @@ def test_no_logging(self): """Test no logging level""" cfnlint.config.configure_logging(False, False) - self.assertEqual(logging.NOTSET, LOGGER.level) + self.assertEqual(logging.WARNING, LOGGER.level) self.assertEqual(len(LOGGER.handlers), 1) diff --git a/test/unit/module/context/test_create_context.py b/test/unit/module/context/test_create_context.py index 3c4e53bf41..4b798b997f 100644 --- a/test/unit/module/context/test_create_context.py +++ b/test/unit/module/context/test_create_context.py @@ -63,7 +63,7 @@ }, }, }, - _Counts(resources=1, parameters=1, conditions=0, mappings=1), + _Counts(resources=1, parameters=1, conditions=0, mappings=2), ), ( "Invalid mapping second key", @@ -75,7 +75,7 @@ "Map": {"us-east-1": {"foo": "bar"}}, }, }, - _Counts(resources=0, parameters=0, conditions=0, mappings=1), + _Counts(resources=0, parameters=0, conditions=0, mappings=2), ), ( "Invalid mapping third key", @@ -89,7 +89,7 @@ "Map": {"us-east-1": {"foo": "bar"}}, }, }, - _Counts(resources=0, parameters=0, conditions=0, mappings=1), + _Counts(resources=0, parameters=0, conditions=0, mappings=2), ), ], ) @@ -101,10 +101,15 @@ def test_create_context(name, instance, counts): if i == "conditions": assert len(context.conditions.conditions) == getattr(counts, i), ( f"Test {name} has {i} {len(getattr(context, i))} " - "and expected {getattr(counts, i)}" + f"and expected {getattr(counts, i)}" + ) + elif i == "mappings": + assert len(context.mappings.maps) == getattr(counts, i), ( + f"Test {name} has {i} {len(context.mappings.maps)} " + f"and expected {getattr(counts, i)}" ) else: assert len(getattr(context, i)) == getattr(counts, i), ( f"Test {name} has {i} {len(getattr(context, i))} " - "and expected {getattr(counts, i)}" + f"and expected {getattr(counts, i)}" ) diff --git a/test/unit/module/context/test_mappings.py b/test/unit/module/context/test_mappings.py index edf67b30f3..6769871ba9 100644 --- a/test/unit/module/context/test_mappings.py +++ b/test/unit/module/context/test_mappings.py @@ -5,7 +5,7 @@ import pytest -from cfnlint.context.context import Map +from cfnlint.context._mappings import Map, Mappings, _MappingSecondaryKey @pytest.mark.parametrize( @@ -17,7 +17,7 @@ ], ) def test_mapping_value(name, get_key_1, get_key_2, expected): - mapping = Map({"A": {"B": "C"}}) + mapping = Map.create_from_dict({"A": {"B": "C"}}) if isinstance(expected, Exception): with pytest.raises(type(expected)): @@ -27,10 +27,64 @@ def test_mapping_value(name, get_key_1, get_key_2, expected): def test_transforms(): - mapping = Map({"A": {"Fn::Transform": "C"}}) + mapping = Map.create_from_dict({"A": {"Fn::Transform": "C"}}) assert mapping.keys.get("A").is_transform is True - mapping = Map({"Fn::Transform": {"B": "C"}}) + mapping = Map.create_from_dict({"Fn::Transform": {"B": "C"}}) assert mapping.is_transform is True + + mapping = Mappings.create_from_dict({"Fn::Transform": {"B": {"C": "D"}}}) + + assert mapping.is_transform is True + + +@pytest.mark.parametrize( + "name,mappings,expected", + [ + ( + "Valid mappings", + { + "A": {"B": {"C": "D"}}, + "1": {"2": {"3": "4"}}, + "Z": [], + "9": {"8": []}, + "M": {"N": {"O": {"P": "Q"}}}, + }, + Mappings( + { + "A": Map({"B": _MappingSecondaryKey({"C": "D"})}), + "1": Map({"2": _MappingSecondaryKey({"3": "4"})}), + "Z": Map({}), + "9": Map({"8": _MappingSecondaryKey({})}), + "M": Map({"N": _MappingSecondaryKey({})}), + } + ), + ), + ( + "Valid mappings with transforms", + { + "A": {"Fn::Transform": "MyTransform"}, + "1": {"2": {"Fn::Transform": "MyTransform"}}, + }, + Mappings( + { + "A": Map({}, True), + "1": Map({"2": _MappingSecondaryKey({}, True)}), + } + ), + ), + ( + "Valid mappings with transforms for mappings", + { + "Fn::Transform": "MyTransform", + }, + Mappings({}, True), + ), + ], +) +def test_mapping_creation(name, mappings, expected): + results = Mappings.create_from_dict(mappings) + + assert results == expected, f"{name!r} failed got {results!r}" diff --git a/test/unit/module/context/test_transforms.py b/test/unit/module/context/test_transforms.py index a852cf7c42..451e9c8566 100644 --- a/test/unit/module/context/test_transforms.py +++ b/test/unit/module/context/test_transforms.py @@ -12,7 +12,11 @@ "name,instance,expected", [ ("Valid transforms", "AWS::LanguageExtensions", True), - ("Valid transforms lists", ["AWS::LanguageExtensions"], True), + ( + "Valid transforms lists", + ["AWS::LanguageExtensions", {"Name": "Include"}], + True, + ), ("Valid transforms lists", None, False), ("Valid transforms lists", "", False), ], @@ -23,14 +27,3 @@ def test_transforms(name, instance, expected): assert ( expected == transforms.has_language_extensions_transform() ), f"{name!r} test got {transforms.has_language_extensions_transform()}" - - -@pytest.mark.parametrize( - "name,instance", - [ - ("Invalid Type", {}), - ], -) -def test_errors(name, instance): - with pytest.raises(ValueError): - Transforms(instance) diff --git a/test/unit/module/jsonschema/test_keywords.py b/test/unit/module/jsonschema/test_keywords.py index ea3e968647..6849d53fe6 100644 --- a/test/unit/module/jsonschema/test_keywords.py +++ b/test/unit/module/jsonschema/test_keywords.py @@ -16,7 +16,6 @@ class Error(CloudFormationLintRule): id = "E1111" def validate(self, validator, s, instance, schema): - print(instance) if s: yield ValidationError( "Error", @@ -24,12 +23,23 @@ def validate(self, validator, s, instance, schema): ) +class Warning(CloudFormationLintRule): + id = "W1111" + + def validate(self, validator, s, instance, schema): + yield ValidationError( + "Warning", + rule=self, + ) + + @pytest.fixture def validator(): validator = CfnTemplateValidator(schema={}) validator = validator.extend( validators={ "error": Error().validate, + "warning": Warning().validate, } ) return validator({}) @@ -78,6 +88,34 @@ def validator(): ), ], ), + ( + "Valid anyOf with a warning validation error", + "foo", + [{"warning": True}, {"error": True}], + [ + ValidationError( + "Warning", + rule=Warning(), + path=deque([]), + validator="warning", + schema_path=deque([0, "warning"]), + ), + ], + ), + ( + "Valid anyOf with a warning validation error", + "foo", + [{"error": True}, {"warning": True}], + [ + ValidationError( + "Warning", + rule=Warning(), + path=deque([]), + validator="warning", + schema_path=deque([1, "warning"]), + ), + ], + ), ], ) def test_anyof(name, instance, schema, validator, expected): diff --git a/test/unit/module/jsonschema/test_resolvers_cfn.py b/test/unit/module/jsonschema/test_resolvers_cfn.py index 4d08460123..dd647c8e37 100644 --- a/test/unit/module/jsonschema/test_resolvers_cfn.py +++ b/test/unit/module/jsonschema/test_resolvers_cfn.py @@ -7,7 +7,8 @@ import pytest -from cfnlint.context.context import Context, Map +from cfnlint.context._mappings import Mappings +from cfnlint.context.context import Context from cfnlint.jsonschema import ValidationError from cfnlint.jsonschema.validators import CfnTemplateValidator @@ -20,10 +21,6 @@ def _resolve(name, instance, expected_results, **kwargs): for i, (instance, v, errors) in enumerate(resolutions): assert instance == expected_results[i][0] assert v.context.path.value_path == expected_results[i][1] - if errors: - print(errors.validator) - print(errors.path) - print(errors.schema_path) assert errors == expected_results[i][2] @@ -182,8 +179,9 @@ def test_resolvers_ref(name, instance, response): ], ) def test_invalid_functions(name, instance, response): - context = Context() - context.mappings["foo"] = Map({"first": {"second": "bar"}}) + context = Context( + mappings=Mappings.create_from_dict({"foo": {"first": {"second": "bar"}}}) + ) _resolve(name, instance, response, context=context) @@ -330,11 +328,15 @@ def test_invalid_functions(name, instance, response): ], ) def test_valid_functions(name, instance, response): - context = Context() - context.mappings["foo"] = Map({"first": {"second": "bar"}}) - context.mappings["transformFirstKey"] = Map({"Fn::Transform": {"second": "bar"}}) - context.mappings["transformSecondKey"] = Map({"first": {"Fn::Transform": "bar"}}) - + context = Context( + mappings=Mappings.create_from_dict( + { + "foo": {"first": {"second": "bar"}}, + "transformFirstKey": {"Fn::Transform": {"second": "bar"}}, + "transformSecondKey": {"first": {"Fn::Transform": "bar"}}, + } + ) + ) _resolve(name, instance, response, context=context) diff --git a/test/unit/module/runner/test_cli.py b/test/unit/module/runner/test_cli.py index ac9831a731..5d3f3f7244 100644 --- a/test/unit/module/runner/test_cli.py +++ b/test/unit/module/runner/test_cli.py @@ -3,16 +3,24 @@ SPDX-License-Identifier: MIT-0 """ +import logging from test.testlib.testcase import BaseTestCase from unittest.mock import patch from cfnlint import ConfigMixIn from cfnlint.runner import Runner +LOGGER = logging.getLogger("cfnlint") + class TestCli(BaseTestCase): """Test CLI with config""" + def tearDown(self): + """Setup""" + for handler in LOGGER.handlers: + LOGGER.removeHandler(handler) + @patch("cfnlint.maintenance.update_documentation") def test_update_documentation(self, mock_maintenance): config = ConfigMixIn(["--update-documentation"]) diff --git a/test/unit/module/runner/test_runner.py b/test/unit/module/runner/test_runner.py index d3d599239e..60290d37b8 100644 --- a/test/unit/module/runner/test_runner.py +++ b/test/unit/module/runner/test_runner.py @@ -3,110 +3,93 @@ SPDX-License-Identifier: MIT-0 """ -from test.testlib.testcase import BaseTestCase +from unittest.mock import patch -import cfnlint.decode.cfn_json # pylint: disable=E0401 -import cfnlint.decode.cfn_yaml # pylint: disable=E0401 -from cfnlint import ConfigMixIn -from cfnlint.config import _DEFAULT_RULESDIR -from cfnlint.rules import Rules -from cfnlint.runner import TemplateRunner +import pytest +from cfnlint.config import ConfigMixIn +from cfnlint.runner import PROVIDER_SCHEMA_MANAGER, Runner +from cfnlint.schema import Schema -class TestRunner(BaseTestCase): - """Test Duplicates Parsing""" - def setUp(self): - """SetUp template object""" - self.rules = Rules.create_from_directory(_DEFAULT_RULESDIR) - (self.template, _) = cfnlint.decode.decode_str( - """ - AWSTemplateFormatVersion: "2010-09-09" - Description: > - Template with all error levels: Warning, Error and Informational - # Adding in an issue outside of the Resources for validating - Conditions: - IsUsEast1: !Equals ["a", "b", "c"] - Resources: - myTable: - Metadata: - cfn-lint: - config: - ignore_checks: - - I3011 - - W1020 - - E8003 # condition error # - Type: "AWS::DynamoDB::Table" - Properties: - TableName: !Sub "TableName" - AttributeDefinitions: - - AttributeName: "Id" - AttributeType: "S" # Valid AllowedValue - KeySchema: - - AttributeName: "Id" - KeyType: "HASH" - ProvisionedThroughput: - ReadCapacityUnits: 5 - WriteCapacityUnits: "5" - myTable2: - # With no ignore_checks so we - # should still get issues from this - Type: "AWS::DynamoDB::Table" - Properties: - TableName: !Sub "TableName1" - AttributeDefinitions: - - AttributeName: "Id" - AttributeType: "S" # Valid AllowedValue - KeySchema: - - AttributeName: "Id" - KeyType: "HASH" - ProvisionedThroughput: - ReadCapacityUnits: !If [IsUsEast1, 5, 5] - WriteCapacityUnits: "5" - """ +def patch_registry(path): + PROVIDER_SCHEMA_MANAGER._registry_schemas = { + "Foo::Bar::MODULE": Schema( + { + "typeName": "Foo::Bar::MODULE", + "properties": { + "Foo": { + "type": "string", + }, + "Bar": { + "type": "string", + }, + }, + "primaryIdentifiers": [], + } ) + } - def test_runner(self): - """Success test""" - runner = TemplateRunner( - filename=None, - template=self.template, - config=ConfigMixIn( - regions=["us-east-1"], - include_checks=["I"], - include_experimental=True, - ), - rules=self.rules, - ) - failures = list(runner.run()) - self.assertEqual(len(failures), 4, "Got failures {}".format(failures)) - def test_runner_mandatory_rules(self): - """Success test""" - runner = TemplateRunner( - filename=None, - template=self.template, - config=ConfigMixIn( - mandatory_checks=["W1020"], - regions=["us-east-1"], - include_checks=["I"], - include_experimental=True, - ), - rules=self.rules, - ) - failures = list(runner.run()) - self.assertEqual(len(failures), 5, "Got failures {}".format(failures)) +def patch_schema(path, regions): + PROVIDER_SCHEMA_MANAGER._registry_schemas["Foo::Bar::MODULE"].schema[ + "primaryIdentifiers" + ] = ["/properties/Foo"] - runner = TemplateRunner( - filename=None, - template=self.template, - config=ConfigMixIn( - mandatory_checks=["W9000"], - regions=["us-east-1"], - include_checks=["I"], - include_experimental=True, - ), - rules=self.rules, - ) - failures = list(runner.run()) - self.assertEqual(len(failures), 4, "Got failures {}".format(failures)) + +@pytest.mark.parametrize( + "name,registry_path,patch_path,expected", + [ + ( + "Test no changes to the schema", + None, + None, + False, + ), + ( + "Test patching registry resources", + "path/to/registry/schemas", + "patch.json", + False, + ), + ( + "Test registry resource with no patching", + "path/to/registry/schemas", + None, + False, + ), + ], +) +def test_init_schemas(name, registry_path, patch_path, expected): + params = [] + if registry_path: + params.extend(["--registry-schemas", "path/to/registry/schemas"]) + if patch_path: + params.extend(["--override-spec", "patch.json"]) + config = ConfigMixIn(params) + + with patch.object( + PROVIDER_SCHEMA_MANAGER, "load_registry_schemas", new=patch_registry + ): + with patch.object(PROVIDER_SCHEMA_MANAGER, "patch", new=patch_schema): + Runner(config) + + if registry_path: + assert "Foo::Bar::MODULE" in PROVIDER_SCHEMA_MANAGER.get_resource_types( + "us-east-1" + ) + schema = PROVIDER_SCHEMA_MANAGER.get_resource_schema( + "us-east-1", "Foo::Bar::MODULE" + ) + if patch_path: + assert schema.schema["primaryIdentifiers"] == ["/properties/Foo"] + else: + assert schema.schema["primaryIdentifiers"] == [] + else: + assert ( + "Foo::Bar::MODULE" + not in PROVIDER_SCHEMA_MANAGER.get_resource_types("us-east-1") + ) + + PROVIDER_SCHEMA_MANAGER._registry_schemas = {} + PROVIDER_SCHEMA_MANAGER.reset() diff --git a/test/unit/module/runner/test_template_runner.py b/test/unit/module/runner/test_template_runner.py new file mode 100644 index 0000000000..d3d599239e --- /dev/null +++ b/test/unit/module/runner/test_template_runner.py @@ -0,0 +1,112 @@ +""" +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +SPDX-License-Identifier: MIT-0 +""" + +from test.testlib.testcase import BaseTestCase + +import cfnlint.decode.cfn_json # pylint: disable=E0401 +import cfnlint.decode.cfn_yaml # pylint: disable=E0401 +from cfnlint import ConfigMixIn +from cfnlint.config import _DEFAULT_RULESDIR +from cfnlint.rules import Rules +from cfnlint.runner import TemplateRunner + + +class TestRunner(BaseTestCase): + """Test Duplicates Parsing""" + + def setUp(self): + """SetUp template object""" + self.rules = Rules.create_from_directory(_DEFAULT_RULESDIR) + (self.template, _) = cfnlint.decode.decode_str( + """ + AWSTemplateFormatVersion: "2010-09-09" + Description: > + Template with all error levels: Warning, Error and Informational + # Adding in an issue outside of the Resources for validating + Conditions: + IsUsEast1: !Equals ["a", "b", "c"] + Resources: + myTable: + Metadata: + cfn-lint: + config: + ignore_checks: + - I3011 + - W1020 + - E8003 # condition error # + Type: "AWS::DynamoDB::Table" + Properties: + TableName: !Sub "TableName" + AttributeDefinitions: + - AttributeName: "Id" + AttributeType: "S" # Valid AllowedValue + KeySchema: + - AttributeName: "Id" + KeyType: "HASH" + ProvisionedThroughput: + ReadCapacityUnits: 5 + WriteCapacityUnits: "5" + myTable2: + # With no ignore_checks so we + # should still get issues from this + Type: "AWS::DynamoDB::Table" + Properties: + TableName: !Sub "TableName1" + AttributeDefinitions: + - AttributeName: "Id" + AttributeType: "S" # Valid AllowedValue + KeySchema: + - AttributeName: "Id" + KeyType: "HASH" + ProvisionedThroughput: + ReadCapacityUnits: !If [IsUsEast1, 5, 5] + WriteCapacityUnits: "5" + """ + ) + + def test_runner(self): + """Success test""" + runner = TemplateRunner( + filename=None, + template=self.template, + config=ConfigMixIn( + regions=["us-east-1"], + include_checks=["I"], + include_experimental=True, + ), + rules=self.rules, + ) + failures = list(runner.run()) + self.assertEqual(len(failures), 4, "Got failures {}".format(failures)) + + def test_runner_mandatory_rules(self): + """Success test""" + runner = TemplateRunner( + filename=None, + template=self.template, + config=ConfigMixIn( + mandatory_checks=["W1020"], + regions=["us-east-1"], + include_checks=["I"], + include_experimental=True, + ), + rules=self.rules, + ) + failures = list(runner.run()) + self.assertEqual(len(failures), 5, "Got failures {}".format(failures)) + + runner = TemplateRunner( + filename=None, + template=self.template, + config=ConfigMixIn( + mandatory_checks=["W9000"], + regions=["us-east-1"], + include_checks=["I"], + include_experimental=True, + ), + rules=self.rules, + ) + failures = list(runner.run()) + self.assertEqual(len(failures), 4, "Got failures {}".format(failures)) diff --git a/test/unit/module/schema/test_manager.py b/test/unit/module/schema/test_manager.py index 932ee5c825..dd50be42d9 100644 --- a/test/unit/module/schema/test_manager.py +++ b/test/unit/module/schema/test_manager.py @@ -271,3 +271,15 @@ def test_removed_types(self): with self.assertRaises(ResourceNotFoundError): self.manager.get_resource_schema(region, rt) + + def test_type_normalization(self): + + rt = "MyCompany::MODULE" + schema = self.manager.get_resource_schema("us-east-1", rt) + + assert schema.schema.get("typeName") == "Module" + + self.manager.get_resource_schema.cache_clear() + self.manager._registry_schemas[rt] = True + schema = self.manager.get_resource_schema("us-east-1", rt) + assert schema is True diff --git a/test/unit/module/schema/test_schema.py b/test/unit/module/schema/test_schema.py index 94d3bbbff1..10a10c8baa 100644 --- a/test/unit/module/schema/test_schema.py +++ b/test/unit/module/schema/test_schema.py @@ -142,7 +142,6 @@ def resource_vpc_schema(): def test_vpc_schema(resource_vpc_schema): - schema = Schema(schema=resource_vpc_schema) assert list(schema.get_atts.keys()) == [ "CidrBlock", @@ -161,3 +160,155 @@ def test_vpc_schema(resource_vpc_schema): assert schema.get_atts["VpcId"] == "/properties/VpcId" assert schema.get_atts["CidrBlock"] == "/properties/CidrBlock" assert schema.get_atts["Ipv6CidrBlocks"] == "/properties/Ipv6CidrBlocks" + + +@pytest.fixture +def resource_servicecatalog_schema(): + return { + "additionalProperties": False, + "createOnlyProperties": [ + "/properties/NotificationArns", + "/properties/ProvisionedProductName", + ], + "definitions": { + "OutputType": {"type": "string"}, + "ProvisioningParameter": { + "additionalProperties": False, + "properties": { + "Key": {"maxLength": 1000, "minLength": 1, "type": "string"}, + "Value": {"maxLength": 4096, "type": "string"}, + }, + "required": ["Key", "Value"], + "type": "object", + }, + "ProvisioningPreferences": { + "additionalProperties": False, + "properties": { + "StackSetAccounts": { + "items": {"pattern": "^[0-9]{12}$", "type": "string"}, + "type": "array", + "uniqueItems": True, + }, + "StackSetFailureToleranceCount": {"minimum": 0, "type": "integer"}, + "StackSetFailureTolerancePercentage": { + "maximum": 100, + "minimum": 0, + "type": "integer", + }, + "StackSetMaxConcurrencyCount": {"minimum": 1, "type": "integer"}, + "StackSetMaxConcurrencyPercentage": { + "maximum": 100, + "minimum": 1, + "type": "integer", + }, + "StackSetOperationType": { + "enum": ["CREATE", "UPDATE", "DELETE"], + "type": "string", + }, + "StackSetRegions": { + "items": { + "pattern": "^[a-z]{2}-([a-z]+-)+[1-9]", + "type": "string", + }, + "type": "array", + "uniqueItems": True, + }, + }, + "type": "object", + }, + "Tag": { + "additionalProperties": False, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", + "type": "string", + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$", + "type": "string", + }, + }, + "required": ["Key", "Value"], + "type": "object", + }, + }, + "documentationUrl": "https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-cloudformationprovisionedproduct.html", + "handlers": { + "create": {"permissions": ["*"], "timeoutInMinutes": 720}, + "delete": {"permissions": ["*"]}, + "read": {"permissions": ["*"]}, + "update": {"permissions": ["*"], "timeoutInMinutes": 720}, + }, + "primaryIdentifier": ["/properties/ProvisionedProductId"], + "properties": { + "AcceptLanguage": {"enum": ["en", "jp", "zh"], "type": "string"}, + "CloudformationStackArn": { + "maxLength": 256, + "minLength": 1, + "type": "string", + }, + "NotificationArns": { + "items": {"type": "string"}, + "maxItems": 5, + "type": "array", + "uniqueItems": True, + }, + "Outputs": { + "additionalProperties": False, + "maxProperties": 100, + "patternProperties": { + "^[A-Za-z0-9]{1,64}$": {"$ref": "#/definitions/OutputType"} + }, + "type": "object", + }, + "PathId": {"maxLength": 100, "minLength": 1, "type": "string"}, + "PathName": {"maxLength": 100, "minLength": 1, "type": "string"}, + "ProductId": {"maxLength": 100, "minLength": 1, "type": "string"}, + "ProductName": {"maxLength": 128, "minLength": 1, "type": "string"}, + "ProvisionedProductId": {"maxLength": 50, "minLength": 1, "type": "string"}, + "ProvisionedProductName": { + "maxLength": 128, + "minLength": 1, + "type": "string", + }, + "ProvisioningArtifactId": { + "maxLength": 100, + "minLength": 1, + "type": "string", + }, + "ProvisioningArtifactName": {"type": "string"}, + "ProvisioningParameters": { + "items": {"$ref": "#/definitions/ProvisioningParameter"}, + "type": "array", + }, + "ProvisioningPreferences": { + "$ref": "#/definitions/ProvisioningPreferences" + }, + "RecordId": {"maxLength": 50, "minLength": 1, "type": "string"}, + "Tags": {"items": {"$ref": "#/definitions/Tag"}, "type": "array"}, + }, + "readOnlyProperties": [ + "/properties/RecordId", + "/properties/CloudformationStackArn", + "/properties/Outputs", + "/properties/ProvisionedProductId", + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", + "typeName": "AWS::ServiceCatalog::CloudFormationProvisionedProduct", + } + + +def test_servicecatalog_cloudformation_schema(resource_servicecatalog_schema): + + schema = Schema(schema=resource_servicecatalog_schema) + assert list(schema.get_atts.keys()) == [ + "RecordId", + "CloudformationStackArn", + "Outputs\\..*", + "ProvisionedProductId", + ] + assert schema.get_atts["Outputs.Example"] == "/properties/CfnLintStringType" diff --git a/test/unit/module/test_rules_collections.py b/test/unit/module/test_rules_collections.py index 46e8aac53a..e9782d61ef 100644 --- a/test/unit/module/test_rules_collections.py +++ b/test/unit/module/test_rules_collections.py @@ -69,7 +69,7 @@ def test_fail_run(self): filename = "test/fixtures/templates/bad/generic.yaml" template = cfnlint.decode.cfn_yaml.load(filename) cfn = Template(filename, template, ["us-east-1"]) - expected_err_count = 31 + expected_err_count = 35 matches = [] matches.extend(self.rules.run(filename, cfn)) assert ( diff --git a/test/unit/module/transform/test_transform.py b/test/unit/module/transform/test_transform.py index 333b58443e..a291a58b4b 100644 --- a/test/unit/module/transform/test_transform.py +++ b/test/unit/module/transform/test_transform.py @@ -118,3 +118,37 @@ def test_sam_with_language_extension(self): transformed_template = Transform(filename, template, region) results = transformed_template.transform_template() self.assertEqual(results, []) + + def test_parameter_for_autopublish_code_sha256(self): + filename = ( + "test/fixtures/templates/good/transform/auto_publish_code_sha256.yaml" + ) + region = "us-east-1" + template = cfn_yaml.load(filename) + transformed_template = Transform(filename, template, region) + transformed_template.transform_template() + self.assertDictEqual(transformed_template._parameters, {}) + self.assertDictEqual( + transformed_template._template.get("Resources") + .get("LambdaFunction") + .get("Properties"), + { + "Code": { + "S3Bucket": {"Ref": "CodeBucket"}, + "S3Key": {"Fn::Sub": "${ Basepath }/lambda.zip"}, + }, + "Description": "fakesha", + "FunctionName": {"Fn::Sub": "${ AWS::StackName }"}, + "Handler": "lambda.handler", + "MemorySize": 256, + "Role": {"Fn::GetAtt": ["LambdaFunctionRole", "Arn"]}, + "Runtime": "python3.12", + "Tags": [{"Key": "lambda:createdBy", "Value": "SAM"}], + "Timeout": 30, + "TracingConfig": {"Mode": "PassThrough"}, + }, + ) + self.assertIn( + "LambdaFunctionVersionfakesha", + transformed_template._template.get("Resources").keys(), + ) diff --git a/test/unit/rules/__init__.py b/test/unit/rules/__init__.py index c1970fd040..ba28f38cb9 100644 --- a/test/unit/rules/__init__.py +++ b/test/unit/rules/__init__.py @@ -56,5 +56,7 @@ def helper_file_negative(self, filename, err_count, config=None): self.assertEqual( err_count, len(failures), - "Expected {} failures but got {} on {}".format(0, failures, filename), + "Expected {} failures but got {} on {}".format( + err_count, failures, filename + ), ) diff --git a/test/unit/rules/functions/test_basefn.py b/test/unit/rules/functions/test_basefn.py index a4dc9dabf3..3cfbdc4783 100644 --- a/test/unit/rules/functions/test_basefn.py +++ b/test/unit/rules/functions/test_basefn.py @@ -27,6 +27,12 @@ def rule(): [], ), ("Everything is fine", {"Fn::Sub": "Foo"}, {"enum": ["Foo"]}, []), + ( + "Resolved Fn::Sub has no strict type validation", + {"Fn::Sub": "2"}, + {"type": ["integer"]}, + [], + ), ( "Standard error", {"Fn::Sub": "Bar"}, diff --git a/test/unit/rules/functions/test_getatt.py b/test/unit/rules/functions/test_getatt.py index 9097e9a01d..da714bfdad 100644 --- a/test/unit/rules/functions/test_getatt.py +++ b/test/unit/rules/functions/test_getatt.py @@ -267,8 +267,4 @@ def test_validate( validator = CfnTemplateValidator({}, context=context, cfn=cfn) errs = list(rule.fn_getatt(validator, schema, instance, {})) - for err in errs: - print(err.validator) - print(err.path) - print(err.schema_path) assert errs == expected, f"Test {name!r} got {errs!r}" diff --git a/test/unit/rules/functions/test_getatt_format.py b/test/unit/rules/functions/test_getatt_format.py index 33e6f7c931..24cc0cf540 100644 --- a/test/unit/rules/functions/test_getatt_format.py +++ b/test/unit/rules/functions/test_getatt_format.py @@ -24,6 +24,9 @@ def template(): "MySecurityGroup": {"Type": "AWS::EC2::SecurityGroup"}, "MyCustomResource": {"Type": "Custom::CustomResource"}, "MySubTemplate": {"Type": "AWS::CloudFormation::Stack"}, + "MyProvisionedProduct": { + "Type": "AWS::ServiceCatalog::CloudFormationProvisionedProduct" + }, }, } @@ -49,6 +52,12 @@ def template(): {"format": "AWS::EC2::VPC.Id"}, [], ), + ( + "Valid GetAtt to a provisioned product ", + ["MyProvisionedProduct", "Outputs.VpcId"], + {"format": "AWS::EC2::VPC.Id"}, + [], + ), ( "Valid GetAtt because of exception", ["MyBucket", "Arn"], diff --git a/test/unit/rules/functions/test_length.py b/test/unit/rules/functions/test_length.py index 9f9eb70205..a6b88a4bb0 100644 --- a/test/unit/rules/functions/test_length.py +++ b/test/unit/rules/functions/test_length.py @@ -113,6 +113,13 @@ def context(cfn): {"transforms": Transforms(["AWS::LanguageExtensions"])}, [], ), + ( + "Fn::Length output while a number can be a string", + {"Fn::Length": []}, + {"type": "string"}, + {"transforms": Transforms(["AWS::LanguageExtensions"])}, + [], + ), ], ) def test_validate(name, instance, schema, context_evolve, expected, rule, context, cfn): diff --git a/test/unit/rules/functions/test_sub.py b/test/unit/rules/functions/test_sub.py index 11ee1de866..2499cbbab1 100644 --- a/test/unit/rules/functions/test_sub.py +++ b/test/unit/rules/functions/test_sub.py @@ -290,6 +290,12 @@ def context(cfn): schema_path=deque(["const"]), validator="fn_sub", ), + ValidationError( + ("'three' was expected when 'Fn::Sub' is resolved"), + path=deque(["Fn::Sub"]), + schema_path=deque(["const"]), + validator="fn_sub", + ), ], ), ], diff --git a/test/unit/rules/functions/test_sub_unneeded.py b/test/unit/rules/functions/test_sub_unneeded.py index 4770774f12..58c7a5ede1 100644 --- a/test/unit/rules/functions/test_sub_unneeded.py +++ b/test/unit/rules/functions/test_sub_unneeded.py @@ -42,3 +42,35 @@ def rule(): def test_sub_unneeded(name, instance, expected, rule, validator): errors = list(rule.validate(validator, {}, instance, {})) assert errors == expected, f"Test {name!r} got {errors!r}" + + +@pytest.mark.parametrize( + "name,transform,expected", + [ + ("Serverless transform", "AWS::Serverless-2016-10-31", []), + ( + "Serverless transform", + None, + [ + ValidationError( + "'Fn::Sub' isn't needed because there are no variables", path=[] + ) + ], + ), + ("Serverless transform in a list", ["Foo", "AWS::Serverless-2016-10-31"], []), + ( + "Serverless transform with an object", + {"Name": "Foo"}, + [ + ValidationError( + "'Fn::Sub' isn't needed because there are no variables", path=[] + ) + ], + ), + ], +) +def test_sub_transform(name, transform, expected, rule, validator): + validator.cfn.transform_pre["Transform"] = transform + instance = "foo" + errors = list(rule.validate(validator, {}, instance, {})) + assert errors == expected, f"Test {name!r} got {errors!r}" diff --git a/test/unit/rules/jsonschema/test_cfn_schema.py b/test/unit/rules/jsonschema/test_cfn_schema.py index ec847473da..3e9a3a9957 100644 --- a/test/unit/rules/jsonschema/test_cfn_schema.py +++ b/test/unit/rules/jsonschema/test_cfn_schema.py @@ -3,6 +3,8 @@ SPDX-License-Identifier: MIT-0 """ +from __future__ import annotations + from collections import deque import pytest @@ -18,6 +20,10 @@ "type": "string", }, "b": {"type": "object", "properties": {"1": {"type": "string"}}}, + "c": { + "type": "string", + "pattern": "^foo$", + }, }, } @@ -78,6 +84,20 @@ def __init__(self) -> None: ), ], ), + ( + "Validation error with dynamic reference", + _BestError(), + {"c": "{{resolve:ssm:/SQS_Queue/SQS_ARN}}"}, + [ + ValidationError( + message="Rule that returns the best error", + validator="pattern", + path=deque(["c"]), + rule=_BestError(), + schema_path=deque(["properties", "c", "pattern"]), + ), + ], + ), ], ) def test_cfn_schema(name, rule, instance, expected_errs): diff --git a/test/unit/rules/resources/ec2/test_sg_all_to_and_from_ports.py b/test/unit/rules/resources/ec2/test_sg_all_to_and_from_ports.py index 792d4021b6..a82f8acf59 100644 --- a/test/unit/rules/resources/ec2/test_sg_all_to_and_from_ports.py +++ b/test/unit/rules/resources/ec2/test_sg_all_to_and_from_ports.py @@ -40,6 +40,14 @@ def rule(): }, [], ), + ( + { + "IpProtocol": 1, + "ToPort": -1, + "FromPort": 8, + }, + [], + ), ( { "ToPort": -1, @@ -56,7 +64,7 @@ def rule(): "properties": {"FromPort": {"enum": [-1, "-1"]}}, "required": ["FromPort"], }, - schema_path=deque(["allOf", 0, "then", "required"]), + schema_path=deque(["else", "allOf", 0, "then", "required"]), ) ], ), @@ -76,7 +84,7 @@ def rule(): "properties": {"ToPort": {"enum": [-1, "-1"]}}, "required": ["ToPort"], }, - schema_path=deque(["allOf", 1, "then", "required"]), + schema_path=deque(["else", "allOf", 1, "then", "required"]), ) ], ), @@ -95,7 +103,7 @@ def rule(): instance=5, schema={"enum": [-1, "-1"]}, schema_path=deque( - ["allOf", 0, "then", "properties", "FromPort", "enum"] + ["else", "allOf", 0, "then", "properties", "FromPort", "enum"] ), ) ], @@ -115,11 +123,30 @@ def rule(): instance=5, schema={"enum": [-1, "-1"]}, schema_path=deque( - ["allOf", 1, "then", "properties", "ToPort", "enum"] + ["else", "allOf", 1, "then", "properties", "ToPort", "enum"] ), ) ], ), + ( + { + "IpProtocol": "icmp", + "ToPort": 8, + "FromPort": -1, + }, + [ + ValidationError( + ("Both ['FromPort', 'ToPort'] must " "be -1 when one is -1"), + rule=SecurityGroupAllToAndFromPorts(), + path=deque(["ToPort"]), + validator="enum", + validator_value=[-1, "-1"], + instance=5, + schema={"enum": [-1, "-1"]}, + schema_path=deque(["then", "then", "properties", "ToPort", "enum"]), + ) + ], + ), ], ) def test_backup_lifecycle(instance, expected, rule, validator): diff --git a/test/unit/rules/templates/test_base_template.py b/test/unit/rules/templates/test_base_template.py index 7194606d3a..3dee201c9b 100644 --- a/test/unit/rules/templates/test_base_template.py +++ b/test/unit/rules/templates/test_base_template.py @@ -40,7 +40,7 @@ def test_file_negative(self): def test_file_base(self): """Test failure""" - self.helper_file_negative("test/fixtures/templates/bad/templates/base.yaml", 2) + self.helper_file_negative("test/fixtures/templates/bad/templates/base.yaml", 1) def test_file_base_date(self): """Test failure""" @@ -51,5 +51,5 @@ def test_file_base_date(self): def test_file_base_null(self): """Test failure""" self.helper_file_negative( - "test/fixtures/templates/bad/templates/base_null.yaml", 3 + "test/fixtures/templates/bad/templates/base_null.yaml", 2 ) diff --git a/test/unit/rules/transforms/__init__.py b/test/unit/rules/transforms/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/unit/rules/transforms/test_configuration.py b/test/unit/rules/transforms/test_configuration.py new file mode 100644 index 0000000000..c55cd87def --- /dev/null +++ b/test/unit/rules/transforms/test_configuration.py @@ -0,0 +1,95 @@ +""" +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +SPDX-License-Identifier: MIT-0 +""" + +from collections import deque + +import pytest + +from cfnlint.jsonschema import ValidationError +from cfnlint.rules.transforms.Configuration import Configuration + + +@pytest.fixture(scope="module") +def rule(): + rule = Configuration() + yield rule + + +@pytest.mark.parametrize( + "name,instance,expected", + [ + ( + "Empty list is ok", + [], + [], + ), + ( + "String is ok", + "Foo", + [], + ), + ( + "List is ok", + ["Foo", "Bar"], + [], + ), + ( + "Object is ok", + {"Name": "Foo", "Parameters": {"Bar": "Test"}}, + [], + ), + ( + "Array of objects is ok", + [ + {"Name": "Foo", "Parameters": {"Bar": "Test"}}, + "Foo", + ], + [], + ), + ( + "Missing required Name", + {"Parameters": {"Bar": "Test"}}, + [ + ValidationError( + "'Name' is a required property", + validator="required", + rule=Configuration(), + path=deque([]), + schema_path=deque(["required"]), + ) + ], + ), + ( + "No additional property names are allowed", + {"Name": "Foo", "Foo": "Bar", "Parameters": {"Bar": "Test"}}, + [ + ValidationError( + "Additional properties are not allowed ('Foo' was unexpected)", + validator="additionalProperties", + rule=Configuration(), + path=deque(["Foo"]), + schema_path=deque(["additionalProperties"]), + ) + ], + ), + ( + "Null is not ok", + None, + [ + ValidationError( + "None is not of type 'string', 'array', 'object'", + validator="type", + rule=Configuration(), + path=deque([]), + schema_path=deque(["type"]), + ) + ], + ), + ], +) +def test_validate(name, instance, expected, rule, validator): + errs = list(rule.validate(validator, {}, instance, {})) + + assert errs == expected, f"Test {name!r} got {errs!r}" diff --git a/tox.ini b/tox.ini index 115043f5c3..24c3f00e4a 100644 --- a/tox.ini +++ b/tox.ini @@ -5,9 +5,7 @@ isolated_build = true [testenv] skip_install = True commands = - pip install -e . - pip install -e .[sarif] - pip install -e .[junit] + pip install -e .[full] coverage run -m pytest {posargs:test} coverage xml deps =