aws-sam-cli: `sam local start-api` does not produce any API's with nested stacks

Description:

We are currently building our parent stack with nested stacks, each will have their own endpoints from our main API which is defined in the parent stack using a Swagger file and referenced here and discussed here.

Note: we are using AWS::Serverless::API as we need some of the security features for future integrations.

If I was to deploy this to our development and production environment it builds as expected.

However, when our developer’s attempt to run the API Gateway locally, they get the following message: Error: Template does not have any APIs connected to Lambda functions. If we define Events in the nested stack, multiple API’s are built upon deployment.

Steps to reproduce:

template.yml - the parent stack

Resources:
  # Each Lambda function is defined by properties:
  # https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction
  ClientFacingLambdaAPIGateway:
    Type: AWS::Serverless::Api
    Properties:
      Name: !Sub "Client Facing Lambda API Gateway - ${STAGE}"
      Cors:
        AllowOrigin: "'*'"
        AllowHeaders: "'*'"
      StageName: !Sub ${STAGE}
      TracingEnabled: true
      DefinitionBody:
        Fn::Transform:
          Name: AWS::Include 
          Parameters:
            Location: ./resources/api/api.yaml
 
# Further nested stacks defined before 
  origoHub: 
    Type: AWS::Serverless::Application 
    Properties:
      Location: ./resources/applications/origo-hub-functions.yaml

resources/applications/origo-hub-functions.yaml

Resources:

# further resources defined before this 
  origoSwitch: 
    Type: AWS::Serverless::Function
    Properties:
      Handler: src/handlers/switch.switchInstruction
      FunctionName: !Sub "${STAGE}-origo-hub-switch"
      Timeout: 120
      Policies:
        - LambdaInvokePolicy:
            FunctionName:
              !Sub "${STAGE}-origo-hub-switch"

 origoSwitchPermisssion:
    Type: AWS::Lambda::Permission 
    Properties:
      Action: lambda:InvokeFunction
      FunctionName: !GetAtt switch.Arn 
      Principal: apigateway.amazonaws.com 

Outputs:
  origoSwitchFunction:
    Description: "Switch Function ARN"
    Value: !GetAtt origoSwitch.Arn

resources/api/api.yaml

swagger: '2.0'
info:
  version: '1.0'
  title:
    Ref: AWS::StackName
paths:
  /origohub/switch:
    post:
      x-amazon-apigateway-integration:
        httpMethod: POST
        type: aws_proxy
        uri:
          Fn::Sub:
            - >-
              arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${origoSwitchFunction}/invocations
            - origoSwitchFunction:
                Fn::GetAtt:
                  - origohub
                  - Outputs.origoSwitchFunction
      responses:
        '200':
          description: 'Success'

# More resources defined after.

Observed result:

