| --- |
| subcategory: "Cloud Platform" |
| description: |- |
| Allows management of a single API service for a Google Cloud Platform project. |
| --- |
| |
| # google\_project\_service |
| |
| Allows management of a single API service for a Google Cloud Platform project. |
| |
| For a list of services available, visit the [API library page](https://console.cloud.google.com/apis/library) |
| or run `gcloud services list --available`. |
| |
| This resource requires the [Service Usage API](https://console.cloud.google.com/apis/library/serviceusage.googleapis.com) |
| to use. |
| |
| To get more information about `google_project_service`, see: |
| |
| * [API documentation](https://cloud.google.com/service-usage/docs/reference/rest/v1/services) |
| * How-to Guides |
| * [Enabling and Disabling Services](https://cloud.google.com/service-usage/docs/enable-disable) |
| |
| ## Example Usage |
| |
| ```hcl |
| resource "google_project_service" "project" { |
| project = "your-project-id" |
| service = "iam.googleapis.com" |
| |
| timeouts { |
| create = "30m" |
| update = "40m" |
| } |
| |
| disable_dependent_services = true |
| } |
| ``` |
| |
| ## Argument Reference |
| |
| The following arguments are supported: |
| |
| * `service` - (Required) The service to enable. |
| |
| * `project` - (Optional) The project ID. If not provided, the provider project |
| is used. |
| |
| * `disable_dependent_services` - (Optional) If `true`, services that are enabled |
| and which depend on this service should also be disabled when this service is |
| destroyed. If `false` or unset, an error will be generated if any enabled |
| services depend on this service when destroying it. |
| |
| * `disable_on_destroy` - (Optional) If true, disable the service when the |
| Terraform resource is destroyed. Defaults to true. May be useful in the event |
| that a project is long-lived but the infrastructure running in that project |
| changes frequently. |
| |
| ## Attributes Reference |
| |
| In addition to the arguments listed above, the following computed attributes are |
| exported: |
| |
| * `id` - an identifier for the resource with format `{{project}}/{{service}}` |
| |
| ## Timeouts |
| |
| This resource provides the following |
| [Timeouts](https://developer.hashicorp.com/terraform/plugin/sdkv2/resources/retries-and-customizable-timeouts) configuration options: configuration options: |
| |
| - `create` - Default is 20 minutes. |
| - `read` - Default is 10 minutes. |
| - `update` - Default is 20 minutes. |
| - `delete` - Default is 20 minutes. |
| |
| ## Import |
| |
| Project services can be imported using the `project_id` and `service`, e.g. |
| |
| * `{{project_id}}/{{service}}` |
| |
| In Terraform v1.5.0 and later, use an [`import` block](https://developer.hashicorp.com/terraform/language/import) to import project services using one of the formats above. For example: |
| |
| ```tf |
| import { |
| id = "{{project_id}}/{{service}}" |
| to = google_project_service.default |
| } |
| ``` |
| |
| When using the [`terraform import` command](https://developer.hashicorp.com/terraform/cli/commands/import), project services can be imported using one of the formats above. For example: |
| |
| ``` |
| $ terraform import google_project_service.default {{project_id}}/{{service}} |
| ``` |
| |
| Note that unlike other resources that fail if they already exist, |
| `terraform apply` can be successfully used to verify already enabled services. |
| This means that when importing existing resources into Terraform, you can either |
| import the `google_project_service` resources or treat them as new |
| infrastructure and run `terraform apply` to add them to state. |
| |
| |
| |
| ## User Project Overrides |
| |
| This resource supports [User Project Overrides](https://registry.terraform.io/providers/hashicorp/google/latest/docs/guides/provider_reference#user_project_override). |