Administrar perfiles de conexión

La API de Datastream te permite crear y administrar de forma programática perfiles de conexión que almacenan información de autenticación y conectividad para tus fuentes y destinos. Puedes realizar llamadas a la API de REST o usar Google Cloud CLI. Por ejemplo, puedes crear perfiles para fuentes de Oracle, MySQL, PostgreSQL, SQL Server, Salesforce y MongoDB, y para destinos de BigQuery y Cloud Storage.

También puedes recuperar, enumerar, actualizar o borrar perfiles de conexión y descubrir la estructura de una base de datos de origen. Para obtener detalles de referencia de los comandos, consulta gcloud datastream connection-profiles. Para obtener una explicación de extremo a extremo, consulta Usa las APIs de Datastream.

Crea un perfil de conexión para una base de datos de Oracle de origen

En el siguiente código, se muestra una solicitud para crear un perfil de conexión para una base de datos de Oracle con un secreto y el método de conectividad de lista de IPs permitidas.

REST

POST https://datastream.googleapis.com/v1/projects/PROJECT_ID/locations/
LOCATION/connectionProfiles?connectionProfileId=CONNECTION_PROFILE_ID
{
  "displayName": "[connection-profile-display-name]",
  "oracleProfile": {
    "hostname": "HOST_ID_ADDRESS",
    "port": PORT,
    "username": "USERNAME",
    "databaseService": "DATABASE",
    "secretManagerStoredPassword": "SECRET_MANAGER_RESOURCE"
  },
  "staticServiceIpConnectivity": {}
}

Por ejemplo:

POST https://datastream.googleapis.com/v1/projects/myProjectId/locations/
us-central1/connectionProfiles?connectionProfileId=myOracleCP
{
  "displayName": "my Oracle database",
  "oracleProfile": {
    "hostname": "1.2.3.4",
    "port": 1521,
    "username": "admin",
    "databaseService": "ORCL",
    "secretManagerStoredPassword": "projects/myProjectId/secrets/mySecret/versions/latest"
  },
  "staticServiceIpConnectivity": {}
}

En el siguiente código se muestra una solicitud de creación de un perfil de conexión para una base de datos Oracle y se especifica que el método de conectividad es la conectividad privada (intercambio de tráfico de VPC).

Este método establece una conectividad segura entre Datastream y la base de datos de origen (de forma interna en Google Cloudo con fuentes externas conectadas a través de una VPN o Interconnect). Esta comunicación se realiza a través de una conexión de intercambio de tráfico de VPC.

POST https://datastream.googleapis.com/v1/projects/PROJECT_ID/locations/
LOCATION/connectionProfiles?connectionProfileId=CONNECTION_PROFILE_ID
{
  "displayName": "[connection-profile-display-name]",
  "oracleProfile": {
    "hostname": "HOST_ID_ADDRESS",
    "port": PORT,
    "username": "USERNAME",
    "password": "PASSWORD",
    "databaseService": "DATABASE"
  },
  "privateConnectivity": {
    "privateConnection": "projects/PROJECT_ID/locations/
    LOCATION/privateConnections/[private-connectivity-configuration-id]"
  }
}

Por ejemplo:

POST https://datastream.googleapis.com/v1/projects/myProjectId/locations/
us-central1/connectionProfiles?connectionProfileId=myOracleVPCPeeringCP
{
  "displayName": "my Oracle database",
  "oracleProfile": {
    "hostname": "1.2.3.4",
    "port": 1521,
    "username": "admin",
    "password": "12345",
    "databaseService": "ORCL",
  },
    "privateConnectivity": {
      "privateConnection": "projects/myProjectId/locations/us-central1/
      privateConnections/myPrivateConnection"
    }
}

Después de crear el perfil de conexión, puedes ver información sobre él llamando al método connectionProfiles/get. Aparecerá un resultado similar al siguiente:

{
  "name": "projects/projectId/location/us-central1/connectionProfiles/myOracleVPCPeeringCP",
  "createTime": "2019-12-22T16:17:37.159786963Z",
  "updateTime": "2019-12-22T16:17:37.159786963Z",
  "displayName": "my Oracle database",
  "oracleProfile": {
    "hostname": "1.2.3.4",
    "port": 1521,
    "databaseService": "ORCL",
    "username": "admin"
  },
  "privateConnectivity": {
    "privateConnection": "projects/myProjectId/locations/us-central1/
    privateConnections/myPrivateConnection"
  }
}

