Chalice Stages ============== Chalice has the concept of stages, which are completely separate sets of AWS resources. When you first create a chalice project and run commands such as ``chalice deploy`` and ``chalice url``, you don't have to specify any stage values or stage configuration. This is because chalice will use a stage named ``dev`` by default. You may eventually want to have multiple stages of your application. A common configuration would be to have a ``dev``, ``beta`` and ``prod`` stage. A ``dev`` stage would be used by developers to test out new features. Completed features would be deployed to ``beta``, and the ``prod`` stage would be used for serving production traffic. Chalice can help you manage this. To create a new chalice stage, specify the ``--stage`` argument. If the stage does not exist yet, it will be created for you:: $ chalice deploy --stage prod By creating a new chalice stage, a new API Gateway rest API, Lambda function, and potentially (depending on config settings) a new IAM role will be created for you. Example ------- Let's say we have a new app:: $ chalice new-project myapp $ cd myapp $ chalice deploy ... https://mmnkdi.execute-api.us-west-2.amazonaws.com/api/ We've just created our first stage, ``dev``. We can iterate on our application and continue to run ``chalice deploy`` to deploy our code to the ``dev`` stage. Let's say we want to now create a ``prod`` stage. To do this, we can run:: $ chalice deploy --stage prod ... https://wk9fhx.execute-api.us-west-2.amazonaws.com/api/ We now have two completely separate rest APIs:: $ chalice url --stage dev https://mmnkdi.execute-api.us-west-2.amazonaws.com/api/ $ chalice url --stage prod https://wk9fhx.execute-api.us-west-2.amazonaws.com/api/ Additionally, we can see all our deployed values by looking at the ``.chalice/deployed/dev.json`` or ``.chalice/deployed/prod.json`` files:: $ cat .chalice/deployed/dev.json { "resources": [ { "name": "api_handler", "resource_type": "lambda_function", "lambda_arn": "arn:aws:lambda:...:function:myapp-dev" }, { "name": "rest_api", "resource_type": "rest_api", "rest_api_id": "wk9fhx", "rest_api_url": "https://wk9fhx.execute-api.us-west-2.amazonaws.com/api/" } ], "schema_version": "2.0", "backend": "api" } $ cat .chalice/deployed/prod.json { "resources": [ { "name": "api_handler", "resource_type": "lambda_function", "lambda_arn": "arn:aws:lambda:...:function:myapp-prod" }, { "name": "rest_api", "resource_type": "rest_api", "rest_api_id": "mmnkdi", "rest_api_url": "https://mmnkdi.execute-api.us-west-2.amazonaws.com/api/" } ], "schema_version": "2.0", "backend": "api" }