Package: chalice-nuclei-ai
This is a fork of aws/chalice which contains custom features/fixes:Added option to configure the Ephemeral Storage available to a function.Added option to configure Maximum Concurrency for an SQS trigger.Fixed middleware for non-route blueprint functionsThere are a few caveats with blueprint middleware:Registering a middleware function on a Blueprint just registers it on the
app. There is no support for registering a middleware function on JUST the
blueprint.For the middleware to work, you must import the chalice app file AFTER
instantiating the blueprint, this must be done AFTER the instantiation to
prevent import cycles. See the below example.#### FILE app.py ####fromchaliceimportChalicefromchalicelib.a_blueprintimporta_bpdefnoop_middleware(event,get_response):print("Hello world from Middleware")returnget_response(event)app=Chalice(__name__)# The ordering of these registrations is NOT importantapp.register_blueprint(a_bp)app.register_middleware(noop_middleware,'all')#### FILE chalicelib/a_blueprint.py ####fromchaliceimportBlueprinta_bp=Blueprint(__name__)importapp# AFTER the instantiation of `a_bp`@a_bp.schedule("rate(1 hour)")defhourly(event):print("Hello World from a Blueprint")Chalice is a framework for writing serverless apps in python. It allows
you to quickly create and deploy applications that use AWS Lambda.  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:fromchaliceimportChaliceapp=Chalice(app_name="helloworld")@app.route("/")defindex():return{"hello":"world"}Tasks that run on a periodic basis:fromchaliceimportChalice,Rateapp=Chalice(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:fromchaliceimportChaliceapp=Chalice(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:fromchaliceimportChaliceapp=Chalice(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 runchalice deployand Chalice takes care of deploying your app.$ chalice 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 thechalicecommand line utility
to create and deploy a basic REST API.  This quickstart uses Python 3.7,
but AWS Chalice supports all versions of python supported by AWS Lambda,
which includes python3.6, python3.7, python3.8, python3.9, python3.10.
You can find the latest versions of python on thePython download page.To install Chalice, we’ll first create and activate a virtual environment
in python3.7:$ python3 --version
Python 3.7.3
$ python3 -m venv venv37
$ . venv37/bin/activateNext we’ll install Chalice usingpip:$ python3 -m pip install chalice-nuclei-aiYou can verify you have chalice installed by running:$ chalice --help
Usage: chalice [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 thechalicecommand to create a new
project:$ chalice 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   .chalice
-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:fromchaliceimportChaliceapp=Chalice(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 runchalice deploy:$ chalice 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 runningchalice deploy.Next StepsYou’ve now created your first app usingchalice.  You can make
modifications to yourapp.pyfile and rerunchalice 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 Chalice.Topics- Deep
dive into documentation on specific areas of Chalice.
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 Chalice.If you’re done experimenting with Chalice and you’d like to cleanup, you can
use thechalice deletecommand, and Chalice will delete all the resources
it created when running thechalice deploycommand.$ chalice delete
Deleting Rest API: abcd4kwyl4
Deleting function aws:arn:lambda:region:123456789:helloworld-dev
Deleting IAM Role helloworld-devFeedbackWe’d also love to hear from you.  Please create any Github issues for
additional features you’d like to see over athttps://github.com/aws/chalice/issues.  You can also chat with us
on gitter:https://gitter.im/awslabs/chalice