Provision Cloud Storage resources with Terraform

HashiCorp Terraform is an infrastructure-as-code (IaC) tool that lets you provision and manage cloud infrastructure. Terraform provides plugins calledproviders that let you interact with cloud providers and other APIs. You can use theTerraform provider for Google Cloud to provision and manage Google Cloud resources, including Cloud Storage.

This page introduces you to using Terraform with Cloud Storage, including an introduction to how Terraform works and some resources to help you get started using Terraform with Google Cloud. You'll also find links to Terraform reference docs for Cloud Storage, code examples, and guides for using Terraform to provision Cloud Storage resources.

For instructions on how to get started with Terraform for Google Cloud, seeInstall and configure Terraform or theTerraform for Google Cloud quickstart.

How Terraform works

Terraform has a declarative and configuration-oriented syntax, which you can use to describe the infrastructure that you want to provision in your Google Cloud project. After you author this configuration in one or more Terraform configuration files, you can use the Terraform CLI to apply this configuration to your Cloud Storage resources.

The following steps explain how Terraform works:

  1. You describe the infrastructure you want to provision in aTerraform configuration file. You don't need to write code describing how to provision the infrastructure. Terraform provisions the infrastructure for you.
  2. You run theterraform plan command, which evaluates your configuration and generates an execution plan. You can review the plan and make changes as needed.
  3. You run theterraform apply command, which performs the following actions:

    1. It provisions your infrastructure based on your execution plan by invoking the corresponding Cloud Storage APIs in the background.
    2. It creates aTerraform state file, which is a JSON file that maps the resources in your configuration file to the resources in the real-world infrastructure. Terraform uses this file to keep a record of the most recent state of your infrastructure, and to determine when to create, update, and destroy resources.
    3. When you runterraform apply, Terraform uses the mapping in the state file to compare the existing infrastructure to the code, and make updates as necessary:

      • If a resource object is defined in the configuration file, but doesn't exist in the state file, Terraform creates it.
      • If a resource object exists in the state file, but has a different configuration from your configuration file, Terraform updates the resource to match your configuration file.
      • If a resource object in the state file matches your configuration file, Terraform leaves the resource unchanged.

Terraform resources for Cloud Storage

Resources are the fundamental elements in the Terraform language. Eachresource block describes one or more infrastructure objects, such as virtualnetworks or compute instances.

The following table lists the Terraform resources available forCloud Storage:

ServiceTerraform resourcesData sources

Cloud Storage

Terraform service:Cloud Storage

Storage Intelligence

Terraform service:Cloud Storage Control

Storage batch operations feature of Storage Intelligence

Terraform service:Cloud Storage Batch Operations

-

Storage Insights feature of Storage Intelligence

Terraform service:Cloud Storage Insights

Terraform-based guides for Cloud Storage

The following table lists Terraform-based how-to guides and tutorials for Cloud Storage:

GuideDetails
Quickstart: use Terraform to create a bucket and upload an objectThis quickstart shows how to get started with Terraform by creating a Terraform configuration file that provisions a storage bucket and uploads a sample object to the bucket.
Create a bucketThis guide explains how to create a bucket.
Get bucket metadataThis guide explains how to view the metadata of a bucket.
Upload objectsThis guide explains how to upload objects to a bucket from your local file system.
Get object metadataThis guide explains how to view the metadata of an object.
Manage object lifecyclesThis guide explains how to set the lifecycle configuration for a bucket.
Configure Pub/Sub notificationsThis guide explains how to configure your bucket to send notifications about object changes to a Pub/Sub topic.
Create HMAC keysThis guide explains how to create hash-based message authentication code (HMAC) keys for service accounts in your project.
Make data publicThis guide explains how to make all objects in a bucket readable to everyone on the public internet.
Host a static websiteThis guide explains how to configure a bucket to host a static website for a domain that you own.

Terraform modules and blueprints for Cloud Storage

Modules and blueprints help you automate provisioning and managing of Google Cloud resources at scale. Amodule is a reusable set of Terraform configuration files that creates a logical abstraction of Terraform resources. Ablueprint is a package of deployable and reusable modules, and a policy that implements and documents a specific solution.

The following table lists modules and blueprints related to Cloud Storage:

Module or blueprintDetails
terraform-google-cloud-storageThis module creates one or more Cloud Storage buckets and assigns basic permissions on them to arbitrary users.

What's next

Except as otherwise noted, the content of this page is licensed under theCreative Commons Attribution 4.0 License, and code samples are licensed under theApache 2.0 License. For details, see theGoogle Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2026-02-19 UTC.