gcloud

Si deseas obtener más información para usar gcloud con el objetivo de crear un perfil de conexión para una base de datos de Oracle de origen, consulta la documentación del SDK de Google Cloud.

Crea un perfil de conexión para una base de datos de MySQL de origen

En el siguiente código, se muestra una solicitud para crear un perfil de conexión para una base de datos de MySQL y se especifica el método de conectividad como el uso de direcciones IP estáticas (lista de IPs permitidas).

REST

POST https://datastream.googleapis.com/v1/projects/PROJECT_ID/locations/
LOCATION/connectionProfiles?connectionProfileId=CONNECTION_PROFILE_ID
{
  "displayName": "[connection-profile-display-name]",
  "mysqlProfile": {
    "hostname": "HOST_ID_ADDRESS",
    "port": PORT,
    "username": "USERNAME",
    "password": "PASSWORD"
  },
  "staticServiceIpConnectivity": {}
}

Por ejemplo:

POST https://datastream.googleapis.com/v1/projects/myProjectId/locations/
us-central1/connectionProfiles?connectionProfileId=mysql-cp
{
  "displayName": "my MySQL database",
  "mysqlProfile": {
    "hostname": "1.2.3.4",
    "port": 3306,
    "username": "root",
    "password": "12345"
  },
  "staticServiceIpConnectivity": {}
}

gcloud

Si quieres obtener más información para usar gcloud con el objetivo de crear un perfil de conexión para una base de datos de MySQL de origen, consulta la documentación del SDK de Google Cloud.

Crea un perfil de conexión para una base de datos de PostgreSQL de origen

En el siguiente código, se muestra una solicitud para crear un perfil de conexión para una base de datos de PostgreSQL.

REST

POST https://datastream.googleapis.com/v1/projects/PROJECT_ID/locations/
LOCATION/connectionProfiles?connectionProfileId=CONNECTION_PROFILE_ID
{
  "displayName": "[connection-profile-display-name]",
  "postgresqlProfile": {
    "hostname": "HOST_ID_ADDRESS",
    "port": PORT,
    "username": "USERNAME",
    "password": "PASSWORD",
    "database": "DATABASE"
  },
  "staticServiceIpConnectivity": {}
}

Por ejemplo:

POST https://datastream.googleapis.com/v1/projects/myProjectId/locations/
us-central1/connectionProfiles?connectionProfileId=postgres-cp
{
  "displayName": "my PostgreSQL database",
  "postgresqlProfile": {
    "hostname": "1.2.3.4",
    "database": "postgres",
    "port": 5432,
    "username": "root",
    "password": "12345"
  },
  "staticServiceIpConnectivity": {}
}

gcloud

Para obtener más información sobre el uso de gcloud para crear perfiles de conexión, consulta la documentación del SDK de Google Cloud.

Crea un perfil de conexión para una base de datos de SQL Server de origen

En el siguiente código, se muestra una solicitud para crear un perfil de conexión para una base de datos de SQL Server y se especifica el método de conectividad como el uso de direcciones IP estáticas (lista de IPs permitidas).

REST

POST https://datastream.googleapis.com/v1/projects/PROJECT_ID/locations/
LOCATION/connectionProfiles?connectionProfileId=CONNECTION_PROFILE_ID
{
  "displayName": "[connection-profile-display-name]",
  "sqlserverProfile": {
    "hostname": "HOST_ID_ADDRESS",
    "port": PORT,
    "username": "USERNAME",
    "password": "PASSWORD",
    "database": "DATABASE"
  },
  "staticServiceIpConnectivity": {}
}

Por ejemplo:

POST https://datastream.googleapis.com/v1/projects/myProjectId/locations/
us-central1/connectionProfiles?connectionProfileId=sqlserver-cp
{
  "displayName": "my SQL Server database",
  "sqlserverProfile": {
    "hostname": "1.2.3.4",
    "port": 1433,
    "username": "root",
    "password": "12345"
    "database": "database1"
  },
  "staticServiceIpConnectivity": {}
}

gcloud

Para obtener más información sobre el uso de gcloud para crear perfiles de conexión, consulta la documentación del SDK de Google Cloud.

