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

cmccoypdx picture cmccoypdx  ยท  3Comments

asyba picture asyba  ยท  3Comments

goldenbearkin picture goldenbearkin  ยท  3Comments

terlar picture terlar  ยท  3Comments

PhungXuanAnh picture PhungXuanAnh  ยท  3Comments