Amazon API Gateway Mock Integration built with CloudFormation: Difference between revisions
Jump to navigation
Jump to search
Line 102: | Line 102: | ||
* Save the content of [[#CloudFormation_Stack|CloudFormation stack]] in a file named elysium-stack.yaml. | * Save the content of [[#CloudFormation_Stack|CloudFormation stack]] in a file named elysium-stack.yaml. | ||
* Save the [[#OpenAPI_AWS_Specification|OpenAPI specification]] into a file named elysium-openapi-aws.yaml | * Save the [[#OpenAPI_AWS_Specification|OpenAPI specification]] into a file named elysium-openapi-aws.yaml | ||
* Create an S3 bucket or use one that already exists: | |||
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: | * Deploy the stack: | ||
aws cloudformation deploy --stack-name elysium | aws cloudformation deploy --stack-name elysium |
Revision as of 20:44, 27 March 2019
Internal
CloudFormation Stack
AWSTemplateFormatVersion: '2010-09-09'
Description: |
An API Gateway Stack.
Parameters:
ProjectID:
Type: String
Default: elysium
Bucket:
Type: String
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 ProjectID
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
- Save the content of CloudFormation stack in a file named elysium-stack.yaml.
- Save the OpenAPI specification into a file named elysium-openapi-aws.yaml
- Create an S3 bucket or use one that already exists:
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