Aws-sam-cli: Api inline swagger with $ref to external file

Created on 26 Mar 2020  ยท  3Comments  ยท  Source: aws/aws-sam-cli

I want to use an additional external swagger file in my swagger.yaml file.

ServerlessApi:
  Type: AWS::Serverless::Api
  Properties:
    DefinitionBody:
      Fn::Transform:
        Name: AWS::Include
        Parameters:
          Location: ../../api/swagger.yaml
paths:
  /company:
    $ref: ./routes/company/swagger.yaml

How can I do this using SAM?
SAM doesn't upload the additional file.

areapi-integration typfeature

All 3 comments

@chestongo SAM currently uploads original swagger files and doesn't import additional swagger files.
Transferring to aws-sam-cli

Can you please share your folder structure? As in where are you keeping the additional swagger file?

โ”œโ”€โ”€ api
โ”‚   โ”œโ”€โ”€ swagger.yaml
โ”œโ”€โ”€ events
โ”‚   โ””โ”€โ”€ event.json
โ”œโ”€โ”€ handlers
โ”‚   โ”œโ”€โ”€ company
โ”‚   โ”‚   โ”œโ”€โ”€ get
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ index.js
โ”‚   โ”‚   โ””โ”€โ”€ post
โ”‚   โ”‚       โ””โ”€โ”€ index.js
โ”‚   โ””โ”€โ”€ dynamodb
โ”‚       โ””โ”€โ”€ custom
โ”‚           โ””โ”€โ”€ index.js
โ”œโ”€โ”€ libraries
โ”‚   โ”œโ”€โ”€ nodejs
โ”‚   โ”‚   โ”œโ”€โ”€ node_modules
โ”œโ”€โ”€ samconfig.toml
โ”œโ”€โ”€ template.yaml
โ””โ”€โ”€ templates
    โ”œโ”€โ”€ apigateway
    โ”‚   โ””โ”€โ”€ template.yaml
    โ”œโ”€โ”€ dynamodb
    โ”‚   โ””โ”€โ”€ template.yaml
    โ”œโ”€โ”€ iam
    โ”‚   โ”œโ”€โ”€ policy
    โ”‚   โ”‚   โ””โ”€โ”€ template.yaml
    โ”‚   โ””โ”€โ”€ role
    โ”‚       โ””โ”€โ”€ template.yaml
    โ”œโ”€โ”€ lambda
    โ”‚   โ”œโ”€โ”€ function
    โ”‚   โ”‚   โ””โ”€โ”€ template.yaml
    โ”‚   โ”œโ”€โ”€ layer
    โ”‚   โ”‚   โ””โ”€โ”€ template.yaml
    โ”‚   โ””โ”€โ”€ permission
    โ”‚       โ””โ”€โ”€ template.yaml
    โ”œโ”€โ”€ s3
    โ”‚   โ””โ”€โ”€ template.yaml
    โ””โ”€โ”€ swagger
        โ””โ”€โ”€ template.yaml

But what i want is:

โ”œโ”€โ”€ api
โ”‚   โ”œโ”€โ”€ models
โ”‚   โ”‚   โ”œโ”€โ”€ car
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ swagger.yaml
โ”‚   โ”‚   โ”œโ”€โ”€ company
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ swagger.yaml
โ”‚   โ”‚   โ”œโ”€โ”€ empty
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ swagger.yaml

--- etc ---

โ”‚   โ”œโ”€โ”€ routes
โ”‚   โ”‚   โ”œโ”€โ”€ car
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ swagger.yaml
โ”‚   โ”‚   โ”œโ”€โ”€ company
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ swagger.yaml

--- etc ---

โ”‚   โ”œโ”€โ”€ swagger.yaml
โ”‚   โ””โ”€โ”€ templates
โ”‚       โ””โ”€โ”€ swagger.yaml

However, from @ShreyaGangishetty reply, it is currently not possible. If you have many api endpoints, with configurations, you have to store all the definitions in one huge swagger file.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

debuggins picture debuggins  ยท  4Comments

drumadrian picture drumadrian  ยท  3Comments

zhangzhx picture zhangzhx  ยท  3Comments

red8888 picture red8888  ยท  3Comments

Caian picture Caian  ยท  3Comments