Amazon API Gateway Mock Integration built with CloudFormation: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
Line 13: Line 13:


Parameters:
Parameters:
  ProjectID:
    Type: String
    Default: elysium


   Bucket:
   Bucket:
     Type: String
     Type: String
    Default: ovidiu-experiments
     Description: |
     Description: |
       The name of the S3 bucket that will contain the OpenAPI AWS metadata file during stack creation.
       The name of the S3 bucket that will contain the OpenAPI AWS metadata file during stack creation.
Line 35: Line 32:
     Type: AWS::ApiGateway::RestApi
     Type: AWS::ApiGateway::RestApi
     Properties:
     Properties:
       Name: !Ref ProjectID
       Name: !Ref AWS::StackName
       Description: |
       Description: |
         A manually deployed API, used for experiments. If you are readin this, it means that it can be
         A manually deployed API, used for experiments. If you are readin this, it means that it can be

Revision as of 20:45, 27 March 2019

Internal

CloudFormation Stack

AWSTemplateFormatVersion: '2010-09-09'

Description: |
  An API Gateway Stack.

Parameters:

  Bucket:
    Type: String
    Default: ovidiu-experiments
    Description: |
      The name of the S3 bucket that will contain the OpenAPI AWS metadata file during stack creation.
      The content of the file will provide the API metadata.

  OpenApiAwsS3Key:
    Type: String
    Description: |
      The S3 key of the file that contains the OpenAPI AWS metadata. The S3 object is expected to be
      available in the ${Bucket} bucket.

Resources:

  Api:
    Type: AWS::ApiGateway::RestApi
    Properties:
      Name: !Ref AWS::StackName
      Description: |
        A manually deployed API, used for experiments. If you are readin this, it means that it can be
        safely deleted.
      FailOnWarnings: true
      BodyS3Location:
        Bucket: !Ref Bucket
        Key: !Ref OpenApiAwsS3Key

  ApiDeployment:
    Type: AWS::ApiGateway::Deployment
    DependsOn: Api
    Properties:
      RestApiId: !Ref Api
      Description: |
        Deployment created as part of a CloudFormation stack.

  Stage:
    Type: AWS::ApiGateway::Stage
    DependsOn:
      - Api
      - ApiDeployment
    Properties:
      StageName: test
      RestApiId: !Ref Api
      DeploymentId: !Ref ApiDeployment

OpenAPI AWS Specification

---
swagger: "2.0"
info:
  title: "elysium"
schemes:
- "https"
paths:
  /a:
    get:
      consumes:
      - "application/json"
      produces:
      - "application/json"
      responses:
        200:
          description: "200 response"
          schema:
            $ref: "#/definitions/Empty"
      x-amazon-apigateway-integration:
        responses:
          default:
            statusCode: "200"
        passthroughBehavior: "when_no_match"
        requestTemplates:
          application/json: "{\"statusCode\": 200}"
        type: "mock"
definitions:
  Empty:
    type: "object"
    title: "Empty Schema"

Procedure

aws s3 mb s3://ovidiu-experiments
  • Copy the OpenAPI AWS metadata file in the S3 bucket:
aws s3 cp ./elysium-openapi-aws.yaml s3://ovidiu-experiments
  • Deploy the stack:
aws cloudformation deploy --stack-name elysium