2021-09-27 14:43:19,501 | Telemetry endpoint configured to be https://aws-serverless-tools-telemetry.us-west-2.amazonaws.com/metrics
2021-09-27 14:43:19,502 | Using config file: samconfig.toml, config environment: default
2021-09-27 14:43:19,502 | Expand command line arguments to:
2021-09-27 14:43:19,502 | --template_file=/Users/marcus.rowland/Projects/clarity-clientaccessible-lambda/.aws-sam/build/template.yaml --host=0.0.0.0 --port=3000 --static_dir=public --layer_cache_basedir=/Users/marcus.rowland/.aws-sam/layers-pkg --container_host=localhost --container_host_interface=127.0.0.1
2021-09-27 14:43:19,613 | local start-api command is called
2021-09-27 14:43:19,634 | Collected default values for parameters: {'DEBUG': 'false', 'STAGE': 'dev', 'IntranetWebPrefix': 'https://dev-intr.', 'ClarityWebPrefix': 'https://dev.', 'CRYPTO': 'true', 'DBUSER': '', 'DBCLIENT': '', 'DBPASSWORD': '', 'DBDATABASE': '', 'DBHOST': '', 'DBPORT': '', 'WebEndpoint': ''}
2021-09-27 14:43:19,664 | Unable to resolve property DefinitionBody: OrderedDict([('Fn::Transform', OrderedDict([('Name', 'AWS::Include'), ('Parameters', OrderedDict([('Location', '../../resources/api/api.yaml')]))]))]). Leaving as is.
2021-09-27 14:43:19,664 | 3 stacks found in the template
2021-09-27 14:43:19,729 | Collected default values for parameters: {'DEBUG': 'false', 'STAGE': 'dev', 'IntranetWebPrefix': 'https://dev-intr.', 'ClarityWebPrefix': 'https://dev.', 'DBUSER': '', 'DBCLIENT': '', 'DBPASSWORD': '', 'DBDATABASE': '', 'DBHOST': '', 'DBPORT': ''}
2021-09-27 14:43:19,752 | Unable to resolve property FunctionName: OrderedDict([('Fn::GetAtt', ['buyListFundPerformance', 'Arn'])]). Leaving as is.
2021-09-27 14:43:19,752 | Unable to resolve property FunctionName: OrderedDict([('Fn::GetAtt', ['fundPerformanceGraph', 'Arn'])]). Leaving as is.
2021-09-27 14:43:19,753 | Unable to resolve property FunctionName: OrderedDict([('Fn::GetAtt', ['fundInfoTooltip', 'Arn'])]). Leaving as is.
2021-09-27 14:43:19,753 | Unable to resolve property Value: OrderedDict([('Fn::GetAtt', ['buyListFundPerformance', 'Arn'])]). Leaving as is.
2021-09-27 14:43:19,753 | Unable to resolve property Value: OrderedDict([('Fn::GetAtt', ['fundPerformanceGraph', 'Arn'])]). Leaving as is.
2021-09-27 14:43:19,753 | Unable to resolve property Value: OrderedDict([('Fn::GetAtt', ['fundInfoTooltip', 'Arn'])]). Leaving as is.
2021-09-27 14:43:19,753 | 6 stacks found in the template
2021-09-27 14:43:19,773 | Collected default values for parameters: {'DEBUG': 'false', 'STAGE': 'dev', 'ClarityWebPrefix': 'https://dev.'}
2021-09-27 14:43:19,796 | Unable to resolve property queueName: OrderedDict([('Fn::GetAtt', ['OrigoAWSSQSQueue', 'QueueName'])]). Leaving as is.
2021-09-27 14:43:19,796 | Unable to resolve property Resource: {'Fn::Sub': ['arn:${AWS::Partition}:sqs:${AWS::Region}:${AWS::AccountId}:${queueName}', {'queueName': OrderedDict([('Fn::GetAtt', ['OrigoAWSSQSQueue', 'QueueName'])])}]}. Leaving as is.
2021-09-27 14:43:19,796 | Unable to resolve property FunctionName: OrderedDict([('Fn::GetAtt', ['receiveAlert', 'Arn'])]). Leaving as is.
2021-09-27 14:43:19,797 | Unable to resolve property queueName: OrderedDict([('Fn::GetAtt', ['OrigoAWSSQSQueue', 'QueueName'])]). Leaving as is.
2021-09-27 14:43:19,797 | Unable to resolve property Resource: {'Fn::Sub': ['arn:${AWS::Partition}:sqs:${AWS::Region}:${AWS::AccountId}:${queueName}', {'queueName': OrderedDict([('Fn::GetAtt', ['OrigoAWSSQSQueue', 'QueueName'])])}]}. Leaving as is.
2021-09-27 14:43:19,797 | Unable to resolve property FunctionName: OrderedDict([('Fn::GetAtt', ['origoSwitch', 'Arn'])]). Leaving as is.
2021-09-27 14:43:19,797 | Unable to resolve property Value: OrderedDict([('Fn::GetAtt', ['origoSwitch', 'Arn'])]). Leaving as is.
2021-09-27 14:43:19,797 | Unable to resolve property Value: OrderedDict([('Fn::GetAtt', ['receiveAlert', 'Arn'])]). Leaving as is.
2021-09-27 14:43:19,797 | 7 stacks found in the template
2021-09-27 14:43:19,797 | Collected default values for parameters: {'DEBUG': 'false', 'STAGE': 'dev', 'IntranetWebPrefix': 'https://dev-intr.', 'ClarityWebPrefix': 'https://dev.', 'CRYPTO': 'true', 'DBUSER': '', 'DBCLIENT': '', 'DBPASSWORD': '', 'DBDATABASE': '', 'DBHOST': '', 'DBPORT': '', 'WebEndpoint': ''}
2021-09-27 14:43:19,817 | Unable to resolve property DefinitionBody: OrderedDict([('Fn::Transform', OrderedDict([('Name', 'AWS::Include'), ('Parameters', OrderedDict([('Location', '../../resources/api/api.yaml')]))]))]). Leaving as is.
2021-09-27 14:43:19,817 | 3 resources found in the stack
2021-09-27 14:43:19,817 | Collected default values for parameters: {'DEBUG': 'false', 'STAGE': 'dev', 'IntranetWebPrefix': 'https://dev-intr.', 'ClarityWebPrefix': 'https://dev.', 'DBUSER': '', 'DBCLIENT': '', 'DBPASSWORD': '', 'DBDATABASE': '', 'DBHOST': '', 'DBPORT': ''}
2021-09-27 14:43:19,838 | Unable to resolve property FunctionName: OrderedDict([('Fn::GetAtt', ['buyListFundPerformance', 'Arn'])]). Leaving as is.
2021-09-27 14:43:19,838 | Unable to resolve property FunctionName: OrderedDict([('Fn::GetAtt', ['fundPerformanceGraph', 'Arn'])]). Leaving as is.
2021-09-27 14:43:19,839 | Unable to resolve property FunctionName: OrderedDict([('Fn::GetAtt', ['fundInfoTooltip', 'Arn'])]). Leaving as is.
2021-09-27 14:43:19,839 | Unable to resolve property Value: OrderedDict([('Fn::GetAtt', ['buyListFundPerformance', 'Arn'])]). Leaving as is.
2021-09-27 14:43:19,839 | Unable to resolve property Value: OrderedDict([('Fn::GetAtt', ['fundPerformanceGraph', 'Arn'])]). Leaving as is.
2021-09-27 14:43:19,839 | Unable to resolve property Value: OrderedDict([('Fn::GetAtt', ['fundInfoTooltip', 'Arn'])]). Leaving as is.
2021-09-27 14:43:19,839 | 6 resources found in the stack morningstar
2021-09-27 14:43:19,839 | Collected default values for parameters: {'DEBUG': 'false', 'STAGE': 'dev', 'ClarityWebPrefix': 'https://dev.'}
2021-09-27 14:43:19,861 | Unable to resolve property queueName: OrderedDict([('Fn::GetAtt', ['OrigoAWSSQSQueue', 'QueueName'])]). Leaving as is.
2021-09-27 14:43:19,861 | Unable to resolve property Resource: {'Fn::Sub': ['arn:${AWS::Partition}:sqs:${AWS::Region}:${AWS::AccountId}:${queueName}', {'queueName': OrderedDict([('Fn::GetAtt', ['OrigoAWSSQSQueue', 'QueueName'])])}]}. Leaving as is.
2021-09-27 14:43:19,861 | Unable to resolve property FunctionName: OrderedDict([('Fn::GetAtt', ['receiveAlert', 'Arn'])]). Leaving as is.
2021-09-27 14:43:19,862 | Unable to resolve property queueName: OrderedDict([('Fn::GetAtt', ['OrigoAWSSQSQueue', 'QueueName'])]). Leaving as is.
2021-09-27 14:43:19,862 | Unable to resolve property Resource: {'Fn::Sub': ['arn:${AWS::Partition}:sqs:${AWS::Region}:${AWS::AccountId}:${queueName}', {'queueName': OrderedDict([('Fn::GetAtt', ['OrigoAWSSQSQueue', 'QueueName'])])}]}. Leaving as is.
2021-09-27 14:43:19,862 | Unable to resolve property FunctionName: OrderedDict([('Fn::GetAtt', ['origoSwitch', 'Arn'])]). Leaving as is.
2021-09-27 14:43:19,862 | Unable to resolve property Value: OrderedDict([('Fn::GetAtt', ['origoSwitch', 'Arn'])]). Leaving as is.
2021-09-27 14:43:19,862 | Unable to resolve property Value: OrderedDict([('Fn::GetAtt', ['receiveAlert', 'Arn'])]). Leaving as is.
2021-09-27 14:43:19,862 | 7 resources found in the stack origohub
2021-09-27 14:43:19,862 | Collected default values for parameters: {'DEBUG': 'false', 'STAGE': 'dev', 'IntranetWebPrefix': 'https://dev-intr.', 'ClarityWebPrefix': 'https://dev.', 'CRYPTO': 'true', 'DBUSER': '', 'DBCLIENT': '', 'DBPASSWORD': '', 'DBDATABASE': '', 'DBHOST': '', 'DBPORT': '', 'WebEndpoint': ''}
2021-09-27 14:43:19,881 | Unable to resolve property DefinitionBody: OrderedDict([('Fn::Transform', OrderedDict([('Name', 'AWS::Include'), ('Parameters', OrderedDict([('Location', '../../resources/api/api.yaml')]))]))]). Leaving as is.
2021-09-27 14:43:19,882 | Collected default values for parameters: {'DEBUG': 'false', 'STAGE': 'dev', 'IntranetWebPrefix': 'https://dev-intr.', 'ClarityWebPrefix': 'https://dev.', 'DBUSER': '', 'DBCLIENT': '', 'DBPASSWORD': '', 'DBDATABASE': '', 'DBHOST': '', 'DBPORT': ''}
2021-09-27 14:43:19,903 | Unable to resolve property FunctionName: OrderedDict([('Fn::GetAtt', ['buyListFundPerformance', 'Arn'])]). Leaving as is.
2021-09-27 14:43:19,903 | Unable to resolve property FunctionName: OrderedDict([('Fn::GetAtt', ['fundPerformanceGraph', 'Arn'])]). Leaving as is.
2021-09-27 14:43:19,904 | Unable to resolve property FunctionName: OrderedDict([('Fn::GetAtt', ['fundInfoTooltip', 'Arn'])]). Leaving as is.
2021-09-27 14:43:19,904 | Unable to resolve property Value: OrderedDict([('Fn::GetAtt', ['buyListFundPerformance', 'Arn'])]). Leaving as is.
2021-09-27 14:43:19,904 | Unable to resolve property Value: OrderedDict([('Fn::GetAtt', ['fundPerformanceGraph', 'Arn'])]). Leaving as is.
2021-09-27 14:43:19,904 | Unable to resolve property Value: OrderedDict([('Fn::GetAtt', ['fundInfoTooltip', 'Arn'])]). Leaving as is.
2021-09-27 14:43:19,904 | Found Serverless function with name='buyListFundPerformance' and CodeUri='buyListFundPerformance'
2021-09-27 14:43:19,904 | --base-dir is not presented, adjusting uri buyListFundPerformance relative to /Users/marcus.rowland/Projects/clarity-clientaccessible-lambda/.aws-sam/build/morningstar/template.yaml
2021-09-27 14:43:19,904 | Found Serverless function with name='fundPerformanceGraph' and CodeUri='fundPerformanceGraph'
2021-09-27 14:43:19,904 | --base-dir is not presented, adjusting uri fundPerformanceGraph relative to /Users/marcus.rowland/Projects/clarity-clientaccessible-lambda/.aws-sam/build/morningstar/template.yaml
2021-09-27 14:43:19,904 | Found Serverless function with name='fundInfoTooltip' and CodeUri='fundInfoTooltip'
2021-09-27 14:43:19,904 | --base-dir is not presented, adjusting uri fundInfoTooltip relative to /Users/marcus.rowland/Projects/clarity-clientaccessible-lambda/.aws-sam/build/morningstar/template.yaml
2021-09-27 14:43:19,904 | Collected default values for parameters: {'DEBUG': 'false', 'STAGE': 'dev', 'ClarityWebPrefix': 'https://dev.'}
2021-09-27 14:43:19,926 | Unable to resolve property queueName: OrderedDict([('Fn::GetAtt', ['OrigoAWSSQSQueue', 'QueueName'])]). Leaving as is.
2021-09-27 14:43:19,926 | Unable to resolve property Resource: {'Fn::Sub': ['arn:${AWS::Partition}:sqs:${AWS::Region}:${AWS::AccountId}:${queueName}', {'queueName': OrderedDict([('Fn::GetAtt', ['OrigoAWSSQSQueue', 'QueueName'])])}]}. Leaving as is.
2021-09-27 14:43:19,926 | Unable to resolve property FunctionName: OrderedDict([('Fn::GetAtt', ['receiveAlert', 'Arn'])]). Leaving as is.
2021-09-27 14:43:19,927 | Unable to resolve property queueName: OrderedDict([('Fn::GetAtt', ['OrigoAWSSQSQueue', 'QueueName'])]). Leaving as is.
2021-09-27 14:43:19,927 | Unable to resolve property Resource: {'Fn::Sub': ['arn:${AWS::Partition}:sqs:${AWS::Region}:${AWS::AccountId}:${queueName}', {'queueName': OrderedDict([('Fn::GetAtt', ['OrigoAWSSQSQueue', 'QueueName'])])}]}. Leaving as is.
2021-09-27 14:43:19,927 | Unable to resolve property FunctionName: OrderedDict([('Fn::GetAtt', ['origoSwitch', 'Arn'])]). Leaving as is.
2021-09-27 14:43:19,927 | Unable to resolve property Value: OrderedDict([('Fn::GetAtt', ['origoSwitch', 'Arn'])]). Leaving as is.
2021-09-27 14:43:19,927 | Unable to resolve property Value: OrderedDict([('Fn::GetAtt', ['receiveAlert', 'Arn'])]). Leaving as is.
2021-09-27 14:43:19,927 | Found Serverless function with name='receiveAlert' and CodeUri='receiveAlert'
2021-09-27 14:43:19,927 | --base-dir is not presented, adjusting uri receiveAlert relative to /Users/marcus.rowland/Projects/clarity-clientaccessible-lambda/.aws-sam/build/origohub/template.yaml
2021-09-27 14:43:19,928 | Found Serverless function with name='processDocument' and CodeUri='processDocument'
2021-09-27 14:43:19,928 | --base-dir is not presented, adjusting uri processDocument relative to /Users/marcus.rowland/Projects/clarity-clientaccessible-lambda/.aws-sam/build/origohub/template.yaml
2021-09-27 14:43:19,928 | Found Serverless function with name='origoSwitch' and CodeUri='origoSwitch'
2021-09-27 14:43:19,928 | --base-dir is not presented, adjusting uri origoSwitch relative to /Users/marcus.rowland/Projects/clarity-clientaccessible-lambda/.aws-sam/build/origohub/template.yaml
2021-09-27 14:43:19,933 | Collected default values for parameters: {'DEBUG': 'false', 'STAGE': 'dev', 'IntranetWebPrefix': 'https://dev-intr.', 'ClarityWebPrefix': 'https://dev.', 'CRYPTO': 'true', 'DBUSER': '', 'DBCLIENT': '', 'DBPASSWORD': '', 'DBDATABASE': '', 'DBHOST': '', 'DBPORT': '', 'WebEndpoint': ''}
2021-09-27 14:43:19,953 | Unable to resolve property DefinitionBody: OrderedDict([('Fn::Transform', OrderedDict([('Name', 'AWS::Include'), ('Parameters', OrderedDict([('Location', '../../resources/api/api.yaml')]))]))]). Leaving as is.
2021-09-27 14:43:19,953 | Collected default values for parameters: {'DEBUG': 'false', 'STAGE': 'dev', 'IntranetWebPrefix': 'https://dev-intr.', 'ClarityWebPrefix': 'https://dev.', 'CRYPTO': 'true', 'DBUSER': '', 'DBCLIENT': '', 'DBPASSWORD': '', 'DBDATABASE': '', 'DBHOST': '', 'DBPORT': '', 'WebEndpoint': ''}
2021-09-27 14:43:19,972 | Unable to resolve property DefinitionBody: OrderedDict([('Fn::Transform', OrderedDict([('Name', 'AWS::Include'), ('Parameters', OrderedDict([('Location', '../../resources/api/api.yaml')]))]))]). Leaving as is.
2021-09-27 14:43:19,972 | Successfully parsed location from AWS::Include transform: ../../resources/api/api.yaml
2021-09-27 14:43:19,972 | Trying to download Swagger from ../../resources/api/api.yaml
2021-09-27 14:43:19,972 | Reading Swagger document from local file at /Users/marcus.rowland/Projects/clarity-clientaccessible-lambda/.aws-sam/build/../../resources/api/api.yaml
2021-09-27 14:43:19,994 | Resolved Sub intrinsic function: arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${origoSwitchFunction}/invocations
2021-09-27 14:43:19,994 | Extracted Function ARN: ${origoSwitchFunction}
2021-09-27 14:43:19,994 | No Lambda function ARN defined for integration containing ARN ${origoSwitchFunction}
2021-09-27 14:43:19,994 | Lambda function integration not found in Swagger document at path='/origohub/switch' method='post'
2021-09-27 14:43:19,994 | Resolved Sub intrinsic function: arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${receiveAlertFunction}/invocations
2021-09-27 14:43:19,994 | Extracted Function ARN: ${receiveAlertFunction}
2021-09-27 14:43:19,994 | No Lambda function ARN defined for integration containing ARN ${receiveAlertFunction}
2021-09-27 14:43:19,994 | Lambda function integration not found in Swagger document at path='/origohub/alert' method='post'
2021-09-27 14:43:19,994 | Resolved Sub intrinsic function: arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${buyListFundPerformanceFunction}/invocations
2021-09-27 14:43:19,994 | Extracted Function ARN: ${buyListFundPerformanceFunction}
2021-09-27 14:43:19,994 | No Lambda function ARN defined for integration containing ARN ${buyListFundPerformanceFunction}
2021-09-27 14:43:19,994 | Lambda function integration not found in Swagger document at path='/morningstar/buylistfundperfomance' method='get'
2021-09-27 14:43:19,994 | Lambda function integration not found in Swagger document at path='/morningstar/buylistfundperfomance' method='options'
2021-09-27 14:43:19,994 | Resolved Sub intrinsic function: arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${fundInfoTooltipFunction}/invocations
2021-09-27 14:43:19,994 | Extracted Function ARN: ${fundInfoTooltipFunction}
2021-09-27 14:43:19,994 | No Lambda function ARN defined for integration containing ARN ${fundInfoTooltipFunction}
2021-09-27 14:43:19,994 | Lambda function integration not found in Swagger document at path='/morningstar/fundinfotooltipdata' method='get'
2021-09-27 14:43:19,995 | Lambda function integration not found in Swagger document at path='/morningstar/fundinfotooltipdata' method='options'
2021-09-27 14:43:19,995 | Resolved Sub intrinsic function: arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${fundPerformanceGraphFunction}/invocations
2021-09-27 14:43:19,995 | Extracted Function ARN: ${fundPerformanceGraphFunction}
2021-09-27 14:43:19,995 | No Lambda function ARN defined for integration containing ARN ${fundPerformanceGraphFunction}
2021-09-27 14:43:19,995 | Lambda function integration not found in Swagger document at path='/morningstar/fundperformancegraphdata' method='get'
2021-09-27 14:43:19,995 | Lambda function integration not found in Swagger document at path='/morningstar/fundperformancegraphdata' method='options'
2021-09-27 14:43:19,995 | Found '0' APIs in resource 'ClientFacingLambdaAPIGateway'
2021-09-27 14:43:19,995 | Collected default values for parameters: {'DEBUG': 'false', 'STAGE': 'dev', 'IntranetWebPrefix': 'https://dev-intr.', 'ClarityWebPrefix': 'https://dev.', 'DBUSER': '', 'DBCLIENT': '', 'DBPASSWORD': '', 'DBDATABASE': '', 'DBHOST': '', 'DBPORT': ''}
2021-09-27 14:43:20,016 | Unable to resolve property FunctionName: OrderedDict([('Fn::GetAtt', ['buyListFundPerformance', 'Arn'])]). Leaving as is.
2021-09-27 14:43:20,016 | Unable to resolve property FunctionName: OrderedDict([('Fn::GetAtt', ['fundPerformanceGraph', 'Arn'])]). Leaving as is.
2021-09-27 14:43:20,017 | Unable to resolve property FunctionName: OrderedDict([('Fn::GetAtt', ['fundInfoTooltip', 'Arn'])]). Leaving as is.
2021-09-27 14:43:20,017 | Unable to resolve property Value: OrderedDict([('Fn::GetAtt', ['buyListFundPerformance', 'Arn'])]). Leaving as is.
2021-09-27 14:43:20,017 | Unable to resolve property Value: OrderedDict([('Fn::GetAtt', ['fundPerformanceGraph', 'Arn'])]). Leaving as is.
2021-09-27 14:43:20,017 | Unable to resolve property Value: OrderedDict([('Fn::GetAtt', ['fundInfoTooltip', 'Arn'])]). Leaving as is.
2021-09-27 14:43:20,017 | Found '0' API Events in Serverless function with name 'buyListFundPerformance'
2021-09-27 14:43:20,017 | Found '0' API Events in Serverless function with name 'fundPerformanceGraph'
2021-09-27 14:43:20,017 | Found '0' API Events in Serverless function with name 'fundInfoTooltip'
2021-09-27 14:43:20,017 | Collected default values for parameters: {'DEBUG': 'false', 'STAGE': 'dev', 'ClarityWebPrefix': 'https://dev.'}
2021-09-27 14:43:20,040 | Unable to resolve property queueName: OrderedDict([('Fn::GetAtt', ['OrigoAWSSQSQueue', 'QueueName'])]). Leaving as is.
2021-09-27 14:43:20,040 | Unable to resolve property Resource: {'Fn::Sub': ['arn:${AWS::Partition}:sqs:${AWS::Region}:${AWS::AccountId}:${queueName}', {'queueName': OrderedDict([('Fn::GetAtt', ['OrigoAWSSQSQueue', 'QueueName'])])}]}. Leaving as is.
2021-09-27 14:43:20,040 | Unable to resolve property FunctionName: OrderedDict([('Fn::GetAtt', ['receiveAlert', 'Arn'])]). Leaving as is.
2021-09-27 14:43:20,040 | Unable to resolve property queueName: OrderedDict([('Fn::GetAtt', ['OrigoAWSSQSQueue', 'QueueName'])]). Leaving as is.
2021-09-27 14:43:20,040 | Unable to resolve property Resource: {'Fn::Sub': ['arn:${AWS::Partition}:sqs:${AWS::Region}:${AWS::AccountId}:${queueName}', {'queueName': OrderedDict([('Fn::GetAtt', ['OrigoAWSSQSQueue', 'QueueName'])])}]}. Leaving as is.
2021-09-27 14:43:20,041 | Unable to resolve property FunctionName: OrderedDict([('Fn::GetAtt', ['origoSwitch', 'Arn'])]). Leaving as is.
2021-09-27 14:43:20,041 | Unable to resolve property Value: OrderedDict([('Fn::GetAtt', ['origoSwitch', 'Arn'])]). Leaving as is.
2021-09-27 14:43:20,041 | Unable to resolve property Value: OrderedDict([('Fn::GetAtt', ['receiveAlert', 'Arn'])]). Leaving as is.
2021-09-27 14:43:20,041 | Found '0' API Events in Serverless function with name 'receiveAlert'
2021-09-27 14:43:20,041 | Found '0' API Events in Serverless function with name 'processDocument'
2021-09-27 14:43:20,041 | Found '0' API Events in Serverless function with name 'origoSwitch'
2021-09-27 14:43:20,041 | Removed duplicates from '0' Explicit APIs and '0' Implicit APIs to produce '0' APIs
2021-09-27 14:43:20,041 | 0 APIs found in the template
2021-09-27 14:43:20,046 | Sending Telemetry: {'metrics': [{'commandRun': {'requestId': '5692639e-efb6-4d2e-a7a0-e47bdfee37db', 'installationId': '0abac36d-28de-45ba-a90c-d56e9a011c21', 'sessionId': '7c1c8e19-c987-41b2-80e0-af79ff1c9acf', 'executionEnvironment': 'CLI', 'ci': False, 'pyversion': '3.8.12', 'samcliVersion': '1.31.0', 'awsProfileProvided': False, 'debugFlagProvided': True, 'region': '', 'commandName': 'sam local start-api', 'duration': 544, 'exitReason': 'NoApisDefined', 'exitCode': 1}}]}
2021-09-27 14:43:20,735 | HTTPSConnectionPool(host='aws-serverless-tools-telemetry.us-west-2.amazonaws.com', port=443): Read timed out. (read timeout=0.1)
Error: Template does not have any APIs connected to Lambda functions