Crea un perfil de conexión para una fuente de Salesforce

En el siguiente código, se muestra una solicitud para crear un perfil de conexión para una instancia de Salesforce de origen con un nombre de usuario y una contraseña como método de autenticación.

REST

POST https://datastream.googleapis.com/v1/projects/PROJECT_ID/locations/
LOCATION/connectionProfiles?connectionProfileId=CONNECTION_PROFILE_ID
{
  "displayName": "CONNECTION_PROFILE_NAME",
  "salesforceProfile": {
    "domain": "DOMAIN_NAME",
    "userCredentials": {
      "username": "USERNAME",
      "password": "PASSWORD",
      "securitytoken": "SECURITY_TOKEN"
    }
  }
}

Por ejemplo:

POST https://datastream.googleapis.com/v1/projects/myProjectId/locations/
us-central1/connectionProfiles?connectionProfileId=saleforce-cp
{
  "displayName": "My Salesforce connection profile",
  "salesforceProfile": {
    "domain": "domain.my.salesforce.com",
    "userCredentials": {
      "username": "mySalesforceUser",
      "password": "12345",
      "securitytoken": "C08120F510542FFB1C3640F57AF19E2D5D700556A25F7D665C3B428407709D8C"
    }
  }
}
  

gcloud

Para obtener más información sobre el uso de gcloud para crear perfiles de conexión, consulta la documentación del SDK de Google Cloud.

En el siguiente código, se muestra una solicitud para crear un perfil de conexión para una instancia de Salesforce de origen con las credenciales de cliente de OAuth 2.0 como método de autenticación.

REST

POST https://datastream.googleapis.com/v1/projects/PROJECT_ID/locations/
LOCATION/connectionProfiles?connectionProfileId=CONNECTION_PROFILE_ID
{
  "displayName": "CONNECTION_PROFILE_NAME",
  "salesforceProfile": {
    "domain": "DOMAIN_NAME",
    "oauth2ClientCredentials": {
      "clientId": "CLIENT_ID",
      "clientSecret": "CLIENT_SECRET"
    }
  }
}

Por ejemplo:

POST https://datastream.googleapis.com/v1/projects/myProjectId/locations/
us-central1/connectionProfiles?connectionProfileId=saleforce-cp
{
  "displayName": "My Salesforce connection profile",
  "salesforceProfile": {
    "domain": "domain.my.salesforce.com",
    "oauth2ClientCredentials": {
      "clientId": "myClientId",
      "clientSecret": "projects/myProject/secrets/sf-client-secret"
    }
  }
}
  

gcloud

Para obtener más información sobre el uso de gcloud para crear perfiles de conexión, consulta la documentación del SDK de Google Cloud.

Crea un perfil de conexión para una fuente de MongoDB

En el siguiente código, se muestra una solicitud para crear un perfil de conexión para una instancia de MongoDB de origen con un formato de cadena de conexión de SRV.

REST

POST https://datastream.googleapis.com/v1/projects/PROJECT_ID/locations/
LOCATION/connectionProfiles?connectionProfileId=CONNECTION_PROFILE_ID
{
  "displayName": "CONNECTION_PROFILE_NAME",
  "mongodbProfile": {
    "hostAddresses": [ {
      "hostname": "HOST_URI"
    } ],
    "username": "USERNAME",
    "password": "PASSWORD",
    "srvConnectionFormat": {}
    },
    "staticServiceIpConnectivity": {}
}

Por ejemplo:

POST https://datastream.googleapis.com/v1/projects/myProjectId/locations/
us-central1/connectionProfiles?connectionProfileId=mongodb-cp
{
  "displayName": "mongodb-cp",
  "mongodbProfile": {
    "hostAddresses": [ {
      "hostname": "cluster85828.ebeek.mongodb.net"
    } ],
    "username": "Cluster85828",
    "password": "password",
    "srvConnectionFormat": {}
    },
    "staticServiceIpConnectivity": {}
}
  

gcloud

Para obtener más información sobre el uso de gcloud para crear perfiles de conexión, consulta la documentación del SDK de Google Cloud.

En el siguiente código, se muestra una solicitud para crear un perfil de conexión para una instancia de MongoDB de origen con un formato de cadena de conexión estándar.

REST

