def describe_stack_resource(self): stack_name = self._get_param('StackName') stack = self.cloudformation_backend.get_stack(stack_name) logical_resource_id = self._get_param('LogicalResourceId') if not stack: msg = ('Unable to find CloudFormation stack "%s" in region %s' % (stack_name, aws_stack.get_region())) if aws_stack.get_region() != self.region: msg = '%s/%s' % (msg, self.region) LOG.warning(msg) response = aws_responses.flask_error_response( msg, code=404, error_type='ResourceNotFoundException') return 404, response.headers, response.data for stack_resource in stack.stack_resources: # Note: Line below has been patched # if stack_resource.logical_resource_id == logical_resource_id: if stack_resource and stack_resource.logical_resource_id == logical_resource_id: resource = stack_resource break else: raise ValidationError(logical_resource_id) template = self.response_template( responses.DESCRIBE_STACK_RESOURCE_RESPONSE_TEMPLATE) return template.render(stack=stack, resource=resource)
def error_response(msg, code=500, error_type='InternalFailure'): LOG.warning(msg) return aws_responses.flask_error_response(msg, code=code, error_type=error_type)