We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Cors in serverless transform trips error 
*cfn-lint version: 0.24.8

*Description of issue.*
Attempting to use CORS in API resource causes error.

E0001 Error transforming template: Resource with id [myserviceAwsUserApi] is invalid. Cors works only with inline Swagger specified in 'DefinitionBody' property
template_clean.yaml:1:1

Commenting out the Cors on lines 141-143 removes the problem:



[myservice_clean.yaml.txt](https://github.com/aws-cloudformation/cfn-python-lint/files/3816455/myservice_clean.yaml.txt)


--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `src/cfnlint/transform.py`
Content:
```
1 """
2   Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.
3 
4   Permission is hereby granted, free of charge, to any person obtaining a copy of this
5   software and associated documentation files (the "Software"), to deal in the Software
6   without restriction, including without limitation the rights to use, copy, modify,
7   merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
8   permit persons to whom the Software is furnished to do so.
9 
10   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
11   INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
12   PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
13   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
14   OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
15   SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
16 """
17 import os
18 import logging
19 import six
20 import samtranslator
21 from samtranslator.parser import parser
22 from samtranslator.translator.translator import Translator
23 from samtranslator.public.exceptions import InvalidDocumentException
24 
25 from cfnlint.helpers import load_resources, convert_dict, format_json_string
26 from cfnlint.rules import Match, TransformError
27 LOGGER = logging.getLogger('cfnlint')
28 
29 
30 class Transform(object):
31     """
32     Application Serverless Module tranform Wrappor.
33     Based on code from AWS SAM CLI:
34     https://github.com/awslabs/aws-sam-cli/blob/develop/samcli/commands/validate/lib/sam_template_validator.py
35     """
36 
37     def __init__(self, filename, template, region):
38         """
39         Initialize Transform class
40         """
41         self._filename = filename
42         self._template = template
43         self._region = region
44         self._parameters = {}
45 
46         self._managed_policy_map = self.load_managed_policies()
47         self._sam_parser = parser.Parser()
48 
49     def template(self):
50         """Get the template"""
51         return self._template
52 
53     def load_managed_policies(self):
54         """
55         Load the ManagedPolicies locally, based on the AWS-CLI:
56         https://github.com/awslabs/aws-sam-cli/blob/develop/samcli/lib/samlib/default_managed_policies.json
57         """
58         return load_resources('data/Serverless/ManagedPolicies.json')
59 
60     def _replace_local_codeuri(self):
61         """
62         Replaces the CodeUri in AWS::Serverless::Function and DefinitionUri in
63         AWS::Serverless::Api to a fake S3 Uri. This is to support running the
64         SAM Translator with valid values for these fields. If this in not done,
65         the template is invalid in the eyes of SAM Translator (the translator
66         does not support local paths)
67         """
68 
69         all_resources = self._template.get('Resources', {})
70 
71         for _, resource in all_resources.items():
72 
73             resource_type = resource.get('Type')
74             resource_dict = resource.get('Properties')
75 
76             if resource_type == 'AWS::Serverless::Function':
77 
78                 Transform._update_to_s3_uri('CodeUri', resource_dict)
79                 auto_publish_alias = resource_dict.get('AutoPublishAlias')
80                 if isinstance(auto_publish_alias, dict):
81                     if len(auto_publish_alias) == 1:
82                         for k, v in auto_publish_alias.items():
83                             if k == 'Ref':
84                                 if v in self._template.get('Parameters'):
85                                     self._parameters[v] = 'Alias'
86             if resource_type in ['AWS::Serverless::LayerVersion']:
87                 if resource_dict.get('ContentUri'):
88                     Transform._update_to_s3_uri('ContentUri', resource_dict)
89             if resource_type == 'AWS::Serverless::Application':
90                 if resource_dict.get('Location'):
91                     resource_dict['Location'] = ''
92                     Transform._update_to_s3_uri('Location', resource_dict)
93             if resource_type == 'AWS::Serverless::Api':
94                 if ('DefinitionBody' not in resource_dict and
95                         'Auth' not in resource_dict):
96                     Transform._update_to_s3_uri('DefinitionUri', resource_dict)
97                 else:
98                     resource_dict['DefinitionBody'] = ''
99 
100     def transform_template(self):
101         """
102         Transform the Template using the Serverless Application Model.
103         """
104         matches = []
105 
106         try:
107             # Output the SAM Translator version in debug mode
108             LOGGER.info('SAM Translator: %s', samtranslator.__version__)
109 
110             sam_translator = Translator(
111                 managed_policy_map=self._managed_policy_map,
112                 sam_parser=self._sam_parser)
113 
114             self._replace_local_codeuri()
115 
116             # Tell SAM to use the region we're linting in, this has to be
117             # controlled using the default AWS mechanisms, see also:
118             # https://github.com/awslabs/serverless-application-model/blob/master/samtranslator/translator/arn_generator.py
119             LOGGER.info('Setting AWS_DEFAULT_REGION to %s', self._region)
120             os.environ['AWS_DEFAULT_REGION'] = self._region
121 
122             self._template = convert_dict(
123                 sam_translator.translate(sam_template=self._template,
124                                          parameter_values=self._parameters))
125 
126             LOGGER.info('Transformed template: \n%s',
127                         format_json_string(self._template))
128         except InvalidDocumentException as e:
129             message = 'Error transforming template: {0}'
130             for cause in e.causes:
131                 matches.append(Match(
132                     1, 1,
133                     1, 1,
134                     self._filename,
135                     TransformError(), message.format(cause.message)))
136         except Exception as e:  # pylint: disable=W0703
137             LOGGER.debug('Error transforming template: %s', str(e))
138             LOGGER.debug('Stack trace: %s', e, exc_info=True)
139             message = 'Error transforming template: {0}'
140             matches.append(Match(
141                 1, 1,
142                 1, 1,
143                 self._filename,
144                 TransformError(), message.format(str(e))))
145 
146         return matches
147 
148     @staticmethod
149     def is_s3_uri(uri):
150         """
151         Checks the uri and determines if it is a valid S3 Uri
152         Parameters
153         ----------
154         uri str, required
155             Uri to check
156         Returns
157         -------
158         bool
159             Returns True if the uri given is an S3 uri, otherwise False
160         """
161         return isinstance(uri, six.string_types) and uri.startswith('s3://')
162 
163     @staticmethod
164     def _update_to_s3_uri(
165             property_key, resource_property_dict,
166             s3_uri_value='s3://bucket/value'):
167         """
168         Updates the 'property_key' in the 'resource_property_dict' to the
169         value of 's3_uri_value'
170         Note: The function will mutate the resource_property_dict that is pass
171         in Parameters
172         ----------
173         property_key str, required
174             Key in the resource_property_dict
175         resource_property_dict dict, required
176             Property dictionary of a Resource in the template to replace
177         s3_uri_value str, optional
178             Value to update the value of the property_key to
179         """
180         uri_property = resource_property_dict.get(property_key, '.')
181 
182         # ignore if dict or already an S3 Uri
183         if isinstance(uri_property, dict) or Transform.is_s3_uri(uri_property):
184             return
185 
186         resource_property_dict[property_key] = s3_uri_value
187
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/src/cfnlint/transform.py b/src/cfnlint/transform.py
--- a/src/cfnlint/transform.py
+++ b/src/cfnlint/transform.py
@@ -92,7 +92,7 @@
                     Transform._update_to_s3_uri('Location', resource_dict)
             if resource_type == 'AWS::Serverless::Api':
                 if ('DefinitionBody' not in resource_dict and
-                        'Auth' not in resource_dict):
+                        'Auth' not in resource_dict and 'Cors' not in resource_dict):
                     Transform._update_to_s3_uri('DefinitionUri', resource_dict)
                 else:
                     resource_dict['DefinitionBody'] = ''

{"golden_diff": "diff --git a/src/cfnlint/transform.py b/src/cfnlint/transform.py\n--- a/src/cfnlint/transform.py\n+++ b/src/cfnlint/transform.py\n@@ -92,7 +92,7 @@\n                     Transform._update_to_s3_uri('Location', resource_dict)\n             if resource_type == 'AWS::Serverless::Api':\n                 if ('DefinitionBody' not in resource_dict and\n-                        'Auth' not in resource_dict):\n+                        'Auth' not in resource_dict and 'Cors' not in resource_dict):\n                     Transform._update_to_s3_uri('DefinitionUri', resource_dict)\n                 else:\n                     resource_dict['DefinitionBody'] = ''\n", "issue": "Cors in serverless transform trips error \n*cfn-lint version: 0.24.8\r\n\r\n*Description of issue.*\r\nAttempting to use CORS in API resource causes error.\r\n\r\nE0001 Error transforming template: Resource with id [myserviceAwsUserApi] is invalid. Cors works only with inline Swagger specified in 'DefinitionBody' property\r\ntemplate_clean.yaml:1:1\r\n\r\nCommenting out the Cors on lines 141-143 removes the problem:\r\n\r\n\r\n\r\n[myservice_clean.yaml.txt](https://github.com/aws-cloudformation/cfn-python-lint/files/3816455/myservice_clean.yaml.txt)\r\n\n", "before_files": [{"content": "\"\"\"\n  Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n\n  Permission is hereby granted, free of charge, to any person obtaining a copy of this\n  software and associated documentation files (the \"Software\"), to deal in the Software\n  without restriction, including without limitation the rights to use, copy, modify,\n  merge, publish, distribute, sublicense, and/or sell copies of the Software, and to\n  permit persons to whom the Software is furnished to do so.\n\n  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n  INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A\n  PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n  HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n  SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\"\"\"\nimport os\nimport logging\nimport six\nimport samtranslator\nfrom samtranslator.parser import parser\nfrom samtranslator.translator.translator import Translator\nfrom samtranslator.public.exceptions import InvalidDocumentException\n\nfrom cfnlint.helpers import load_resources, convert_dict, format_json_string\nfrom cfnlint.rules import Match, TransformError\nLOGGER = logging.getLogger('cfnlint')\n\n\nclass Transform(object):\n    \"\"\"\n    Application Serverless Module tranform Wrappor.\n    Based on code from AWS SAM CLI:\n    https://github.com/awslabs/aws-sam-cli/blob/develop/samcli/commands/validate/lib/sam_template_validator.py\n    \"\"\"\n\n    def __init__(self, filename, template, region):\n        \"\"\"\n        Initialize Transform class\n        \"\"\"\n        self._filename = filename\n        self._template = template\n        self._region = region\n        self._parameters = {}\n\n        self._managed_policy_map = self.load_managed_policies()\n        self._sam_parser = parser.Parser()\n\n    def template(self):\n        \"\"\"Get the template\"\"\"\n        return self._template\n\n    def load_managed_policies(self):\n        \"\"\"\n        Load the ManagedPolicies locally, based on the AWS-CLI:\n        https://github.com/awslabs/aws-sam-cli/blob/develop/samcli/lib/samlib/default_managed_policies.json\n        \"\"\"\n        return load_resources('data/Serverless/ManagedPolicies.json')\n\n    def _replace_local_codeuri(self):\n        \"\"\"\n        Replaces the CodeUri in AWS::Serverless::Function and DefinitionUri in\n        AWS::Serverless::Api to a fake S3 Uri. This is to support running the\n        SAM Translator with valid values for these fields. If this in not done,\n        the template is invalid in the eyes of SAM Translator (the translator\n        does not support local paths)\n        \"\"\"\n\n        all_resources = self._template.get('Resources', {})\n\n        for _, resource in all_resources.items():\n\n            resource_type = resource.get('Type')\n            resource_dict = resource.get('Properties')\n\n            if resource_type == 'AWS::Serverless::Function':\n\n                Transform._update_to_s3_uri('CodeUri', resource_dict)\n                auto_publish_alias = resource_dict.get('AutoPublishAlias')\n                if isinstance(auto_publish_alias, dict):\n                    if len(auto_publish_alias) == 1:\n                        for k, v in auto_publish_alias.items():\n                            if k == 'Ref':\n                                if v in self._template.get('Parameters'):\n                                    self._parameters[v] = 'Alias'\n            if resource_type in ['AWS::Serverless::LayerVersion']:\n                if resource_dict.get('ContentUri'):\n                    Transform._update_to_s3_uri('ContentUri', resource_dict)\n            if resource_type == 'AWS::Serverless::Application':\n                if resource_dict.get('Location'):\n                    resource_dict['Location'] = ''\n                    Transform._update_to_s3_uri('Location', resource_dict)\n            if resource_type == 'AWS::Serverless::Api':\n                if ('DefinitionBody' not in resource_dict and\n                        'Auth' not in resource_dict):\n                    Transform._update_to_s3_uri('DefinitionUri', resource_dict)\n                else:\n                    resource_dict['DefinitionBody'] = ''\n\n    def transform_template(self):\n        \"\"\"\n        Transform the Template using the Serverless Application Model.\n        \"\"\"\n        matches = []\n\n        try:\n            # Output the SAM Translator version in debug mode\n            LOGGER.info('SAM Translator: %s', samtranslator.__version__)\n\n            sam_translator = Translator(\n                managed_policy_map=self._managed_policy_map,\n                sam_parser=self._sam_parser)\n\n            self._replace_local_codeuri()\n\n            # Tell SAM to use the region we're linting in, this has to be\n            # controlled using the default AWS mechanisms, see also:\n            # https://github.com/awslabs/serverless-application-model/blob/master/samtranslator/translator/arn_generator.py\n            LOGGER.info('Setting AWS_DEFAULT_REGION to %s', self._region)\n            os.environ['AWS_DEFAULT_REGION'] = self._region\n\n            self._template = convert_dict(\n                sam_translator.translate(sam_template=self._template,\n                                         parameter_values=self._parameters))\n\n            LOGGER.info('Transformed template: \\n%s',\n                        format_json_string(self._template))\n        except InvalidDocumentException as e:\n            message = 'Error transforming template: {0}'\n            for cause in e.causes:\n                matches.append(Match(\n                    1, 1,\n                    1, 1,\n                    self._filename,\n                    TransformError(), message.format(cause.message)))\n        except Exception as e:  # pylint: disable=W0703\n            LOGGER.debug('Error transforming template: %s', str(e))\n            LOGGER.debug('Stack trace: %s', e, exc_info=True)\n            message = 'Error transforming template: {0}'\n            matches.append(Match(\n                1, 1,\n                1, 1,\n                self._filename,\n                TransformError(), message.format(str(e))))\n\n        return matches\n\n    @staticmethod\n    def is_s3_uri(uri):\n        \"\"\"\n        Checks the uri and determines if it is a valid S3 Uri\n        Parameters\n        ----------\n        uri str, required\n            Uri to check\n        Returns\n        -------\n        bool\n            Returns True if the uri given is an S3 uri, otherwise False\n        \"\"\"\n        return isinstance(uri, six.string_types) and uri.startswith('s3://')\n\n    @staticmethod\n    def _update_to_s3_uri(\n            property_key, resource_property_dict,\n            s3_uri_value='s3://bucket/value'):\n        \"\"\"\n        Updates the 'property_key' in the 'resource_property_dict' to the\n        value of 's3_uri_value'\n        Note: The function will mutate the resource_property_dict that is pass\n        in Parameters\n        ----------\n        property_key str, required\n            Key in the resource_property_dict\n        resource_property_dict dict, required\n            Property dictionary of a Resource in the template to replace\n        s3_uri_value str, optional\n            Value to update the value of the property_key to\n        \"\"\"\n        uri_property = resource_property_dict.get(property_key, '.')\n\n        # ignore if dict or already an S3 Uri\n        if isinstance(uri_property, dict) or Transform.is_s3_uri(uri_property):\n            return\n\n        resource_property_dict[property_key] = s3_uri_value\n", "path": "src/cfnlint/transform.py"}], "after_files": [{"content": "\"\"\"\n  Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n\n  Permission is hereby granted, free of charge, to any person obtaining a copy of this\n  software and associated documentation files (the \"Software\"), to deal in the Software\n  without restriction, including without limitation the rights to use, copy, modify,\n  merge, publish, distribute, sublicense, and/or sell copies of the Software, and to\n  permit persons to whom the Software is furnished to do so.\n\n  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,\n  INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A\n  PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n  HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n  SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\"\"\"\nimport os\nimport logging\nimport six\nimport samtranslator\nfrom samtranslator.parser import parser\nfrom samtranslator.translator.translator import Translator\nfrom samtranslator.public.exceptions import InvalidDocumentException\n\nfrom cfnlint.helpers import load_resources, convert_dict, format_json_string\nfrom cfnlint.rules import Match, TransformError\nLOGGER = logging.getLogger('cfnlint')\n\n\nclass Transform(object):\n    \"\"\"\n    Application Serverless Module tranform Wrappor.\n    Based on code from AWS SAM CLI:\n    https://github.com/awslabs/aws-sam-cli/blob/develop/samcli/commands/validate/lib/sam_template_validator.py\n    \"\"\"\n\n    def __init__(self, filename, template, region):\n        \"\"\"\n        Initialize Transform class\n        \"\"\"\n        self._filename = filename\n        self._template = template\n        self._region = region\n        self._parameters = {}\n\n        self._managed_policy_map = self.load_managed_policies()\n        self._sam_parser = parser.Parser()\n\n    def template(self):\n        \"\"\"Get the template\"\"\"\n        return self._template\n\n    def load_managed_policies(self):\n        \"\"\"\n        Load the ManagedPolicies locally, based on the AWS-CLI:\n        https://github.com/awslabs/aws-sam-cli/blob/develop/samcli/lib/samlib/default_managed_policies.json\n        \"\"\"\n        return load_resources('data/Serverless/ManagedPolicies.json')\n\n    def _replace_local_codeuri(self):\n        \"\"\"\n        Replaces the CodeUri in AWS::Serverless::Function and DefinitionUri in\n        AWS::Serverless::Api to a fake S3 Uri. This is to support running the\n        SAM Translator with valid values for these fields. If this in not done,\n        the template is invalid in the eyes of SAM Translator (the translator\n        does not support local paths)\n        \"\"\"\n\n        all_resources = self._template.get('Resources', {})\n\n        for _, resource in all_resources.items():\n\n            resource_type = resource.get('Type')\n            resource_dict = resource.get('Properties')\n\n            if resource_type == 'AWS::Serverless::Function':\n\n                Transform._update_to_s3_uri('CodeUri', resource_dict)\n                auto_publish_alias = resource_dict.get('AutoPublishAlias')\n                if isinstance(auto_publish_alias, dict):\n                    if len(auto_publish_alias) == 1:\n                        for k, v in auto_publish_alias.items():\n                            if k == 'Ref':\n                                if v in self._template.get('Parameters'):\n                                    self._parameters[v] = 'Alias'\n            if resource_type in ['AWS::Serverless::LayerVersion']:\n                if resource_dict.get('ContentUri'):\n                    Transform._update_to_s3_uri('ContentUri', resource_dict)\n            if resource_type == 'AWS::Serverless::Application':\n                if resource_dict.get('Location'):\n                    resource_dict['Location'] = ''\n                    Transform._update_to_s3_uri('Location', resource_dict)\n            if resource_type == 'AWS::Serverless::Api':\n                if ('DefinitionBody' not in resource_dict and\n                        'Auth' not in resource_dict and 'Cors' not in resource_dict):\n                    Transform._update_to_s3_uri('DefinitionUri', resource_dict)\n                else:\n                    resource_dict['DefinitionBody'] = ''\n\n    def transform_template(self):\n        \"\"\"\n        Transform the Template using the Serverless Application Model.\n        \"\"\"\n        matches = []\n\n        try:\n            # Output the SAM Translator version in debug mode\n            LOGGER.info('SAM Translator: %s', samtranslator.__version__)\n\n            sam_translator = Translator(\n                managed_policy_map=self._managed_policy_map,\n                sam_parser=self._sam_parser)\n\n            self._replace_local_codeuri()\n\n            # Tell SAM to use the region we're linting in, this has to be\n            # controlled using the default AWS mechanisms, see also:\n            # https://github.com/awslabs/serverless-application-model/blob/master/samtranslator/translator/arn_generator.py\n            LOGGER.info('Setting AWS_DEFAULT_REGION to %s', self._region)\n            os.environ['AWS_DEFAULT_REGION'] = self._region\n\n            self._template = convert_dict(\n                sam_translator.translate(sam_template=self._template,\n                                         parameter_values=self._parameters))\n\n            LOGGER.info('Transformed template: \\n%s',\n                        format_json_string(self._template))\n        except InvalidDocumentException as e:\n            message = 'Error transforming template: {0}'\n            for cause in e.causes:\n                matches.append(Match(\n                    1, 1,\n                    1, 1,\n                    self._filename,\n                    TransformError(), message.format(cause.message)))\n        except Exception as e:  # pylint: disable=W0703\n            LOGGER.debug('Error transforming template: %s', str(e))\n            LOGGER.debug('Stack trace: %s', e, exc_info=True)\n            message = 'Error transforming template: {0}'\n            matches.append(Match(\n                1, 1,\n                1, 1,\n                self._filename,\n                TransformError(), message.format(str(e))))\n\n        return matches\n\n    @staticmethod\n    def is_s3_uri(uri):\n        \"\"\"\n        Checks the uri and determines if it is a valid S3 Uri\n        Parameters\n        ----------\n        uri str, required\n            Uri to check\n        Returns\n        -------\n        bool\n            Returns True if the uri given is an S3 uri, otherwise False\n        \"\"\"\n        return isinstance(uri, six.string_types) and uri.startswith('s3://')\n\n    @staticmethod\n    def _update_to_s3_uri(\n            property_key, resource_property_dict,\n            s3_uri_value='s3://bucket/value'):\n        \"\"\"\n        Updates the 'property_key' in the 'resource_property_dict' to the\n        value of 's3_uri_value'\n        Note: The function will mutate the resource_property_dict that is pass\n        in Parameters\n        ----------\n        property_key str, required\n            Key in the resource_property_dict\n        resource_property_dict dict, required\n            Property dictionary of a Resource in the template to replace\n        s3_uri_value str, optional\n            Value to update the value of the property_key to\n        \"\"\"\n        uri_property = resource_property_dict.get(property_key, '.')\n\n        # ignore if dict or already an S3 Uri\n        if isinstance(uri_property, dict) or Transform.is_s3_uri(uri_property):\n            return\n\n        resource_property_dict[property_key] = s3_uri_value\n", "path": "src/cfnlint/transform.py"}]}