docs/install/options/aws.mdx
Pulumi is an IaC solution akin to Terraform or CloudFormation that lets you deploy & manage your infrastructure using popular programming languages e.g. Typescipt (which we'll use), C#, Go etc.
If you're already familiar with Pulumi Cloud and have integrated their services with your AWS account, you can use the button below to deploy Activepieces in a few clicks. The template will deploy the latest Activepieces image that's available on Docker Hub.
Or, if you're currently using an S3 bucket to maintain your Pulumi state, you can scaffold and deploy Activepieces direct from Docker Hub using the template below in just few commands:
$ mkdir deploy-activepieces && cd deploy-activepieces
$ pulumi new https://github.com/activepieces/activepieces/tree/main/deploy/pulumi
$ pulumi up
The template is setup to be somewhat flexible, supporting what could be a development or more production-ready configuration. The configuration options that are presented during stack configuration will allow you to optionally add any or all of:
For a full list of all the currently available configuration options, take a look at the Activepieces Pulumi template file on GitHub.
If you're new to Pulumi then read on to get your local dev environment setup to be able to deploy Activepieces.
aws s3api create-bucket --bucket pulumi-state --region us-east-1
pulumi login s3://pulumi-state?region=us-east-1
$ mkdir deploy-activepieces && cd deploy-activepieces
$ pulumi new https://github.com/activepieces/activepieces/tree/main/deploy/pulumi
This step will prompt you to create you stack and to populate a series of config options, such as whether or not to provision a PostgreSQL RDS instance or use SQLite3.
<Tip> Note: When choosing a stack name, use something descriptive like `activepieces-dev`, `ap-prod` etc. This solution uses the stack name as a prefix for every AWS service created e.g. your VPC will be named `<stack name>-vpc`. </Tip>pulumi up
yes when prompted. Once the deployment has finished, you should see a bunch of Pulumi output variables that look like the following: _: {
activePiecesUrl: "http://<alb name & id>.us-east-1.elb.amazonaws.com"
activepiecesEnv: [
. . . .
]
}
The config value of interest here is the activePiecesUrl as that is the URL for our Activepieces deployment.
If you chose to add a fully qualified domain during your stack configuration, that will be displayed here.
Otherwise you'll see the URL to the application load balancer. And that's it.
Congratulations! You have successfully deployed Activepieces to AWS.
To deploy a locally built image instead of using the official Docker Hub image, read on.
git clone https://github.com/activepieces/activepieces
deploy/pulumi folder & install the necessary npm packages:cd deploy/pulumi && npm i
Pulumi.activepieces-dev.yaml and Pulumi.activepieces-prod.yaml.
These files already contain all the configurations we need to create our environments. Feel free to have a look & edit the values as you see fit.
Lets continue by creating a development stack that uses the existing Pulumi.activepieces-dev.yaml file & kick off the deploy.pulumi stack init activepieces-dev && pulumi up
yes, a new image will be built based on the Dockerfile in the root of the solution (make sure Docker Desktop is running) and then pushed up to a new ECR, along with provisioning all the other AWS services for the stack.Congratulations! You have successfully deployed Activepieces into AWS using a locally built Docker image.
All of the current configuration options, as well as the low-level details associated with the provisioned services are fully customisable, as you would expect from any IaC.
For example, if you'd like to have three availability zones instead of two for the VPC, use an older version of Redis or add some additional security group rules for PostgreSQL, you can update all of these and more in the index.ts file inside the deploy folder.
Or maybe you'd still like to deploy the official Activepieces Docker image instead of a local build, but would like to change some of the services. Simply set the deployLocalBuild config option in the stack file to false and make whatever changes you'd like to the index.ts file.
Checking out the Pulumi docs before doing so is highly encouraged.