POST https://datastream.googleapis.com/v1/projects/PROJECT_ID/locations/
LOCATION/connectionProfiles?connectionProfileId=CONNECTION_PROFILE_ID
{
  "displayName": "CONNECTION_PROFILE_NAME",
  "mongodbProfile": {
    "hostAddresses": [ {
      "hostname": "HOST_IP",
      "port": "PORT_NUMBER"
    } ],
    "replica_set": "SET_ID",
    "username": "USERNAME",
    "password": "PASSWORD",
    "standardConnectionFormat": {
      "directConnection": false
    }
  },
  "staticServiceIpConnectivity": {}
}

Por ejemplo:

POST https://datastream.googleapis.com/v1/projects/myProjectId/locations/
us-central1/connectionProfiles?connectionProfileId=mongodb-cp
{
  "displayName": "mongodb-cp",
  "mongodbProfile": {
    "hostAddresses": [ {
      "hostname": "34.19.10.194",
      "port": "27017"
    } ],
    "replicaset": "rs0",
    "username": "root",
    "password": "password",
    "standardConnectionFormat": {
      "directConnection": false
    }
  },
  "staticServiceIpConnectivity": {}
}
  

gcloud

Para obtener más información sobre el uso de gcloud para crear perfiles de conexión, consulta la documentación del SDK de Google Cloud.

Crea un perfil de conexión para un destino de BigQuery

En el siguiente código, se muestra una solicitud para crear un perfil de conexión para un destino de BigQuery.

REST

POST https://datastream.googleapis.com/v1/projects/[project-id/locations/
LOCATION/connectionProfiles?connectionProfileId=CONNECTION_PROFILE_ID
{
  "displayName": "connection-profile-display-name",
  "bigqueryProfile": {}
}

Por ejemplo:

POST https://datastream.googleapis.com/v1/projects/myProjectId/locations/
us-central1/connectionProfiles?connectionProfileId=myBigqueryCP
{
  "displayName": "my BigQuery destination",
  "bigqueryProfile": {}
}

gcloud

Para obtener más información sobre el uso de gcloud para crear perfiles de conexión, consulta la documentación del SDK de Google Cloud.

Crea un perfil de conexión para un destino de Cloud Storage

En el siguiente código, se muestra una solicitud para crear un perfil de conexión para un bucket de Cloud Storage. Como Cloud Storage está en la misma red que Datastream, no se requiere ninguna conectividad especial. Por lo tanto, no se especifica ningún método de conectividad.

REST

POST https://datastream.googleapis.com/v1/projects/[project-id/locations/
LOCATION/connectionProfiles?connectionProfileId=CONNECTION_PROFILE_ID
{
  "displayName": "connection-profile-display-name",
  "gcsProfile": {
    "bucket": "bucket-name",
    "rootPath": "prefix-inside-bucket"
  }
}

Por ejemplo:

POST https://datastream.googleapis.com/v1/projects/myProjectId/locations/
us-central1/connectionProfiles?connectionProfileId=myGcsCP
{
  "displayName": "my Cloud Storage bucket",
  "gcsProfile": {
    "bucket": "myBucket",
    "rootPath": "prefix-inside-bucket"
  }
}

gcloud

Si deseas obtener más información para usar gcloud con el objetivo de crear un perfil de conexión para Cloud Storage, consulta la documentación del SDK de Cloud.

Obtén información sobre un perfil de conexión

En el siguiente código, se muestra una solicitud para recuperar información sobre un perfil de conexión de una base de datos de Oracle de origen, una base de datos de MySQL de origen, un destino de BigQuery o un destino de Cloud Storage que se haya creado.

REST

GET https://datastream.googleapis.com/v1/projects/project-id/locations/
LOCATION/connectionProfiles/CONNECTION_PROFILE_ID

Por ejemplo:

GET https://datastream.googleapis.com/v1/projects/myProjectId/locations/
us-central1/connectionProfiles/myOracleCP

gcloud

Para obtener más información sobre el uso de gcloud para recuperar información sobre tu perfil de conexión, consulta la documentación del SDK de Google Cloud.

Enumera perfiles de conexión

En el siguiente código, se muestra una solicitud para recuperar información sobre todos tus perfiles de conexión.

REST

GET https://datastream.googleapis.com/v1/projects/PROJECT_ID/locations/
LOCATION/connectionProfiles

gcloud

