2018-06-29 23:49:16 -04:00
|
|
|
AWSTemplateFormatVersion: '2010-09-09'
|
|
|
|
Transform: 'AWS::Serverless-2016-10-31'
|
|
|
|
Description: Baeldung Serverless Application Model Example with Inline Swagger API Definition
|
|
|
|
Resources:
|
|
|
|
PersonTable:
|
|
|
|
Type: AWS::Serverless::SimpleTable
|
|
|
|
Properties:
|
|
|
|
PrimaryKey:
|
|
|
|
Name: id
|
|
|
|
Type: Number
|
|
|
|
TableName: Person
|
|
|
|
StorePersonFunction:
|
|
|
|
Type: AWS::Serverless::Function
|
|
|
|
Properties:
|
|
|
|
Handler: com.baeldung.lambda.apigateway.APIDemoHandler::handleRequest
|
|
|
|
Runtime: java8
|
|
|
|
Timeout: 15
|
|
|
|
MemorySize: 512
|
|
|
|
CodeUri: ../target/aws-lambda-0.1.0-SNAPSHOT.jar
|
|
|
|
Policies:
|
|
|
|
- DynamoDBCrudPolicy:
|
|
|
|
TableName: !Ref PersonTable
|
|
|
|
Environment:
|
|
|
|
Variables:
|
|
|
|
TABLE_NAME: !Ref PersonTable
|
|
|
|
Events:
|
|
|
|
StoreApi:
|
|
|
|
Type: Api
|
|
|
|
Properties:
|
|
|
|
Path: /persons
|
|
|
|
Method: PUT
|
|
|
|
RestApiId:
|
|
|
|
Ref: MyApi
|
2018-07-03 23:22:46 -04:00
|
|
|
GetPersonByHTTPParamFunction:
|
2018-06-29 23:49:16 -04:00
|
|
|
Type: AWS::Serverless::Function
|
|
|
|
Properties:
|
2018-07-03 23:22:46 -04:00
|
|
|
Handler: com.baeldung.lambda.apigateway.APIDemoHandler::handleGetByParam
|
2018-06-29 23:49:16 -04:00
|
|
|
Runtime: java8
|
|
|
|
Timeout: 15
|
|
|
|
MemorySize: 512
|
|
|
|
CodeUri: ../target/aws-lambda-0.1.0-SNAPSHOT.jar
|
|
|
|
Policies:
|
|
|
|
- DynamoDBReadPolicy:
|
|
|
|
TableName: !Ref PersonTable
|
|
|
|
Environment:
|
|
|
|
Variables:
|
|
|
|
TABLE_NAME: !Ref PersonTable
|
|
|
|
Events:
|
|
|
|
GetByPathApi:
|
|
|
|
Type: Api
|
|
|
|
Properties:
|
|
|
|
Path: /persons/{id}
|
|
|
|
Method: GET
|
|
|
|
RestApiId:
|
|
|
|
Ref: MyApi
|
|
|
|
GetByQueryApi:
|
|
|
|
Type: Api
|
|
|
|
Properties:
|
|
|
|
Path: /persons
|
|
|
|
Method: GET
|
|
|
|
RestApiId:
|
|
|
|
Ref: MyApi
|
|
|
|
MyApi:
|
|
|
|
Type: AWS::Serverless::Api
|
|
|
|
Properties:
|
|
|
|
StageName: test
|
|
|
|
EndpointConfiguration: REGIONAL
|
|
|
|
DefinitionBody:
|
|
|
|
swagger: "2.0"
|
|
|
|
info:
|
|
|
|
title: "TestAPI"
|
|
|
|
paths:
|
|
|
|
/persons:
|
|
|
|
get:
|
|
|
|
parameters:
|
|
|
|
- name: "id"
|
|
|
|
in: "query"
|
|
|
|
required: true
|
|
|
|
type: "string"
|
|
|
|
x-amazon-apigateway-request-validator: "Validate query string parameters and\
|
|
|
|
\ headers"
|
|
|
|
x-amazon-apigateway-integration:
|
|
|
|
uri:
|
2018-07-03 23:22:46 -04:00
|
|
|
Fn::Sub: arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${GetPersonByHTTPParamFunction.Arn}/invocations
|
2018-06-29 23:49:16 -04:00
|
|
|
responses: {}
|
|
|
|
httpMethod: "POST"
|
|
|
|
type: "aws_proxy"
|
|
|
|
put:
|
|
|
|
x-amazon-apigateway-integration:
|
|
|
|
uri:
|
|
|
|
Fn::Sub: arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${StorePersonFunction.Arn}/invocations
|
|
|
|
responses: {}
|
|
|
|
httpMethod: "POST"
|
|
|
|
type: "aws_proxy"
|
|
|
|
/persons/{id}:
|
|
|
|
get:
|
|
|
|
parameters:
|
|
|
|
- name: "id"
|
|
|
|
in: "path"
|
|
|
|
required: true
|
|
|
|
type: "string"
|
|
|
|
responses: {}
|
|
|
|
x-amazon-apigateway-integration:
|
|
|
|
uri:
|
2018-07-03 23:22:46 -04:00
|
|
|
Fn::Sub: arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${GetPersonByHTTPParamFunction.Arn}/invocations
|
2018-06-29 23:49:16 -04:00
|
|
|
responses: {}
|
|
|
|
httpMethod: "POST"
|
|
|
|
type: "aws_proxy"
|
|
|
|
x-amazon-apigateway-request-validators:
|
|
|
|
Validate query string parameters and headers:
|
|
|
|
validateRequestParameters: true
|
|
|
|
validateRequestBody: false
|