Pardon my mess, PAWS is dead, use serverless instead.
PAWS uses a config language that is an extension of swagger.
The AWS role below must have a trust policy set up that has a trust relationship with both Lambda and API Gateway, additionally, it should have the "lambda:InvokeFunction" permission associated with it.
Here is a very simple PAWS yaml example:
swagger: '2.0' info: version: 1.0.0 title: PAWS TODO description: A sample API that implements a simple todo app for PAWS termsOfService: 'http://helloreverb.com/terms/' contact: name: Bryan Pedlar email: firstname.lastname@example.org url: 'http://thrivehive.com' license: name: MIT url: 'http://opensource.org/licenses/MIT' host: todo.thrivehive.com schemes: - https consumes: - application/json produces: - application/json x-application-root: src paths: /todos: get: x-handler-name: main.get_todos x-role-arn: __your_lambda_api_gateway_role-arn_here__ description: Returns all todos from the system that the user has access to operationId: getTodos parameters: - name: limit in: query description: maximum number of results to return required: false type: integer format: int32 responses: '200': description: todo response schema: type: array items: $ref: '#/definitions/todo' default: description: unexpected error schema: $ref: '#/definitions/errorModel' definitions: todo: type: object required: - id - name properties: id: type: string name: type: string errorModel: type: object required: - code - message properties: code: type: integer format: int32 message: type: string
##Environment Variables PAWS expects these environment variables to be available:
export AWS_ACCESS_KEY_ID=__YOUR_ACCESS_KEY_HERE__ export AWS_SECRET_ACCESS_KEY=__YOUR_SECRET_ACCESS_KEY_HERE__
The AWS access key needs permissions to administer the account. Right now I have only tested with the administrator access role, but will be updating this as I gain a greater understanding of the AWS permissions model.
###Example create/update invocation by name.
python main.py --api_name foobar --conf swagger.yaml (--publish your_stage_name)
Note that the first time you run this, it will create the api, the second time, it will search for the API by name
###Example update invocation by id.
python main.py --api_id 782gr8gmnb --conf swagger.yaml (--publish your_stage_name)
- CodeGen of Python Models
- Python Validation Framework using Swagger definition
- Static asset hosting on S3/CloudFront
- domain management via Route53
- support for AWSM modules