Expected result:

When I run sam build followed by sam local start-api --host 0.0.0.0 I expect the API’s that I have defined in my api.yaml file to be available locally.

Additional environment details (Ex: Windows, Mac, Amazon Linux etc)

  1. OS: macOS Big Sur 11.6
  2. sam --version: 1.31.0
  3. AWS region: eu-west-1.

Add --debug flag to command you are running

About this issue

  • Original URL
  • State: open
  • Created 3 years ago
  • Reactions: 8
  • Comments: 17 (3 by maintainers)

Most upvoted comments

Hi @marcusr21, Thanks for the feedback! SAM CLI local commands currently do not support nested stacks. We will look into adding this support.

Coming from #5164

Thanks for your response @hawflau a terminal session for each template is somewhat undesirable. At the very least it changes the ports such that our automated local testing has a mess of ports.

This isn’t just a case of wanting multiple APIs. We would probably be satisfied with a single API however we have reached the limits of the size of single cloudformation document when it comes to “Template body size in a request

We can’t have multiple nested stacks use the same API We can’t have a completely different stack use the same API

It leaves us wondering how anyone is able to use SAM with a large API, supporting local development.

It is also strange to have the SAM documentation suggest moving to nested stacks for size issues despite limited support.

This issue is over 1.5 years old now, do you think we could get it prioritized?

CDK team, thank you for your work.

Any updates? I have a similar workflow as mentioned previously by @BenPela . I leverage nested stacks to circumvent the 1MB limit.