# Google Cloud SQL - PostgreSQL

## Example Usage

***

{% tabs %}
{% tab title="Terraform" %}
{% code title="gcp-cloud-sql-postgresql-integration.tf" %}

```tf
resource "apono_integration" "gcp-cloud-sql-postgresql-integration" {
  name                     = "Google Cloud SQL - PostgreSQL"
  type                     = "gcp-cloud-sql-postgresql"
  connector_id             = "apono-connector-id"
  connected_resource_types = ["gcp-cloud-sql-postgresql-instance"]
  metadata = {
    auth_type = "<Auth Type>"
    gcp_project_id = "<Project ID>"
    gcp_region = "<Region>"
    gcp_instance_id = "<Instance ID>"
    gcp_instance_id_user_override = "<Instance ID User Override>"
    dbname = "<Database Name>"
    sslmode = "<SSL Mode>"
    credentials_rotation_period_in_days = "<Credentials rotation period (in days)>"
    credentials_cleanup_period_in_days = "<User cleanup after access is revoked (in days)>"
  }
  gcp_secret = {
    project    = "project_template_value"
    secret_id  = "gcp_secret_id_template_value"
  }
}
```

{% endcode %}
{% endtab %}

{% tab title="Terraform V2" %}
{% code title="gcp-cloud-sql-postgresql-integration.tf" %}

```tf
resource "apono_resource_integration" "gcp-cloud-sql-postgresql-integration" {
  name                     = "Google Cloud SQL - PostgreSQL"
  type                     = "gcp-cloud-sql-postgresql"
  connector_id             = "apono-connector-id"
  connected_resource_types = ["gcp-cloud-sql-postgresql-instance"]
  integration_config = {
    auth_type = "<Auth Type>"
    gcp_project_id = "<Project ID>"
    gcp_region = "<Region>"
    gcp_instance_id = "<Instance ID>"
    gcp_instance_id_user_override = "<Instance ID User Override>"
    dbname = "<Database Name>"
    sslmode = "<SSL Mode>"
    credentials_rotation_period_in_days = "<Credentials rotation period (in days)>"
    credentials_cleanup_period_in_days = "<User cleanup after access is revoked (in days)>"
  }
  secret_store_config = {
    gcp = {
      project    = "project_template_value"
      secret_id  = "gcp_secret_id_template_value"
    }
}
```

{% endcode %}
{% endtab %}

{% tab title="Public API" %}
{% code title="gcp-cloud-sql-postgresql-integration.json" %}

```json
{
    "gcp-cloud-sql-postgresql-integration": {
        "name": "Google Cloud SQL - PostgreSQL",
        "type": "gcp-cloud-sql-postgresql",
        "connector_id": "apono-connector-id",
        "connected_resource_types": [
            "gcp-cloud-sql-postgresql-instance"
        ],
        "integration_config": {
            "auth_type": "<Auth Type>",
            "gcp_project_id": "<Project ID>",
            "gcp_region": "<Region>",
            "gcp_instance_id": "<Instance ID>",
            "gcp_instance_id_user_override": "<Instance ID User Override>",
            "dbname": "<Database Name>",
            "sslmode": "<SSL Mode>",
            "credentials_rotation_period_in_days": "<Credentials rotation period (in days)>",
            "credentials_cleanup_period_in_days": "<User cleanup after access is revoked (in days)>",
        },
	"secret_store_config": {
    	    "project": "project_template_value",
    	    "secret_id": "gcp_secret_id_template_value"
  	    }
    }
}
```

{% endcode %}
{% endtab %}
{% endtabs %}

## Schema

***

* `type` gcp-cloud-sql-postgresql
* `connected_resource_types` List of resource types to sync.

<details>

<summary>Available resource types you can use</summary>

* gcp-cloud-sql-postgresql-instance
* gcp-cloud-sql-postgresql-database
* gcp-cloud-sql-postgresql-table
* gcp-cloud-sql-postgresql-role

</details>

### Integration Config

***

* `auth_type` (Required | String) Auth Type
  * Possible values: gcp-iam-auth, user-password
* `gcp_project_id` (Required | String) Project ID
* `gcp_region` (Required | String) Region
* `gcp_instance_id` (Required | String) Instance ID
* `gcp_instance_id_user_override` (Optional | String) Instance ID User Override
* `dbname` (Required | String) Database Name
  * Default value: `postgres`
* `sslmode` (Optional | String) SSL Mode
  * Possible values: disable, allow, prefer, require, verify-ca, verify-full
* `credentials_rotation_period_in_days` (Optional | String) Credentials rotation period (in days)
* `credentials_cleanup_period_in_days` (Optional | String) User cleanup after access is revoked (in days)
