Repository: aws/serverless-application-model

Issue:
Is CI on travis-ci.com working?
### Description:

It looks that CI on travis-ci.com is not working.
What is that state?

### Steps to reproduce:
open https://travis-ci.com/github/aws/serverless-application-model/branches


### Observed result:

The latest build ran on https://github.com/aws/serverless-application-model/commit/e7a1496ab2e39b42bdddf5a7e6562cd8c5e170b4 about a month ago

![image](https://user-images.githubusercontent.com/1157344/126155812-f8d17cb4-5a56-4e2f-b795-b287e1bc825d.png)

### Expected result:

The latest commit on the develop branch is now https://github.com/aws/serverless-application-model/commit/f31309431090139b5a5c91a046d4337f967c7505
The build of this commit should be listed.

![image](https://user-images.githubusercontent.com/1157344/126156237-909bd342-4c2b-4cf9-b149-b6b0c18ee482.png)


### Additional environment details (Ex: Windows, Mac, Amazon Linux etc)

N/A

Discussion:
codecov-commenter: # [Codecov](https://codecov.io/gh/aws/serverless-application-model/pull/2102?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=aws) Report
> Merging [#2102](https://codecov.io/gh/aws/serverless-application-model/pull/2102?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=aws) (80ff854) into [develop](https://codecov.io/gh/aws/serverless-application-model/commit/e7a1496ab2e39b42bdddf5a7e6562cd8c5e170b4?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=aws) (e7a1496) will **increase** coverage by `0.51%`.
> The diff coverage is `98.36%`.

[![Impacted file tree graph](https://codecov.io/gh/aws/serverless-application-model/pull/2102/graphs/tree.svg?width=650&height=150&src=pr&token=9qv2cdbX38&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=aws)](https://codecov.io/gh/aws/serverless-application-model/pull/2102?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=aws)

```diff
@@             Coverage Diff             @@
##           develop    #2102      +/-   ##
===========================================
+ Coverage    93.58%   94.09%   +0.51%     
===========================================
  Files           90       92       +2     
  Lines         6124     6283     +159     
  Branches      1260     1282      +22     
===========================================
+ Hits          5731     5912     +181     
+ Misses         183      170      -13     
+ Partials       210      201       -9     
```


| [Impacted Files](https://codecov.io/gh/aws/serverless-application-model/pull/2102?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=aws) | Coverage Δ | |
|---|---|---|
| [samtranslator/model/apigateway.py](https://codecov.io/gh/aws/serverless-application-model/pull/2102/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=aws#diff-c2FtdHJhbnNsYXRvci9tb2RlbC9hcGlnYXRld2F5LnB5) | `97.15% <ø> (ø)` | |
| [...lator/plugins/application/serverless\_app\_plugin.py](https://codecov.io/gh/aws/serverless-application-model/pull/2102/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=aws#diff-c2FtdHJhbnNsYXRvci9wbHVnaW5zL2FwcGxpY2F0aW9uL3NlcnZlcmxlc3NfYXBwX3BsdWdpbi5weQ==) | `82.09% <ø> (-0.11%)` | :arrow_down: |
| [samtranslator/swagger/swagger.py](https://codecov.io/gh/aws/serverless-application-model/pull/2102/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=aws#diff-c2FtdHJhbnNsYXRvci9zd2FnZ2VyL3N3YWdnZXIucHk=) | `93.66% <88.88%> (+0.29%)` | :arrow_up: |
| [samtranslator/\_\_init\_\_.py](https://codecov.io/gh/aws/serverless-application-model/pull/2102/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=aws#diff-c2FtdHJhbnNsYXRvci9fX2luaXRfXy5weQ==) | `100.00% <100.00%> (ø)` | |
| [samtranslator/feature\_toggle/dialup.py](https://codecov.io/gh/aws/serverless-application-model/pull/2102/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=aws#diff-c2FtdHJhbnNsYXRvci9mZWF0dXJlX3RvZ2dsZS9kaWFsdXAucHk=) | `100.00% <100.00%> (ø)` | |
| [samtranslator/feature\_toggle/feature\_toggle.py](https://codecov.io/gh/aws/serverless-application-model/pull/2102/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=aws#diff-c2FtdHJhbnNsYXRvci9mZWF0dXJlX3RvZ2dsZS9mZWF0dXJlX3RvZ2dsZS5weQ==) | `100.00% <100.00%> (+12.16%)` | :arrow_up: |
| [samtranslator/metrics/metrics.py](https://codecov.io/gh/aws/serverless-application-model/pull/2102/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=aws#diff-c2FtdHJhbnNsYXRvci9tZXRyaWNzL21ldHJpY3MucHk=) | `100.00% <100.00%> (ø)` | |
| [samtranslator/model/api/api\_generator.py](https://codecov.io/gh/aws/serverless-application-model/pull/2102/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=aws#diff-c2FtdHJhbnNsYXRvci9tb2RlbC9hcGkvYXBpX2dlbmVyYXRvci5weQ==) | `94.39% <100.00%> (+0.03%)` | :arrow_up: |
| [samtranslator/model/eventsources/pull.py](https://codecov.io/gh/aws/serverless-application-model/pull/2102/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=aws#diff-c2FtdHJhbnNsYXRvci9tb2RlbC9ldmVudHNvdXJjZXMvcHVsbC5weQ==) | `84.73% <100.00%> (+6.04%)` | :arrow_up: |
| [samtranslator/model/eventsources/push.py](https://codecov.io/gh/aws/serverless-application-model/pull/2102/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=aws#diff-c2FtdHJhbnNsYXRvci9tb2RlbC9ldmVudHNvdXJjZXMvcHVzaC5weQ==) | `91.75% <100.00%> (+0.82%)` | :arrow_up: |
| ... and [8 more](https://codecov.io/gh/aws/serverless-application-model/pull/2102/diff?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=aws) | |

------

[Continue to review full report at Codecov](https://codecov.io/gh/aws/serverless-application-model/pull/2102?src=pr&el=continue&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=aws).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=aws)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/aws/serverless-application-model/pull/2102?src=pr&el=footer&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=aws). Last update [f313094...80ff854](https://codecov.io/gh/aws/serverless-application-model/pull/2102?src=pr&el=lastupdated&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=aws). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=aws).


Patch:
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index 31562ac6..1b91b346 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -6,7 +6,10 @@
 
 *Checklist:*
 
-- [ ] Write/update tests
+- [ ] Add/update tests using:
+    - [ ] Correct values
+    - [ ] Bad/wrong values (None, empty, wrong type, length, etc.)
+    - [ ] [Intrinsic Functions](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference.html)
 - [ ] `make pr` passes
 - [ ] Update documentation
 - [ ] Verify transformed template deploys and application functions as expected
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 4e4b1c00..00000000
--- a/.travis.yml
+++ /dev/null
@@ -1,30 +0,0 @@
-# Enable container based builds
-sudo: false
-dist: xenial   # required for Python >= 3.7
-language: python
-
-matrix:
-  include:
-    - python: 3.8
-      env:
-        - TOXENV=py38
-    - python: 3.7
-      env:
-        - TOXENV=py37
-    - python: 3.6
-      env:
-        - TOXENV=py36
-    - python: 2.7
-      env:
-        - TOXENV=py27
-
-
-install:
-# Install the code requirements
-- make init
-
-# Install Docs requirements
-
-script:
-# Runs unit tests
-- tox
diff --git a/integration/helpers/resource.py b/integration/helpers/resource.py
index d1150fc1..6a31d1a7 100644
--- a/integration/helpers/resource.py
+++ b/integration/helpers/resource.py
@@ -41,7 +41,9 @@ def verify_stack_resources(expected_file_path, stack_resources):
     parsed_resources = _sort_resources(stack_resources["StackResourceSummaries"])
 
     if len(expected_resources) != len(parsed_resources):
-        return "'{}' resources expected, '{}' found".format(len(expected_resources), len(parsed_resources))
+        return "'{}' resources expected, '{}' found: \n{}".format(
+            len(expected_resources), len(parsed_resources), json.dumps(parsed_resources, default=str)
+        )
 
     for i in range(len(expected_resources)):
         exp = expected_resources[i]
@@ -55,7 +57,7 @@ def verify_stack_resources(expected_file_path, stack_resources):
                 "ResourceType": parsed["ResourceType"],
             }
 
-            return "'{}' expected, '{}' found (Resources must appear in the same order, don't include the LogicalId random suffix)".format(
+            return "'{}' expected, '{}' found (Don't include the LogicalId random suffix)".format(
                 exp, parsed_trimed_down
             )
         if exp["ResourceType"] != parsed["ResourceType"]:
@@ -79,7 +81,8 @@ def generate_suffix():
 
 def _sort_resources(resources):
     """
-    Sorts a stack's resources by LogicalResourceId
+    Filters and sorts a stack's resources by LogicalResourceId.
+    Keeps only the LogicalResourceId and ResourceType properties
 
     Parameters
     ----------
@@ -93,7 +96,12 @@ def _sort_resources(resources):
     """
     if resources is None:
         return []
-    return sorted(resources, key=lambda d: d["LogicalResourceId"])
+
+    filtered_resources = map(
+        lambda x: {"LogicalResourceId": x["LogicalResourceId"], "ResourceType": x["ResourceType"]}, resources
+    )
+
+    return sorted(filtered_resources, key=lambda d: d["LogicalResourceId"])
 
 
 def create_bucket(bucket_name, region):
diff --git a/integration/resources/expected/combination/function_with_kinesis_intrinsics.json b/integration/resources/expected/combination/function_with_kinesis_intrinsics.json
new file mode 100644
index 00000000..64511cfc
--- /dev/null
+++ b/integration/resources/expected/combination/function_with_kinesis_intrinsics.json
@@ -0,0 +1,6 @@
+[
+  { "LogicalResourceId":"MyLambdaFunction", "ResourceType":"AWS::Lambda::Function" },
+  { "LogicalResourceId":"MyLambdaFunctionRole", "ResourceType":"AWS::IAM::Role" },
+  { "LogicalResourceId":"MyStream", "ResourceType":"AWS::Kinesis::Stream" },
+  { "LogicalResourceId":"MyLambdaFunctionKinesisStream", "ResourceType":"AWS::Lambda::EventSourceMapping" }
+]
\ No newline at end of file
diff --git a/integration/resources/expected/combination/function_with_s3_intrinsics.json b/integration/resources/expected/combination/function_with_s3_intrinsics.json
new file mode 100644
index 00000000..2fdb0626
--- /dev/null
+++ b/integration/resources/expected/combination/function_with_s3_intrinsics.json
@@ -0,0 +1,18 @@
+[
+  {
+    "LogicalResourceId": "MyLambdaFunction",
+    "ResourceType": "AWS::Lambda::Function"
+  },
+  {
+    "LogicalResourceId": "MyLambdaFunctionRole",
+    "ResourceType": "AWS::IAM::Role"
+  },
+  {
+    "LogicalResourceId": "MyLambdaFunctionS3EventPermission",
+    "ResourceType": "AWS::Lambda::Permission"
+  },
+  {
+    "LogicalResourceId": "MyBucket",
+    "ResourceType": "AWS::S3::Bucket"
+  }
+]
\ No newline at end of file
diff --git a/integration/resources/expected/combination/function_with_sns_intrinsics.json b/integration/resources/expected/combination/function_with_sns_intrinsics.json
new file mode 100644
index 00000000..8d715ef5
--- /dev/null
+++ b/integration/resources/expected/combination/function_with_sns_intrinsics.json
@@ -0,0 +1,30 @@
+[
+  {
+    "LogicalResourceId": "MyLambdaFunction",
+    "ResourceType": "AWS::Lambda::Function"
+  },
+  {
+    "LogicalResourceId": "MyLambdaFunctionRole",
+    "ResourceType": "AWS::IAM::Role"
+  },
+  {
+    "LogicalResourceId": "MySnsTopic",
+    "ResourceType": "AWS::SNS::Topic"
+  },
+  {
+    "LogicalResourceId": "MyLambdaFunctionSNSEvent",
+    "ResourceType": "AWS::SNS::Subscription"
+  },
+  {
+    "LogicalResourceId": "MyLambdaFunctionSNSEventQueue",
+    "ResourceType": "AWS::SQS::Queue"
+  },
+  {
+    "LogicalResourceId": "MyLambdaFunctionSNSEventEventSourceMapping",
+    "ResourceType": "AWS::Lambda::EventSourceMapping"
+  },
+  {
+    "LogicalResourceId": "MyLambdaFunctionSNSEventQueuePolicy",
+    "ResourceType": "AWS::SQS::QueuePolicy"
+  }
+]
\ No newline at end of file
diff --git a/integration/resources/templates/combination/function_with_kinesis_intrinsics.yaml b/integration/resources/templates/combination/function_with_kinesis_intrinsics.yaml
new file mode 100644
index 00000000..8dbd0b8b
--- /dev/null
+++ b/integration/resources/templates/combination/function_with_kinesis_intrinsics.yaml
@@ -0,0 +1,82 @@
+Parameters:
+  IntValue:
+    Type: Number
+    Default: 100
+
+  One:
+    Type: Number
+    Default: 1
+
+  StartingPositionValue:
+    Type: String
+    Default: LATEST
+
+  FunctionResponseTypesValue:
+    Type: String
+    Default: ReportBatchItemFailures
+
+Conditions:
+  TrueCondition:
+    Fn::Equals:
+      - true
+      - true
+  FalseCondition:
+    Fn::Equals:
+      - true
+      - false
+
+Resources:
+  MyLambdaFunction:
+    Type: AWS::Serverless::Function
+    Properties:
+      Handler: index.handler
+      Runtime: nodejs12.x
+      CodeUri: ${codeuri}
+      MemorySize: 128
+
+      Events:
+        KinesisStream:
+          Type: Kinesis
+          Properties:
+            BatchSize:
+              Ref: IntValue
+            BisectBatchOnFunctionError:
+              Fn::If:
+                - FalseCondition
+                - True
+                - False
+            Enabled:
+              Fn::If:
+                - TrueCondition
+                - True
+                - False
+            FunctionResponseTypes:
+              - Ref: FunctionResponseTypesValue
+            MaximumBatchingWindowInSeconds:
+              Ref: One
+            MaximumRecordAgeInSeconds:
+              Ref: IntValue
+            MaximumRetryAttempts:
+              Ref: One
+            ParallelizationFactor:
+              Ref: One
+            StartingPosition:
+              Ref: StartingPositionValue
+            Stream:
+              # Connect with the stream we have created in this template
+              Fn::Join:
+                - ''
+                - - 'arn:'
+                  - Ref: AWS::Partition
+                  - ':kinesis:'
+                  - Ref: AWS::Region
+                  - ':'
+                  - Ref: AWS::AccountId
+                  - ':stream/'
+                  - Ref: MyStream
+            TumblingWindowInSeconds:
+              Ref: IntValue
+  MyStream:
+    Type: AWS::Kinesis::Stream
+    Properties:
+      ShardCount: 1
diff --git a/integration/resources/templates/combination/function_with_s3_intrinsics.yaml b/integration/resources/templates/combination/function_with_s3_intrinsics.yaml
new file mode 100644
index 00000000..8de86f08
--- /dev/null
+++ b/integration/resources/templates/combination/function_with_s3_intrinsics.yaml
@@ -0,0 +1,36 @@
+Conditions:
+  MyCondition:
+    Fn::Equals:
+      - true
+      - false
+
+Resources:
+  MyLambdaFunction:
+    Type: AWS::Serverless::Function
+    Properties:
+      Handler: index.handler
+      Runtime: nodejs12.x
+      CodeUri: ${codeuri}
+      MemorySize: 128
+
+      Events:
+        S3Event:
+          Type: S3
+          Properties:
+            Bucket:
+              Ref: MyBucket
+            Events: s3:ObjectCreated:*
+            Filter:
+              Fn::If:
+                - MyCondition
+                - S3Key:
+                    Rules:
+                      - Name: prefix
+                        Value: object_prefix
+                - S3Key:
+                    Rules:
+                      - Name: suffix
+                        Value: object_suffix
+
+  MyBucket:
+    Type: AWS::S3::Bucket
diff --git a/integration/resources/templates/combination/function_with_sns_intrinsics.yaml b/integration/resources/templates/combination/function_with_sns_intrinsics.yaml
new file mode 100644
index 00000000..08c9f587
--- /dev/null
+++ b/integration/resources/templates/combination/function_with_sns_intrinsics.yaml
@@ -0,0 +1,38 @@
+Conditions:
+  MyCondition:
+    Fn::Equals:
+      - true
+      - false
+
+Resources:
+  MyLambdaFunction:
+    Type: AWS::Serverless::Function
+    Properties:
+      Handler: index.handler
+      Runtime: nodejs12.x
+      CodeUri: ${codeuri}
+      MemorySize: 128
+
+      Events:
+        SNSEvent:
+          Type: SNS
+          Properties:
+            Topic:
+              Ref: MySnsTopic
+            FilterPolicy:
+              Fn::If:
+                - MyCondition
+                - price_usd:
+                    - numeric:
+                        - ">="
+                        - 100
+                - price_usd:
+                    - numeric:
+                        - "<"
+                        - 100
+            Region:
+              Ref: AWS::Region
+            SqsSubscription: true
+
+  MySnsTopic:
+    Type: AWS::SNS::Topic
diff --git a/samtranslator/model/apigateway.py b/samtranslator/model/apigateway.py
index d1ea0c2b..428ac197 100644
--- a/samtranslator/model/apigateway.py
+++ b/samtranslator/model/apigateway.py
@@ -270,11 +270,19 @@ class ApiGatewayAuthorizer(object):
         query_strings = identity.get("QueryStrings")
         stage_variables = identity.get("StageVariables")
         context = identity.get("Context")
+        ttl = identity.get("ReauthorizeEvery")
 
-        if not headers and not query_strings and not stage_variables and not context:
-            return True
+        required_properties_missing = not headers and not query_strings and not stage_variables and not context
+
+        try:
+            ttl_int = int(ttl)
+        # this will catch if ttl is None and not convertable to an int
+        except TypeError:
+            # previous behavior before trying to read ttl
+            return required_properties_missing
 
-        return False
+        # If we can resolve ttl, attempt to see if things are valid
+        return ttl_int > 0 and required_properties_missing
 
     def generate_swagger(self):
         authorizer_type = self._get_type()
@@ -314,7 +322,9 @@ class ApiGatewayAuthorizer(object):
                 swagger[APIGATEWAY_AUTHORIZER_KEY]["authorizerCredentials"] = function_invoke_role
 
             if self._get_function_payload_type() == "REQUEST":
-                swagger[APIGATEWAY_AUTHORIZER_KEY]["identitySource"] = self._get_identity_source()
+                identity_source = self._get_identity_source()
+                if identity_source:
+                    swagger[APIGATEWAY_AUTHORIZER_KEY]["identitySource"] = self._get_identity_source()
 
         # Authorizer Validation Expression is only allowed on COGNITO_USER_POOLS and LAMBDA_TOKEN
         is_lambda_token_authorizer = authorizer_type == "LAMBDA" and self._get_function_payload_type() == "TOKEN"
diff --git a/samtranslator/model/eventsources/push.py b/samtranslator/model/eventsources/push.py
index 73b1df29..53968942 100644
--- a/samtranslator/model/eventsources/push.py
+++ b/samtranslator/model/eventsources/push.py
@@ -244,7 +244,7 @@ class S3(PushEventSource):
     principal = "s3.amazonaws.com"
     property_types = {
         "Bucket": PropertyType(True, is_str()),
-        "Events": PropertyType(True, one_of(is_str(), list_of(is_str()))),
+        "Events": PropertyType(True, one_of(is_str(), list_of(is_str())), False),
         "Filter": PropertyType(False, dict_of(is_str(), is_str())),
     }
 
@@ -947,7 +947,7 @@ class Cognito(PushEventSource):
 
     property_types = {
         "UserPool": PropertyType(True, is_str()),
-        "Trigger": PropertyType(True, one_of(is_str(), list_of(is_str()))),
+        "Trigger": PropertyType(True, one_of(is_str(), list_of(is_str())), False),
     }
 
     def resources_to_link(self, resources):
diff --git a/samtranslator/open_api/open_api.py b/samtranslator/open_api/open_api.py
index af6b47e4..54e00ed0 100644
--- a/samtranslator/open_api/open_api.py
+++ b/samtranslator/open_api/open_api.py
@@ -352,7 +352,7 @@ class OpenApiEditor(object):
                             )
                         ]
                     )
-                for method_definition in self.get_method_contents(self.get_path(path)[normalized_method_name]):
+                for method_definition in self.get_method_contents(method):
                     # If no integration given, then we don't need to process this definition (could be AWS::NoValue)
                     if not self.method_definition_has_integration(method_definition):
                         continue
diff --git a/samtranslator/swagger/swagger.py b/samtranslator/swagger/swagger.py
index 33565be6..c5c80ee3 100644
--- a/samtranslator/swagger/swagger.py
+++ b/samtranslator/swagger/swagger.py
@@ -533,7 +533,7 @@ class SwaggerEditor(object):
             if add_default_auth_to_preflight or normalized_method_name != "options":
                 normalized_method_name = self._normalize_method_name(method_name)
                 # It is possible that the method could have two definitions in a Fn::If block.
-                for method_definition in self.get_method_contents(self.get_path(path)[normalized_method_name]):
+                for method_definition in self.get_method_contents(method):
 
                     # If no integration given, then we don't need to process this definition (could be AWS::NoValue)
                     if not isinstance(method_definition, dict):
@@ -622,14 +622,13 @@ class SwaggerEditor(object):
         :param string path: Path name
         """
 
-        for method_name, _ in self.get_path(path).items():
+        for method_name, method in self.get_path(path).items():
             # Excluding parameters section
             if method_name == "parameters":
                 continue
 
-            normalized_method_name = self._normalize_method_name(method_name)
             # It is possible that the method could have two definitions in a Fn::If block.
-            for method_definition in self.get_method_contents(self.get_path(path)[normalized_method_name]):
+            for method_definition in self.get_method_contents(method):
 
                 # If no integration given, then we don't need to process this definition (could be AWS::NoValue)
                 if not self.method_definition_has_integration(method_definition):


Test patch:
diff --git a/integration/combination/test_function_with_kinesis.py b/integration/combination/test_function_with_kinesis.py
index 16f0adc5..2e5af72a 100644
--- a/integration/combination/test_function_with_kinesis.py
+++ b/integration/combination/test_function_with_kinesis.py
@@ -22,3 +22,26 @@ class TestFunctionWithKinesis(BaseTest):
         self.assertEqual(event_source_mapping_batch_size, 100)
         self.assertEqual(event_source_mapping_function_arn, lambda_function_arn)
         self.assertEqual(event_source_mapping_kinesis_stream_arn, kinesis_stream["StreamARN"])
+
+
+class TestFunctionWithKinesisIntrinsics(BaseTest):
+    def test_function_with_kinesis_trigger(self):
+        self.create_and_verify_stack("combination/function_with_kinesis_intrinsics")
+
+        kinesis_client = self.client_provider.kinesis_client
+        kinesis_id = self.get_physical_id_by_type("AWS::Kinesis::Stream")
+        kinesis_stream = kinesis_client.describe_stream(StreamName=kinesis_id)["StreamDescription"]
+
+        lambda_client = self.client_provider.lambda_client
+        function_name = self.get_physical_id_by_type("AWS::Lambda::Function")
+        lambda_function_arn = lambda_client.get_function_configuration(FunctionName=function_name)["FunctionArn"]
+
+        event_source_mapping_arn = self.get_physical_id_by_type("AWS::Lambda::EventSourceMapping")
+        event_source_mapping_result = lambda_client.get_event_source_mapping(UUID=event_source_mapping_arn)
+        event_source_mapping_batch_size = event_source_mapping_result["BatchSize"]
+        event_source_mapping_function_arn = event_source_mapping_result["FunctionArn"]
+        event_source_mapping_kinesis_stream_arn = event_source_mapping_result["EventSourceArn"]
+
+        self.assertEqual(event_source_mapping_batch_size, 100)
+        self.assertEqual(event_source_mapping_function_arn, lambda_function_arn)
+        self.assertEqual(event_source_mapping_kinesis_stream_arn, kinesis_stream["StreamARN"])
diff --git a/integration/combination/test_function_with_s3_bucket.py b/integration/combination/test_function_with_s3_bucket.py
index 8e04d41d..90ddb301 100644
--- a/integration/combination/test_function_with_s3_bucket.py
+++ b/integration/combination/test_function_with_s3_bucket.py
@@ -15,4 +15,18 @@ class TestFunctionWithS3Bucket(BaseTest):
         # There should be only One notification configuration for the event
         self.assertEqual(len(configurations), 1)
         config = configurations[0]
-        self.assertEqual(set(config["Events"]), {"s3:ObjectCreated:*"})
+        self.assertEqual(config["Events"], ["s3:ObjectCreated:*"])
+
+    def test_function_with_s3_bucket_intrinsics(self):
+        self.create_and_verify_stack("combination/function_with_s3_intrinsics")
+
+        s3_client = self.client_provider.s3_client
+        s3_bucket_name = self.get_physical_id_by_type("AWS::S3::Bucket")
+        configurations = s3_client.get_bucket_notification_configuration(Bucket=s3_bucket_name)[
+            "LambdaFunctionConfigurations"
+        ]
+
+        self.assertEqual(len(configurations), 1)
+        config = configurations[0]
+        self.assertEqual(config["Events"], ["s3:ObjectCreated:*"])
+        self.assertEqual(config["Filter"]["Key"]["FilterRules"], [{"Name": "Suffix", "Value": "object_suffix"}])
diff --git a/integration/combination/test_function_with_sns.py b/integration/combination/test_function_with_sns.py
index fa90c1ee..9f7dd597 100644
--- a/integration/combination/test_function_with_sns.py
+++ b/integration/combination/test_function_with_sns.py
@@ -17,7 +17,7 @@ class TestFunctionWithSns(BaseTest):
         lambda_subscription = next((x for x in subscriptions if x["Protocol"] == "lambda"), None)
 
         self.assertIsNotNone(lambda_subscription)
-        self.assertTrue(lambda_function_endpoint in lambda_subscription["Endpoint"])
+        self.assertIn(lambda_function_endpoint, lambda_subscription["Endpoint"])
         self.assertEqual(lambda_subscription["Protocol"], "lambda")
         self.assertEqual(lambda_subscription["TopicArn"], sns_topic_arn)
 
@@ -26,3 +26,23 @@ class TestFunctionWithSns(BaseTest):
         self.assertIsNotNone(sqs_subscription)
         self.assertEqual(sqs_subscription["Protocol"], "sqs")
         self.assertEqual(sqs_subscription["TopicArn"], sns_topic_arn)
+
+    def test_function_with_sns_intrinsics(self):
+        self.create_and_verify_stack("combination/function_with_sns_intrinsics")
+
+        sns_client = self.client_provider.sns_client
+
+        sns_topic_arn = self.get_physical_id_by_type("AWS::SNS::Topic")
+
+        subscriptions = sns_client.list_subscriptions_by_topic(TopicArn=sns_topic_arn)["Subscriptions"]
+        self.assertEqual(len(subscriptions), 1)
+
+        subscription = subscriptions[0]
+
+        self.assertIsNotNone(subscription)
+        self.assertEqual(subscription["Protocol"], "sqs")
+        self.assertEqual(subscription["TopicArn"], sns_topic_arn)
+
+        subscription_arn = subscription["SubscriptionArn"]
+        subscription_attributes = sns_client.get_subscription_attributes(SubscriptionArn=subscription_arn)
+        self.assertEqual(subscription_attributes["Attributes"]["FilterPolicy"], '{"price_usd":[{"numeric":["<",100]}]}')
diff --git a/tests/model/test_api.py b/tests/model/test_api.py
index 627bda3d..708b83a5 100644
--- a/tests/model/test_api.py
+++ b/tests/model/test_api.py
@@ -14,6 +14,100 @@ class TestApiGatewayAuthorizer(TestCase):
 
     def test_create_authorizer_fails_with_string_authorization_scopes(self):
         with pytest.raises(InvalidResourceException):
-            auth = ApiGatewayAuthorizer(
-                api_logical_id="logicalId", name="authName", authorization_scopes="invalid_scope"
+            ApiGatewayAuthorizer(api_logical_id="logicalId", name="authName", authorization_scopes="invalid_scope")
+
+    def test_create_authorizer_fails_with_missing_identity_values_and_not_cached(self):
+        with pytest.raises(InvalidResourceException):
+            ApiGatewayAuthorizer(
+                api_logical_id="logicalId",
+                name="authName",
+                identity={"ReauthorizeEvery": 10},
+                function_payload_type="REQUEST",
+            )
+
+    def test_create_authorizer_fails_with_empty_identity(self):
+        with pytest.raises(InvalidResourceException):
+            ApiGatewayAuthorizer(
+                api_logical_id="logicalId", name="authName", identity={}, function_payload_type="REQUEST"
             )
+
+    def test_create_authorizer_doesnt_fail_with_identity_reauthorization_every_as_zero(self):
+        auth = ApiGatewayAuthorizer(
+            api_logical_id="logicalId",
+            name="authName",
+            identity={"ReauthorizeEvery": 0},
+            function_payload_type="REQUEST",
+        )
+
+        self.assertIsNotNone(auth)
+
+    def test_create_authorizer_with_non_integer_identity(self):
+        auth = ApiGatewayAuthorizer(
+            api_logical_id="logicalId",
+            name="authName",
+            identity={"ReauthorizeEvery": [], "Headers": ["Accept"]},
+            function_payload_type="REQUEST",
+        )
+
+        self.assertIsNotNone(auth)
+
+    def test_create_authorizer_with_identity_intrinsic_is_valid_with_headers(self):
+        auth = ApiGatewayAuthorizer(
+            api_logical_id="logicalId",
+            name="authName",
+            identity={"ReauthorizeEvery": {"FN:If": ["isProd", 10, 0]}, "Headers": ["Accept"]},
+            function_payload_type="REQUEST",
+        )
+
+        self.assertIsNotNone(auth)
+
+    def test_create_authorizer_with_identity_intrinsic_is_invalid_if_no_querystring_stagevariables_context_headers(
+        self,
+    ):
+        with pytest.raises(InvalidResourceException):
+            ApiGatewayAuthorizer(
+                api_logical_id="logicalId",
+                name="authName",
+                identity={"ReauthorizeEvery": {"FN:If": ["isProd", 10, 0]}},
+                function_payload_type="REQUEST",
+            )
+
+    def test_create_authorizer_with_identity_intrinsic_is_valid_with_context(self):
+        auth = ApiGatewayAuthorizer(
+            api_logical_id="logicalId",
+            name="authName",
+            identity={"ReauthorizeEvery": {"FN:If": ["isProd", 10, 0]}, "Context": ["Accept"]},
+            function_payload_type="REQUEST",
+        )
+
+        self.assertIsNotNone(auth)
+
+    def test_create_authorizer_with_identity_intrinsic_is_valid_with_stage_variables(self):
+        auth = ApiGatewayAuthorizer(
+            api_logical_id="logicalId",
+            name="authName",
+            identity={"ReauthorizeEvery": {"FN:If": ["isProd", 10, 0]}, "StageVariables": ["Stage"]},
+            function_payload_type="REQUEST",
+        )
+
+        self.assertIsNotNone(auth)
+
+    def test_create_authorizer_with_identity_intrinsic_is_valid_with_query_strings(self):
+        auth = ApiGatewayAuthorizer(
+            api_logical_id="logicalId",
+            name="authName",
+            identity={"ReauthorizeEvery": {"FN:If": ["isProd", 10, 0]}, "QueryStrings": ["AQueryString"]},
+            function_payload_type="REQUEST",
+        )
+
+        self.assertIsNotNone(auth)
+
+    def test_create_authorizer_with_identity_ReauthorizeEvery_asNone_valid_with_query_strings(self):
+        auth = ApiGatewayAuthorizer(
+            api_logical_id="logicalId",
+            name="authName",
+            identity={"ReauthorizeEvery": None, "QueryStrings": ["AQueryString"]},
+            function_payload_type="REQUEST",
+        )
+
+        self.assertIsNotNone(auth)
diff --git a/tests/translator/input/api_with_any_method_in_swagger.yaml b/tests/translator/input/api_with_any_method_in_swagger.yaml
new file mode 100644
index 00000000..bd6b3047
--- /dev/null
+++ b/tests/translator/input/api_with_any_method_in_swagger.yaml
@@ -0,0 +1,44 @@
+Resources:
+  HttpApiFunction:
+    Type: AWS::Serverless::Function
+    Properties:
+      CodeUri: s3://sam-demo-bucket/todo_list.zip
+      Handler: index.restapi
+      Runtime: python3.7
+      Events:
+        SimpleCase:
+          Type: HttpApi
+          Properties:
+            ApiId: !Ref MyApi
+        BasePath:
+          Type: HttpApi
+          Properties:
+            ApiId: !Ref MyApi
+            Path: /
+            Method: get
+
+  MyApi:
+    Type: AWS::Serverless::Api
+    Properties:
+      StageName:
+        Ref: Stage
+      Auth:
+        DefaultAuthorizer: "LambdaAuthorizer"
+        Authorizers:
+          LambdaAuthorizer:
+            FunctionPayloadType: "REQUEST"
+            Identity:
+              Headers:
+                  - "Authorization"
+      DefinitionBody:
+        openapi: '3.0'
+        info:
+          title: !Sub ${AWS::StackName}-Api
+        paths:
+          /:
+            any:
+              x-amazon-apigateway-integration:
+                httpMethod: ANY
+                type: http_proxy
+                uri: https://www.alphavantage.co/
+                payloadFormatVersion: '1.0'
\ No newline at end of file
diff --git a/tests/translator/input/api_with_auth_all_minimum.yaml b/tests/translator/input/api_with_auth_all_minimum.yaml
index 399df761..5066b20d 100644
--- a/tests/translator/input/api_with_auth_all_minimum.yaml
+++ b/tests/translator/input/api_with_auth_all_minimum.yaml
@@ -32,6 +32,20 @@ Resources:
             Identity:
               Headers:
                 - Authorization1
+
+  MyApiWithNotCachedLambdaRequestAuth:
+    Type: "AWS::Serverless::Api"
+    Properties:
+      StageName: Prod
+      Auth:
+        DefaultAuthorizer: MyLambdaRequestAuth
+        Authorizers:
+          MyLambdaRequestAuth:
+            FunctionPayloadType: REQUEST
+            FunctionArn: !GetAtt MyAuthFn.Arn
+            Identity:
+              ReauthorizeEvery: 0
+
   MyAuthFn:
     Type: AWS::Serverless::Function
     Properties:
@@ -81,6 +95,13 @@ Resources:
             RestApiId: !Ref MyApiWithLambdaRequestAuth
             Method: any
             Path: /any/lambda-request
+        LambdaNotCachedRequest:
+          Type: Api
+          Properties:
+            RestApiId: !Ref MyApiWithNotCachedLambdaRequestAuth
+            Method: get
+            Path: /not-cached-lambda-request
+
   MyUserPool:
     Type: AWS::Cognito::UserPool
     Properties:
diff --git a/tests/translator/input/api_with_identity_intrinsic.yaml b/tests/translator/input/api_with_identity_intrinsic.yaml
new file mode 100644
index 00000000..2afc3d67
--- /dev/null
+++ b/tests/translator/input/api_with_identity_intrinsic.yaml
@@ -0,0 +1,22 @@
+AWSTemplateFormatVersion: "2010-09-09"
+Transform: AWS::Serverless-2016-10-31
+
+Conditions:
+  isProd: true
+
+
+Resources:
+  APIGateway:
+    Type: 'AWS::Serverless::Api'
+    Properties:
+      StageName: Prod
+      Auth:
+        DefaultAuthorizer: SomeAuthorizer
+        Authorizers:
+          SomeAuthorizer:
+            FunctionPayloadType: REQUEST
+            FunctionArn: SomeArn
+            Identity:
+              Headers:
+                - Accept
+              ReauthorizeEvery: !If [isProd, 3600, 0]
\ No newline at end of file
diff --git a/tests/translator/input/cognito_userpool_with_event.yaml b/tests/translator/input/cognito_userpool_with_event.yaml
index 97cf8a59..bfdd1401 100644
--- a/tests/translator/input/cognito_userpool_with_event.yaml
+++ b/tests/translator/input/cognito_userpool_with_event.yaml
@@ -2,8 +2,16 @@ Resources:
   UserPool:
     Type: AWS::Cognito::UserPool
     Properties:
-      LambdaConfig:
-        PreAuthentication: "Test"
+      UserPoolName: UserPoolName
+      Policies:
+        PasswordPolicy:
+          MinimumLength: 8
+      UsernameAttributes:
+        - email
+      Schema:
+        - AttributeDataType: String
+          Name: email
+          Required: false
   ImplicitApiFunction:
     Type: AWS::Serverless::Function
     Properties:
@@ -14,12 +22,12 @@ Resources:
         OneTrigger:
           Type: Cognito
           Properties:
-            UserPool: 
+            UserPool:
               Ref: UserPool
             Trigger: PreSignUp
         TwoTrigger:
           Type: Cognito
           Properties:
-            UserPool: 
+            UserPool:
               Ref: UserPool
-            Trigger: [Test1, Test2]        
\ No newline at end of file
+            Trigger: [PostConfirmation, VerifyAuthChallengeResponse]
diff --git a/tests/translator/input/error_cognito_trigger_invalid_type.yaml b/tests/translator/input/error_cognito_trigger_invalid_type.yaml
new file mode 100644
index 00000000..0f1fb9d2
--- /dev/null
+++ b/tests/translator/input/error_cognito_trigger_invalid_type.yaml
@@ -0,0 +1,28 @@
+Resources:
+  UserPool:
+    Type: AWS::Cognito::UserPool
+    Properties:
+      UserPoolName: UserPoolName
+      Policies:
+        PasswordPolicy:
+          MinimumLength: 8
+      UsernameAttributes:
+        - email
+      Schema:
+        - AttributeDataType: String
+          Name: email
+          Required: false
+  ImplicitApiFunction:
+    Type: AWS::Serverless::Function
+    Properties:
+      InlineCode: |
+        exports.handler = async () => ‘Hello World!'
+      Handler: index.handler
+      Runtime: nodejs12.x
+      Events:
+        OneTrigger:
+          Type: Cognito
+          Properties:
+            UserPool:
+              Ref: UserPool
+            Trigger: !Join [ "", [ "Pre", "Sign", "Up"] ]
diff --git a/tests/translator/input/error_function_invalid_s3_event.yaml b/tests/translator/input/error_function_invalid_s3_event.yaml
new file mode 100644
index 00000000..3fd48f82
--- /dev/null
+++ b/tests/translator/input/error_function_invalid_s3_event.yaml
@@ -0,0 +1,23 @@
+Parameters:
+  EventsParam:
+    Type: String
+    Default: s3:ObjectCreated:*
+
+Resources:
+  FunctionInvalidS3Event:
+    Type: AWS::Serverless::Function
+    Properties:
+      CodeUri: s3://sam-demo-bucket/hello.zip
+      Handler: hello.handler
+      Runtime: python2.7
+      Events:
+        S3Event:
+          Type: S3
+          Properties:
+            Bucket:
+              Ref: MyBucket
+            Events:
+              Ref: EventsParam
+
+  MyBucket:
+    Type: AWS::S3::Bucket
diff --git a/tests/translator/input/error_sns_intrinsics.yaml b/tests/translator/input/error_sns_intrinsics.yaml
new file mode 100644
index 00000000..668a0aae
--- /dev/null
+++ b/tests/translator/input/error_sns_intrinsics.yaml
@@ -0,0 +1,23 @@
+Parameters:
+  SnsSqsSubscription:
+    Type: Boolean
+    Default: false
+
+Resources:
+  SaveNotificationFunction:
+    Type: AWS::Serverless::Function
+    Properties:
+      CodeUri: s3://sam-demo-bucket/notifications.zip
+      Handler: index.save_notification
+      Runtime: nodejs12.x
+      Events:
+        NotificationTopic:
+          Type: SNS
+          Properties:
+            SqsSubscription:
+              Ref: SnsSqsSubscription
+            Topic:
+              Ref: Notifications
+
+  Notifications:
+    Type: AWS::SNS::Topic
diff --git a/tests/translator/input/kinesis_intrinsics.yaml b/tests/translator/input/kinesis_intrinsics.yaml
new file mode 100644
index 00000000..7107cb06
--- /dev/null
+++ b/tests/translator/input/kinesis_intrinsics.yaml
@@ -0,0 +1,82 @@
+Parameters:
+  IntValue:
+    Type: Number
+    Default: 50
+
+  StringValue:
+    Type: String
+    Default: us-east-1
+
+  StartingPositionValue:
+    Type: String
+    Default: LATEST
+
+  FunctionResponseTypesValue:
+    Type: String
+    Default: ReportBatchItemFailures
+
+Conditions:
+  TrueCondition:
+    Fn::Equals:
+      - true
+      - true
+  FalseCondition:
+    Fn::Equals:
+      - true
+      - false
+
+Resources:
+  MyLambdaFunction:
+    Type: AWS::Serverless::Function
+    Properties:
+      Handler: index.handler
+      Runtime: nodejs12.x
+      CodeUri: s3://sam-demo-bucket/stream.zip
+      MemorySize: 128
+
+      Events:
+        KinesisStream:
+          Type: Kinesis
+          Properties:
+            BatchSize:
+              Ref: IntValue
+            BisectBatchOnFunctionError:
+              Fn::If:
+                - FalseCondition
+                - True
+                - False
+            Enabled:
+              Fn::If:
+                - TrueCondition
+                - True
+                - False
+            FunctionResponseTypes:
+              - Ref: FunctionResponseTypesValue
+            MaximumBatchingWindowInSeconds:
+              Ref: IntValue
+            MaximumRecordAgeInSeconds:
+              Ref: IntValue
+            MaximumRetryAttempts:
+              Ref: IntValue
+            ParallelizationFactor:
+              Ref: IntValue
+            StartingPosition:
+              Ref: StartingPositionValue
+            Stream:
+              # Connect with the stream we have created in this template
+              Fn::Join:
+                - ''
+                - - 'arn:'
+                  - Ref: AWS::Partition
+                  - ':kinesis:'
+                  - Ref: AWS::Region
+                  - ':'
+                  - Ref: AWS::AccountId
+                  - ':stream/'
+                  - Ref: MyStream
+            TumblingWindowInSeconds:
+              Ref: IntValue
+  MyStream:
+    Type: AWS::Kinesis::Stream
+    Properties:
+      ShardCount: 1
diff --git a/tests/translator/input/s3_intrinsics.yaml b/tests/translator/input/s3_intrinsics.yaml
new file mode 100644
index 00000000..dff8fe98
--- /dev/null
+++ b/tests/translator/input/s3_intrinsics.yaml
@@ -0,0 +1,40 @@
+Parameters:
+  EventsParam:
+    Type: String
+    Default: s3:ObjectCreated:*
+
+Conditions:
+  MyCondition:
+    Fn::Equals:
+      - true
+      - false
+
+Resources:
+  ThumbnailFunction:
+    Type: AWS::Serverless::Function
+    Properties:
+      CodeUri: s3://sam-demo-bucket/thumbnails.zip
+      Handler: index.generate_thumbails
+      Runtime: nodejs12.x
+      Events:
+        ImageBucket:
+          Type: S3
+          Properties:
+            Bucket:
+              Ref: Images
+            Events:
+              - s3:ObjectCreated:*
+            Filter:
+              Fn::If:
+                - MyCondition
+                - S3Key:
+                    Rules:
+                      - Name: Rule1Prefix
+                        Value: Rule1Value
+                - S3Key:
+                    Rules:
+                      - Name: Rule2Prefix
+                        Value: Rule2Value
+
+  Images:
+    Type: AWS::S3::Bucket
diff --git a/tests/translator/input/sns_intrinsics.yaml b/tests/translator/input/sns_intrinsics.yaml
new file mode 100644
index 00000000..cdafe672
--- /dev/null
+++ b/tests/translator/input/sns_intrinsics.yaml
@@ -0,0 +1,41 @@
+Parameters:
+  SnsRegion:
+    Type: String
+    Default: us-east-1
+
+Conditions:
+  MyCondition:
+    Fn::Equals:
+      - true
+      - false
+
+Resources:
+  SaveNotificationFunction:
+    Type: AWS::Serverless::Function
+    Properties:
+      CodeUri: s3://sam-demo-bucket/notifications.zip
+      Handler: index.save_notification
+      Runtime: nodejs12.x
+      Events:
+        NotificationTopic:
+          Type: SNS
+          Properties:
+            FilterPolicy:
+              Fn::If:
+                - MyCondition
+                - price_usd:
+                    - numeric:
+                        - ">="
+                        - 100
+                - price_usd:
+                    - numeric:
+                        - "<"
+                        - 100
+            Region:
+              Ref: SnsRegion
+            SqsSubscription: true
+            Topic:
+              Ref: Notifications
+
+  Notifications:
+    Type: AWS::SNS::Topic
diff --git a/tests/translator/output/api_with_any_method_in_swagger.json b/tests/translator/output/api_with_any_method_in_swagger.json
new file mode 100644
index 00000000..c4f81f32
--- /dev/null
+++ b/tests/translator/output/api_with_any_method_in_swagger.json
@@ -0,0 +1,189 @@
+{
+  "Resources": {
+    "MyApi": {
+      "Type": "AWS::ApiGateway::RestApi",
+      "Properties": {
+        "Body": {
+          "info": {
+            "title": {
+              "Fn::Sub": "${AWS::StackName}-Api"
+            }
+          },
+          "paths": {
+            "$default": {
+              "x-amazon-apigateway-any-method": {
+                "x-amazon-apigateway-integration": {
+                  "httpMethod": "POST",
+                  "type": "aws_proxy",
+                  "uri": {
+                    "Fn::Sub": "arn:${AWS::Partition}:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${HttpApiFunction.Arn}/invocations"
+                  },
+                  "payloadFormatVersion": "2.0"
+                },
+                "isDefaultRoute": true,
+                "security": [
+                  {
+                    "LambdaAuthorizer": []
+                  }
+                ],
+                "responses": {}
+              }
+            },
+            "/": {
+              "any": {
+                "x-amazon-apigateway-integration": {
+                  "httpMethod": "ANY",
+                  "type": "http_proxy",
+                  "uri": "https://www.alphavantage.co/",
+                  "payloadFormatVersion": "1.0"
+                },
+                "security": [
+                  {
+                    "LambdaAuthorizer": []
+                  }
+                ]
+              },
+              "get": {
+                "x-amazon-apigateway-integration": {
+                  "httpMethod": "POST",
+                  "type": "aws_proxy",
+                  "uri": {
+                    "Fn::Sub": "arn:${AWS::Partition}:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${HttpApiFunction.Arn}/invocations"
+                  },
+                  "payloadFormatVersion": "2.0"
+                },
+                "security": [
+                  {
+                    "LambdaAuthorizer": []
+                  }
+                ],
+                "responses": {}
+              }
+            }
+          },
+          "openapi": "3.0",
+          "components": {
+            "securitySchemes": {
+              "LambdaAuthorizer": {
+                "in": "header",
+                "type": "apiKey",
+                "name": "Unused",
+                "x-amazon-apigateway-authorizer": {
+                  "type": "request",
+                  "identitySource": "method.request.header.Authorization",
+                  "authorizerUri": {
+                    "Fn::Sub": [
+                      "arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${__FunctionArn__}/invocations",
+                      {
+                        "__FunctionArn__": null
+                      }
+                    ]
+                  }
+                },
+                "x-amazon-apigateway-authtype": "custom"
+              }
+            }
+          }
+        }
+      }
+    },
+    "HttpApiFunction": {
+      "Type": "AWS::Lambda::Function",
+      "Properties": {
+        "Handler": "index.restapi",
+        "Code": {
+          "S3Bucket": "sam-demo-bucket",
+          "S3Key": "todo_list.zip"
+        },
+        "Role": {
+          "Fn::GetAtt": [
+            "HttpApiFunctionRole",
+            "Arn"
+          ]
+        },
+        "Runtime": "python3.7",
+        "Tags": [
+          {
+            "Value": "SAM",
+            "Key": "lambda:createdBy"
+          }
+        ]
+      }
+    },
+    "HttpApiFunctionSimpleCasePermission": {
+      "Type": "AWS::Lambda::Permission",
+      "Properties": {
+        "Action": "lambda:InvokeFunction",
+        "Principal": "apigateway.amazonaws.com",
+        "FunctionName": {
+          "Ref": "HttpApiFunction"
+        },
+        "SourceArn": {
+          "Fn::Sub": [
+            "arn:${AWS::Partition}:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/${__Stage__}/*",
+            {
+              "__Stage__": "*",
+              "__ApiId__": {
+                "Ref": "MyApi"
+              }
+            }
+          ]
+        }
+      }
+    },
+    "HttpApiFunctionRole": {
+      "Type": "AWS::IAM::Role",
+      "Properties": {
+        "AssumeRolePolicyDocument": {
+          "Version": "2012-10-17",
+          "Statement": [
+            {
+              "Action": [
+                "sts:AssumeRole"
+              ],
+              "Effect": "Allow",
+              "Principal": {
+                "Service": [
+                  "lambda.amazonaws.com"
+                ]
+              }
+            }
+          ]
+        },
+        "ManagedPolicyArns": [
+          "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
+        ],
+        "Tags": [
+          {
+            "Value": "SAM",
+            "Key": "lambda:createdBy"
+          }
+        ]
+      }
+    },
+    "MyApiStage": {
+      "Type": "AWS::ApiGateway::Stage",
+      "Properties": {
+        "DeploymentId": {
+          "Ref": "MyApiDeployment69a80e7382"
+        },
+        "RestApiId": {
+          "Ref": "MyApi"
+        },
+        "StageName": {
+          "Ref": "Stage"
+        }
+      }
+    },
+    "MyApiDeployment69a80e7382": {
+      "Type": "AWS::ApiGateway::Deployment",
+      "Properties": {
+        "RestApiId": {
+          "Ref": "MyApi"
+        },
+        "Description": "RestApi deployment id: 69a80e738222706cff079ab8d7f348c0d89eddab",
+        "StageName": "Stage"
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/tests/translator/output/api_with_auth_all_minimum.json b/tests/translator/output/api_with_auth_all_minimum.json
index 186f6c50..a64255ce 100644
--- a/tests/translator/output/api_with_auth_all_minimum.json
+++ b/tests/translator/output/api_with_auth_all_minimum.json
@@ -1,22 +1,221 @@
 {
   "Resources": {
+    "MyApiWithCognitoAuth": {
+      "Type": "AWS::ApiGateway::RestApi",
+      "Properties": {
+        "Body": {
+          "info": {
+            "version": "1.0",
+            "title": {
+              "Ref": "AWS::StackName"
+            }
+          },
+          "paths": {
+            "/cognito": {
+              "get": {
+                "x-amazon-apigateway-integration": {
+                  "httpMethod": "POST",
+                  "type": "aws_proxy",
+                  "uri": {
+                    "Fn::Sub": "arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${MyFn.Arn}/invocations"
+                  }
+                },
+                "security": [
+                  {
+                    "MyCognitoAuth": []
+                  }
+                ],
+                "responses": {}
+              }
+            },
+            "/any/cognito": {
+              "x-amazon-apigateway-any-method": {
+                "x-amazon-apigateway-integration": {
+                  "httpMethod": "POST",
+                  "type": "aws_proxy",
+                  "uri": {
+                    "Fn::Sub": "arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${MyFn.Arn}/invocations"
+                  }
+                },
+                "security": [
+                  {
+                    "MyCognitoAuth": []
+                  }
+                ],
+                "responses": {}
+              }
+            }
+          },
+          "swagger": "2.0",
+          "securityDefinitions": {
+            "MyCognitoAuth": {
+              "in": "header",
+              "type": "apiKey",
+              "name": "Authorization",
+              "x-amazon-apigateway-authorizer": {
+                "providerARNs": [
+                  {
+                    "Fn::GetAtt": [
+                      "MyUserPool",
+                      "Arn"
+                    ]
+                  }
+                ],
+                "type": "cognito_user_pools"
+              },
+              "x-amazon-apigateway-authtype": "cognito_user_pools"
+            }
+          }
+        }
+      }
+    },
+    "MyApiWithLambdaRequestAuthProdStage": {
+      "Type": "AWS::ApiGateway::Stage",
+      "Properties": {
+        "DeploymentId": {
+          "Ref": "MyApiWithLambdaRequestAuthDeployment6a32cc7f63"
+        },
+        "RestApiId": {
+          "Ref": "MyApiWithLambdaRequestAuth"
+        },
+        "StageName": "Prod"
+      }
+    },
+    "MyApiWithLambdaTokenAuthMyLambdaTokenAuthAuthorizerPermission": {
+      "Type": "AWS::Lambda::Permission",
+      "Properties": {
+        "Action": "lambda:InvokeFunction",
+        "Principal": "apigateway.amazonaws.com",
+        "FunctionName": {
+          "Fn::GetAtt": [
+            "MyAuthFn",
+            "Arn"
+          ]
+        },
+        "SourceArn": {
+          "Fn::Sub": [
+            "arn:aws:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/authorizers/*",
+            {
+              "__ApiId__": {
+                "Ref": "MyApiWithLambdaTokenAuth"
+              }
+            }
+          ]
+        }
+      }
+    },
+    "MyApiWithLambdaRequestAuth": {
+      "Type": "AWS::ApiGateway::RestApi",
+      "Properties": {
+        "Body": {
+          "info": {
+            "version": "1.0",
+            "title": {
+              "Ref": "AWS::StackName"
+            }
+          },
+          "paths": {
+            "/any/lambda-request": {
+              "x-amazon-apigateway-any-method": {
+                "x-amazon-apigateway-integration": {
+                  "httpMethod": "POST",
+                  "type": "aws_proxy",
+                  "uri": {
+                    "Fn::Sub": "arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${MyFn.Arn}/invocations"
+                  }
+                },
+                "security": [
+                  {
+                    "MyLambdaRequestAuth": []
+                  }
+                ],
+                "responses": {}
+              }
+            },
+            "/lambda-request": {
+              "get": {
+                "x-amazon-apigateway-integration": {
+                  "httpMethod": "POST",
+                  "type": "aws_proxy",
+                  "uri": {
+                    "Fn::Sub": "arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${MyFn.Arn}/invocations"
+                  }
+                },
+                "security": [
+                  {
+                    "MyLambdaRequestAuth": []
+                  }
+                ],
+                "responses": {}
+              }
+            }
+          },
+          "swagger": "2.0",
+          "securityDefinitions": {
+            "MyLambdaRequestAuth": {
+              "in": "header",
+              "type": "apiKey",
+              "name": "Unused",
+              "x-amazon-apigateway-authorizer": {
+                "type": "request",
+                "identitySource": "method.request.header.Authorization1",
+                "authorizerUri": {
+                  "Fn::Sub": [
+                    "arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${__FunctionArn__}/invocations",
+                    {
+                      "__FunctionArn__": {
+                        "Fn::GetAtt": [
+                          "MyAuthFn",
+                          "Arn"
+                        ]
+                      }
+                    }
+                  ]
+                }
+              },
+              "x-amazon-apigateway-authtype": "custom"
+            }
+          }
+        }
+      }
+    },
+    "MyApiWithLambdaTokenAuthDeployment03cc3fd4fd": {
+      "Type": "AWS::ApiGateway::Deployment",
+      "Properties": {
+        "RestApiId": {
+          "Ref": "MyApiWithLambdaTokenAuth"
+        },
+        "Description": "RestApi deployment id: 03cc3fd4fd00e795fb067f94da06cb2fcfe95d3b",
+        "StageName": "Stage"
+      }
+    },
+    "MyApiWithCognitoAuthDeploymentdcc28e4b5f": {
+      "Type": "AWS::ApiGateway::Deployment",
+      "Properties": {
+        "RestApiId": {
+          "Ref": "MyApiWithCognitoAuth"
+        },
+        "Description": "RestApi deployment id: dcc28e4b5f8fbdb114c4da86eae5deddc368c60e",
+        "StageName": "Stage"
+      }
+    },
     "MyUserPool": {
       "Type": "AWS::Cognito::UserPool",
       "Properties": {
+        "UsernameAttributes": [
+          "email"
+        ],
         "UserPoolName": "UserPoolName",
         "Policies": {
           "PasswordPolicy": {
             "MinimumLength": 8
           }
         },
-        "UsernameAttributes": [
-          "email"
-        ],
         "Schema": [
           {
             "AttributeDataType": "String",
-            "Name": "email",
-            "Required": false
+            "Required": false,
+            "Name": "email"
           }
         ]
       }
@@ -24,11 +223,11 @@
     "MyAuthFn": {
       "Type": "AWS::Lambda::Function",
       "Properties": {
+        "Handler": "index.handler",
         "Code": {
           "S3Bucket": "bucket",
           "S3Key": "key"
         },
-        "Handler": "index.handler",
         "Role": {
           "Fn::GetAtt": [
             "MyAuthFnRole",
@@ -38,63 +237,31 @@
         "Runtime": "nodejs12.x",
         "Tags": [
           {
-            "Key": "lambda:createdBy",
-            "Value": "SAM"
+            "Value": "SAM",
+            "Key": "lambda:createdBy"
           }
         ]
       }
     },
-    "MyAuthFnRole": {
-      "Type": "AWS::IAM::Role",
+    "MyFnLambdaRequestAnyMethodPermissionProd": {
+      "Type": "AWS::Lambda::Permission",
       "Properties": {
-        "AssumeRolePolicyDocument": {
-          "Version": "2012-10-17",
-          "Statement": [
+        "Action": "lambda:InvokeFunction",
+        "Principal": "apigateway.amazonaws.com",
+        "FunctionName": {
+          "Ref": "MyFn"
+        },
+        "SourceArn": {
+          "Fn::Sub": [
+            "arn:aws:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/${__Stage__}/*/any/lambda-request",
             {
-              "Action": [
-                "sts:AssumeRole"
-              ],
-              "Effect": "Allow",
-              "Principal": {
-                "Service": [
-                  "lambda.amazonaws.com"
-                ]
+              "__Stage__": "*",
+              "__ApiId__": {
+                "Ref": "MyApiWithLambdaRequestAuth"
               }
             }
           ]
-        },
-        "ManagedPolicyArns": [
-          "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
-        ],
-        "Tags": [
-          {
-            "Key": "lambda:createdBy",
-            "Value": "SAM"
-          }
-        ]
-      }
-    },
-    "MyFn": {
-      "Type": "AWS::Lambda::Function",
-      "Properties": {
-        "Code": {
-          "S3Bucket": "bucket",
-          "S3Key": "key"
-        },
-        "Handler": "index.handler",
-        "Role": {
-          "Fn::GetAtt": [
-            "MyFnRole",
-            "Arn"
-          ]
-        },
-        "Runtime": "nodejs12.x",
-        "Tags": [
-          {
-            "Key": "lambda:createdBy",
-            "Value": "SAM"
-          }
-        ]
+        }
       }
     },
     "MyFnRole": {
@@ -121,234 +288,61 @@
         ],
         "Tags": [
           {
-            "Key": "lambda:createdBy",
-            "Value": "SAM"
+            "Value": "SAM",
+            "Key": "lambda:createdBy"
           }
         ]
       }
     },
-    "MyFnCognitoAnyMethodPermissionProd": {
-      "Type": "AWS::Lambda::Permission",
-      "Properties": {
-        "Action": "lambda:InvokeFunction",
-        "FunctionName": {
-          "Ref": "MyFn"
-        },
-        "Principal": "apigateway.amazonaws.com",
-        "SourceArn": {
-          "Fn::Sub": [
-            "arn:aws:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/${__Stage__}/*/any/cognito",
-            {
-              "__ApiId__": {
-                "Ref": "MyApiWithCognitoAuth"
-              },
-              "__Stage__": "*"
-            }
-          ]
-        }
-      }
-    },
-    "MyFnLambdaRequestAnyMethodPermissionProd": {
-      "Type": "AWS::Lambda::Permission",
-      "Properties": {
-        "Action": "lambda:InvokeFunction",
-        "FunctionName": {
-          "Ref": "MyFn"
-        },
-        "Principal": "apigateway.amazonaws.com",
-        "SourceArn": {
-          "Fn::Sub": [
-            "arn:aws:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/${__Stage__}/*/any/lambda-request",
-            {
-              "__ApiId__": {
-                "Ref": "MyApiWithLambdaRequestAuth"
-              },
-              "__Stage__": "*"
-            }
-          ]
-        }
-      }
-    },
-    "MyFnLambdaTokenAnyMethodPermissionProd": {
-      "Type": "AWS::Lambda::Permission",
-      "Properties": {
-        "Action": "lambda:InvokeFunction",
-        "FunctionName": {
-          "Ref": "MyFn"
-        },
-        "Principal": "apigateway.amazonaws.com",
-        "SourceArn": {
-          "Fn::Sub": [
-            "arn:aws:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/${__Stage__}/*/any/lambda-token",
-            {
-              "__ApiId__": {
-                "Ref": "MyApiWithLambdaTokenAuth"
-              },
-              "__Stage__": "*"
-            }
-          ]
-        }
-      }
-    },
     "MyFnCognitoPermissionProd": {
       "Type": "AWS::Lambda::Permission",
       "Properties": {
         "Action": "lambda:InvokeFunction",
+        "Principal": "apigateway.amazonaws.com",
         "FunctionName": {
           "Ref": "MyFn"
         },
-        "Principal": "apigateway.amazonaws.com",
         "SourceArn": {
           "Fn::Sub": [
             "arn:aws:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/${__Stage__}/GET/cognito",
             {
+              "__Stage__": "*",
               "__ApiId__": {
                 "Ref": "MyApiWithCognitoAuth"
-              },
-              "__Stage__": "*"
-            }
-          ]
-        }
-      }
-    },
-    "MyFnLambdaRequestPermissionProd": {
-      "Type": "AWS::Lambda::Permission",
-      "Properties": {
-        "Action": "lambda:InvokeFunction",
-        "FunctionName": {
-          "Ref": "MyFn"
-        },
-        "Principal": "apigateway.amazonaws.com",
-        "SourceArn": {
-          "Fn::Sub": [
-            "arn:aws:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/${__Stage__}/GET/lambda-request",
-            {
-              "__ApiId__": {
-                "Ref": "MyApiWithLambdaRequestAuth"
-              },
-              "__Stage__": "*"
+              }
             }
           ]
         }
       }
     },
-    "MyFnLambdaTokenPermissionProd": {
-      "Type": "AWS::Lambda::Permission",
+    "MyApiWithCognitoAuthProdStage": {
+      "Type": "AWS::ApiGateway::Stage",
       "Properties": {
-        "Action": "lambda:InvokeFunction",
-        "FunctionName": {
-          "Ref": "MyFn"
+        "DeploymentId": {
+          "Ref": "MyApiWithCognitoAuthDeploymentdcc28e4b5f"
         },
-        "Principal": "apigateway.amazonaws.com",
-        "SourceArn": {
-          "Fn::Sub": [
-            "arn:aws:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/${__Stage__}/GET/lambda-token",
-            {
-              "__ApiId__": {
-                "Ref": "MyApiWithLambdaTokenAuth"
-              },
-              "__Stage__": "*"
-            }
-          ]
-        }
-      }
-    },
-    "MyApiWithCognitoAuth": {
-      "Type": "AWS::ApiGateway::RestApi",
-      "Properties": {
-        "Body": {
-          "swagger": "2.0",
-          "info": {
-            "version": "1.0",
-            "title": {
-              "Ref": "AWS::StackName"
-            }
-          },
-          "paths": {
-            "/cognito": {
-              "get": {
-                "x-amazon-apigateway-integration": {
-                  "type": "aws_proxy",
-                  "httpMethod": "POST",
-                  "uri": {
-                    "Fn::Sub": "arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${MyFn.Arn}/invocations"
-                  }
-                },
-                "responses": {},
-                "security": [
-                  {
-                    "MyCognitoAuth": []
-                  }
-                ]
-              }
-            },
-            "/any/cognito": {
-              "x-amazon-apigateway-any-method": {
-                "x-amazon-apigateway-integration": {
-                  "type": "aws_proxy",
-                  "httpMethod": "POST",
-                  "uri": {
-                    "Fn::Sub": "arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${MyFn.Arn}/invocations"
-                  }
-                },
-                "responses": {},
-                "security": [
-                  {
-                    "MyCognitoAuth": []
-                  }
-                ]
-              }
-            }
-          },
-          "securityDefinitions": {
-            "MyCognitoAuth": {
-              "type": "apiKey",
-              "name": "Authorization",
-              "in": "header",
-              "x-amazon-apigateway-authtype": "cognito_user_pools",
-              "x-amazon-apigateway-authorizer": {
-                "type": "cognito_user_pools",
-                "providerARNs": [
-                  {
-                    "Fn::GetAtt": [
-                      "MyUserPool",
-                      "Arn"
-                    ]
-                  }
-                ]
-              }
-            }
-          }
-        }
-      }
-    },
-    "MyApiWithCognitoAuthDeploymentdcc28e4b5f": {
-      "Type": "AWS::ApiGateway::Deployment",
-      "Properties": {
-        "Description": "RestApi deployment id: dcc28e4b5f8fbdb114c4da86eae5deddc368c60e",
         "RestApiId": {
           "Ref": "MyApiWithCognitoAuth"
         },
-        "StageName": "Stage"
+        "StageName": "Prod"
       }
     },
-    "MyApiWithCognitoAuthProdStage": {
+    "MyApiWithNotCachedLambdaRequestAuthProdStage": {
       "Type": "AWS::ApiGateway::Stage",
       "Properties": {
         "DeploymentId": {
-          "Ref": "MyApiWithCognitoAuthDeploymentdcc28e4b5f"
+          "Ref": "MyApiWithNotCachedLambdaRequestAuthDeployment444f67cd7c"
         },
         "RestApiId": {
-          "Ref": "MyApiWithCognitoAuth"
+          "Ref": "MyApiWithNotCachedLambdaRequestAuth"
         },
         "StageName": "Prod"
       }
     },
-    "MyApiWithLambdaTokenAuth": {
+    "MyApiWithNotCachedLambdaRequestAuth": {
       "Type": "AWS::ApiGateway::RestApi",
       "Properties": {
         "Body": {
-          "swagger": "2.0",
           "info": {
             "version": "1.0",
             "title": {
@@ -356,49 +350,33 @@
             }
           },
           "paths": {
-            "/lambda-token": {
+            "/not-cached-lambda-request": {
               "get": {
                 "x-amazon-apigateway-integration": {
-                  "type": "aws_proxy",
                   "httpMethod": "POST",
-                  "uri": {
-                    "Fn::Sub": "arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${MyFn.Arn}/invocations"
-                  }
-                },
-                "responses": {},
-                "security": [
-                  {
-                    "MyLambdaTokenAuth": []
-                  }
-                ]
-              }
-            },
-            "/any/lambda-token": {
-              "x-amazon-apigateway-any-method": {
-                "x-amazon-apigateway-integration": {
                   "type": "aws_proxy",
-                  "httpMethod": "POST",
                   "uri": {
                     "Fn::Sub": "arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${MyFn.Arn}/invocations"
                   }
                 },
-                "responses": {},
                 "security": [
                   {
-                    "MyLambdaTokenAuth": []
+                    "MyLambdaRequestAuth": []
                   }
-                ]
+                ],
+                "responses": {}
               }
             }
           },
+          "swagger": "2.0",
           "securityDefinitions": {
-            "MyLambdaTokenAuth": {
-              "type": "apiKey",
-              "name": "Authorization",
+            "MyLambdaRequestAuth": {
               "in": "header",
-              "x-amazon-apigateway-authtype": "custom",
+              "type": "apiKey",
+              "name": "Unused",
               "x-amazon-apigateway-authorizer": {
-                "type": "token",
+                "type": "request",
+                "authorizerResultTtlInSeconds": 0,
                 "authorizerUri": {
                   "Fn::Sub": [
                     "arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${__FunctionArn__}/invocations",
@@ -412,49 +390,91 @@
                     }
                   ]
                 }
-              }
+              },
+              "x-amazon-apigateway-authtype": "custom"
             }
           }
         }
       }
     },
-    "MyApiWithLambdaTokenAuthDeployment03cc3fd4fd": {
-      "Type": "AWS::ApiGateway::Deployment",
+    "MyFnLambdaTokenAnyMethodPermissionProd": {
+      "Type": "AWS::Lambda::Permission",
       "Properties": {
-        "Description": "RestApi deployment id: 03cc3fd4fd00e795fb067f94da06cb2fcfe95d3b",
-        "RestApiId": {
-          "Ref": "MyApiWithLambdaTokenAuth"
+        "Action": "lambda:InvokeFunction",
+        "Principal": "apigateway.amazonaws.com",
+        "FunctionName": {
+          "Ref": "MyFn"
         },
-        "StageName": "Stage"
+        "SourceArn": {
+          "Fn::Sub": [
+            "arn:aws:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/${__Stage__}/*/any/lambda-token",
+            {
+              "__Stage__": "*",
+              "__ApiId__": {
+                "Ref": "MyApiWithLambdaTokenAuth"
+              }
+            }
+          ]
+        }
       }
     },
-    "MyApiWithLambdaTokenAuthProdStage": {
-      "Type": "AWS::ApiGateway::Stage",
+    "MyFnCognitoAnyMethodPermissionProd": {
+      "Type": "AWS::Lambda::Permission",
       "Properties": {
-        "DeploymentId": {
-          "Ref": "MyApiWithLambdaTokenAuthDeployment03cc3fd4fd"
-        },
-        "RestApiId": {
-          "Ref": "MyApiWithLambdaTokenAuth"
+        "Action": "lambda:InvokeFunction",
+        "Principal": "apigateway.amazonaws.com",
+        "FunctionName": {
+          "Ref": "MyFn"
         },
-        "StageName": "Prod"
+        "SourceArn": {
+          "Fn::Sub": [
+            "arn:aws:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/${__Stage__}/*/any/cognito",
+            {
+              "__Stage__": "*",
+              "__ApiId__": {
+                "Ref": "MyApiWithCognitoAuth"
+              }
+            }
+          ]
+        }
       }
     },
-    "MyApiWithLambdaTokenAuthMyLambdaTokenAuthAuthorizerPermission": {
+    "MyApiWithLambdaRequestAuthMyLambdaRequestAuthAuthorizerPermission": {
       "Type": "AWS::Lambda::Permission",
       "Properties": {
         "Action": "lambda:InvokeFunction",
+        "Principal": "apigateway.amazonaws.com",
         "FunctionName": {
           "Fn::GetAtt": [
             "MyAuthFn",
             "Arn"
           ]
         },
-        "Principal": "apigateway.amazonaws.com",
         "SourceArn": {
           "Fn::Sub": [
             "arn:aws:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/authorizers/*",
             {
+              "__ApiId__": {
+                "Ref": "MyApiWithLambdaRequestAuth"
+              }
+            }
+          ]
+        }
+      }
+    },
+    "MyFnLambdaTokenPermissionProd": {
+      "Type": "AWS::Lambda::Permission",
+      "Properties": {
+        "Action": "lambda:InvokeFunction",
+        "Principal": "apigateway.amazonaws.com",
+        "FunctionName": {
+          "Ref": "MyFn"
+        },
+        "SourceArn": {
+          "Fn::Sub": [
+            "arn:aws:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/${__Stage__}/GET/lambda-token",
+            {
+              "__Stage__": "*",
               "__ApiId__": {
                 "Ref": "MyApiWithLambdaTokenAuth"
               }
@@ -463,11 +483,31 @@
         }
       }
     },
-    "MyApiWithLambdaRequestAuth": {
+    "MyFnLambdaRequestPermissionProd": {
+      "Type": "AWS::Lambda::Permission",
+      "Properties": {
+        "Action": "lambda:InvokeFunction",
+        "Principal": "apigateway.amazonaws.com",
+        "FunctionName": {
+          "Ref": "MyFn"
+        },
+        "SourceArn": {
+          "Fn::Sub": [
+            "arn:aws:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/${__Stage__}/GET/lambda-request",
+            {
+              "__Stage__": "*",
+              "__ApiId__": {
+                "Ref": "MyApiWithLambdaRequestAuth"
+              }
+            }
+          ]
+        }
+      }
+    },
+    "MyApiWithLambdaTokenAuth": {
       "Type": "AWS::ApiGateway::RestApi",
       "Properties": {
         "Body": {
-          "swagger": "2.0",
           "info": {
             "version": "1.0",
             "title": {
@@ -475,49 +515,49 @@
             }
           },
           "paths": {
-            "/lambda-request": {
+            "/lambda-token": {
               "get": {
                 "x-amazon-apigateway-integration": {
-                  "type": "aws_proxy",
                   "httpMethod": "POST",
+                  "type": "aws_proxy",
                   "uri": {
                     "Fn::Sub": "arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${MyFn.Arn}/invocations"
                   }
                 },
-                "responses": {},
                 "security": [
                   {
-                    "MyLambdaRequestAuth": []
+                    "MyLambdaTokenAuth": []
                   }
-                ]
+                ],
+                "responses": {}
               }
             },
-            "/any/lambda-request": {
+            "/any/lambda-token": {
               "x-amazon-apigateway-any-method": {
                 "x-amazon-apigateway-integration": {
-                  "type": "aws_proxy",
                   "httpMethod": "POST",
+                  "type": "aws_proxy",
                   "uri": {
                     "Fn::Sub": "arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${MyFn.Arn}/invocations"
                   }
                 },
-                "responses": {},
                 "security": [
                   {
-                    "MyLambdaRequestAuth": []
+                    "MyLambdaTokenAuth": []
                   }
-                ]
+                ],
+                "responses": {}
               }
             }
           },
+          "swagger": "2.0",
           "securityDefinitions": {
-            "MyLambdaRequestAuth": {
-              "type": "apiKey",
-              "name": "Unused",
+            "MyLambdaTokenAuth": {
               "in": "header",
-              "x-amazon-apigateway-authtype": "custom",
+              "type": "apiKey",
+              "name": "Authorization",
               "x-amazon-apigateway-authorizer": {
-                "type": "request",
+                "type": "token",
                 "authorizerUri": {
                   "Fn::Sub": [
                     "arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${__FunctionArn__}/invocations",
@@ -530,9 +570,9 @@
                       }
                     }
                   ]
-                },
-                "identitySource": "method.request.header.Authorization1"
-              }
+                }
+              },
+              "x-amazon-apigateway-authtype": "custom"
             }
           }
         }
@@ -541,47 +581,131 @@
     "MyApiWithLambdaRequestAuthDeployment6a32cc7f63": {
       "Type": "AWS::ApiGateway::Deployment",
       "Properties": {
-        "Description": "RestApi deployment id: 6a32cc7f63485b93190f441a47da57f43de6a532",
         "RestApiId": {
           "Ref": "MyApiWithLambdaRequestAuth"
         },
+        "Description": "RestApi deployment id: 6a32cc7f63485b93190f441a47da57f43de6a532",
         "StageName": "Stage"
       }
     },
-    "MyApiWithLambdaRequestAuthProdStage": {
-      "Type": "AWS::ApiGateway::Stage",
-      "Properties": {
-        "DeploymentId": {
-          "Ref": "MyApiWithLambdaRequestAuthDeployment6a32cc7f63"
-        },
-        "RestApiId": {
-          "Ref": "MyApiWithLambdaRequestAuth"
-        },
-        "StageName": "Prod"
-      }
-    },
-    "MyApiWithLambdaRequestAuthMyLambdaRequestAuthAuthorizerPermission": {
+    "MyApiWithNotCachedLambdaRequestAuthMyLambdaRequestAuthAuthorizerPermission": {
       "Type": "AWS::Lambda::Permission",
       "Properties": {
         "Action": "lambda:InvokeFunction",
+        "Principal": "apigateway.amazonaws.com",
         "FunctionName": {
           "Fn::GetAtt": [
             "MyAuthFn",
             "Arn"
           ]
         },
-        "Principal": "apigateway.amazonaws.com",
         "SourceArn": {
           "Fn::Sub": [
             "arn:aws:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/authorizers/*",
             {
               "__ApiId__": {
-                "Ref": "MyApiWithLambdaRequestAuth"
+                "Ref": "MyApiWithNotCachedLambdaRequestAuth"
+              }
+            }
+          ]
+        }
+      }
+    },
+    "MyFnLambdaNotCachedRequestPermissionProd": {
+      "Type": "AWS::Lambda::Permission",
+      "Properties": {
+        "Action": "lambda:InvokeFunction",
+        "Principal": "apigateway.amazonaws.com",
+        "FunctionName": {
+          "Ref": "MyFn"
+        },
+        "SourceArn": {
+          "Fn::Sub": [
+            "arn:aws:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/${__Stage__}/GET/not-cached-lambda-request",
+            {
+              "__Stage__": "*",
+              "__ApiId__": {
+                "Ref": "MyApiWithNotCachedLambdaRequestAuth"
               }
             }
           ]
         }
       }
+    },
+    "MyAuthFnRole": {
+      "Type": "AWS::IAM::Role",
+      "Properties": {
+        "AssumeRolePolicyDocument": {
+          "Version": "2012-10-17",
+          "Statement": [
+            {
+              "Action": [
+                "sts:AssumeRole"
+              ],
+              "Effect": "Allow",
+              "Principal": {
+                "Service": [
+                  "lambda.amazonaws.com"
+                ]
+              }
+            }
+          ]
+        },
+        "ManagedPolicyArns": [
+          "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
+        ],
+        "Tags": [
+          {
+            "Value": "SAM",
+            "Key": "lambda:createdBy"
+          }
+        ]
+      }
+    },
+    "MyApiWithLambdaTokenAuthProdStage": {
+      "Type": "AWS::ApiGateway::Stage",
+      "Properties": {
+        "DeploymentId": {
+          "Ref": "MyApiWithLambdaTokenAuthDeployment03cc3fd4fd"
+        },
+        "RestApiId": {
+          "Ref": "MyApiWithLambdaTokenAuth"
+        },
+        "StageName": "Prod"
+      }
+    },
+    "MyApiWithNotCachedLambdaRequestAuthDeployment444f67cd7c": {
+      "Type": "AWS::ApiGateway::Deployment",
+      "Properties": {
+        "RestApiId": {
+          "Ref": "MyApiWithNotCachedLambdaRequestAuth"
+        },
+        "Description": "RestApi deployment id: 444f67cd7c6475a698a0101480ba99b498325e90",
+        "StageName": "Stage"
+      }
+    },
+    "MyFn": {
+      "Type": "AWS::Lambda::Function",
+      "Properties": {
+        "Handler": "index.handler",
+        "Code": {
+          "S3Bucket": "bucket",
+          "S3Key": "key"
+        },
+        "Role": {
+          "Fn::GetAtt": [
+            "MyFnRole",
+            "Arn"
+          ]
+        },
+        "Runtime": "nodejs12.x",
+        "Tags": [
+          {
+            "Value": "SAM",
+            "Key": "lambda:createdBy"
+          }
+        ]
+      }
     }
   }
-}
\ No newline at end of file
+}
diff --git a/tests/translator/output/api_with_identity_intrinsic.json b/tests/translator/output/api_with_identity_intrinsic.json
new file mode 100644
index 00000000..32c8b8ea
--- /dev/null
+++ b/tests/translator/output/api_with_identity_intrinsic.json
@@ -0,0 +1,90 @@
+{
+  "AWSTemplateFormatVersion": "2010-09-09",
+  "Conditions": {
+    "isProd": true
+  },
+  "Resources": {
+    "APIGateway": {
+      "Type": "AWS::ApiGateway::RestApi",
+      "Properties": {
+        "Body": {
+          "info": {
+            "version": "1.0",
+            "title": {
+              "Ref": "AWS::StackName"
+            }
+          },
+          "paths": {},
+          "swagger": "2.0",
+          "securityDefinitions": {
+            "SomeAuthorizer": {
+              "in": "header",
+              "type": "apiKey",
+              "name": "Unused",
+              "x-amazon-apigateway-authorizer": {
+                "type": "request",
+                "authorizerResultTtlInSeconds": {
+                  "Fn::If": [
+                    "isProd",
+                    3600,
+                    0
+                  ]
+                },
+                "identitySource": "method.request.header.Accept",
+                "authorizerUri": {
+                  "Fn::Sub": [
+                    "arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${__FunctionArn__}/invocations",
+                    {
+                      "__FunctionArn__": "SomeArn"
+                    }
+                  ]
+                }
+              },
+              "x-amazon-apigateway-authtype": "custom"
+            }
+          }
+        }
+      }
+    },
+    "APIGatewaySomeAuthorizerAuthorizerPermission": {
+      "Type": "AWS::Lambda::Permission",
+      "Properties": {
+        "Action": "lambda:InvokeFunction",
+        "Principal": "apigateway.amazonaws.com",
+        "FunctionName": "SomeArn",
+        "SourceArn": {
+          "Fn::Sub": [
+            "arn:aws:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/authorizers/*",
+            {
+              "__ApiId__": {
+                "Ref": "APIGateway"
+              }
+            }
+          ]
+        }
+      }
+    },
+    "APIGatewayDeploymenta119f04c8a": {
+      "Type": "AWS::ApiGateway::Deployment",
+      "Properties": {
+        "RestApiId": {
+          "Ref": "APIGateway"
+        },
+        "Description": "RestApi deployment id: a119f04c8aba206b5b7db5f232f013b816fe6447",
+        "StageName": "Stage"
+      }
+    },
+    "APIGatewayProdStage": {
+      "Type": "AWS::ApiGateway::Stage",
+      "Properties": {
+        "DeploymentId": {
+          "Ref": "APIGatewayDeploymenta119f04c8a"
+        },
+        "RestApiId": {
+          "Ref": "APIGateway"
+        },
+        "StageName": "Prod"
+      }
+    }
+  }
+}
diff --git a/tests/translator/output/aws-cn/api_with_any_method_in_swagger.json b/tests/translator/output/aws-cn/api_with_any_method_in_swagger.json
new file mode 100644
index 00000000..44e18238
--- /dev/null
+++ b/tests/translator/output/aws-cn/api_with_any_method_in_swagger.json
@@ -0,0 +1,197 @@
+{
+  "Resources": {
+    "MyApiStage": {
+      "Type": "AWS::ApiGateway::Stage",
+      "Properties": {
+        "DeploymentId": {
+          "Ref": "MyApiDeployment37c803d096"
+        },
+        "RestApiId": {
+          "Ref": "MyApi"
+        },
+        "StageName": {
+          "Ref": "Stage"
+        }
+      }
+    },
+    "HttpApiFunctionRole": {
+      "Type": "AWS::IAM::Role",
+      "Properties": {
+        "AssumeRolePolicyDocument": {
+          "Version": "2012-10-17",
+          "Statement": [
+            {
+              "Action": [
+                "sts:AssumeRole"
+              ],
+              "Effect": "Allow",
+              "Principal": {
+                "Service": [
+                  "lambda.amazonaws.com"
+                ]
+              }
+            }
+          ]
+        },
+        "ManagedPolicyArns": [
+          "arn:aws-cn:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
+        ],
+        "Tags": [
+          {
+            "Value": "SAM",
+            "Key": "lambda:createdBy"
+          }
+        ]
+      }
+    },
+    "MyApiDeployment37c803d096": {
+      "Type": "AWS::ApiGateway::Deployment",
+      "Properties": {
+        "RestApiId": {
+          "Ref": "MyApi"
+        },
+        "Description": "RestApi deployment id: 37c803d09628334a047966047f087abf49267a2c",
+        "StageName": "Stage"
+      }
+    },
+    "HttpApiFunctionSimpleCasePermission": {
+      "Type": "AWS::Lambda::Permission",
+      "Properties": {
+        "Action": "lambda:InvokeFunction",
+        "Principal": "apigateway.amazonaws.com",
+        "FunctionName": {
+          "Ref": "HttpApiFunction"
+        },
+        "SourceArn": {
+          "Fn::Sub": [
+            "arn:${AWS::Partition}:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/${__Stage__}/*",
+            {
+              "__Stage__": "*",
+              "__ApiId__": {
+                "Ref": "MyApi"
+              }
+            }
+          ]
+        }
+      }
+    },
+    "HttpApiFunction": {
+      "Type": "AWS::Lambda::Function",
+      "Properties": {
+        "Handler": "index.restapi",
+        "Code": {
+          "S3Bucket": "sam-demo-bucket",
+          "S3Key": "todo_list.zip"
+        },
+        "Role": {
+          "Fn::GetAtt": [
+            "HttpApiFunctionRole",
+            "Arn"
+          ]
+        },
+        "Runtime": "python3.7",
+        "Tags": [
+          {
+            "Value": "SAM",
+            "Key": "lambda:createdBy"
+          }
+        ]
+      }
+    },
+    "MyApi": {
+      "Type": "AWS::ApiGateway::RestApi",
+      "Properties": {
+        "Body": {
+          "info": {
+            "title": {
+              "Fn::Sub": "${AWS::StackName}-Api"
+            }
+          },
+          "paths": {
+            "$default": {
+              "x-amazon-apigateway-any-method": {
+                "x-amazon-apigateway-integration": {
+                  "httpMethod": "POST",
+                  "type": "aws_proxy",
+                  "uri": {
+                    "Fn::Sub": "arn:${AWS::Partition}:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${HttpApiFunction.Arn}/invocations"
+                  },
+                  "payloadFormatVersion": "2.0"
+                },
+                "isDefaultRoute": true,
+                "security": [
+                  {
+                    "LambdaAuthorizer": []
+                  }
+                ],
+                "responses": {}
+              }
+            },
+            "/": {
+              "any": {
+                "x-amazon-apigateway-integration": {
+                  "httpMethod": "ANY",
+                  "type": "http_proxy",
+                  "uri": "https://www.alphavantage.co/",
+                  "payloadFormatVersion": "1.0"
+                },
+                "security": [
+                  {
+                    "LambdaAuthorizer": []
+                  }
+                ]
+              },
+              "get": {
+                "x-amazon-apigateway-integration": {
+                  "httpMethod": "POST",
+                  "type": "aws_proxy",
+                  "uri": {
+                    "Fn::Sub": "arn:${AWS::Partition}:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${HttpApiFunction.Arn}/invocations"
+                  },
+                  "payloadFormatVersion": "2.0"
+                },
+                "security": [
+                  {
+                    "LambdaAuthorizer": []
+                  }
+                ],
+                "responses": {}
+              }
+            }
+          },
+          "openapi": "3.0",
+          "components": {
+            "securitySchemes": {
+              "LambdaAuthorizer": {
+                "in": "header",
+                "type": "apiKey",
+                "name": "Unused",
+                "x-amazon-apigateway-authorizer": {
+                  "type": "request",
+                  "identitySource": "method.request.header.Authorization",
+                  "authorizerUri": {
+                    "Fn::Sub": [
+                      "arn:aws-cn:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${__FunctionArn__}/invocations",
+                      {
+                        "__FunctionArn__": null
+                      }
+                    ]
+                  }
+                },
+                "x-amazon-apigateway-authtype": "custom"
+              }
+            }
+          }
+        },
+        "EndpointConfiguration": {
+          "Types": [
+            "REGIONAL"
+          ]
+        },
+        "Parameters": {
+          "endpointConfigurationTypes": "REGIONAL"
+        }
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/tests/translator/output/aws-cn/api_with_auth_all_minimum.json b/tests/translator/output/aws-cn/api_with_auth_all_minimum.json
index b9e40818..b90828c4 100644
--- a/tests/translator/output/aws-cn/api_with_auth_all_minimum.json
+++ b/tests/translator/output/aws-cn/api_with_auth_all_minimum.json
@@ -1,22 +1,215 @@
 {
   "Resources": {
+    "MyApiWithCognitoAuth": {
+      "Type": "AWS::ApiGateway::RestApi",
+      "Properties": {
+        "Body": {
+          "info": {
+            "version": "1.0",
+            "title": {
+              "Ref": "AWS::StackName"
+            }
+          },
+          "paths": {
+            "/cognito": {
+              "get": {
+                "x-amazon-apigateway-integration": {
+                  "httpMethod": "POST",
+                  "type": "aws_proxy",
+                  "uri": {
+                    "Fn::Sub": "arn:aws-cn:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${MyFn.Arn}/invocations"
+                  }
+                },
+                "security": [
+                  {
+                    "MyCognitoAuth": []
+                  }
+                ],
+                "responses": {}
+              }
+            },
+            "/any/cognito": {
+              "x-amazon-apigateway-any-method": {
+                "x-amazon-apigateway-integration": {
+                  "httpMethod": "POST",
+                  "type": "aws_proxy",
+                  "uri": {
+                    "Fn::Sub": "arn:aws-cn:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${MyFn.Arn}/invocations"
+                  }
+                },
+                "security": [
+                  {
+                    "MyCognitoAuth": []
+                  }
+                ],
+                "responses": {}
+              }
+            }
+          },
+          "swagger": "2.0",
+          "securityDefinitions": {
+            "MyCognitoAuth": {
+              "in": "header",
+              "type": "apiKey",
+              "name": "Authorization",
+              "x-amazon-apigateway-authorizer": {
+                "providerARNs": [
+                  {
+                    "Fn::GetAtt": [
+                      "MyUserPool",
+                      "Arn"
+                    ]
+                  }
+                ],
+                "type": "cognito_user_pools"
+              },
+              "x-amazon-apigateway-authtype": "cognito_user_pools"
+            }
+          }
+        },
+        "EndpointConfiguration": {
+          "Types": [
+            "REGIONAL"
+          ]
+        },
+        "Parameters": {
+          "endpointConfigurationTypes": "REGIONAL"
+        }
+      }
+    },
+    "MyApiWithNotCachedLambdaRequestAuthDeployment234e92eab4": {
+      "Type": "AWS::ApiGateway::Deployment",
+      "Properties": {
+        "RestApiId": {
+          "Ref": "MyApiWithNotCachedLambdaRequestAuth"
+        },
+        "Description": "RestApi deployment id: 234e92eab4e4c590ad261ddd55775c1edcc2972f",
+        "StageName": "Stage"
+      }
+    },
+    "MyApiWithLambdaTokenAuthMyLambdaTokenAuthAuthorizerPermission": {
+      "Type": "AWS::Lambda::Permission",
+      "Properties": {
+        "Action": "lambda:InvokeFunction",
+        "Principal": "apigateway.amazonaws.com",
+        "FunctionName": {
+          "Fn::GetAtt": [
+            "MyAuthFn",
+            "Arn"
+          ]
+        },
+        "SourceArn": {
+          "Fn::Sub": [
+            "arn:aws-cn:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/authorizers/*",
+            {
+              "__ApiId__": {
+                "Ref": "MyApiWithLambdaTokenAuth"
+              }
+            }
+          ]
+        }
+      }
+    },
+    "MyApiWithLambdaRequestAuth": {
+      "Type": "AWS::ApiGateway::RestApi",
+      "Properties": {
+        "Body": {
+          "info": {
+            "version": "1.0",
+            "title": {
+              "Ref": "AWS::StackName"
+            }
+          },
+          "paths": {
+            "/any/lambda-request": {
+              "x-amazon-apigateway-any-method": {
+                "x-amazon-apigateway-integration": {
+                  "httpMethod": "POST",
+                  "type": "aws_proxy",
+                  "uri": {
+                    "Fn::Sub": "arn:aws-cn:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${MyFn.Arn}/invocations"
+                  }
+                },
+                "security": [
+                  {
+                    "MyLambdaRequestAuth": []
+                  }
+                ],
+                "responses": {}
+              }
+            },
+            "/lambda-request": {
+              "get": {
+                "x-amazon-apigateway-integration": {
+                  "httpMethod": "POST",
+                  "type": "aws_proxy",
+                  "uri": {
+                    "Fn::Sub": "arn:aws-cn:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${MyFn.Arn}/invocations"
+                  }
+                },
+                "security": [
+                  {
+                    "MyLambdaRequestAuth": []
+                  }
+                ],
+                "responses": {}
+              }
+            }
+          },
+          "swagger": "2.0",
+          "securityDefinitions": {
+            "MyLambdaRequestAuth": {
+              "in": "header",
+              "type": "apiKey",
+              "name": "Unused",
+              "x-amazon-apigateway-authorizer": {
+                "type": "request",
+                "identitySource": "method.request.header.Authorization1",
+                "authorizerUri": {
+                  "Fn::Sub": [
+                    "arn:aws-cn:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${__FunctionArn__}/invocations",
+                    {
+                      "__FunctionArn__": {
+                        "Fn::GetAtt": [
+                          "MyAuthFn",
+                          "Arn"
+                        ]
+                      }
+                    }
+                  ]
+                }
+              },
+              "x-amazon-apigateway-authtype": "custom"
+            }
+          }
+        },
+        "EndpointConfiguration": {
+          "Types": [
+            "REGIONAL"
+          ]
+        },
+        "Parameters": {
+          "endpointConfigurationTypes": "REGIONAL"
+        }
+      }
+    },
     "MyUserPool": {
       "Type": "AWS::Cognito::UserPool",
       "Properties": {
+        "UsernameAttributes": [
+          "email"
+        ],
         "UserPoolName": "UserPoolName",
         "Policies": {
           "PasswordPolicy": {
             "MinimumLength": 8
           }
         },
-        "UsernameAttributes": [
-          "email"
-        ],
         "Schema": [
           {
             "AttributeDataType": "String",
-            "Name": "email",
-            "Required": false
+            "Required": false,
+            "Name": "email"
           }
         ]
       }
@@ -24,11 +217,11 @@
     "MyAuthFn": {
       "Type": "AWS::Lambda::Function",
       "Properties": {
+        "Handler": "index.handler",
         "Code": {
           "S3Bucket": "bucket",
           "S3Key": "key"
         },
-        "Handler": "index.handler",
         "Role": {
           "Fn::GetAtt": [
             "MyAuthFnRole",
@@ -38,63 +231,31 @@
         "Runtime": "nodejs12.x",
         "Tags": [
           {
-            "Key": "lambda:createdBy",
-            "Value": "SAM"
+            "Value": "SAM",
+            "Key": "lambda:createdBy"
           }
         ]
       }
     },
-    "MyAuthFnRole": {
-      "Type": "AWS::IAM::Role",
+    "MyFnLambdaRequestAnyMethodPermissionProd": {
+      "Type": "AWS::Lambda::Permission",
       "Properties": {
-        "AssumeRolePolicyDocument": {
-          "Version": "2012-10-17",
-          "Statement": [
+        "Action": "lambda:InvokeFunction",
+        "Principal": "apigateway.amazonaws.com",
+        "FunctionName": {
+          "Ref": "MyFn"
+        },
+        "SourceArn": {
+          "Fn::Sub": [
+            "arn:aws-cn:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/${__Stage__}/*/any/lambda-request",
             {
-              "Action": [
-                "sts:AssumeRole"
-              ],
-              "Effect": "Allow",
-              "Principal": {
-                "Service": [
-                  "lambda.amazonaws.com"
-                ]
+              "__Stage__": "*",
+              "__ApiId__": {
+                "Ref": "MyApiWithLambdaRequestAuth"
               }
             }
           ]
-        },
-        "ManagedPolicyArns": [
-          "arn:aws-cn:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
-        ],
-        "Tags": [
-          {
-            "Key": "lambda:createdBy",
-            "Value": "SAM"
-          }
-        ]
-      }
-    },
-    "MyFn": {
-      "Type": "AWS::Lambda::Function",
-      "Properties": {
-        "Code": {
-          "S3Bucket": "bucket",
-          "S3Key": "key"
-        },
-        "Handler": "index.handler",
-        "Role": {
-          "Fn::GetAtt": [
-            "MyFnRole",
-            "Arn"
-          ]
-        },
-        "Runtime": "nodejs12.x",
-        "Tags": [
-          {
-            "Key": "lambda:createdBy",
-            "Value": "SAM"
-          }
-        ]
+        }
       }
     },
     "MyFnRole": {
@@ -121,242 +282,61 @@
         ],
         "Tags": [
           {
-            "Key": "lambda:createdBy",
-            "Value": "SAM"
+            "Value": "SAM",
+            "Key": "lambda:createdBy"
           }
         ]
       }
     },
-    "MyFnCognitoAnyMethodPermissionProd": {
-      "Type": "AWS::Lambda::Permission",
-      "Properties": {
-        "Action": "lambda:InvokeFunction",
-        "FunctionName": {
-          "Ref": "MyFn"
-        },
-        "Principal": "apigateway.amazonaws.com",
-        "SourceArn": {
-          "Fn::Sub": [
-            "arn:aws-cn:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/${__Stage__}/*/any/cognito",
-            {
-              "__ApiId__": {
-                "Ref": "MyApiWithCognitoAuth"
-              },
-              "__Stage__": "*"
-            }
-          ]
-        }
-      }
-    },
-    "MyFnLambdaRequestAnyMethodPermissionProd": {
-      "Type": "AWS::Lambda::Permission",
-      "Properties": {
-        "Action": "lambda:InvokeFunction",
-        "FunctionName": {
-          "Ref": "MyFn"
-        },
-        "Principal": "apigateway.amazonaws.com",
-        "SourceArn": {
-          "Fn::Sub": [
-            "arn:aws-cn:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/${__Stage__}/*/any/lambda-request",
-            {
-              "__ApiId__": {
-                "Ref": "MyApiWithLambdaRequestAuth"
-              },
-              "__Stage__": "*"
-            }
-          ]
-        }
-      }
-    },
-    "MyFnLambdaTokenAnyMethodPermissionProd": {
-      "Type": "AWS::Lambda::Permission",
-      "Properties": {
-        "Action": "lambda:InvokeFunction",
-        "FunctionName": {
-          "Ref": "MyFn"
-        },
-        "Principal": "apigateway.amazonaws.com",
-        "SourceArn": {
-          "Fn::Sub": [
-            "arn:aws-cn:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/${__Stage__}/*/any/lambda-token",
-            {
-              "__ApiId__": {
-                "Ref": "MyApiWithLambdaTokenAuth"
-              },
-              "__Stage__": "*"
-            }
-          ]
-        }
-      }
-    },
     "MyFnCognitoPermissionProd": {
       "Type": "AWS::Lambda::Permission",
       "Properties": {
         "Action": "lambda:InvokeFunction",
+        "Principal": "apigateway.amazonaws.com",
         "FunctionName": {
           "Ref": "MyFn"
         },
-        "Principal": "apigateway.amazonaws.com",
         "SourceArn": {
           "Fn::Sub": [
             "arn:aws-cn:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/${__Stage__}/GET/cognito",
             {
+              "__Stage__": "*",
               "__ApiId__": {
                 "Ref": "MyApiWithCognitoAuth"
-              },
-              "__Stage__": "*"
-            }
-          ]
-        }
-      }
-    },
-    "MyFnLambdaRequestPermissionProd": {
-      "Type": "AWS::Lambda::Permission",
-      "Properties": {
-        "Action": "lambda:InvokeFunction",
-        "FunctionName": {
-          "Ref": "MyFn"
-        },
-        "Principal": "apigateway.amazonaws.com",
-        "SourceArn": {
-          "Fn::Sub": [
-            "arn:aws-cn:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/${__Stage__}/GET/lambda-request",
-            {
-              "__ApiId__": {
-                "Ref": "MyApiWithLambdaRequestAuth"
-              },
-              "__Stage__": "*"
-            }
-          ]
-        }
-      }
-    },
-    "MyFnLambdaTokenPermissionProd": {
-      "Type": "AWS::Lambda::Permission",
-      "Properties": {
-        "Action": "lambda:InvokeFunction",
-        "FunctionName": {
-          "Ref": "MyFn"
-        },
-        "Principal": "apigateway.amazonaws.com",
-        "SourceArn": {
-          "Fn::Sub": [
-            "arn:aws-cn:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/${__Stage__}/GET/lambda-token",
-            {
-              "__ApiId__": {
-                "Ref": "MyApiWithLambdaTokenAuth"
-              },
-              "__Stage__": "*"
-            }
-          ]
-        }
-      }
-    },
-    "MyApiWithCognitoAuth": {
-      "Type": "AWS::ApiGateway::RestApi",
-      "Properties": {
-        "Body": {
-          "swagger": "2.0",
-          "info": {
-            "version": "1.0",
-            "title": {
-              "Ref": "AWS::StackName"
-            }
-          },
-          "paths": {
-            "/cognito": {
-              "get": {
-                "x-amazon-apigateway-integration": {
-                  "type": "aws_proxy",
-                  "httpMethod": "POST",
-                  "uri": {
-                    "Fn::Sub": "arn:aws-cn:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${MyFn.Arn}/invocations"
-                  }
-                },
-                "responses": {},
-                "security": [
-                  {
-                    "MyCognitoAuth": []
-                  }
-                ]
-              }
-            },
-            "/any/cognito": {
-              "x-amazon-apigateway-any-method": {
-                "x-amazon-apigateway-integration": {
-                  "type": "aws_proxy",
-                  "httpMethod": "POST",
-                  "uri": {
-                    "Fn::Sub": "arn:aws-cn:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${MyFn.Arn}/invocations"
-                  }
-                },
-                "responses": {},
-                "security": [
-                  {
-                    "MyCognitoAuth": []
-                  }
-                ]
               }
             }
-          },
-          "securityDefinitions": {
-            "MyCognitoAuth": {
-              "type": "apiKey",
-              "name": "Authorization",
-              "in": "header",
-              "x-amazon-apigateway-authtype": "cognito_user_pools",
-              "x-amazon-apigateway-authorizer": {
-                "type": "cognito_user_pools",
-                "providerARNs": [
-                  {
-                    "Fn::GetAtt": [
-                      "MyUserPool",
-                      "Arn"
-                    ]
-                  }
-                ]
-              }
-            }
-          }
-        },
-        "Parameters": {
-          "endpointConfigurationTypes": "REGIONAL"
-        },
-        "EndpointConfiguration": {
-          "Types": [
-            "REGIONAL"
           ]
         }
       }
     },
-    "MyApiWithCognitoAuthDeployment5d6fbaaea5": {
-      "Type": "AWS::ApiGateway::Deployment",
+    "MyApiWithCognitoAuthProdStage": {
+      "Type": "AWS::ApiGateway::Stage",
       "Properties": {
-        "Description": "RestApi deployment id: 5d6fbaaea5286fd32d64239db8b7f2247cb3f2b5",
+        "DeploymentId": {
+          "Ref": "MyApiWithCognitoAuthDeployment5d6fbaaea5"
+        },
         "RestApiId": {
           "Ref": "MyApiWithCognitoAuth"
         },
-        "StageName": "Stage"
+        "StageName": "Prod"
       }
     },
-    "MyApiWithCognitoAuthProdStage": {
+    "MyApiWithNotCachedLambdaRequestAuthProdStage": {
       "Type": "AWS::ApiGateway::Stage",
       "Properties": {
         "DeploymentId": {
-          "Ref": "MyApiWithCognitoAuthDeployment5d6fbaaea5"
+          "Ref": "MyApiWithNotCachedLambdaRequestAuthDeployment234e92eab4"
         },
         "RestApiId": {
-          "Ref": "MyApiWithCognitoAuth"
+          "Ref": "MyApiWithNotCachedLambdaRequestAuth"
         },
         "StageName": "Prod"
       }
     },
-    "MyApiWithLambdaTokenAuth": {
+    "MyApiWithNotCachedLambdaRequestAuth": {
       "Type": "AWS::ApiGateway::RestApi",
       "Properties": {
         "Body": {
-          "swagger": "2.0",
           "info": {
             "version": "1.0",
             "title": {
@@ -364,49 +344,33 @@
             }
           },
           "paths": {
-            "/lambda-token": {
+            "/not-cached-lambda-request": {
               "get": {
                 "x-amazon-apigateway-integration": {
-                  "type": "aws_proxy",
                   "httpMethod": "POST",
-                  "uri": {
-                    "Fn::Sub": "arn:aws-cn:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${MyFn.Arn}/invocations"
-                  }
-                },
-                "responses": {},
-                "security": [
-                  {
-                    "MyLambdaTokenAuth": []
-                  }
-                ]
-              }
-            },
-            "/any/lambda-token": {
-              "x-amazon-apigateway-any-method": {
-                "x-amazon-apigateway-integration": {
                   "type": "aws_proxy",
-                  "httpMethod": "POST",
                   "uri": {
                     "Fn::Sub": "arn:aws-cn:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${MyFn.Arn}/invocations"
                   }
                 },
-                "responses": {},
                 "security": [
                   {
-                    "MyLambdaTokenAuth": []
+                    "MyLambdaRequestAuth": []
                   }
-                ]
+                ],
+                "responses": {}
               }
             }
           },
+          "swagger": "2.0",
           "securityDefinitions": {
-            "MyLambdaTokenAuth": {
-              "type": "apiKey",
-              "name": "Authorization",
+            "MyLambdaRequestAuth": {
               "in": "header",
-              "x-amazon-apigateway-authtype": "custom",
+              "type": "apiKey",
+              "name": "Unused",
               "x-amazon-apigateway-authorizer": {
-                "type": "token",
+                "type": "request",
+                "authorizerResultTtlInSeconds": 0,
                 "authorizerUri": {
                   "Fn::Sub": [
                     "arn:aws-cn:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${__FunctionArn__}/invocations",
@@ -420,57 +384,109 @@
                     }
                   ]
                 }
-              }
+              },
+              "x-amazon-apigateway-authtype": "custom"
             }
           }
         },
-        "Parameters": {
-          "endpointConfigurationTypes": "REGIONAL"
-        },
         "EndpointConfiguration": {
           "Types": [
             "REGIONAL"
           ]
+        },
+        "Parameters": {
+          "endpointConfigurationTypes": "REGIONAL"
         }
       }
     },
     "MyApiWithLambdaTokenAuthDeployment79a03805ba": {
       "Type": "AWS::ApiGateway::Deployment",
       "Properties": {
-        "Description": "RestApi deployment id: 79a03805ba3abc1f005e1282f19bb79af68b4f96",
         "RestApiId": {
           "Ref": "MyApiWithLambdaTokenAuth"
         },
+        "Description": "RestApi deployment id: 79a03805ba3abc1f005e1282f19bb79af68b4f96",
         "StageName": "Stage"
       }
     },
-    "MyApiWithLambdaTokenAuthProdStage": {
-      "Type": "AWS::ApiGateway::Stage",
+    "MyFnLambdaTokenAnyMethodPermissionProd": {
+      "Type": "AWS::Lambda::Permission",
       "Properties": {
-        "DeploymentId": {
-          "Ref": "MyApiWithLambdaTokenAuthDeployment79a03805ba"
+        "Action": "lambda:InvokeFunction",
+        "Principal": "apigateway.amazonaws.com",
+        "FunctionName": {
+          "Ref": "MyFn"
         },
-        "RestApiId": {
-          "Ref": "MyApiWithLambdaTokenAuth"
+        "SourceArn": {
+          "Fn::Sub": [
+            "arn:aws-cn:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/${__Stage__}/*/any/lambda-token",
+            {
+              "__Stage__": "*",
+              "__ApiId__": {
+                "Ref": "MyApiWithLambdaTokenAuth"
+              }
+            }
+          ]
+        }
+      }
+    },
+    "MyFnCognitoAnyMethodPermissionProd": {
+      "Type": "AWS::Lambda::Permission",
+      "Properties": {
+        "Action": "lambda:InvokeFunction",
+        "Principal": "apigateway.amazonaws.com",
+        "FunctionName": {
+          "Ref": "MyFn"
         },
-        "StageName": "Prod"
+        "SourceArn": {
+          "Fn::Sub": [
+            "arn:aws-cn:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/${__Stage__}/*/any/cognito",
+            {
+              "__Stage__": "*",
+              "__ApiId__": {
+                "Ref": "MyApiWithCognitoAuth"
+              }
+            }
+          ]
+        }
       }
     },
-    "MyApiWithLambdaTokenAuthMyLambdaTokenAuthAuthorizerPermission": {
+    "MyApiWithLambdaRequestAuthMyLambdaRequestAuthAuthorizerPermission": {
       "Type": "AWS::Lambda::Permission",
       "Properties": {
         "Action": "lambda:InvokeFunction",
+        "Principal": "apigateway.amazonaws.com",
         "FunctionName": {
           "Fn::GetAtt": [
             "MyAuthFn",
             "Arn"
           ]
         },
-        "Principal": "apigateway.amazonaws.com",
         "SourceArn": {
           "Fn::Sub": [
             "arn:aws-cn:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/authorizers/*",
             {
+              "__ApiId__": {
+                "Ref": "MyApiWithLambdaRequestAuth"
+              }
+            }
+          ]
+        }
+      }
+    },
+    "MyFnLambdaTokenPermissionProd": {
+      "Type": "AWS::Lambda::Permission",
+      "Properties": {
+        "Action": "lambda:InvokeFunction",
+        "Principal": "apigateway.amazonaws.com",
+        "FunctionName": {
+          "Ref": "MyFn"
+        },
+        "SourceArn": {
+          "Fn::Sub": [
+            "arn:aws-cn:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/${__Stage__}/GET/lambda-token",
+            {
+              "__Stage__": "*",
               "__ApiId__": {
                 "Ref": "MyApiWithLambdaTokenAuth"
               }
@@ -479,11 +495,31 @@
         }
       }
     },
-    "MyApiWithLambdaRequestAuth": {
+    "MyFnLambdaRequestPermissionProd": {
+      "Type": "AWS::Lambda::Permission",
+      "Properties": {
+        "Action": "lambda:InvokeFunction",
+        "Principal": "apigateway.amazonaws.com",
+        "FunctionName": {
+          "Ref": "MyFn"
+        },
+        "SourceArn": {
+          "Fn::Sub": [
+            "arn:aws-cn:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/${__Stage__}/GET/lambda-request",
+            {
+              "__Stage__": "*",
+              "__ApiId__": {
+                "Ref": "MyApiWithLambdaRequestAuth"
+              }
+            }
+          ]
+        }
+      }
+    },
+    "MyApiWithLambdaTokenAuth": {
       "Type": "AWS::ApiGateway::RestApi",
       "Properties": {
         "Body": {
-          "swagger": "2.0",
           "info": {
             "version": "1.0",
             "title": {
@@ -491,49 +527,49 @@
             }
           },
           "paths": {
-            "/lambda-request": {
+            "/lambda-token": {
               "get": {
                 "x-amazon-apigateway-integration": {
-                  "type": "aws_proxy",
                   "httpMethod": "POST",
+                  "type": "aws_proxy",
                   "uri": {
                     "Fn::Sub": "arn:aws-cn:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${MyFn.Arn}/invocations"
                   }
                 },
-                "responses": {},
                 "security": [
                   {
-                    "MyLambdaRequestAuth": []
+                    "MyLambdaTokenAuth": []
                   }
-                ]
+                ],
+                "responses": {}
               }
             },
-            "/any/lambda-request": {
+            "/any/lambda-token": {
               "x-amazon-apigateway-any-method": {
                 "x-amazon-apigateway-integration": {
-                  "type": "aws_proxy",
                   "httpMethod": "POST",
+                  "type": "aws_proxy",
                   "uri": {
                     "Fn::Sub": "arn:aws-cn:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${MyFn.Arn}/invocations"
                   }
                 },
-                "responses": {},
                 "security": [
                   {
-                    "MyLambdaRequestAuth": []
+                    "MyLambdaTokenAuth": []
                   }
-                ]
+                ],
+                "responses": {}
               }
             }
           },
+          "swagger": "2.0",
           "securityDefinitions": {
-            "MyLambdaRequestAuth": {
-              "type": "apiKey",
-              "name": "Unused",
+            "MyLambdaTokenAuth": {
               "in": "header",
-              "x-amazon-apigateway-authtype": "custom",
+              "type": "apiKey",
+              "name": "Authorization",
               "x-amazon-apigateway-authorizer": {
-                "type": "request",
+                "type": "token",
                 "authorizerUri": {
                   "Fn::Sub": [
                     "arn:aws-cn:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${__FunctionArn__}/invocations",
@@ -546,30 +582,20 @@
                       }
                     }
                   ]
-                },
-                "identitySource": "method.request.header.Authorization1"
-              }
+                }
+              },
+              "x-amazon-apigateway-authtype": "custom"
             }
           }
         },
-        "Parameters": {
-          "endpointConfigurationTypes": "REGIONAL"
-        },
         "EndpointConfiguration": {
           "Types": [
             "REGIONAL"
           ]
-        }
-      }
-    },
-    "MyApiWithLambdaRequestAuthDeployment12aa7114ad": {
-      "Type": "AWS::ApiGateway::Deployment",
-      "Properties": {
-        "Description": "RestApi deployment id: 12aa7114ad8cd8aaeffd832e49f6f8aa8b6c2062",
-        "RestApiId": {
-          "Ref": "MyApiWithLambdaRequestAuth"
         },
-        "StageName": "Stage"
+        "Parameters": {
+          "endpointConfigurationTypes": "REGIONAL"
+        }
       }
     },
     "MyApiWithLambdaRequestAuthProdStage": {
@@ -584,28 +610,134 @@
         "StageName": "Prod"
       }
     },
-    "MyApiWithLambdaRequestAuthMyLambdaRequestAuthAuthorizerPermission": {
+    "MyApiWithNotCachedLambdaRequestAuthMyLambdaRequestAuthAuthorizerPermission": {
       "Type": "AWS::Lambda::Permission",
       "Properties": {
         "Action": "lambda:InvokeFunction",
+        "Principal": "apigateway.amazonaws.com",
         "FunctionName": {
           "Fn::GetAtt": [
             "MyAuthFn",
             "Arn"
           ]
         },
-        "Principal": "apigateway.amazonaws.com",
         "SourceArn": {
           "Fn::Sub": [
             "arn:aws-cn:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/authorizers/*",
             {
               "__ApiId__": {
-                "Ref": "MyApiWithLambdaRequestAuth"
+                "Ref": "MyApiWithNotCachedLambdaRequestAuth"
+              }
+            }
+          ]
+        }
+      }
+    },
+    "MyFnLambdaNotCachedRequestPermissionProd": {
+      "Type": "AWS::Lambda::Permission",
+      "Properties": {
+        "Action": "lambda:InvokeFunction",
+        "Principal": "apigateway.amazonaws.com",
+        "FunctionName": {
+          "Ref": "MyFn"
+        },
+        "SourceArn": {
+          "Fn::Sub": [
+            "arn:aws-cn:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/${__Stage__}/GET/not-cached-lambda-request",
+            {
+              "__Stage__": "*",
+              "__ApiId__": {
+                "Ref": "MyApiWithNotCachedLambdaRequestAuth"
               }
             }
           ]
         }
       }
+    },
+    "MyApiWithLambdaRequestAuthDeployment12aa7114ad": {
+      "Type": "AWS::ApiGateway::Deployment",
+      "Properties": {
+        "RestApiId": {
+          "Ref": "MyApiWithLambdaRequestAuth"
+        },
+        "Description": "RestApi deployment id: 12aa7114ad8cd8aaeffd832e49f6f8aa8b6c2062",
+        "StageName": "Stage"
+      }
+    },
+    "MyAuthFnRole": {
+      "Type": "AWS::IAM::Role",
+      "Properties": {
+        "AssumeRolePolicyDocument": {
+          "Version": "2012-10-17",
+          "Statement": [
+            {
+              "Action": [
+                "sts:AssumeRole"
+              ],
+              "Effect": "Allow",
+              "Principal": {
+                "Service": [
+                  "lambda.amazonaws.com"
+                ]
+              }
+            }
+          ]
+        },
+        "ManagedPolicyArns": [
+          "arn:aws-cn:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
+        ],
+        "Tags": [
+          {
+            "Value": "SAM",
+            "Key": "lambda:createdBy"
+          }
+        ]
+      }
+    },
+    "MyApiWithLambdaTokenAuthProdStage": {
+      "Type": "AWS::ApiGateway::Stage",
+      "Properties": {
+        "DeploymentId": {
+          "Ref": "MyApiWithLambdaTokenAuthDeployment79a03805ba"
+        },
+        "RestApiId": {
+          "Ref": "MyApiWithLambdaTokenAuth"
+        },
+        "StageName": "Prod"
+      }
+    },
+    "MyApiWithCognitoAuthDeployment5d6fbaaea5": {
+      "Type": "AWS::ApiGateway::Deployment",
+      "Properties": {
+        "RestApiId": {
+          "Ref": "MyApiWithCognitoAuth"
+        },
+        "Description": "RestApi deployment id: 5d6fbaaea5286fd32d64239db8b7f2247cb3f2b5",
+        "StageName": "Stage"
+      }
+    },
+    "MyFn": {
+      "Type": "AWS::Lambda::Function",
+      "Properties": {
+        "Handler": "index.handler",
+        "Code": {
+          "S3Bucket": "bucket",
+          "S3Key": "key"
+        },
+        "Role": {
+          "Fn::GetAtt": [
+            "MyFnRole",
+            "Arn"
+          ]
+        },
+        "Runtime": "nodejs12.x",
+        "Tags": [
+          {
+            "Value": "SAM",
+            "Key": "lambda:createdBy"
+          }
+        ]
+      }
     }
   }
 }
\ No newline at end of file
diff --git a/tests/translator/output/aws-cn/api_with_identity_intrinsic.json b/tests/translator/output/aws-cn/api_with_identity_intrinsic.json
new file mode 100644
index 00000000..84b61b86
--- /dev/null
+++ b/tests/translator/output/aws-cn/api_with_identity_intrinsic.json
@@ -0,0 +1,98 @@
+{
+  "AWSTemplateFormatVersion": "2010-09-09",
+  "Conditions": {
+    "isProd": true
+  },
+  "Resources": {
+    "APIGateway": {
+      "Type": "AWS::ApiGateway::RestApi",
+      "Properties": {
+        "Body": {
+          "info": {
+            "version": "1.0",
+            "title": {
+              "Ref": "AWS::StackName"
+            }
+          },
+          "paths": {},
+          "swagger": "2.0",
+          "securityDefinitions": {
+            "SomeAuthorizer": {
+              "in": "header",
+              "type": "apiKey",
+              "name": "Unused",
+              "x-amazon-apigateway-authorizer": {
+                "type": "request",
+                "authorizerResultTtlInSeconds": {
+                  "Fn::If": [
+                    "isProd",
+                    3600,
+                    0
+                  ]
+                },
+                "identitySource": "method.request.header.Accept",
+                "authorizerUri": {
+                  "Fn::Sub": [
+                    "arn:aws-cn:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${__FunctionArn__}/invocations",
+                    {
+                      "__FunctionArn__": "SomeArn"
+                    }
+                  ]
+                }
+              },
+              "x-amazon-apigateway-authtype": "custom"
+            }
+          }
+        },
+        "EndpointConfiguration": {
+          "Types": [
+            "REGIONAL"
+          ]
+        },
+        "Parameters": {
+          "endpointConfigurationTypes": "REGIONAL"
+        }
+      }
+    },
+    "APIGatewaySomeAuthorizerAuthorizerPermission": {
+      "Type": "AWS::Lambda::Permission",
+      "Properties": {
+        "Action": "lambda:InvokeFunction",
+        "Principal": "apigateway.amazonaws.com",
+        "FunctionName": "SomeArn",
+        "SourceArn": {
+          "Fn::Sub": [
+            "arn:aws-cn:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/authorizers/*",
+            {
+              "__ApiId__": {
+                "Ref": "APIGateway"
+              }
+            }
+          ]
+        }
+      }
+    },
+    "APIGatewayProdStage": {
+      "Type": "AWS::ApiGateway::Stage",
+      "Properties": {
+        "DeploymentId": {
+          "Ref": "APIGatewayDeployment2621a8c79f"
+        },
+        "RestApiId": {
+          "Ref": "APIGateway"
+        },
+        "StageName": "Prod"
+      }
+    },
+    "APIGatewayDeployment2621a8c79f": {
+      "Type": "AWS::ApiGateway::Deployment",
+      "Properties": {
+        "RestApiId": {
+          "Ref": "APIGateway"
+        },
+        "Description": "RestApi deployment id: 2621a8c79f8f26195374aad642039f511d020a75",
+        "StageName": "Stage"
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/tests/translator/output/aws-cn/cognito_userpool_with_event.json b/tests/translator/output/aws-cn/cognito_userpool_with_event.json
index 973838a7..9a9faea0 100644
--- a/tests/translator/output/aws-cn/cognito_userpool_with_event.json
+++ b/tests/translator/output/aws-cn/cognito_userpool_with_event.json
@@ -6,44 +6,60 @@
         "LambdaConfig": {
           "PreSignUp": {
             "Fn::GetAtt": [
-              "ImplicitApiFunction", "Arn"
+              "ImplicitApiFunction",
+              "Arn"
             ]
           },
-          "PreAuthentication": "Test",
-          "Test1": {
+          "PostConfirmation": {
             "Fn::GetAtt": [
               "ImplicitApiFunction",
               "Arn"
             ]
           },
-          "Test2": {
+          "VerifyAuthChallengeResponse": {
             "Fn::GetAtt": [
               "ImplicitApiFunction",
               "Arn"
             ]
           }
-        }
+        },
+        "Policies": {
+          "PasswordPolicy": {
+            "MinimumLength": 8
+          }
+        },
+        "Schema": [
+          {
+            "AttributeDataType": "String",
+            "Name": "email",
+            "Required": false
+          }
+        ],
+        "UsernameAttributes": [
+          "email"
+        ],
+        "UserPoolName": "UserPoolName"
       }
     },
     "ImplicitApiFunction": {
       "Type": "AWS::Lambda::Function",
       "Properties": {
-        "Handler": "index.gethtml", 
         "Code": {
-          "S3Bucket": "sam-demo-bucket", 
+          "S3Bucket": "sam-demo-bucket",
           "S3Key": "member_portal.zip"
-        }, 
+        },
+        "Handler": "index.gethtml",
         "Role": {
           "Fn::GetAtt": [
-            "ImplicitApiFunctionRole", 
+            "ImplicitApiFunctionRole",
             "Arn"
           ]
-        }, 
+        },
         "Runtime": "nodejs12.x",
         "Tags": [
           {
-            "Value": "SAM", 
-            "Key": "lambda:createdBy"
+            "Key": "lambda:createdBy",
+            "Value": "SAM"
           }
         ]
       }
@@ -51,15 +67,6 @@
     "ImplicitApiFunctionRole": {
       "Type": "AWS::IAM::Role",
       "Properties": {
-        "ManagedPolicyArns": [
-          "arn:aws-cn:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
-        ],
-        "Tags": [
-          {
-            "Value": "SAM",
-            "Key": "lambda:createdBy"
-          }
-        ],
         "AssumeRolePolicyDocument": {
           "Version": "2012-10-17",
           "Statement": [
@@ -75,9 +82,18 @@
               }
             }
           ]
-        }
+        },
+        "ManagedPolicyArns": [
+          "arn:aws-cn:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
+        ],
+        "Tags": [
+          {
+            "Key": "lambda:createdBy",
+            "Value": "SAM"
+          }
+        ]
       }
-    },    
+    },
     "ImplicitApiFunctionCognitoPermission": {
       "Type": "AWS::Lambda::Permission",
       "Properties": {
@@ -85,14 +101,14 @@
         "FunctionName": {
           "Ref": "ImplicitApiFunction"
         },
+        "Principal": "cognito-idp.amazonaws.com",
         "SourceArn": {
           "Fn::GetAtt": [
             "UserPool",
             "Arn"
           ]
-        },
-        "Principal": "cognito-idp.amazonaws.com"
+        }
       }
     }
   }
-}
+}
\ No newline at end of file
diff --git a/tests/translator/output/aws-cn/kinesis_intrinsics.json b/tests/translator/output/aws-cn/kinesis_intrinsics.json
new file mode 100644
index 00000000..0484d1fd
--- /dev/null
+++ b/tests/translator/output/aws-cn/kinesis_intrinsics.json
@@ -0,0 +1,168 @@
+{
+    "Conditions": {
+      "TrueCondition": {
+        "Fn::Equals": [
+          true, 
+          true
+        ]
+      }, 
+      "FalseCondition": {
+        "Fn::Equals": [
+          true, 
+          false
+        ]
+      }
+    }, 
+    "Resources": {
+      "MyLambdaFunctionRole": {
+        "Type": "AWS::IAM::Role", 
+        "Properties": {
+          "AssumeRolePolicyDocument": {
+            "Version": "2012-10-17", 
+            "Statement": [
+              {
+                "Action": [
+                  "sts:AssumeRole"
+                ], 
+                "Effect": "Allow", 
+                "Principal": {
+                  "Service": [
+                    "lambda.amazonaws.com"
+                  ]
+                }
+              }
+            ]
+          }, 
+          "ManagedPolicyArns": [
+            "arn:aws-cn:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole", 
+            "arn:aws-cn:iam::aws:policy/service-role/AWSLambdaKinesisExecutionRole"
+          ], 
+          "Tags": [
+            {
+              "Value": "SAM", 
+              "Key": "lambda:createdBy"
+            }
+          ]
+        }
+      }, 
+      "MyLambdaFunctionKinesisStream": {
+        "Type": "AWS::Lambda::EventSourceMapping", 
+        "Properties": {
+          "MaximumBatchingWindowInSeconds": {
+            "Ref": "IntValue"
+          }, 
+          "FunctionName": {
+            "Ref": "MyLambdaFunction"
+          }, 
+          "MaximumRecordAgeInSeconds": {
+            "Ref": "IntValue"
+          }, 
+          "FunctionResponseTypes": [
+            {
+              "Ref": "FunctionResponseTypesValue"
+            }
+          ], 
+          "BatchSize": {
+            "Ref": "IntValue"
+          }, 
+          "TumblingWindowInSeconds": {
+            "Ref": "IntValue"
+          }, 
+          "Enabled": {
+            "Fn::If": [
+              "TrueCondition", 
+              true, 
+              false
+            ]
+          }, 
+          "EventSourceArn": {
+            "Fn::Join": [
+              "", 
+              [
+                "arn:", 
+                {
+                  "Ref": "AWS::Partition"
+                }, 
+                ":kinesis:", 
+                {
+                  "Ref": "AWS::Region"
+                }, 
+                ":", 
+                {
+                  "Ref": "AWS::AccountId"
+                }, 
+                ":stream/", 
+                {
+                  "Ref": "MyStream"
+                }
+              ]
+            ]
+          }, 
+          "StartingPosition": {
+            "Ref": "StartingPositionValue"
+          }, 
+          "ParallelizationFactor": {
+            "Ref": "IntValue"
+          }, 
+          "MaximumRetryAttempts": {
+            "Ref": "IntValue"
+          }, 
+          "BisectBatchOnFunctionError": {
+            "Fn::If": [
+              "FalseCondition", 
+              true, 
+              false
+            ]
+          }
+        }
+      }, 
+      "MyStream": {
+        "Type": "AWS::Kinesis::Stream", 
+        "Properties": {
+          "ShardCount": 1
+        }
+      }, 
+      "MyLambdaFunction": {
+        "Type": "AWS::Lambda::Function", 
+        "Properties": {
+          "Code": {
+            "S3Bucket": "sam-demo-bucket", 
+            "S3Key": "stream.zip"
+          }, 
+          "Tags": [
+            {
+              "Value": "SAM", 
+              "Key": "lambda:createdBy"
+            }
+          ], 
+          "MemorySize": 128, 
+          "Handler": "index.handler", 
+          "Role": {
+            "Fn::GetAtt": [
+              "MyLambdaFunctionRole", 
+              "Arn"
+            ]
+          }, 
+          "Runtime": "nodejs12.x"
+        }
+      }
+    }, 
+    "Parameters": {
+      "StringValue": {
+        "Default": "us-east-1", 
+        "Type": "String"
+      }, 
+      "IntValue": {
+        "Default": 50, 
+        "Type": "Number"
+      }, 
+      "FunctionResponseTypesValue": {
+        "Default": "ReportBatchItemFailures", 
+        "Type": "String"
+      }, 
+      "StartingPositionValue": {
+        "Default": "LATEST", 
+        "Type": "String"
+      }
+    }
+  }
\ No newline at end of file
diff --git a/tests/translator/output/aws-cn/s3_intrinsics.json b/tests/translator/output/aws-cn/s3_intrinsics.json
new file mode 100644
index 00000000..83425113
--- /dev/null
+++ b/tests/translator/output/aws-cn/s3_intrinsics.json
@@ -0,0 +1,130 @@
+{
+  "Conditions": {
+    "MyCondition": {
+      "Fn::Equals": [
+        true,
+        false
+      ]
+    }
+  },
+  "Parameters": {
+    "EventsParam": {
+      "Default": "s3:ObjectCreated:*",
+      "Type": "String"
+    }
+  },
+  "Resources": {
+    "Images": {
+      "Type": "AWS::S3::Bucket",
+      "Properties": {
+        "NotificationConfiguration": {
+          "LambdaConfigurations": [
+            {
+              "Function": {
+                "Fn::GetAtt": [
+                  "ThumbnailFunction",
+                  "Arn"
+                ]
+              },
+              "Filter": {
+                "Fn::If": [
+                  "MyCondition",
+                  {
+                    "S3Key": {
+                      "Rules": [
+                        {
+                          "Name": "Rule1Prefix",
+                          "Value": "Rule1Value"
+                        }
+                      ]
+                    }
+                  },
+                  {
+                    "S3Key": {
+                      "Rules": [
+                        {
+                          "Name": "Rule2Prefix",
+                          "Value": "Rule2Value"
+                        }
+                      ]
+                    }
+                  }
+                ]
+              },
+              "Event": "s3:ObjectCreated:*"
+            }
+          ]
+        }
+      },
+      "DependsOn": [
+        "ThumbnailFunctionImageBucketPermission"
+      ]
+    },
+    "ThumbnailFunctionRole": {
+      "Type": "AWS::IAM::Role",
+      "Properties": {
+        "AssumeRolePolicyDocument": {
+          "Version": "2012-10-17",
+          "Statement": [
+            {
+              "Action": [
+                "sts:AssumeRole"
+              ],
+              "Effect": "Allow",
+              "Principal": {
+                "Service": [
+                  "lambda.amazonaws.com"
+                ]
+              }
+            }
+          ]
+        },
+        "ManagedPolicyArns": [
+          "arn:aws-cn:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
+        ],
+        "Tags": [
+          {
+            "Value": "SAM",
+            "Key": "lambda:createdBy"
+          }
+        ]
+      }
+    },
+    "ThumbnailFunctionImageBucketPermission": {
+      "Type": "AWS::Lambda::Permission",
+      "Properties": {
+        "Action": "lambda:InvokeFunction",
+        "SourceAccount": {
+          "Ref": "AWS::AccountId"
+        },
+        "FunctionName": {
+          "Ref": "ThumbnailFunction"
+        },
+        "Principal": "s3.amazonaws.com"
+      }
+    },
+    "ThumbnailFunction": {
+      "Type": "AWS::Lambda::Function",
+      "Properties": {
+        "Handler": "index.generate_thumbails",
+        "Code": {
+          "S3Bucket": "sam-demo-bucket",
+          "S3Key": "thumbnails.zip"
+        },
+        "Role": {
+          "Fn::GetAtt": [
+            "ThumbnailFunctionRole",
+            "Arn"
+          ]
+        },
+        "Runtime": "nodejs12.x",
+        "Tags": [
+          {
+            "Value": "SAM",
+            "Key": "lambda:createdBy"
+          }
+        ]
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/tests/translator/output/aws-cn/sns_intrinsics.json b/tests/translator/output/aws-cn/sns_intrinsics.json
new file mode 100644
index 00000000..b65f7edd
--- /dev/null
+++ b/tests/translator/output/aws-cn/sns_intrinsics.json
@@ -0,0 +1,171 @@
+{
+  "Conditions": {
+    "MyCondition": {
+      "Fn::Equals": [
+        true,
+        false
+      ]
+    }
+  },
+  "Parameters": {
+    "SnsRegion": {
+      "Default": "us-east-1",
+      "Type": "String"
+    }
+  },
+  "Resources": {
+    "Notifications": {
+      "Type": "AWS::SNS::Topic"
+    },
+    "SaveNotificationFunctionNotificationTopicQueue": {
+      "Type": "AWS::SQS::Queue",
+      "Properties": {}
+    },
+    "SaveNotificationFunctionNotificationTopicQueuePolicy": {
+      "Type": "AWS::SQS::QueuePolicy",
+      "Properties": {
+        "Queues": [
+          {
+            "Ref": "SaveNotificationFunctionNotificationTopicQueue"
+          }
+        ],
+        "PolicyDocument": {
+          "Version": "2012-10-17",
+          "Statement": [
+            {
+              "Action": "sqs:SendMessage",
+              "Resource": {
+                "Fn::GetAtt": [
+                  "SaveNotificationFunctionNotificationTopicQueue",
+                  "Arn"
+                ]
+              },
+              "Effect": "Allow",
+              "Condition": {
+                "ArnEquals": {
+                  "aws:SourceArn": {
+                    "Ref": "Notifications"
+                  }
+                }
+              },
+              "Principal": "*"
+            }
+          ]
+        }
+      }
+    },
+    "SaveNotificationFunctionNotificationTopic": {
+      "Type": "AWS::SNS::Subscription",
+      "Properties": {
+        "FilterPolicy": {
+          "Fn::If": [
+            "MyCondition",
+            {
+              "price_usd": [
+                {
+                  "numeric": [
+                    ">=",
+                    100
+                  ]
+                }
+              ]
+            },
+            {
+              "price_usd": [
+                {
+                  "numeric": [
+                    "<",
+                    100
+                  ]
+                }
+              ]
+            }
+          ]
+        },
+        "Region": {
+          "Ref": "SnsRegion"
+        },
+        "Endpoint": {
+          "Fn::GetAtt": [
+            "SaveNotificationFunctionNotificationTopicQueue",
+            "Arn"
+          ]
+        },
+        "Protocol": "sqs",
+        "TopicArn": {
+          "Ref": "Notifications"
+        }
+      }
+    },
+    "SaveNotificationFunctionRole": {
+      "Type": "AWS::IAM::Role",
+      "Properties": {
+        "AssumeRolePolicyDocument": {
+          "Version": "2012-10-17",
+          "Statement": [
+            {
+              "Action": [
+                "sts:AssumeRole"
+              ],
+              "Effect": "Allow",
+              "Principal": {
+                "Service": [
+                  "lambda.amazonaws.com"
+                ]
+              }
+            }
+          ]
+        },
+        "ManagedPolicyArns": [
+          "arn:aws-cn:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole",
+          "arn:aws-cn:iam::aws:policy/service-role/AWSLambdaSQSQueueExecutionRole"
+        ],
+        "Tags": [
+          {
+            "Value": "SAM",
+            "Key": "lambda:createdBy"
+          }
+        ]
+      }
+    },
+    "SaveNotificationFunctionNotificationTopicEventSourceMapping": {
+      "Type": "AWS::Lambda::EventSourceMapping",
+      "Properties": {
+        "BatchSize": 10,
+        "Enabled": true,
+        "FunctionName": {
+          "Ref": "SaveNotificationFunction"
+        },
+        "EventSourceArn": {
+          "Fn::GetAtt": [
+            "SaveNotificationFunctionNotificationTopicQueue",
+            "Arn"
+          ]
+        }
+      }
+    },
+    "SaveNotificationFunction": {
+      "Type": "AWS::Lambda::Function",
+      "Properties": {
+        "Handler": "index.save_notification",
+        "Code": {
+          "S3Bucket": "sam-demo-bucket",
+          "S3Key": "notifications.zip"
+        },
+        "Role": {
+          "Fn::GetAtt": [
+            "SaveNotificationFunctionRole",
+            "Arn"
+          ]
+        },
+        "Runtime": "nodejs12.x",
+        "Tags": [
+          {
+            "Value": "SAM",
+            "Key": "lambda:createdBy"
+          }
+        ]
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/tests/translator/output/aws-us-gov/api_with_any_method_in_swagger.json b/tests/translator/output/aws-us-gov/api_with_any_method_in_swagger.json
new file mode 100644
index 00000000..9bd62ca9
--- /dev/null
+++ b/tests/translator/output/aws-us-gov/api_with_any_method_in_swagger.json
@@ -0,0 +1,197 @@
+{
+  "Resources": {
+    "MyApiStage": {
+      "Type": "AWS::ApiGateway::Stage",
+      "Properties": {
+        "DeploymentId": {
+          "Ref": "MyApiDeployment0ebc8893a3"
+        },
+        "RestApiId": {
+          "Ref": "MyApi"
+        },
+        "StageName": {
+          "Ref": "Stage"
+        }
+      }
+    },
+    "HttpApiFunction": {
+      "Type": "AWS::Lambda::Function",
+      "Properties": {
+        "Handler": "index.restapi",
+        "Code": {
+          "S3Bucket": "sam-demo-bucket",
+          "S3Key": "todo_list.zip"
+        },
+        "Role": {
+          "Fn::GetAtt": [
+            "HttpApiFunctionRole",
+            "Arn"
+          ]
+        },
+        "Runtime": "python3.7",
+        "Tags": [
+          {
+            "Value": "SAM",
+            "Key": "lambda:createdBy"
+          }
+        ]
+      }
+    },
+    "HttpApiFunctionSimpleCasePermission": {
+      "Type": "AWS::Lambda::Permission",
+      "Properties": {
+        "Action": "lambda:InvokeFunction",
+        "Principal": "apigateway.amazonaws.com",
+        "FunctionName": {
+          "Ref": "HttpApiFunction"
+        },
+        "SourceArn": {
+          "Fn::Sub": [
+            "arn:${AWS::Partition}:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/${__Stage__}/*",
+            {
+              "__Stage__": "*",
+              "__ApiId__": {
+                "Ref": "MyApi"
+              }
+            }
+          ]
+        }
+      }
+    },
+    "HttpApiFunctionRole": {
+      "Type": "AWS::IAM::Role",
+      "Properties": {
+        "AssumeRolePolicyDocument": {
+          "Version": "2012-10-17",
+          "Statement": [
+            {
+              "Action": [
+                "sts:AssumeRole"
+              ],
+              "Effect": "Allow",
+              "Principal": {
+                "Service": [
+                  "lambda.amazonaws.com"
+                ]
+              }
+            }
+          ]
+        },
+        "ManagedPolicyArns": [
+          "arn:aws-us-gov:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
+        ],
+        "Tags": [
+          {
+            "Value": "SAM",
+            "Key": "lambda:createdBy"
+          }
+        ]
+      }
+    },
+    "MyApiDeployment0ebc8893a3": {
+      "Type": "AWS::ApiGateway::Deployment",
+      "Properties": {
+        "RestApiId": {
+          "Ref": "MyApi"
+        },
+        "Description": "RestApi deployment id: 0ebc8893a30055fb944d26720dc8ffddacc6d27d",
+        "StageName": "Stage"
+      }
+    },
+    "MyApi": {
+      "Type": "AWS::ApiGateway::RestApi",
+      "Properties": {
+        "Body": {
+          "info": {
+            "title": {
+              "Fn::Sub": "${AWS::StackName}-Api"
+            }
+          },
+          "paths": {
+            "$default": {
+              "x-amazon-apigateway-any-method": {
+                "x-amazon-apigateway-integration": {
+                  "httpMethod": "POST",
+                  "type": "aws_proxy",
+                  "uri": {
+                    "Fn::Sub": "arn:${AWS::Partition}:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${HttpApiFunction.Arn}/invocations"
+                  },
+                  "payloadFormatVersion": "2.0"
+                },
+                "isDefaultRoute": true,
+                "security": [
+                  {
+                    "LambdaAuthorizer": []
+                  }
+                ],
+                "responses": {}
+              }
+            },
+            "/": {
+              "any": {
+                "x-amazon-apigateway-integration": {
+                  "httpMethod": "ANY",
+                  "type": "http_proxy",
+                  "uri": "https://www.alphavantage.co/",
+                  "payloadFormatVersion": "1.0"
+                },
+                "security": [
+                  {
+                    "LambdaAuthorizer": []
+                  }
+                ]
+              },
+              "get": {
+                "x-amazon-apigateway-integration": {
+                  "httpMethod": "POST",
+                  "type": "aws_proxy",
+                  "uri": {
+                    "Fn::Sub": "arn:${AWS::Partition}:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${HttpApiFunction.Arn}/invocations"
+                  },
+                  "payloadFormatVersion": "2.0"
+                },
+                "security": [
+                  {
+                    "LambdaAuthorizer": []
+                  }
+                ],
+                "responses": {}
+              }
+            }
+          },
+          "openapi": "3.0",
+          "components": {
+            "securitySchemes": {
+              "LambdaAuthorizer": {
+                "in": "header",
+                "type": "apiKey",
+                "name": "Unused",
+                "x-amazon-apigateway-authorizer": {
+                  "type": "request",
+                  "identitySource": "method.request.header.Authorization",
+                  "authorizerUri": {
+                    "Fn::Sub": [
+                      "arn:aws-us-gov:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${__FunctionArn__}/invocations",
+                      {
+                        "__FunctionArn__": null
+                      }
+                    ]
+                  }
+                },
+                "x-amazon-apigateway-authtype": "custom"
+              }
+            }
+          }
+        },
+        "EndpointConfiguration": {
+          "Types": [
+            "REGIONAL"
+          ]
+        },
+        "Parameters": {
+          "endpointConfigurationTypes": "REGIONAL"
+        }
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/tests/translator/output/aws-us-gov/api_with_auth_all_minimum.json b/tests/translator/output/aws-us-gov/api_with_auth_all_minimum.json
index 9b583ee6..16b4cfc0 100644
--- a/tests/translator/output/aws-us-gov/api_with_auth_all_minimum.json
+++ b/tests/translator/output/aws-us-gov/api_with_auth_all_minimum.json
@@ -1,22 +1,227 @@
 {
   "Resources": {
+    "MyApiWithCognitoAuth": {
+      "Type": "AWS::ApiGateway::RestApi",
+      "Properties": {
+        "Body": {
+          "info": {
+            "version": "1.0",
+            "title": {
+              "Ref": "AWS::StackName"
+            }
+          },
+          "paths": {
+            "/cognito": {
+              "get": {
+                "x-amazon-apigateway-integration": {
+                  "httpMethod": "POST",
+                  "type": "aws_proxy",
+                  "uri": {
+                    "Fn::Sub": "arn:aws-us-gov:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${MyFn.Arn}/invocations"
+                  }
+                },
+                "security": [
+                  {
+                    "MyCognitoAuth": []
+                  }
+                ],
+                "responses": {}
+              }
+            },
+            "/any/cognito": {
+              "x-amazon-apigateway-any-method": {
+                "x-amazon-apigateway-integration": {
+                  "httpMethod": "POST",
+                  "type": "aws_proxy",
+                  "uri": {
+                    "Fn::Sub": "arn:aws-us-gov:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${MyFn.Arn}/invocations"
+                  }
+                },
+                "security": [
+                  {
+                    "MyCognitoAuth": []
+                  }
+                ],
+                "responses": {}
+              }
+            }
+          },
+          "swagger": "2.0",
+          "securityDefinitions": {
+            "MyCognitoAuth": {
+              "in": "header",
+              "type": "apiKey",
+              "name": "Authorization",
+              "x-amazon-apigateway-authorizer": {
+                "providerARNs": [
+                  {
+                    "Fn::GetAtt": [
+                      "MyUserPool",
+                      "Arn"
+                    ]
+                  }
+                ],
+                "type": "cognito_user_pools"
+              },
+              "x-amazon-apigateway-authtype": "cognito_user_pools"
+            }
+          }
+        },
+        "EndpointConfiguration": {
+          "Types": [
+            "REGIONAL"
+          ]
+        },
+        "Parameters": {
+          "endpointConfigurationTypes": "REGIONAL"
+        }
+      }
+    },
+    "MyApiWithLambdaRequestAuthProdStage": {
+      "Type": "AWS::ApiGateway::Stage",
+      "Properties": {
+        "DeploymentId": {
+          "Ref": "MyApiWithLambdaRequestAuthDeployment468dce6129"
+        },
+        "RestApiId": {
+          "Ref": "MyApiWithLambdaRequestAuth"
+        },
+        "StageName": "Prod"
+      }
+    },
+    "MyApiWithLambdaTokenAuthMyLambdaTokenAuthAuthorizerPermission": {
+      "Type": "AWS::Lambda::Permission",
+      "Properties": {
+        "Action": "lambda:InvokeFunction",
+        "Principal": "apigateway.amazonaws.com",
+        "FunctionName": {
+          "Fn::GetAtt": [
+            "MyAuthFn",
+            "Arn"
+          ]
+        },
+        "SourceArn": {
+          "Fn::Sub": [
+            "arn:aws-us-gov:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/authorizers/*",
+            {
+              "__ApiId__": {
+                "Ref": "MyApiWithLambdaTokenAuth"
+              }
+            }
+          ]
+        }
+      }
+    },
+    "MyApiWithLambdaRequestAuth": {
+      "Type": "AWS::ApiGateway::RestApi",
+      "Properties": {
+        "Body": {
+          "info": {
+            "version": "1.0",
+            "title": {
+              "Ref": "AWS::StackName"
+            }
+          },
+          "paths": {
+            "/any/lambda-request": {
+              "x-amazon-apigateway-any-method": {
+                "x-amazon-apigateway-integration": {
+                  "httpMethod": "POST",
+                  "type": "aws_proxy",
+                  "uri": {
+                    "Fn::Sub": "arn:aws-us-gov:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${MyFn.Arn}/invocations"
+                  }
+                },
+                "security": [
+                  {
+                    "MyLambdaRequestAuth": []
+                  }
+                ],
+                "responses": {}
+              }
+            },
+            "/lambda-request": {
+              "get": {
+                "x-amazon-apigateway-integration": {
+                  "httpMethod": "POST",
+                  "type": "aws_proxy",
+                  "uri": {
+                    "Fn::Sub": "arn:aws-us-gov:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${MyFn.Arn}/invocations"
+                  }
+                },
+                "security": [
+                  {
+                    "MyLambdaRequestAuth": []
+                  }
+                ],
+                "responses": {}
+              }
+            }
+          },
+          "swagger": "2.0",
+          "securityDefinitions": {
+            "MyLambdaRequestAuth": {
+              "in": "header",
+              "type": "apiKey",
+              "name": "Unused",
+              "x-amazon-apigateway-authorizer": {
+                "type": "request",
+                "identitySource": "method.request.header.Authorization1",
+                "authorizerUri": {
+                  "Fn::Sub": [
+                    "arn:aws-us-gov:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${__FunctionArn__}/invocations",
+                    {
+                      "__FunctionArn__": {
+                        "Fn::GetAtt": [
+                          "MyAuthFn",
+                          "Arn"
+                        ]
+                      }
+                    }
+                  ]
+                }
+              },
+              "x-amazon-apigateway-authtype": "custom"
+            }
+          }
+        },
+        "EndpointConfiguration": {
+          "Types": [
+            "REGIONAL"
+          ]
+        },
+        "Parameters": {
+          "endpointConfigurationTypes": "REGIONAL"
+        }
+      }
+    },
+    "MyApiWithCognitoAuthDeployment492f1347b1": {
+      "Type": "AWS::ApiGateway::Deployment",
+      "Properties": {
+        "RestApiId": {
+          "Ref": "MyApiWithCognitoAuth"
+        },
+        "Description": "RestApi deployment id: 492f1347b1194457232f0e99ced4a86954fdeec9",
+        "StageName": "Stage"
+      }
+    },
     "MyUserPool": {
       "Type": "AWS::Cognito::UserPool",
       "Properties": {
+        "UsernameAttributes": [
+          "email"
+        ],
         "UserPoolName": "UserPoolName",
         "Policies": {
           "PasswordPolicy": {
             "MinimumLength": 8
           }
         },
-        "UsernameAttributes": [
-          "email"
-        ],
         "Schema": [
           {
             "AttributeDataType": "String",
-            "Name": "email",
-            "Required": false
+            "Required": false,
+            "Name": "email"
           }
         ]
       }
@@ -24,11 +229,11 @@
     "MyAuthFn": {
       "Type": "AWS::Lambda::Function",
       "Properties": {
+        "Handler": "index.handler",
         "Code": {
           "S3Bucket": "bucket",
           "S3Key": "key"
         },
-        "Handler": "index.handler",
         "Role": {
           "Fn::GetAtt": [
             "MyAuthFnRole",
@@ -38,63 +243,41 @@
         "Runtime": "nodejs12.x",
         "Tags": [
           {
-            "Key": "lambda:createdBy",
-            "Value": "SAM"
+            "Value": "SAM",
+            "Key": "lambda:createdBy"
           }
         ]
       }
     },
-    "MyAuthFnRole": {
-      "Type": "AWS::IAM::Role",
+    "MyFnLambdaRequestAnyMethodPermissionProd": {
+      "Type": "AWS::Lambda::Permission",
       "Properties": {
-        "AssumeRolePolicyDocument": {
-          "Version": "2012-10-17",
-          "Statement": [
+        "Action": "lambda:InvokeFunction",
+        "Principal": "apigateway.amazonaws.com",
+        "FunctionName": {
+          "Ref": "MyFn"
+        },
+        "SourceArn": {
+          "Fn::Sub": [
+            "arn:aws-us-gov:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/${__Stage__}/*/any/lambda-request",
             {
-              "Action": [
-                "sts:AssumeRole"
-              ],
-              "Effect": "Allow",
-              "Principal": {
-                "Service": [
-                  "lambda.amazonaws.com"
-                ]
+              "__Stage__": "*",
+              "__ApiId__": {
+                "Ref": "MyApiWithLambdaRequestAuth"
               }
             }
           ]
-        },
-        "ManagedPolicyArns": [
-          "arn:aws-us-gov:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
-        ],
-        "Tags": [
-          {
-            "Key": "lambda:createdBy",
-            "Value": "SAM"
-          }
-        ]
+        }
       }
     },
-    "MyFn": {
-      "Type": "AWS::Lambda::Function",
+    "MyApiWithNotCachedLambdaRequestAuthDeploymentd3b8858811": {
+      "Type": "AWS::ApiGateway::Deployment",
       "Properties": {
-        "Code": {
-          "S3Bucket": "bucket",
-          "S3Key": "key"
-        },
-        "Handler": "index.handler",
-        "Role": {
-          "Fn::GetAtt": [
-            "MyFnRole",
-            "Arn"
-          ]
+        "RestApiId": {
+          "Ref": "MyApiWithNotCachedLambdaRequestAuth"
         },
-        "Runtime": "nodejs12.x",
-        "Tags": [
-          {
-            "Key": "lambda:createdBy",
-            "Value": "SAM"
-          }
-        ]
+        "Description": "RestApi deployment id: d3b8858811d6c42be45490ba4d1ca059821cf4fd",
+        "StageName": "Stage"
       }
     },
     "MyFnRole": {
@@ -121,222 +304,40 @@
         ],
         "Tags": [
           {
-            "Key": "lambda:createdBy",
-            "Value": "SAM"
+            "Value": "SAM",
+            "Key": "lambda:createdBy"
           }
         ]
       }
     },
-    "MyFnCognitoAnyMethodPermissionProd": {
-      "Type": "AWS::Lambda::Permission",
-      "Properties": {
-        "Action": "lambda:InvokeFunction",
-        "FunctionName": {
-          "Ref": "MyFn"
-        },
-        "Principal": "apigateway.amazonaws.com",
-        "SourceArn": {
-          "Fn::Sub": [
-            "arn:aws-us-gov:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/${__Stage__}/*/any/cognito",
-            {
-              "__ApiId__": {
-                "Ref": "MyApiWithCognitoAuth"
-              },
-              "__Stage__": "*"
-            }
-          ]
-        }
-      }
-    },
-    "MyFnLambdaRequestAnyMethodPermissionProd": {
-      "Type": "AWS::Lambda::Permission",
-      "Properties": {
-        "Action": "lambda:InvokeFunction",
-        "FunctionName": {
-          "Ref": "MyFn"
-        },
-        "Principal": "apigateway.amazonaws.com",
-        "SourceArn": {
-          "Fn::Sub": [
-            "arn:aws-us-gov:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/${__Stage__}/*/any/lambda-request",
-            {
-              "__ApiId__": {
-                "Ref": "MyApiWithLambdaRequestAuth"
-              },
-              "__Stage__": "*"
-            }
-          ]
-        }
-      }
-    },
-    "MyFnLambdaTokenAnyMethodPermissionProd": {
-      "Type": "AWS::Lambda::Permission",
-      "Properties": {
-        "Action": "lambda:InvokeFunction",
-        "FunctionName": {
-          "Ref": "MyFn"
-        },
-        "Principal": "apigateway.amazonaws.com",
-        "SourceArn": {
-          "Fn::Sub": [
-            "arn:aws-us-gov:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/${__Stage__}/*/any/lambda-token",
-            {
-              "__ApiId__": {
-                "Ref": "MyApiWithLambdaTokenAuth"
-              },
-              "__Stage__": "*"
-            }
-          ]
-        }
-      }
-    },
     "MyFnCognitoPermissionProd": {
       "Type": "AWS::Lambda::Permission",
       "Properties": {
         "Action": "lambda:InvokeFunction",
+        "Principal": "apigateway.amazonaws.com",
         "FunctionName": {
           "Ref": "MyFn"
         },
-        "Principal": "apigateway.amazonaws.com",
         "SourceArn": {
           "Fn::Sub": [
             "arn:aws-us-gov:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/${__Stage__}/GET/cognito",
             {
+              "__Stage__": "*",
               "__ApiId__": {
                 "Ref": "MyApiWithCognitoAuth"
-              },
-              "__Stage__": "*"
-            }
-          ]
-        }
-      }
-    },
-    "MyFnLambdaRequestPermissionProd": {
-      "Type": "AWS::Lambda::Permission",
-      "Properties": {
-        "Action": "lambda:InvokeFunction",
-        "FunctionName": {
-          "Ref": "MyFn"
-        },
-        "Principal": "apigateway.amazonaws.com",
-        "SourceArn": {
-          "Fn::Sub": [
-            "arn:aws-us-gov:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/${__Stage__}/GET/lambda-request",
-            {
-              "__ApiId__": {
-                "Ref": "MyApiWithLambdaRequestAuth"
-              },
-              "__Stage__": "*"
-            }
-          ]
-        }
-      }
-    },
-    "MyFnLambdaTokenPermissionProd": {
-      "Type": "AWS::Lambda::Permission",
-      "Properties": {
-        "Action": "lambda:InvokeFunction",
-        "FunctionName": {
-          "Ref": "MyFn"
-        },
-        "Principal": "apigateway.amazonaws.com",
-        "SourceArn": {
-          "Fn::Sub": [
-            "arn:aws-us-gov:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/${__Stage__}/GET/lambda-token",
-            {
-              "__ApiId__": {
-                "Ref": "MyApiWithLambdaTokenAuth"
-              },
-              "__Stage__": "*"
-            }
-          ]
-        }
-      }
-    },
-    "MyApiWithCognitoAuth": {
-      "Type": "AWS::ApiGateway::RestApi",
-      "Properties": {
-        "Body": {
-          "swagger": "2.0",
-          "info": {
-            "version": "1.0",
-            "title": {
-              "Ref": "AWS::StackName"
-            }
-          },
-          "paths": {
-            "/cognito": {
-              "get": {
-                "x-amazon-apigateway-integration": {
-                  "type": "aws_proxy",
-                  "httpMethod": "POST",
-                  "uri": {
-                    "Fn::Sub": "arn:aws-us-gov:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${MyFn.Arn}/invocations"
-                  }
-                },
-                "responses": {},
-                "security": [
-                  {
-                    "MyCognitoAuth": []
-                  }
-                ]
-              }
-            },
-            "/any/cognito": {
-              "x-amazon-apigateway-any-method": {
-                "x-amazon-apigateway-integration": {
-                  "type": "aws_proxy",
-                  "httpMethod": "POST",
-                  "uri": {
-                    "Fn::Sub": "arn:aws-us-gov:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${MyFn.Arn}/invocations"
-                  }
-                },
-                "responses": {},
-                "security": [
-                  {
-                    "MyCognitoAuth": []
-                  }
-                ]
-              }
-            }
-          },
-          "securityDefinitions": {
-            "MyCognitoAuth": {
-              "type": "apiKey",
-              "name": "Authorization",
-              "in": "header",
-              "x-amazon-apigateway-authtype": "cognito_user_pools",
-              "x-amazon-apigateway-authorizer": {
-                "type": "cognito_user_pools",
-                "providerARNs": [
-                  {
-                    "Fn::GetAtt": [
-                      "MyUserPool",
-                      "Arn"
-                    ]
-                  }
-                ]
               }
             }
-          }
-        },
-        "Parameters": {
-          "endpointConfigurationTypes": "REGIONAL"
-        },
-        "EndpointConfiguration": {
-          "Types": [
-            "REGIONAL"
           ]
         }
       }
     },
-    "MyApiWithCognitoAuthDeployment492f1347b1": {
+    "MyApiWithLambdaTokenAuthDeployment5f3dce4e5c": {
       "Type": "AWS::ApiGateway::Deployment",
       "Properties": {
-        "Description": "RestApi deployment id: 492f1347b1194457232f0e99ced4a86954fdeec9",
         "RestApiId": {
-          "Ref": "MyApiWithCognitoAuth"
+          "Ref": "MyApiWithLambdaTokenAuth"
         },
+        "Description": "RestApi deployment id: 5f3dce4e5c196ff885a155dd8cc0ffeebd5b93b1",
         "StageName": "Stage"
       }
     },
@@ -352,61 +353,56 @@
         "StageName": "Prod"
       }
     },
-    "MyApiWithLambdaTokenAuth": {
+    "MyApiWithNotCachedLambdaRequestAuthProdStage": {
+      "Type": "AWS::ApiGateway::Stage",
+      "Properties": {
+        "DeploymentId": {
+          "Ref": "MyApiWithNotCachedLambdaRequestAuthDeploymentd3b8858811"
+        },
+        "RestApiId": {
+          "Ref": "MyApiWithNotCachedLambdaRequestAuth"
+        },
+        "StageName": "Prod"
+      }
+    },
+    "MyApiWithNotCachedLambdaRequestAuth": {
       "Type": "AWS::ApiGateway::RestApi",
       "Properties": {
         "Body": {
-          "swagger": "2.0",
           "info": {
             "version": "1.0",
             "title": {
               "Ref": "AWS::StackName"
-            }
-          },
-          "paths": {
-            "/lambda-token": {
-              "get": {
-                "x-amazon-apigateway-integration": {
-                  "type": "aws_proxy",
-                  "httpMethod": "POST",
-                  "uri": {
-                    "Fn::Sub": "arn:aws-us-gov:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${MyFn.Arn}/invocations"
-                  }
-                },
-                "responses": {},
-                "security": [
-                  {
-                    "MyLambdaTokenAuth": []
-                  }
-                ]
-              }
-            },
-            "/any/lambda-token": {
-              "x-amazon-apigateway-any-method": {
+            }
+          },
+          "paths": {
+            "/not-cached-lambda-request": {
+              "get": {
                 "x-amazon-apigateway-integration": {
-                  "type": "aws_proxy",
                   "httpMethod": "POST",
+                  "type": "aws_proxy",
                   "uri": {
                     "Fn::Sub": "arn:aws-us-gov:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${MyFn.Arn}/invocations"
                   }
                 },
-                "responses": {},
                 "security": [
                   {
-                    "MyLambdaTokenAuth": []
+                    "MyLambdaRequestAuth": []
                   }
-                ]
+                ],
+                "responses": {}
               }
             }
           },
+          "swagger": "2.0",
           "securityDefinitions": {
-            "MyLambdaTokenAuth": {
-              "type": "apiKey",
-              "name": "Authorization",
+            "MyLambdaRequestAuth": {
               "in": "header",
-              "x-amazon-apigateway-authtype": "custom",
+              "type": "apiKey",
+              "name": "Unused",
               "x-amazon-apigateway-authorizer": {
-                "type": "token",
+                "type": "request",
+                "authorizerResultTtlInSeconds": 0,
                 "authorizerUri": {
                   "Fn::Sub": [
                     "arn:aws-us-gov:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${__FunctionArn__}/invocations",
@@ -420,57 +416,99 @@
                     }
                   ]
                 }
-              }
+              },
+              "x-amazon-apigateway-authtype": "custom"
             }
           }
         },
-        "Parameters": {
-          "endpointConfigurationTypes": "REGIONAL"
-        },
         "EndpointConfiguration": {
           "Types": [
             "REGIONAL"
           ]
+        },
+        "Parameters": {
+          "endpointConfigurationTypes": "REGIONAL"
         }
       }
     },
-    "MyApiWithLambdaTokenAuthDeployment5f3dce4e5c": {
-      "Type": "AWS::ApiGateway::Deployment",
+    "MyFnLambdaTokenAnyMethodPermissionProd": {
+      "Type": "AWS::Lambda::Permission",
       "Properties": {
-        "Description": "RestApi deployment id: 5f3dce4e5c196ff885a155dd8cc0ffeebd5b93b1",
-        "RestApiId": {
-          "Ref": "MyApiWithLambdaTokenAuth"
+        "Action": "lambda:InvokeFunction",
+        "Principal": "apigateway.amazonaws.com",
+        "FunctionName": {
+          "Ref": "MyFn"
         },
-        "StageName": "Stage"
+        "SourceArn": {
+          "Fn::Sub": [
+            "arn:aws-us-gov:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/${__Stage__}/*/any/lambda-token",
+            {
+              "__Stage__": "*",
+              "__ApiId__": {
+                "Ref": "MyApiWithLambdaTokenAuth"
+              }
+            }
+          ]
+        }
       }
     },
-    "MyApiWithLambdaTokenAuthProdStage": {
-      "Type": "AWS::ApiGateway::Stage",
+    "MyFnCognitoAnyMethodPermissionProd": {
+      "Type": "AWS::Lambda::Permission",
       "Properties": {
-        "DeploymentId": {
-          "Ref": "MyApiWithLambdaTokenAuthDeployment5f3dce4e5c"
-        },
-        "RestApiId": {
-          "Ref": "MyApiWithLambdaTokenAuth"
+        "Action": "lambda:InvokeFunction",
+        "Principal": "apigateway.amazonaws.com",
+        "FunctionName": {
+          "Ref": "MyFn"
         },
-        "StageName": "Prod"
+        "SourceArn": {
+          "Fn::Sub": [
+            "arn:aws-us-gov:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/${__Stage__}/*/any/cognito",
+            {
+              "__Stage__": "*",
+              "__ApiId__": {
+                "Ref": "MyApiWithCognitoAuth"
+              }
+            }
+          ]
+        }
       }
     },
-    "MyApiWithLambdaTokenAuthMyLambdaTokenAuthAuthorizerPermission": {
+    "MyApiWithLambdaRequestAuthMyLambdaRequestAuthAuthorizerPermission": {
       "Type": "AWS::Lambda::Permission",
       "Properties": {
         "Action": "lambda:InvokeFunction",
+        "Principal": "apigateway.amazonaws.com",
         "FunctionName": {
           "Fn::GetAtt": [
             "MyAuthFn",
             "Arn"
           ]
         },
-        "Principal": "apigateway.amazonaws.com",
         "SourceArn": {
           "Fn::Sub": [
             "arn:aws-us-gov:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/authorizers/*",
             {
+              "__ApiId__": {
+                "Ref": "MyApiWithLambdaRequestAuth"
+              }
+            }
+          ]
+        }
+      }
+    },
+    "MyFnLambdaTokenPermissionProd": {
+      "Type": "AWS::Lambda::Permission",
+      "Properties": {
+        "Action": "lambda:InvokeFunction",
+        "Principal": "apigateway.amazonaws.com",
+        "FunctionName": {
+          "Ref": "MyFn"
+        },
+        "SourceArn": {
+          "Fn::Sub": [
+            "arn:aws-us-gov:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/${__Stage__}/GET/lambda-token",
+            {
+              "__Stage__": "*",
               "__ApiId__": {
                 "Ref": "MyApiWithLambdaTokenAuth"
               }
@@ -479,11 +517,31 @@
         }
       }
     },
-    "MyApiWithLambdaRequestAuth": {
+    "MyFnLambdaRequestPermissionProd": {
+      "Type": "AWS::Lambda::Permission",
+      "Properties": {
+        "Action": "lambda:InvokeFunction",
+        "Principal": "apigateway.amazonaws.com",
+        "FunctionName": {
+          "Ref": "MyFn"
+        },
+        "SourceArn": {
+          "Fn::Sub": [
+            "arn:aws-us-gov:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/${__Stage__}/GET/lambda-request",
+            {
+              "__Stage__": "*",
+              "__ApiId__": {
+                "Ref": "MyApiWithLambdaRequestAuth"
+              }
+            }
+          ]
+        }
+      }
+    },
+    "MyApiWithLambdaTokenAuth": {
       "Type": "AWS::ApiGateway::RestApi",
       "Properties": {
         "Body": {
-          "swagger": "2.0",
           "info": {
             "version": "1.0",
             "title": {
@@ -491,49 +549,49 @@
             }
           },
           "paths": {
-            "/lambda-request": {
+            "/lambda-token": {
               "get": {
                 "x-amazon-apigateway-integration": {
-                  "type": "aws_proxy",
                   "httpMethod": "POST",
+                  "type": "aws_proxy",
                   "uri": {
                     "Fn::Sub": "arn:aws-us-gov:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${MyFn.Arn}/invocations"
                   }
                 },
-                "responses": {},
                 "security": [
                   {
-                    "MyLambdaRequestAuth": []
+                    "MyLambdaTokenAuth": []
                   }
-                ]
+                ],
+                "responses": {}
               }
             },
-            "/any/lambda-request": {
+            "/any/lambda-token": {
               "x-amazon-apigateway-any-method": {
                 "x-amazon-apigateway-integration": {
-                  "type": "aws_proxy",
                   "httpMethod": "POST",
+                  "type": "aws_proxy",
                   "uri": {
                     "Fn::Sub": "arn:aws-us-gov:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${MyFn.Arn}/invocations"
                   }
                 },
-                "responses": {},
                 "security": [
                   {
-                    "MyLambdaRequestAuth": []
+                    "MyLambdaTokenAuth": []
                   }
-                ]
+                ],
+                "responses": {}
               }
             }
           },
+          "swagger": "2.0",
           "securityDefinitions": {
-            "MyLambdaRequestAuth": {
-              "type": "apiKey",
-              "name": "Unused",
+            "MyLambdaTokenAuth": {
               "in": "header",
-              "x-amazon-apigateway-authtype": "custom",
+              "type": "apiKey",
+              "name": "Authorization",
               "x-amazon-apigateway-authorizer": {
-                "type": "request",
+                "type": "token",
                 "authorizerUri": {
                   "Fn::Sub": [
                     "arn:aws-us-gov:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${__FunctionArn__}/invocations",
@@ -546,66 +604,140 @@
                       }
                     }
                   ]
-                },
-                "identitySource": "method.request.header.Authorization1"
-              }
+                }
+              },
+              "x-amazon-apigateway-authtype": "custom"
             }
           }
         },
-        "Parameters": {
-          "endpointConfigurationTypes": "REGIONAL"
-        },
         "EndpointConfiguration": {
           "Types": [
             "REGIONAL"
           ]
+        },
+        "Parameters": {
+          "endpointConfigurationTypes": "REGIONAL"
+        }
+      }
+    },
+    "MyApiWithNotCachedLambdaRequestAuthMyLambdaRequestAuthAuthorizerPermission": {
+      "Type": "AWS::Lambda::Permission",
+      "Properties": {
+        "Action": "lambda:InvokeFunction",
+        "Principal": "apigateway.amazonaws.com",
+        "FunctionName": {
+          "Fn::GetAtt": [
+            "MyAuthFn",
+            "Arn"
+          ]
+        },
+        "SourceArn": {
+          "Fn::Sub": [
+            "arn:aws-us-gov:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/authorizers/*",
+            {
+              "__ApiId__": {
+                "Ref": "MyApiWithNotCachedLambdaRequestAuth"
+              }
+            }
+          ]
+        }
+      }
+    },
+    "MyFnLambdaNotCachedRequestPermissionProd": {
+      "Type": "AWS::Lambda::Permission",
+      "Properties": {
+        "Action": "lambda:InvokeFunction",
+        "Principal": "apigateway.amazonaws.com",
+        "FunctionName": {
+          "Ref": "MyFn"
+        },
+        "SourceArn": {
+          "Fn::Sub": [
+            "arn:aws-us-gov:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/${__Stage__}/GET/not-cached-lambda-request",
+            {
+              "__Stage__": "*",
+              "__ApiId__": {
+                "Ref": "MyApiWithNotCachedLambdaRequestAuth"
+              }
+            }
+          ]
         }
       }
     },
     "MyApiWithLambdaRequestAuthDeployment468dce6129": {
       "Type": "AWS::ApiGateway::Deployment",
       "Properties": {
-        "Description": "RestApi deployment id: 468dce61296ac92bf536be6fc55751d9553dbc4b",
         "RestApiId": {
           "Ref": "MyApiWithLambdaRequestAuth"
         },
+        "Description": "RestApi deployment id: 468dce61296ac92bf536be6fc55751d9553dbc4b",
         "StageName": "Stage"
       }
     },
-    "MyApiWithLambdaRequestAuthProdStage": {
+    "MyAuthFnRole": {
+      "Type": "AWS::IAM::Role",
+      "Properties": {
+        "AssumeRolePolicyDocument": {
+          "Version": "2012-10-17",
+          "Statement": [
+            {
+              "Action": [
+                "sts:AssumeRole"
+              ],
+              "Effect": "Allow",
+              "Principal": {
+                "Service": [
+                  "lambda.amazonaws.com"
+                ]
+              }
+            }
+          ]
+        },
+        "ManagedPolicyArns": [
+          "arn:aws-us-gov:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
+        ],
+        "Tags": [
+          {
+            "Value": "SAM",
+            "Key": "lambda:createdBy"
+          }
+        ]
+      }
+    },
+    "MyApiWithLambdaTokenAuthProdStage": {
       "Type": "AWS::ApiGateway::Stage",
       "Properties": {
         "DeploymentId": {
-          "Ref": "MyApiWithLambdaRequestAuthDeployment468dce6129"
+          "Ref": "MyApiWithLambdaTokenAuthDeployment5f3dce4e5c"
         },
         "RestApiId": {
-          "Ref": "MyApiWithLambdaRequestAuth"
+          "Ref": "MyApiWithLambdaTokenAuth"
         },
         "StageName": "Prod"
       }
     },
-    "MyApiWithLambdaRequestAuthMyLambdaRequestAuthAuthorizerPermission": {
-      "Type": "AWS::Lambda::Permission",
+    "MyFn": {
+      "Type": "AWS::Lambda::Function",
       "Properties": {
-        "Action": "lambda:InvokeFunction",
-        "FunctionName": {
+        "Handler": "index.handler",
+        "Code": {
+          "S3Bucket": "bucket",
+          "S3Key": "key"
+        },
+        "Role": {
           "Fn::GetAtt": [
-            "MyAuthFn",
+            "MyFnRole",
             "Arn"
           ]
         },
-        "Principal": "apigateway.amazonaws.com",
-        "SourceArn": {
-          "Fn::Sub": [
-            "arn:aws-us-gov:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/authorizers/*",
-            {
-              "__ApiId__": {
-                "Ref": "MyApiWithLambdaRequestAuth"
-              }
-            }
-          ]
-        }
+        "Runtime": "nodejs12.x",
+        "Tags": [
+          {
+            "Value": "SAM",
+            "Key": "lambda:createdBy"
+          }
+        ]
       }
     }
   }
-}
\ No newline at end of file
+}
diff --git a/tests/translator/output/aws-us-gov/api_with_identity_intrinsic.json b/tests/translator/output/aws-us-gov/api_with_identity_intrinsic.json
new file mode 100644
index 00000000..098ebbf1
--- /dev/null
+++ b/tests/translator/output/aws-us-gov/api_with_identity_intrinsic.json
@@ -0,0 +1,98 @@
+{
+  "AWSTemplateFormatVersion": "2010-09-09",
+  "Conditions": {
+    "isProd": true
+  },
+  "Resources": {
+    "APIGateway": {
+      "Type": "AWS::ApiGateway::RestApi",
+      "Properties": {
+        "Body": {
+          "info": {
+            "version": "1.0",
+            "title": {
+              "Ref": "AWS::StackName"
+            }
+          },
+          "paths": {},
+          "swagger": "2.0",
+          "securityDefinitions": {
+            "SomeAuthorizer": {
+              "in": "header",
+              "type": "apiKey",
+              "name": "Unused",
+              "x-amazon-apigateway-authorizer": {
+                "type": "request",
+                "authorizerResultTtlInSeconds": {
+                  "Fn::If": [
+                    "isProd",
+                    3600,
+                    0
+                  ]
+                },
+                "identitySource": "method.request.header.Accept",
+                "authorizerUri": {
+                  "Fn::Sub": [
+                    "arn:aws-us-gov:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${__FunctionArn__}/invocations",
+                    {
+                      "__FunctionArn__": "SomeArn"
+                    }
+                  ]
+                }
+              },
+              "x-amazon-apigateway-authtype": "custom"
+            }
+          }
+        },
+        "EndpointConfiguration": {
+          "Types": [
+            "REGIONAL"
+          ]
+        },
+        "Parameters": {
+          "endpointConfigurationTypes": "REGIONAL"
+        }
+      }
+    },
+    "APIGatewayDeploymentbbcece046c": {
+      "Type": "AWS::ApiGateway::Deployment",
+      "Properties": {
+        "RestApiId": {
+          "Ref": "APIGateway"
+        },
+        "Description": "RestApi deployment id: bbcece046c6ecd35f10c6ba88cf762d87ef35e8a",
+        "StageName": "Stage"
+      }
+    },
+    "APIGatewaySomeAuthorizerAuthorizerPermission": {
+      "Type": "AWS::Lambda::Permission",
+      "Properties": {
+        "Action": "lambda:InvokeFunction",
+        "Principal": "apigateway.amazonaws.com",
+        "FunctionName": "SomeArn",
+        "SourceArn": {
+          "Fn::Sub": [
+            "arn:aws-us-gov:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/authorizers/*",
+            {
+              "__ApiId__": {
+                "Ref": "APIGateway"
+              }
+            }
+          ]
+        }
+      }
+    },
+    "APIGatewayProdStage": {
+      "Type": "AWS::ApiGateway::Stage",
+      "Properties": {
+        "DeploymentId": {
+          "Ref": "APIGatewayDeploymentbbcece046c"
+        },
+        "RestApiId": {
+          "Ref": "APIGateway"
+        },
+        "StageName": "Prod"
+      }
+    }
+  }
+}
diff --git a/tests/translator/output/aws-us-gov/cognito_userpool_with_event.json b/tests/translator/output/aws-us-gov/cognito_userpool_with_event.json
index 82a18383..235b0084 100644
--- a/tests/translator/output/aws-us-gov/cognito_userpool_with_event.json
+++ b/tests/translator/output/aws-us-gov/cognito_userpool_with_event.json
@@ -6,44 +6,60 @@
         "LambdaConfig": {
           "PreSignUp": {
             "Fn::GetAtt": [
-              "ImplicitApiFunction", "Arn"
+              "ImplicitApiFunction",
+              "Arn"
             ]
           },
-          "PreAuthentication": "Test",
-          "Test1": {
+          "PostConfirmation": {
             "Fn::GetAtt": [
               "ImplicitApiFunction",
               "Arn"
             ]
           },
-          "Test2": {
+          "VerifyAuthChallengeResponse": {
             "Fn::GetAtt": [
               "ImplicitApiFunction",
               "Arn"
             ]
           }
-        }
+        },
+        "Policies": {
+          "PasswordPolicy": {
+            "MinimumLength": 8
+          }
+        },
+        "Schema": [
+          {
+            "AttributeDataType": "String",
+            "Name": "email",
+            "Required": false
+          }
+        ],
+        "UsernameAttributes": [
+          "email"
+        ],
+        "UserPoolName": "UserPoolName"
       }
     },
     "ImplicitApiFunction": {
-      "Type": "AWS::Lambda::Function", 
+      "Type": "AWS::Lambda::Function",
       "Properties": {
-        "Handler": "index.gethtml", 
         "Code": {
-          "S3Bucket": "sam-demo-bucket", 
+          "S3Bucket": "sam-demo-bucket",
           "S3Key": "member_portal.zip"
-        }, 
+        },
+        "Handler": "index.gethtml",
         "Role": {
           "Fn::GetAtt": [
-            "ImplicitApiFunctionRole", 
+            "ImplicitApiFunctionRole",
             "Arn"
           ]
-        }, 
+        },
         "Runtime": "nodejs12.x",
         "Tags": [
           {
-            "Value": "SAM", 
-            "Key": "lambda:createdBy"
+            "Key": "lambda:createdBy",
+            "Value": "SAM"
           }
         ]
       }
@@ -51,15 +67,6 @@
     "ImplicitApiFunctionRole": {
       "Type": "AWS::IAM::Role",
       "Properties": {
-        "ManagedPolicyArns": [
-          "arn:aws-us-gov:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
-        ],
-        "Tags": [
-          {
-            "Value": "SAM",
-            "Key": "lambda:createdBy"
-          }
-        ],
         "AssumeRolePolicyDocument": {
           "Version": "2012-10-17",
           "Statement": [
@@ -75,9 +82,18 @@
               }
             }
           ]
-        }
+        },
+        "ManagedPolicyArns": [
+          "arn:aws-us-gov:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
+        ],
+        "Tags": [
+          {
+            "Key": "lambda:createdBy",
+            "Value": "SAM"
+          }
+        ]
       }
-    },    
+    },
     "ImplicitApiFunctionCognitoPermission": {
       "Type": "AWS::Lambda::Permission",
       "Properties": {
@@ -85,14 +101,14 @@
         "FunctionName": {
           "Ref": "ImplicitApiFunction"
         },
+        "Principal": "cognito-idp.amazonaws.com",
         "SourceArn": {
           "Fn::GetAtt": [
             "UserPool",
             "Arn"
           ]
-        },
-        "Principal": "cognito-idp.amazonaws.com"
+        }
       }
     }
   }
-}
+}
\ No newline at end of file
diff --git a/tests/translator/output/aws-us-gov/kinesis_intrinsics.json b/tests/translator/output/aws-us-gov/kinesis_intrinsics.json
new file mode 100644
index 00000000..a3490c27
--- /dev/null
+++ b/tests/translator/output/aws-us-gov/kinesis_intrinsics.json
@@ -0,0 +1,168 @@
+{
+    "Conditions": {
+      "TrueCondition": {
+        "Fn::Equals": [
+          true, 
+          true
+        ]
+      }, 
+      "FalseCondition": {
+        "Fn::Equals": [
+          true, 
+          false
+        ]
+      }
+    }, 
+    "Resources": {
+      "MyLambdaFunctionRole": {
+        "Type": "AWS::IAM::Role", 
+        "Properties": {
+          "AssumeRolePolicyDocument": {
+            "Version": "2012-10-17", 
+            "Statement": [
+              {
+                "Action": [
+                  "sts:AssumeRole"
+                ], 
+                "Effect": "Allow", 
+                "Principal": {
+                  "Service": [
+                    "lambda.amazonaws.com"
+                  ]
+                }
+              }
+            ]
+          }, 
+          "ManagedPolicyArns": [
+            "arn:aws-us-gov:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole", 
+            "arn:aws-us-gov:iam::aws:policy/service-role/AWSLambdaKinesisExecutionRole"
+          ], 
+          "Tags": [
+            {
+              "Value": "SAM", 
+              "Key": "lambda:createdBy"
+            }
+          ]
+        }
+      }, 
+      "MyLambdaFunctionKinesisStream": {
+        "Type": "AWS::Lambda::EventSourceMapping", 
+        "Properties": {
+          "MaximumBatchingWindowInSeconds": {
+            "Ref": "IntValue"
+          }, 
+          "FunctionName": {
+            "Ref": "MyLambdaFunction"
+          }, 
+          "MaximumRecordAgeInSeconds": {
+            "Ref": "IntValue"
+          }, 
+          "FunctionResponseTypes": [
+            {
+              "Ref": "FunctionResponseTypesValue"
+            }
+          ], 
+          "BatchSize": {
+            "Ref": "IntValue"
+          }, 
+          "TumblingWindowInSeconds": {
+            "Ref": "IntValue"
+          }, 
+          "Enabled": {
+            "Fn::If": [
+              "TrueCondition", 
+              true, 
+              false
+            ]
+          }, 
+          "EventSourceArn": {
+            "Fn::Join": [
+              "", 
+              [
+                "arn:", 
+                {
+                  "Ref": "AWS::Partition"
+                }, 
+                ":kinesis:", 
+                {
+                  "Ref": "AWS::Region"
+                }, 
+                ":", 
+                {
+                  "Ref": "AWS::AccountId"
+                }, 
+                ":stream/", 
+                {
+                  "Ref": "MyStream"
+                }
+              ]
+            ]
+          }, 
+          "StartingPosition": {
+            "Ref": "StartingPositionValue"
+          }, 
+          "ParallelizationFactor": {
+            "Ref": "IntValue"
+          }, 
+          "MaximumRetryAttempts": {
+            "Ref": "IntValue"
+          }, 
+          "BisectBatchOnFunctionError": {
+            "Fn::If": [
+              "FalseCondition", 
+              true, 
+              false
+            ]
+          }
+        }
+      }, 
+      "MyStream": {
+        "Type": "AWS::Kinesis::Stream", 
+        "Properties": {
+          "ShardCount": 1
+        }
+      }, 
+      "MyLambdaFunction": {
+        "Type": "AWS::Lambda::Function", 
+        "Properties": {
+          "Code": {
+            "S3Bucket": "sam-demo-bucket", 
+            "S3Key": "stream.zip"
+          }, 
+          "Tags": [
+            {
+              "Value": "SAM", 
+              "Key": "lambda:createdBy"
+            }
+          ], 
+          "MemorySize": 128, 
+          "Handler": "index.handler", 
+          "Role": {
+            "Fn::GetAtt": [
+              "MyLambdaFunctionRole", 
+              "Arn"
+            ]
+          }, 
+          "Runtime": "nodejs12.x"
+        }
+      }
+    }, 
+    "Parameters": {
+      "StringValue": {
+        "Default": "us-east-1", 
+        "Type": "String"
+      }, 
+      "IntValue": {
+        "Default": 50, 
+        "Type": "Number"
+      }, 
+      "FunctionResponseTypesValue": {
+        "Default": "ReportBatchItemFailures", 
+        "Type": "String"
+      }, 
+      "StartingPositionValue": {
+        "Default": "LATEST", 
+        "Type": "String"
+      }
+    }
+  }
\ No newline at end of file
diff --git a/tests/translator/output/aws-us-gov/s3_intrinsics.json b/tests/translator/output/aws-us-gov/s3_intrinsics.json
new file mode 100644
index 00000000..947ec4ef
--- /dev/null
+++ b/tests/translator/output/aws-us-gov/s3_intrinsics.json
@@ -0,0 +1,130 @@
+{
+  "Conditions": {
+    "MyCondition": {
+      "Fn::Equals": [
+        true,
+        false
+      ]
+    }
+  },
+  "Parameters": {
+    "EventsParam": {
+      "Default": "s3:ObjectCreated:*",
+      "Type": "String"
+    }
+  },
+  "Resources": {
+    "Images": {
+      "Type": "AWS::S3::Bucket",
+      "Properties": {
+        "NotificationConfiguration": {
+          "LambdaConfigurations": [
+            {
+              "Function": {
+                "Fn::GetAtt": [
+                  "ThumbnailFunction",
+                  "Arn"
+                ]
+              },
+              "Filter": {
+                "Fn::If": [
+                  "MyCondition",
+                  {
+                    "S3Key": {
+                      "Rules": [
+                        {
+                          "Name": "Rule1Prefix",
+                          "Value": "Rule1Value"
+                        }
+                      ]
+                    }
+                  },
+                  {
+                    "S3Key": {
+                      "Rules": [
+                        {
+                          "Name": "Rule2Prefix",
+                          "Value": "Rule2Value"
+                        }
+                      ]
+                    }
+                  }
+                ]
+              },
+              "Event": "s3:ObjectCreated:*"
+            }
+          ]
+        }
+      },
+      "DependsOn": [
+        "ThumbnailFunctionImageBucketPermission"
+      ]
+    },
+    "ThumbnailFunctionRole": {
+      "Type": "AWS::IAM::Role",
+      "Properties": {
+        "AssumeRolePolicyDocument": {
+          "Version": "2012-10-17",
+          "Statement": [
+            {
+              "Action": [
+                "sts:AssumeRole"
+              ],
+              "Effect": "Allow",
+              "Principal": {
+                "Service": [
+                  "lambda.amazonaws.com"
+                ]
+              }
+            }
+          ]
+        },
+        "ManagedPolicyArns": [
+          "arn:aws-us-gov:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
+        ],
+        "Tags": [
+          {
+            "Value": "SAM",
+            "Key": "lambda:createdBy"
+          }
+        ]
+      }
+    },
+    "ThumbnailFunctionImageBucketPermission": {
+      "Type": "AWS::Lambda::Permission",
+      "Properties": {
+        "Action": "lambda:InvokeFunction",
+        "SourceAccount": {
+          "Ref": "AWS::AccountId"
+        },
+        "FunctionName": {
+          "Ref": "ThumbnailFunction"
+        },
+        "Principal": "s3.amazonaws.com"
+      }
+    },
+    "ThumbnailFunction": {
+      "Type": "AWS::Lambda::Function",
+      "Properties": {
+        "Handler": "index.generate_thumbails",
+        "Code": {
+          "S3Bucket": "sam-demo-bucket",
+          "S3Key": "thumbnails.zip"
+        },
+        "Role": {
+          "Fn::GetAtt": [
+            "ThumbnailFunctionRole",
+            "Arn"
+          ]
+        },
+        "Runtime": "nodejs12.x",
+        "Tags": [
+          {
+            "Value": "SAM",
+            "Key": "lambda:createdBy"
+          }
+        ]
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/tests/translator/output/aws-us-gov/sns_intrinsics.json b/tests/translator/output/aws-us-gov/sns_intrinsics.json
new file mode 100644
index 00000000..0df391ed
--- /dev/null
+++ b/tests/translator/output/aws-us-gov/sns_intrinsics.json
@@ -0,0 +1,171 @@
+{
+  "Conditions": {
+    "MyCondition": {
+      "Fn::Equals": [
+        true,
+        false
+      ]
+    }
+  },
+  "Parameters": {
+    "SnsRegion": {
+      "Default": "us-east-1",
+      "Type": "String"
+    }
+  },
+  "Resources": {
+    "Notifications": {
+      "Type": "AWS::SNS::Topic"
+    },
+    "SaveNotificationFunctionNotificationTopicQueue": {
+      "Type": "AWS::SQS::Queue",
+      "Properties": {}
+    },
+    "SaveNotificationFunctionNotificationTopicQueuePolicy": {
+      "Type": "AWS::SQS::QueuePolicy",
+      "Properties": {
+        "Queues": [
+          {
+            "Ref": "SaveNotificationFunctionNotificationTopicQueue"
+          }
+        ],
+        "PolicyDocument": {
+          "Version": "2012-10-17",
+          "Statement": [
+            {
+              "Action": "sqs:SendMessage",
+              "Resource": {
+                "Fn::GetAtt": [
+                  "SaveNotificationFunctionNotificationTopicQueue",
+                  "Arn"
+                ]
+              },
+              "Effect": "Allow",
+              "Condition": {
+                "ArnEquals": {
+                  "aws:SourceArn": {
+                    "Ref": "Notifications"
+                  }
+                }
+              },
+              "Principal": "*"
+            }
+          ]
+        }
+      }
+    },
+    "SaveNotificationFunctionNotificationTopic": {
+      "Type": "AWS::SNS::Subscription",
+      "Properties": {
+        "FilterPolicy": {
+          "Fn::If": [
+            "MyCondition",
+            {
+              "price_usd": [
+                {
+                  "numeric": [
+                    ">=",
+                    100
+                  ]
+                }
+              ]
+            },
+            {
+              "price_usd": [
+                {
+                  "numeric": [
+                    "<",
+                    100
+                  ]
+                }
+              ]
+            }
+          ]
+        },
+        "Region": {
+          "Ref": "SnsRegion"
+        },
+        "Endpoint": {
+          "Fn::GetAtt": [
+            "SaveNotificationFunctionNotificationTopicQueue",
+            "Arn"
+          ]
+        },
+        "Protocol": "sqs",
+        "TopicArn": {
+          "Ref": "Notifications"
+        }
+      }
+    },
+    "SaveNotificationFunctionRole": {
+      "Type": "AWS::IAM::Role",
+      "Properties": {
+        "AssumeRolePolicyDocument": {
+          "Version": "2012-10-17",
+          "Statement": [
+            {
+              "Action": [
+                "sts:AssumeRole"
+              ],
+              "Effect": "Allow",
+              "Principal": {
+                "Service": [
+                  "lambda.amazonaws.com"
+                ]
+              }
+            }
+          ]
+        },
+        "ManagedPolicyArns": [
+          "arn:aws-us-gov:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole",
+          "arn:aws-us-gov:iam::aws:policy/service-role/AWSLambdaSQSQueueExecutionRole"
+        ],
+        "Tags": [
+          {
+            "Value": "SAM",
+            "Key": "lambda:createdBy"
+          }
+        ]
+      }
+    },
+    "SaveNotificationFunctionNotificationTopicEventSourceMapping": {
+      "Type": "AWS::Lambda::EventSourceMapping",
+      "Properties": {
+        "BatchSize": 10,
+        "Enabled": true,
+        "FunctionName": {
+          "Ref": "SaveNotificationFunction"
+        },
+        "EventSourceArn": {
+          "Fn::GetAtt": [
+            "SaveNotificationFunctionNotificationTopicQueue",
+            "Arn"
+          ]
+        }
+      }
+    },
+    "SaveNotificationFunction": {
+      "Type": "AWS::Lambda::Function",
+      "Properties": {
+        "Handler": "index.save_notification",
+        "Code": {
+          "S3Bucket": "sam-demo-bucket",
+          "S3Key": "notifications.zip"
+        },
+        "Role": {
+          "Fn::GetAtt": [
+            "SaveNotificationFunctionRole",
+            "Arn"
+          ]
+        },
+        "Runtime": "nodejs12.x",
+        "Tags": [
+          {
+            "Value": "SAM",
+            "Key": "lambda:createdBy"
+          }
+        ]
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/tests/translator/output/cognito_userpool_with_event.json b/tests/translator/output/cognito_userpool_with_event.json
index 277f38c3..956742b7 100644
--- a/tests/translator/output/cognito_userpool_with_event.json
+++ b/tests/translator/output/cognito_userpool_with_event.json
@@ -6,44 +6,60 @@
         "LambdaConfig": {
           "PreSignUp": {
             "Fn::GetAtt": [
-              "ImplicitApiFunction", "Arn"
+              "ImplicitApiFunction",
+              "Arn"
             ]
           },
-          "PreAuthentication": "Test",
-          "Test1": {
+          "PostConfirmation": {
             "Fn::GetAtt": [
               "ImplicitApiFunction",
               "Arn"
             ]
           },
-          "Test2": {
+          "VerifyAuthChallengeResponse": {
             "Fn::GetAtt": [
               "ImplicitApiFunction",
               "Arn"
             ]
-          }          
-        }
+          }
+        },
+        "Policies": {
+          "PasswordPolicy": {
+            "MinimumLength": 8
+          }
+        },
+        "Schema": [
+          {
+            "AttributeDataType": "String",
+            "Name": "email",
+            "Required": false
+          }
+        ],
+        "UsernameAttributes": [
+          "email"
+        ],
+        "UserPoolName": "UserPoolName"
       }
     },
     "ImplicitApiFunction": {
-      "Type": "AWS::Lambda::Function", 
+      "Type": "AWS::Lambda::Function",
       "Properties": {
-        "Handler": "index.gethtml", 
         "Code": {
-          "S3Bucket": "sam-demo-bucket", 
+          "S3Bucket": "sam-demo-bucket",
           "S3Key": "member_portal.zip"
-        }, 
+        },
+        "Handler": "index.gethtml",
         "Role": {
           "Fn::GetAtt": [
-            "ImplicitApiFunctionRole", 
+            "ImplicitApiFunctionRole",
             "Arn"
           ]
-        }, 
+        },
         "Runtime": "nodejs12.x",
         "Tags": [
           {
-            "Value": "SAM", 
-            "Key": "lambda:createdBy"
+            "Key": "lambda:createdBy",
+            "Value": "SAM"
           }
         ]
       }
@@ -51,15 +67,6 @@
     "ImplicitApiFunctionRole": {
       "Type": "AWS::IAM::Role",
       "Properties": {
-        "ManagedPolicyArns": [
-          "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
-        ],
-        "Tags": [
-          {
-            "Value": "SAM",
-            "Key": "lambda:createdBy"
-          }
-        ],
         "AssumeRolePolicyDocument": {
           "Version": "2012-10-17",
           "Statement": [
@@ -75,9 +82,18 @@
               }
             }
           ]
-        }
+        },
+        "ManagedPolicyArns": [
+          "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
+        ],
+        "Tags": [
+          {
+            "Key": "lambda:createdBy",
+            "Value": "SAM"
+          }
+        ]
       }
-    },    
+    },
     "ImplicitApiFunctionCognitoPermission": {
       "Type": "AWS::Lambda::Permission",
       "Properties": {
@@ -85,14 +101,14 @@
         "FunctionName": {
           "Ref": "ImplicitApiFunction"
         },
+        "Principal": "cognito-idp.amazonaws.com",
         "SourceArn": {
           "Fn::GetAtt": [
             "UserPool",
             "Arn"
           ]
-        },
-        "Principal": "cognito-idp.amazonaws.com"
+        }
       }
     }
   }
-}
+}
\ No newline at end of file
diff --git a/tests/translator/output/error_cognito_trigger_invalid_type.json b/tests/translator/output/error_cognito_trigger_invalid_type.json
new file mode 100644
index 00000000..1a9bbdd3
--- /dev/null
+++ b/tests/translator/output/error_cognito_trigger_invalid_type.json
@@ -0,0 +1,8 @@
+{
+  "errors": [
+    {
+      "errorMessage": "Resource with id [ImplicitApiFunctionOneTrigger] is invalid. Type of property 'Trigger' is invalid."
+    }
+  ],
+  "errorMessage": "Invalid Serverless Application Specification document. Number of errors found: 1. Resource with id [ImplicitApiFunctionOneTrigger] is invalid. Type of property 'Trigger' is invalid."
+}
diff --git a/tests/translator/output/error_function_invalid_s3_event.json b/tests/translator/output/error_function_invalid_s3_event.json
new file mode 100644
index 00000000..d7625907
--- /dev/null
+++ b/tests/translator/output/error_function_invalid_s3_event.json
@@ -0,0 +1,8 @@
+{
+  "errors": [
+    {
+      "errorMessage": "Invalid Serverless Application Specification document. Number of errors found: 1. Resource with id [FunctionInvalidS3EventS3Event] is invalid. Type of property 'Events' is invalid."
+    }
+  ],
+  "errorMessage": "Invalid Serverless Application Specification document. Number of errors found: 1. Resource with id [FunctionInvalidS3EventS3Event] is invalid. Type of property 'Events' is invalid."
+}
\ No newline at end of file
diff --git a/tests/translator/output/error_sns_intrinsics.json b/tests/translator/output/error_sns_intrinsics.json
new file mode 100644
index 00000000..ad95a1a6
--- /dev/null
+++ b/tests/translator/output/error_sns_intrinsics.json
@@ -0,0 +1,8 @@
+{
+  "errorMessage": "Invalid Serverless Application Specification document. Number of errors found: 1. Resource with id [SaveNotificationFunction] is invalid. Event with id [NotificationTopic] is invalid. No QueueARN or QueueURL provided.",
+  "errors": [
+    {
+      "errorMessage": "Resource with id [SaveNotificationFunction] is invalid. Event with id [NotificationTopic] is invalid. No QueueARN or QueueURL provided."
+    }
+  ]
+}
\ No newline at end of file
diff --git a/tests/translator/output/kinesis_intrinsics.json b/tests/translator/output/kinesis_intrinsics.json
new file mode 100644
index 00000000..c7802de7
--- /dev/null
+++ b/tests/translator/output/kinesis_intrinsics.json
@@ -0,0 +1,168 @@
+{
+    "Conditions": {
+      "TrueCondition": {
+        "Fn::Equals": [
+          true, 
+          true
+        ]
+      }, 
+      "FalseCondition": {
+        "Fn::Equals": [
+          true, 
+          false
+        ]
+      }
+    }, 
+    "Resources": {
+      "MyLambdaFunctionRole": {
+        "Type": "AWS::IAM::Role", 
+        "Properties": {
+          "AssumeRolePolicyDocument": {
+            "Version": "2012-10-17", 
+            "Statement": [
+              {
+                "Action": [
+                  "sts:AssumeRole"
+                ], 
+                "Effect": "Allow", 
+                "Principal": {
+                  "Service": [
+                    "lambda.amazonaws.com"
+                  ]
+                }
+              }
+            ]
+          }, 
+          "ManagedPolicyArns": [
+            "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole", 
+            "arn:aws:iam::aws:policy/service-role/AWSLambdaKinesisExecutionRole"
+          ], 
+          "Tags": [
+            {
+              "Value": "SAM", 
+              "Key": "lambda:createdBy"
+            }
+          ]
+        }
+      }, 
+      "MyLambdaFunctionKinesisStream": {
+        "Type": "AWS::Lambda::EventSourceMapping", 
+        "Properties": {
+          "MaximumBatchingWindowInSeconds": {
+            "Ref": "IntValue"
+          }, 
+          "FunctionName": {
+            "Ref": "MyLambdaFunction"
+          }, 
+          "MaximumRecordAgeInSeconds": {
+            "Ref": "IntValue"
+          }, 
+          "FunctionResponseTypes": [
+            {
+              "Ref": "FunctionResponseTypesValue"
+            }
+          ], 
+          "BatchSize": {
+            "Ref": "IntValue"
+          }, 
+          "TumblingWindowInSeconds": {
+            "Ref": "IntValue"
+          }, 
+          "Enabled": {
+            "Fn::If": [
+              "TrueCondition", 
+              true, 
+              false
+            ]
+          }, 
+          "EventSourceArn": {
+            "Fn::Join": [
+              "", 
+              [
+                "arn:", 
+                {
+                  "Ref": "AWS::Partition"
+                }, 
+                ":kinesis:", 
+                {
+                  "Ref": "AWS::Region"
+                }, 
+                ":", 
+                {
+                  "Ref": "AWS::AccountId"
+                }, 
+                ":stream/", 
+                {
+                  "Ref": "MyStream"
+                }
+              ]
+            ]
+          }, 
+          "StartingPosition": {
+            "Ref": "StartingPositionValue"
+          }, 
+          "ParallelizationFactor": {
+            "Ref": "IntValue"
+          }, 
+          "MaximumRetryAttempts": {
+            "Ref": "IntValue"
+          }, 
+          "BisectBatchOnFunctionError": {
+            "Fn::If": [
+              "FalseCondition", 
+              true, 
+              false
+            ]
+          }
+        }
+      }, 
+      "MyStream": {
+        "Type": "AWS::Kinesis::Stream", 
+        "Properties": {
+          "ShardCount": 1
+        }
+      }, 
+      "MyLambdaFunction": {
+        "Type": "AWS::Lambda::Function", 
+        "Properties": {
+          "Code": {
+            "S3Bucket": "sam-demo-bucket", 
+            "S3Key": "stream.zip"
+          }, 
+          "Tags": [
+            {
+              "Value": "SAM", 
+              "Key": "lambda:createdBy"
+            }
+          ], 
+          "MemorySize": 128, 
+          "Handler": "index.handler", 
+          "Role": {
+            "Fn::GetAtt": [
+              "MyLambdaFunctionRole", 
+              "Arn"
+            ]
+          }, 
+          "Runtime": "nodejs12.x"
+        }
+      }
+    }, 
+    "Parameters": {
+      "StringValue": {
+        "Default": "us-east-1", 
+        "Type": "String"
+      }, 
+      "IntValue": {
+        "Default": 50, 
+        "Type": "Number"
+      }, 
+      "FunctionResponseTypesValue": {
+        "Default": "ReportBatchItemFailures", 
+        "Type": "String"
+      }, 
+      "StartingPositionValue": {
+        "Default": "LATEST", 
+        "Type": "String"
+      }
+    }
+  }
\ No newline at end of file
diff --git a/tests/translator/output/s3_intrinsics.json b/tests/translator/output/s3_intrinsics.json
new file mode 100644
index 00000000..6b5e52f3
--- /dev/null
+++ b/tests/translator/output/s3_intrinsics.json
@@ -0,0 +1,130 @@
+{
+  "Conditions": {
+    "MyCondition": {
+      "Fn::Equals": [
+        true,
+        false
+      ]
+    }
+  },
+  "Parameters": {
+    "EventsParam": {
+      "Default": "s3:ObjectCreated:*",
+      "Type": "String"
+    }
+  },
+  "Resources": {
+    "Images": {
+      "Type": "AWS::S3::Bucket",
+      "Properties": {
+        "NotificationConfiguration": {
+          "LambdaConfigurations": [
+            {
+              "Function": {
+                "Fn::GetAtt": [
+                  "ThumbnailFunction",
+                  "Arn"
+                ]
+              },
+              "Filter": {
+                "Fn::If": [
+                  "MyCondition",
+                  {
+                    "S3Key": {
+                      "Rules": [
+                        {
+                          "Name": "Rule1Prefix",
+                          "Value": "Rule1Value"
+                        }
+                      ]
+                    }
+                  },
+                  {
+                    "S3Key": {
+                      "Rules": [
+                        {
+                          "Name": "Rule2Prefix",
+                          "Value": "Rule2Value"
+                        }
+                      ]
+                    }
+                  }
+                ]
+              },
+              "Event": "s3:ObjectCreated:*"
+            }
+          ]
+        }
+      },
+      "DependsOn": [
+        "ThumbnailFunctionImageBucketPermission"
+      ]
+    },
+    "ThumbnailFunctionRole": {
+      "Type": "AWS::IAM::Role",
+      "Properties": {
+        "AssumeRolePolicyDocument": {
+          "Version": "2012-10-17",
+          "Statement": [
+            {
+              "Action": [
+                "sts:AssumeRole"
+              ],
+              "Effect": "Allow",
+              "Principal": {
+                "Service": [
+                  "lambda.amazonaws.com"
+                ]
+              }
+            }
+          ]
+        },
+        "ManagedPolicyArns": [
+          "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
+        ],
+        "Tags": [
+          {
+            "Value": "SAM",
+            "Key": "lambda:createdBy"
+          }
+        ]
+      }
+    },
+    "ThumbnailFunctionImageBucketPermission": {
+      "Type": "AWS::Lambda::Permission",
+      "Properties": {
+        "Action": "lambda:InvokeFunction",
+        "SourceAccount": {
+          "Ref": "AWS::AccountId"
+        },
+        "FunctionName": {
+          "Ref": "ThumbnailFunction"
+        },
+        "Principal": "s3.amazonaws.com"
+      }
+    },
+    "ThumbnailFunction": {
+      "Type": "AWS::Lambda::Function",
+      "Properties": {
+        "Handler": "index.generate_thumbails",
+        "Code": {
+          "S3Bucket": "sam-demo-bucket",
+          "S3Key": "thumbnails.zip"
+        },
+        "Role": {
+          "Fn::GetAtt": [
+            "ThumbnailFunctionRole",
+            "Arn"
+          ]
+        },
+        "Runtime": "nodejs12.x",
+        "Tags": [
+          {
+            "Value": "SAM",
+            "Key": "lambda:createdBy"
+          }
+        ]
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/tests/translator/output/sns_intrinsics.json b/tests/translator/output/sns_intrinsics.json
new file mode 100644
index 00000000..c591b026
--- /dev/null
+++ b/tests/translator/output/sns_intrinsics.json
@@ -0,0 +1,171 @@
+{
+  "Conditions": {
+    "MyCondition": {
+      "Fn::Equals": [
+        true,
+        false
+      ]
+    }
+  },
+  "Parameters": {
+    "SnsRegion": {
+      "Default": "us-east-1",
+      "Type": "String"
+    }
+  },
+  "Resources": {
+    "Notifications": {
+      "Type": "AWS::SNS::Topic"
+    },
+    "SaveNotificationFunctionNotificationTopicQueue": {
+      "Type": "AWS::SQS::Queue",
+      "Properties": {}
+    },
+    "SaveNotificationFunctionNotificationTopicQueuePolicy": {
+      "Type": "AWS::SQS::QueuePolicy",
+      "Properties": {
+        "Queues": [
+          {
+            "Ref": "SaveNotificationFunctionNotificationTopicQueue"
+          }
+        ],
+        "PolicyDocument": {
+          "Version": "2012-10-17",
+          "Statement": [
+            {
+              "Action": "sqs:SendMessage",
+              "Resource": {
+                "Fn::GetAtt": [
+                  "SaveNotificationFunctionNotificationTopicQueue",
+                  "Arn"
+                ]
+              },
+              "Effect": "Allow",
+              "Condition": {
+                "ArnEquals": {
+                  "aws:SourceArn": {
+                    "Ref": "Notifications"
+                  }
+                }
+              },
+              "Principal": "*"
+            }
+          ]
+        }
+      }
+    },
+    "SaveNotificationFunctionNotificationTopic": {
+      "Type": "AWS::SNS::Subscription",
+      "Properties": {
+        "FilterPolicy": {
+          "Fn::If": [
+            "MyCondition",
+            {
+              "price_usd": [
+                {
+                  "numeric": [
+                    ">=",
+                    100
+                  ]
+                }
+              ]
+            },
+            {
+              "price_usd": [
+                {
+                  "numeric": [
+                    "<",
+                    100
+                  ]
+                }
+              ]
+            }
+          ]
+        },
+        "Region": {
+          "Ref": "SnsRegion"
+        },
+        "Endpoint": {
+          "Fn::GetAtt": [
+            "SaveNotificationFunctionNotificationTopicQueue",
+            "Arn"
+          ]
+        },
+        "Protocol": "sqs",
+        "TopicArn": {
+          "Ref": "Notifications"
+        }
+      }
+    },
+    "SaveNotificationFunctionRole": {
+      "Type": "AWS::IAM::Role",
+      "Properties": {
+        "AssumeRolePolicyDocument": {
+          "Version": "2012-10-17",
+          "Statement": [
+            {
+              "Action": [
+                "sts:AssumeRole"
+              ],
+              "Effect": "Allow",
+              "Principal": {
+                "Service": [
+                  "lambda.amazonaws.com"
+                ]
+              }
+            }
+          ]
+        },
+        "ManagedPolicyArns": [
+          "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole",
+          "arn:aws:iam::aws:policy/service-role/AWSLambdaSQSQueueExecutionRole"
+        ],
+        "Tags": [
+          {
+            "Value": "SAM",
+            "Key": "lambda:createdBy"
+          }
+        ]
+      }
+    },
+    "SaveNotificationFunctionNotificationTopicEventSourceMapping": {
+      "Type": "AWS::Lambda::EventSourceMapping",
+      "Properties": {
+        "BatchSize": 10,
+        "Enabled": true,
+        "FunctionName": {
+          "Ref": "SaveNotificationFunction"
+        },
+        "EventSourceArn": {
+          "Fn::GetAtt": [
+            "SaveNotificationFunctionNotificationTopicQueue",
+            "Arn"
+          ]
+        }
+      }
+    },
+    "SaveNotificationFunction": {
+      "Type": "AWS::Lambda::Function",
+      "Properties": {
+        "Handler": "index.save_notification",
+        "Code": {
+          "S3Bucket": "sam-demo-bucket",
+          "S3Key": "notifications.zip"
+        },
+        "Role": {
+          "Fn::GetAtt": [
+            "SaveNotificationFunctionRole",
+            "Arn"
+          ]
+        },
+        "Runtime": "nodejs12.x",
+        "Tags": [
+          {
+            "Value": "SAM",
+            "Key": "lambda:createdBy"
+          }
+        ]
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/tests/translator/test_translator.py b/tests/translator/test_translator.py
index 0db19f45..6c702c4e 100644
--- a/tests/translator/test_translator.py
+++ b/tests/translator/test_translator.py
@@ -316,8 +316,10 @@ class TestTranslatorEndToEnd(AbstractTestTranslator):
                 "api_with_gateway_responses_minimal",
                 "api_with_gateway_responses_implicit",
                 "api_with_gateway_responses_string_status_code",
+                "api_with_identity_intrinsic",
                 "api_cache",
                 "api_with_access_log_setting",
+                "api_with_any_method_in_swagger",
                 "api_with_canary_setting",
                 "api_with_xray_tracing",
                 "api_request_model",
@@ -329,18 +331,21 @@ class TestTranslatorEndToEnd(AbstractTestTranslator):
                 "s3_existing_lambda_notification_configuration",
                 "s3_existing_other_notification_configuration",
                 "s3_filter",
+                "s3_intrinsics",
                 "s3_multiple_events_same_bucket",
                 "s3_multiple_functions",
                 "s3_with_dependsOn",
                 "sns",
                 "sns_sqs",
                 "sns_existing_sqs",
+                "sns_intrinsics",
                 "sns_outside_sqs",
                 "sns_existing_other_subscription",
                 "sns_topic_outside_template",
                 "alexa_skill",
                 "alexa_skill_with_skill_id",
                 "iot_rule",
+                "kinesis_intrinsics",
                 "layers_with_intrinsics",
                 "layers_all_properties",
                 "layer_deletion_policy_precedence",
@@ -665,6 +670,7 @@ class TestTranslatorEndToEnd(AbstractTestTranslator):
         "error_state_machine_with_cwe_invalid_dlq_type",
         "error_state_machine_with_cwe_both_dlq_property_provided",
         "error_state_machine_with_cwe_missing_dlq_property",
+        "error_cognito_trigger_invalid_type",
         "error_cognito_userpool_duplicate_trigger",
         "error_cognito_userpool_not_string",
         "error_api_duplicate_methods_same_path",
@@ -693,6 +699,7 @@ class TestTranslatorEndToEnd(AbstractTestTranslator):
         "error_cors_credentials_true_without_explicit_origin",
         "error_function_invalid_codeuri",
         "error_function_invalid_api_event",
+        "error_function_invalid_s3_event",
         "error_function_invalid_autopublishalias",
         "error_function_invalid_event_type",
         "error_function_invalid_layer",
@@ -723,6 +730,7 @@ class TestTranslatorEndToEnd(AbstractTestTranslator):
         "error_multiple_resource_errors",
         "error_null_application_id",
         "error_s3_not_in_template",
+        "error_sns_intrinsics",
         "error_table_invalid_attributetype",
         "error_table_primary_key_missing_name",
         "error_table_primary_key_missing_type",