Skip to content

Commit c1d1001

Browse files
authored
fix: Call correct exception when Connectors attribute is non-dict (#3022)
1 parent 1399f7a commit c1d1001

File tree

3 files changed

+13
-3
lines changed

3 files changed

+13
-3
lines changed

samtranslator/translator/translator.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -326,7 +326,7 @@ def _get_embedded_connectors(self, resources: Dict[str, Any]) -> List[Resource]:
326326
).to_be_a_map()
327327
except InvalidResourceException as e:
328328
self.document_errors.append(e)
329-
329+
continue
330330
for connector_logical_id, connector_dict in resource["Connectors"].items():
331331
try:
332332
full_connector_logical_id = source_logical_id + connector_logical_id

tests/translator/input/error_embedded_connectors.yaml

+8
Original file line numberDiff line numberDiff line change
@@ -181,3 +181,11 @@ Resources:
181181
Runtime: python3.9
182182
InlineCode: foo
183183
Handler: foo
184+
185+
NoneTypeConnector:
186+
Connectors:
187+
Type: AWS::Serverless::Function
188+
Properties:
189+
Runtime: python3.9
190+
InlineCode: foo
191+
Handler: foo

tests/translator/output/error_embedded_connectors.json

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"_autoGeneratedBreakdownErrorMessage": [
33
"Invalid Serverless Application Specification document. ",
4-
"Number of errors found: 24. ",
4+
"Number of errors found: 25. ",
55
"Transforming resource with id [DuplicateTest] attempts to create a new resource with id [DuplicateTestDuplicateId] and type \"AWS::Serverless::Connector\". ",
66
"A resource with that id already exists within this template. ",
77
"Please use a different id for that resource. ",
@@ -49,8 +49,10 @@
4949
"Unsupported 'Permissions' provided for connector from AWS::SQS::Queue to AWS::Lambda::Function; valid combinations are: Read + Write. ",
5050
"Resource with id [MyResourceWithoutTypeResourceWithoutType] is invalid. ",
5151
"'Type' is missing or not a string. ",
52+
"Resource with id [NoneTypeConnector] is invalid. ",
53+
"Attribute 'NoneTypeConnector.Connectors' should be a map. ",
5254
"Resource with id [TestSourceReferenceId] is invalid. ",
5355
"'Id' shouldn't be defined in 'SourceReference'."
5456
],
55-
"errorMessage": "Invalid Serverless Application Specification document. Number of errors found: 24. Transforming resource with id [DuplicateTest] attempts to create a new resource with id [DuplicateTestDuplicateId] and type \"AWS::Serverless::Connector\". A resource with that id already exists within this template. Please use a different id for that resource. Resource with id [EventsRuleMissingLambdaFunctionArn] is invalid. Unable to get Lambda function ARN from 'Destination' resource. Resource with id [EventsRuleMissingSnsTopicArn] is invalid. Destination.Arn is missing. Resource with id [EventsRuleMissingSqsQueueUrl] is invalid. Unable to create connector from AWS::Events::Rule to AWS::SQS:Queue; it's not supported or the template is invalid. Resource with id [MyFunction] is invalid. Attribute 'Connectors.NoProperties.Properties' should be a map. Resource with id [MyFunction] is invalid. Attribute 'Connectors.NonDictProperties.Properties' should be a map. Resource with id [MyFunction] is invalid. Attribute 'Connectors.EmptyProperties.Properties' should be a map. Resource with id [MyFunction] is invalid. Property 'Connectors.NonDictSourceReference.Properties.SourceReference' should be a map. Resource with id [MyFunctionBothIdAndOtherProps] is invalid. Must provide 'Id' (with optional 'Qualifier') or a supported combination of other properties. Resource with id [MyFunctionEmptyDestination] is invalid. Missing required property 'Destination'. Resource with id [MyFunctionEmptyPermissions] is invalid. Missing required property 'Permissions'. Resource with id [MyFunctionEmptyPermissionsList] is invalid. 'Permissions' cannot be empty; valid values are: Read, Write. Resource with id [MyFunctionMissingRoleMissingRole] is invalid. Unable to get IAM role name from 'Source' resource. Resource with id [MyFunctionNoDestination] is invalid. Missing required property 'Destination'. Resource with id [MyFunctionNoDictConnectorNonDictConnector] is invalid. MyFunctionNoDictConnector.MyFunctionNoDictConnectorNonDictConnector should be a map. Resource with id [MyFunctionNoIdMissingType] is invalid. 'Type' is missing or not a string. Resource with id [MyFunctionNoPermissions] is invalid. Missing required property 'Permissions'. Resource with id [MyFunctionNoStrId] is invalid. 'Id' is missing or not a string. Resource with id [MyFunctionNonExistentId] is invalid. Unable to find resource with logical ID 'ThisDoesntExist'. Resource with id [MyFunctionUnsupportedAccessCategory] is invalid. Unsupported 'Permissions' provided for connector from AWS::Lambda::Function to AWS::SQS::Queue; valid values are: Read, Write. Resource with id [MyQueueMissingRoleDestination] is invalid. Unable to get IAM role name from 'Destination' resource. Resource with id [MyQueueUnsupportedAccessCategoryCombination] is invalid. Unsupported 'Permissions' provided for connector from AWS::SQS::Queue to AWS::Lambda::Function; valid combinations are: Read + Write. Resource with id [MyResourceWithoutTypeResourceWithoutType] is invalid. 'Type' is missing or not a string. Resource with id [TestSourceReferenceId] is invalid. 'Id' shouldn't be defined in 'SourceReference'."
57+
"errorMessage": "Invalid Serverless Application Specification document. Number of errors found: 25. Transforming resource with id [DuplicateTest] attempts to create a new resource with id [DuplicateTestDuplicateId] and type \"AWS::Serverless::Connector\". A resource with that id already exists within this template. Please use a different id for that resource. Resource with id [EventsRuleMissingLambdaFunctionArn] is invalid. Unable to get Lambda function ARN from 'Destination' resource. Resource with id [EventsRuleMissingSnsTopicArn] is invalid. Destination.Arn is missing. Resource with id [EventsRuleMissingSqsQueueUrl] is invalid. Unable to create connector from AWS::Events::Rule to AWS::SQS:Queue; it's not supported or the template is invalid. Resource with id [MyFunction] is invalid. Attribute 'Connectors.NoProperties.Properties' should be a map. Resource with id [MyFunction] is invalid. Attribute 'Connectors.NonDictProperties.Properties' should be a map. Resource with id [MyFunction] is invalid. Attribute 'Connectors.EmptyProperties.Properties' should be a map. Resource with id [MyFunction] is invalid. Property 'Connectors.NonDictSourceReference.Properties.SourceReference' should be a map. Resource with id [MyFunctionBothIdAndOtherProps] is invalid. Must provide 'Id' (with optional 'Qualifier') or a supported combination of other properties. Resource with id [MyFunctionEmptyDestination] is invalid. Missing required property 'Destination'. Resource with id [MyFunctionEmptyPermissions] is invalid. Missing required property 'Permissions'. Resource with id [MyFunctionEmptyPermissionsList] is invalid. 'Permissions' cannot be empty; valid values are: Read, Write. Resource with id [MyFunctionMissingRoleMissingRole] is invalid. Unable to get IAM role name from 'Source' resource. Resource with id [MyFunctionNoDestination] is invalid. Missing required property 'Destination'. Resource with id [MyFunctionNoDictConnectorNonDictConnector] is invalid. MyFunctionNoDictConnector.MyFunctionNoDictConnectorNonDictConnector should be a map. Resource with id [MyFunctionNoIdMissingType] is invalid. 'Type' is missing or not a string. Resource with id [MyFunctionNoPermissions] is invalid. Missing required property 'Permissions'. Resource with id [MyFunctionNoStrId] is invalid. 'Id' is missing or not a string. Resource with id [MyFunctionNonExistentId] is invalid. Unable to find resource with logical ID 'ThisDoesntExist'. Resource with id [MyFunctionUnsupportedAccessCategory] is invalid. Unsupported 'Permissions' provided for connector from AWS::Lambda::Function to AWS::SQS::Queue; valid values are: Read, Write. Resource with id [MyQueueMissingRoleDestination] is invalid. Unable to get IAM role name from 'Destination' resource. Resource with id [MyQueueUnsupportedAccessCategoryCombination] is invalid. Unsupported 'Permissions' provided for connector from AWS::SQS::Queue to AWS::Lambda::Function; valid combinations are: Read + Write. Resource with id [MyResourceWithoutTypeResourceWithoutType] is invalid. 'Type' is missing or not a string. Resource with id [NoneTypeConnector] is invalid. Attribute 'NoneTypeConnector.Connectors' should be a map. Resource with id [TestSourceReferenceId] is invalid. 'Id' shouldn't be defined in 'SourceReference'."
5658
}

0 commit comments

Comments
 (0)