Package: porter-cli
Porter is a chalice framework adapted to porter requirements for writing serverless apps in python. It allows
you to quickly create and deploy applications that use AWS Lambda and Dockers.  It provides:A command line tool for creating, deploying, and managing your appA decorator based API for integrating with Amazon API Gateway, Amazon S3,
Amazon SNS, Amazon SQS, and other AWS services.Automatic IAM policy generationYou can create Rest APIs:fromporterimportPorterapp=Porter(app_name="helloworld")@app.route("/")defindex():return{"hello":"world"}Tasks that run on a periodic basis:fromporterimportPorter,Rateapp=Porter(app_name="helloworld")# Automatically runs every 5 minutes@app.schedule(Rate(5,unit=Rate.MINUTES))defperiodic_task(event):return{"hello":"world"}You can connect a lambda function to an S3 event:fromporterimportPorterapp=Porter(app_name="helloworld")# Whenever an object is uploaded to 'mybucket'# this lambda function will be invoked.@app.on_s3_event(bucket='mybucket')defhandler(event):print("Object uploaded for bucket:%s, key:%s"%(event.bucket,event.key))As well as an SQS queue:fromporterimportPorterapp=Porter(app_name="helloworld")# Invoke this lambda function whenever a message# is sent to the ``my-queue-name`` SQS queue.@app.on_sqs_message(queue='my-queue-name')defhandler(event):forrecordinevent:print("Message body:%s"%record.body)And several other AWS resources.Once you’ve written your code, you just runporter deployand Porter takes care of deploying your app.$ porter deploy
...
https://endpoint/dev

$ curl https://endpoint/api
{"hello": "world"}Up and running in less than 30 seconds.
Give this project a try and share your feedback with us here on Github.The documentation is availablehere.QuickstartIn this tutorial, you’ll use theportercommand line utility
to create and deploy a basic REST API.  This quickstart uses Python 3.8,
Porter doesn’t supports all versions of python supported by AWS Lambda,
only supports python3.8.
You can find the latest versions of python on thePython download page.To install Porter, we’ll first create and activate a virtual environment
in python3.8:$ python3 --version
Python 3.8.0
$ python3 -m venv venv38
$ . venv38/bin/activateNext we’ll install Porter usingpip:$ python3 -m pip install porter-cliYou can verify you have porter installed by running:$ porter --help
Usage: porter [OPTIONS] COMMAND [ARGS]...
...CredentialsBefore you can deploy an application, be sure you have
credentials configured.  If you have previously configured your
machine to run boto3 (the AWS SDK for Python) or the AWS CLI then
you can skip this section.If this is your first time configuring credentials for AWS you
can follow these steps to quickly get started:$ mkdir ~/.aws
$ cat >> ~/.aws/config
[default]
aws_access_key_id=YOUR_ACCESS_KEY_HERE
aws_secret_access_key=YOUR_SECRET_ACCESS_KEY
region=YOUR_REGION (such as us-west-2, us-west-1, etc)If you want more information on all the supported methods for
configuring credentials, see theboto3 docs.Creating Your ProjectThe next thing we’ll do is use theportercommand to create a new
project:$ porter new-project helloworldThis will create ahelloworlddirectory.  Cd into this
directory.  You’ll see several files have been created for you:$ cd helloworld
$ ls -la
drwxr-xr-x   .porter
-rw-r--r--   app.py
-rw-r--r--   requirements.txtYou can ignore the.chalicedirectory for now, the two main files
we’ll focus on isapp.pyandrequirements.txt.Let’s take a look at theapp.pyfile:fromporterimportPorterapp=Porter(app_name='helloworld')@app.route('/')defindex():return{'hello':'world'}Thenew-projectcommand created a sample app that defines a
single view,/, that when called will return the JSON body{"hello": "world"}.DeployingLet’s deploy this app.  Make sure you’re in thehelloworlddirectory and runporter deploy:$ porter deploy
Creating deployment package.
Creating IAM role: helloworld-dev
Creating lambda function: helloworld-dev
Creating Rest API
Resources deployed:
  - Lambda ARN: arn:aws:lambda:us-west-2:12345:function:helloworld-dev
  - Rest API URL: https://abcd.execute-api.us-west-2.amazonaws.com/api/You now have an API up and running using API Gateway and Lambda:$ curl https://qxea58oupc.execute-api.us-west-2.amazonaws.com/api/
{"hello": "world"}Try making a change to the returned dictionary from theindex()function.  You can then redeploy your changes by runningporter deploy.Next StepsYou’ve now created your first app usingporter.  You can make
modifications to yourapp.pyfile and rerunporter deployto
redeploy your changes.At this point, there are several next steps you can take.Tutorials- Choose from among several guided tutorials that will
give you step-by-step examples of various features of Porter.Topics- Deep
dive into documentation on specific areas of Porter.
This contains more detailed documentation than the tutorials.API Reference- Low level
reference documentation on all the classes and methods that are part of the
public API of Porter.If you’re done experimenting with Porter and you’d like to cleanup, you can
use theporter deletecommand, and Porter will delete all the resources
it created when running theporter deploycommand.$ porter delete
Deleting Rest API: abcd4kwyl4
Deleting function aws:arn:lambda:region:123456789:helloworld-dev
Deleting IAM Role helloworld-dev