Skip to main content
Prisma Documentation Docs

Search documentation

Type to search this documentation.

On this pageOverview

Terraform (/docs/postgres/iac/terraform)

For the complete Prisma documentation index, see llms.txt. A markdown version of any docs page is available by appending .md to its URL.

Provision and manage Prisma Postgres projects, databases, and connections using Terraform.

Location: Postgres > Infrastructure as Code > Terraform

Use the Prisma Postgres Terraform provider to manage projects, databases, and connections with code.

Terraform is a desired-state engine:

  • You declare the target infrastructure in .tf files.
  • Terraform computes a plan (terraform plan) by comparing config vs current state.
  • Terraform applies only the required changes (terraform apply) and records the result in state.

For Prisma Postgres, this gives a predictable workflow for creating projects, databases, and connections across environments.

Terraform is a strong fit when:

  • You already manage infrastructure in Terraform and want one workflow.
  • You prefer explicit plan output before applying changes.
  • Your team standardizes on HCL modules and Terraform state backends.

The provider currently supports:

  • prisma-postgres_project
  • prisma-postgres_database
  • prisma-postgres_connection
  • prisma-postgres_regions data source

Set your token as an environment variable:

Bash
export PRISMA_SERVICE_TOKEN="prsc_your_token_here"

Create the following Terraform configuration:

hcl
terraform {
  required_providers {
    prisma-postgres = {
      source = "prisma/prisma-postgres"
    }
  }
}

provider "prisma-postgres" {}

resource "prisma-postgres_project" "main" {
  name = "my-app"
}

resource "prisma-postgres_database" "production" {
  project_id = prisma-postgres_project.main.id
  name       = "production"
  region     = "us-east-1"
}

resource "prisma-postgres_connection" "api" {
  database_id = prisma-postgres_database.production.id
  name        = "api-key"
}

output "connection_string" {
  value     = prisma-postgres_connection.api.connection_string
  sensitive = true
}

output "direct_url" {
  value     = prisma-postgres_database.production.direct_url
  sensitive = true
}

Initialize your working directory:

Bash
terraform init

Review and apply:

Bash
terraform plan
terraform apply

After apply, retrieve values:

Bash
terraform output -raw connection_string
terraform output -raw direct_url
Bash
terraform destroy

If you want to select regions dynamically:

hcl
data "prisma-postgres_regions" "available" {}

output "available_regions" {
  value = [
    for r in data.prisma-postgres_regions.available.regions : "${r.id} (${r.name})"
    if r.status == "available"
  ]
}
  • Store Terraform state in a secure remote backend (for example, S3 + DynamoDB, Terraform Cloud, etc.).
  • Treat state as sensitive: even with sensitive = true, secret values are still stored in state.
  • Keep PRISMA_SERVICE_TOKEN in your secret manager or CI secrets, not in code.
  • Use separate Terraform workspaces or stacks for dev, staging, and prod.
  • Rotate credentials intentionally when required by replacing connection resources.

You can import existing resources into state:

Bash
terraform import prisma-postgres_project.main <project-id>
terraform import prisma-postgres_database.production <database-id>
terraform import prisma-postgres_connection.api <database-id>,<connection-id>

Credentials are only returned at creation time and cannot be recovered after import.

If provider configuration fails with a missing token error, confirm PRISMA_SERVICE_TOKEN is set in the same shell session running Terraform.

If create fails for a region value, use prisma-postgres_regions to list currently available regions for your workspace.

If you receive authorization errors, verify your service token belongs to the expected workspace and has permission to create projects and databases.

  • Alchemy: Provision and manage Prisma Postgres projects, databases, and connections with Alchemy.
  • Pulumi: Provision and manage Prisma Postgres with Pulumi using the Prisma Terraform provider bridge.
Suggest an edit

Propose a replacement for this page. The site team reviews it before applying any changes.

Export
Documentation menu