What you’ll learn
- how to deploy your project into multiple environments
- how to deploy a single project application into multiple environments
Webiny makes it easy to deploy your project, using the Webiny CLI and Pulumi as the default infrastructure as code and deployment solution. You can also easily deploy your project into multiple environments, which is covered in this guide as well.
In order to deploy your Webiny project, you need to have AWS Credentials properly configured on your system. Furthermore, you can also deploy your project using a specific AWS profile.
To learn more about configuring your AWS credentials, please check out the Configure AWS Credentials guide. If you're looking for information on how to use different AWS profiles, feel free to skip to the Use AWS Profiles guide.
Note that, in order to more easily filter out the cloud infrastructure resources deployed by your Webiny project, most of the resources are tagged with the following tags:
WbyProjectName- the name of your project (declared in your
WbyEnvironment- the environment of which the resource is part of
deploy command can be used to completely deploy your project, or just a specific project application.
To completely deploy your project, simply run the following command in your terminal of choice:
This command deploys all of the three applications that are, by default, included in every Webiny project. It deploys them in the following order:
- API (
./api) - your project's GraphQL API
- Admin Area (
./apps/admin) - your administration area
- Website (
./apps/website) - your public website
Note that the first deployment can take up to 20 minutes! So even though it might look like nothing is happening in the terminal, please be patient and let the process finish. If something went wrong, an error will be shown, and the process will exit with an appropriate error code.
In general, when deploying projects or project applications, an environment must be specified. The above shown
deploy command deploys your project into the
dev environment by default, but you can also specify a different environment with the
--env argument. For example, to deploy your project into the
prod environment, you can run the following command:
To deploy a specific project application, located withing your Webiny project, simple append the path to the folder in which the project application resides, for example:
Note that when deploying a specific project application, the environment (
--env) argument is not optional, it must always be set.
It's worth mentioning that the deployment commands shown above also build your application code. They perform this task by just running the following
workspaces run command:
The command first finds all packages that are located in the project application folder. Then, for every found package, it runs the
build command that's specified in the
webiny.config.js - a configuration file that every package possesses. If the
build command is defined, it gets executed, otherwise, the process just continues with the next package.
We're aware of this fact, and this is mainly because of the Amazon ElasticSearch Service. While other cloud infrastructure resources get deployed reasonably fast, this service can take anywhere from 15 to 30 minutes to become ready.
Unfortunately, this is a well-known issue for quite some time, and until the present, there haven't been any positive improvements.
The AWS Access Key Id needs a subscription for the service# In some cases, upon deploying a new Webiny project, it's possible for users to experience the following error being thrown in their terminal:
In some cases, upon deploying a new Webiny project, it's possible for users to experience the following error being thrown in their terminal:
The following are some of the reasons why you might be receiving this error:
- you didn't verify your phone number
- you didn't verify your payment method
- you didn't select a support subscription (free or other)
- if you created a brand new AWS account, it wasn't yet processed on the AWS side
The account signup and verification process can be completed via https://portal.aws.amazon.com/billing/signup?type=resubscribe#/resubscribed.
When deploying your project applications, you might have received an error similar to the following:
error: the current deployment has 1 resource(s) with pending operations:
* urn:pulumi:dev::website::aws:s3/bucket:Bucket$aws:s3/bucketObject:BucketObject::go.js, interrupted while creating
These resources are in an unknown state because the Pulumi CLI was interrupted while waiting for changes to these resources to complete. You should confirm whether or not the operations listed completed successfully by checking the state of the appropriate provider. For example, if you are using AWS, you can confirm using the AWS Console.
Once you have confirmed the status of the interrupted operations, you can repair your stack using 'pulumi stack export' to export your stack to a file. For each operation that succeeded, remove that operation from the "pending_operations" section of the file. Once this is complete, use 'pulumi stack import' to import the repaired stack.
In case of the former, you'll need to open your Pulumi state files, and find all of the resources whose deployment status is in
pending_operations state. If we're talking about local development environment, those files are located in your
.pulumi files and can be manually edited. Otherwise, you'll need to use the mentioned
pulumi stack export and
pulumi stack import commands.
If you didn't install the Pulumi CLI manually by yourself, which is usually the case for most Webiny users, you can execute the above commands via the
pulumi command, for example:
Learn more about cloud infrastructure state files in the Cloud Infrastructure State Files development workflows guide.
In case of the latter, in which an active deployment currently exists, then you'll just need to wait for the first one to finish, and redeploy your project application. Although not that often, this is more possible to happen in your CI/CD workflows.