title: AWS Cloudformation nested stack parameter type for parameter name does not exist
body: <p>I'm trying to deploy a parent and nested stacks to AWS with cloudformation.  The parent stack looks like this </p>
  
  <pre><code>AWSTemplateFormatVersion: '2010-09-09'
  
  Parameters:
    VPC:
      Description: Choose which VPC the Lambda-functions should be deployed to
      Type: AWS::EC2::VPC::Id
      Default: vpc-sdjkfnsdjklfn
  
    Subnets:
      Description: Choose which subnets Lambda-functions should be deployed to
      Type: CommaDelimitedList
      Default: "subnet-sdoifno, subnet-sdofjnsdo"
  
    SecurityGroup:
      Description: Select the Security Group to use for the Lambda-functions
      Type: AWS::EC2::SecurityGroup::Id
      Default: sg-sdklfnsdkl
  
    Role:
      Description: Role for Lambda functions
      Type: String
      Default: arn:aws:iam::dlfksd:role/ssdfnsdo
  
  Resources:
    RestApi:
        Type: AWS::ApiGateway::RestApi
        Properties:
          Name: "my-api"
          Description: "SPP Lambda API"
  
    Stack1:
      Type: AWS::CloudFormation::Stack
      Properties:
        TemplateURL: 'https://s3.amazonaws.com/bucket/template1.yml'
        Parameters:
          VPC: !Ref VPC
          Subnets: !Join
                     - ','
                     - !Ref Subnets
          SecurityGroup: !Ref SecurityGroup
          Role: !Ref Role
          RestApi: !Ref RestApi
          ApiResourceParent: !GetAtt "RestApi.RootResourceId"
  </code></pre>
  
  <p>The child stack looks like this </p>
  
  <pre><code>AWSTemplateFormatVersion: '2010-09-09'
  
  Parameters:
    VPC:
      Type: AWS::EC2::VPC::Id
  
    Subnets:
      Type: CommaDelimitedList
  
    SecurityGroup:
      Type: AWS::EC2::SecurityGroup::Id
  
    Role:
      Type: String
  
    RestApi:
      Type: AWS::ApiGateway::RestApi
  
    ApiResourceParent:
       Type: AWS::ApiGateway::Resource
  
  Resources:
  
      Fucntion:
          Type: AWS::Lambda::Function
          Properties:
            Code:
              S3Bucket: bucket
              S3Key: node_lambdas.zip
            Handler: Function.handler
            Role: !Ref Role
            Runtime: nodejs6.10
            Timeout: 300
            VpcConfig:
              SecurityGroupIds:
                - !Ref SecurityGroup
              SubnetIds: !Ref Subnets
            #Policies: AWSLambdaDynamoDBExecutionRole
  
      Permission:
          Type: AWS::Lambda::Permission
          Properties:
            Action: lambda:InvokeFunction
            FunctionName: !GetAtt "Function.Arn"
            Principal: "apigateway.amazonaws.com"
            SourceArn: !Sub "arn:aws:execute-api:${AWS::Region}:${AWS::AccountId}:${RestApi}/*/*/*"
      Resource:
           Type: AWS::ApiGateway::Resource
           Properties:
             RestApiId: !Ref RestApi
             ParentId: !Ref ApiResourceParent
             PathPart: addadjustments
  </code></pre>
  
  <p>When I run <code>aws cloudformation deploy --template-file parent-stack.yml --stack-name spp-lambda --region us-east-1 --capabilities CAPABILITY_IAM</code> I get the following error </p>
  
  <blockquote>
    <p>Embedded stack
    arn:aws:cloudformation:us-east-1:771653148224:stack/spp-lambda-Stack1-97M9BLBUM3A5/4a454a50-c274-11e8-b49c-500c28903236
    was not successfully created: Parameter validation failed: parameter
    type AWS::ApiGateway::RestApi for parameter name RestApi does not
    exist, parameter type AWS::ApiGateway::Resource for parameter name
    ApiResourceParent does not exist</p>
  </blockquote>
  
  <p>It doesn't complain about the parameters that are explicitly defined in the parent template.  I want the parameters it is complaining about to be created and passed dynamically as I won't know the values before hand.  What am I doing wrong?</p>