blob: 0347f5f46082b08b1f568989c29ebd32818a04eb [file] [log] [blame]
---
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).