Para obtener más información sobre el uso de gcloud para recuperar información sobre todos tus perfiles de conexión, consulta la documentación del SDK de Google Cloud.

Actualiza un perfil de conexión

El siguiente código muestra una solicitud de cambio del nombre de usuario y la contraseña de un perfil de conexión existente para una base de datos de origen.

Usar el parámetro updateMask en la solicitud hace que solo los campos que especifiques deban incluirse en el cuerpo de la solicitud (para este ejemplo, los campos username y password, representados por las marcas oracle_profile.username y oracle_profile.password respectivamente).

REST

PATCH https://datastream.googleapis.com/v1/projects/PROJECT_ID/locations/
LOCATION/connectionProfiles/CONNECTION_PROFILE_ID?
updateMask=oracle_profile.username,oracle_profile.password
{
  "oracleProfile": {
    "username": "USERNAME",
    "password": "PASSWORD"
  }
}

Por ejemplo:

PATCH https://datastream.googleapis.com/v1/projects/myProjectId/locations/
us-central1/connectionProfiles/myOracleCP?
updateMask=oracle_profile.username,oracle_profile.password
{
  "oracleProfile": {
    "username": "username",
    "password": "password"
  }
}

En el siguiente código, se muestra una solicitud para cambiar la configuración de conectividad privada que se asigna a un perfil de conexión. Este perfil de conexión usa el método de conectividad de red de intercambio de tráfico entre VPC.

En este ejemplo, asignarás la configuración new_private_connection al perfil de conexión.

PATCH -d {\"private_connectivity\":{\"private_connection\":\
"projects/PROJECT_ID/locations/LOCATION/privateConnections/
new_private_connection\"}}" -H "Authorization: Bearer $TOKEN" -H 
"Content-Type: application/json" https://datastream.googleapis.com/v1/
projects/PROJECT_ID/locations/LOCATION/connectionProfiles/
CONNECTION_PROFILE_ID?update_mask=private_connectivity.private_connection

Por ejemplo:

PATCH -d {\"private_connectivity\":{\"private_connection\":\
"projects/myProjectId/locations/us-central1/privateConnections/
new_private_connection\"}}" -H "Authorization: Bearer $TOKEN" -H 
"Content-Type: application/json"
https://datastream.googleapis.com/v1/projects/
myProjectId/locations/us-central1/connectionProfiles/
myOracleVPCPeeringCP?update_mask=private_connectivity.private_connection

gcloud

Para obtener más información sobre el uso de gcloud para actualizar tu perfil de conexión, consulta la documentación del SDK de Google Cloud.

Borrar un perfil de conexión

En el siguiente código, se muestra una solicitud para borrar un perfil de conexión. Después de borrar el perfil de conexión, fallarán todas las transmisiones que lo usen.

REST

DELETE https://datastream.googleapis.com/v1/projects/PROJECT_ID/locations/
LOCATION/connectionProfiles/CONNECTION_PROFILE_ID

Por ejemplo:

DELETE https://datastream.googleapis.com/v1/projects/myProjectId/locations/
us-central1/connectionProfiles/myOracleCP

gcloud

Para obtener más información sobre cómo usar gcloud para borrar tu perfil de conexión, consulta la documentación del SDK de Google Cloud.

Descubrir la estructura de una base de datos de origen

Usa la API de discoverConnectionProfile para recuperar la lista de entidades (por ejemplo, esquemas y tablas) de una fuente y los metadatos asociados con las entidades.

La API puede recibir como parámetro un ID de un perfil de conexión existente o una definición completa del objeto del perfil de conexión. La función puede devolver un solo nivel (por ejemplo, todos los esquemas de una base de datos o todas las tablas de un esquema) o todas las entidades de forma recurrente (por ejemplo, esquemas, tablas y columnas).

REST

POST https://datastream.googleapis.com/v1/projects/PROJECT_ID/locations/
LOCATION/connectionProfiles:discoverConnectionProfile?CONNECTION_PROFILE_ID

Por ejemplo:

POST https://datastream.googleapis.com/v1/projects/myProjectId/locations/
us-central1/connectionProfiles:discoverConnectionProfile?myOracleCP

gcloud

Para obtener más información sobre el uso de gcloud para descubrir la estructura de tu base de datos de origen, consulta la documentación del SDK de Google Cloud.

¿Qué sigue?