Crear un tema de importación de Confluent Cloud

Un tema de importación de Confluent Cloud te permite ingerir continuamente datos de Confluent Cloud como fuente externa y en Pub/Sub. Después, puedes transmitir los datos a cualquiera de los destinos que admite Pub/Sub.

En este documento se explica cómo crear y gestionar temas de importación de Confluent Cloud. Para crear un tema estándar, consulta Crear un tema estándar.

Para obtener más información sobre los temas de importación, consulta el artículo Acerca de los temas de importación.

Antes de empezar

Roles y permisos necesarios

Para obtener los permisos que necesitas para crear y gestionar temas de importación de Confluent Cloud, pide a tu administrador que te conceda el rol de gestión de identidades y accesos Editor de Pub/Sub (roles/pubsub.editor) en tu tema o proyecto. Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.

Este rol predefinido contiene los permisos necesarios para crear y gestionar temas de importación de Confluent Cloud. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:

Permisos obligatorios

Se necesitan los siguientes permisos para crear y gestionar temas de importación de Confluent Cloud:

  • Crea un tema de importación: pubsub.topics.create
  • Eliminar un tema importado: pubsub.topics.delete
  • Obtener un tema de importación: pubsub.topics.get
  • Para enumerar un tema de importación, sigue estos pasos: pubsub.topics.list
  • Publicar en un tema de importación: pubsub.topics.publish and pubsub.serviceAgent
  • Actualizar un tema de importación: pubsub.topics.update
  • Obtiene la política de gestión de identidades y accesos de un tema de importación: pubsub.topics.getIamPolicy
  • Configura la política de gestión de identidades y accesos de un tema de importación: pubsub.topics.setIamPolicy

También puedes obtener estos permisos con roles personalizados u otros roles predefinidos.

Puedes configurar el control de acceso a nivel de proyecto y de recurso individual.

Configurar la identidad federada para acceder a Confluent Cloud

La federación de identidades de cargas de trabajo permite que los servicios accedan a cargas de trabajo que se ejecutan fuera de Google Cloud. Google Cloud Con la federación de identidades, no es necesario mantener ni transferir credenciales a Google Cloud para acceder a tus recursos en otras nubes. En su lugar, puedes usar las identidades de las cargas de trabajo para autenticarte en Google Cloud y acceder a los recursos.

Crear una cuenta de servicio en Google Cloud

Este paso es opcional. Si ya tienes una cuenta de servicio, puedes usarla en este procedimiento en lugar de crear una nueva. Si usas una cuenta de servicio, ve a Registrar el ID único de la cuenta de servicio para el siguiente paso.

En el caso de los temas de importación de Confluent Cloud, Pub/Sub usa la cuenta de servicio como identidad para acceder a los recursos de Confluent Cloud.

Para obtener más información sobre cómo crear una cuenta de servicio, incluidos los requisitos previos, los roles y permisos necesarios, y las directrices para asignar nombres, consulta el artículo Crear cuentas de servicio. Después de crear una cuenta de servicio, es posible que tengas que esperar 60 segundos o más antes de usarla. Este comportamiento se produce porque las operaciones de lectura son coherentes con el tiempo. La nueva cuenta de servicio puede tardar en aparecer.

Registrar el ID único de la cuenta de servicio

Necesitas un ID único de cuenta de servicio para configurar el proveedor de identidades y el grupo en la consola de Confluent Cloud.

  1. En la Google Cloud consola, ve a la página de detalles de la cuenta de servicio.

    Ir a la cuenta de servicio

  2. Haz clic en la cuenta de servicio que acabas de crear o en la que tienes previsto usar.

  3. En la página Detalles de la cuenta de servicio, anota el número de ID único.

    Necesitas el ID como parte del flujo de trabajo para configurar el proveedor de identidades y el grupo en la consola de Confluent Cloud.

Añadir el rol de creador de tokens de cuenta de servicio a la cuenta de servicio de Pub/Sub

El rol Creador de tokens de cuenta de servicio (roles/iam.serviceAccountTokenCreator) permite a las entidades principales crear credenciales de duración reducida para una cuenta de servicio. Estos tokens o credenciales se usan para suplantar la identidad de la cuenta de servicio.

Para obtener más información sobre la suplantación de identidad en cuentas de servicio, consulta el artículo Suplantación de identidad en cuentas de servicio.

También puedes añadir el rol de editor de Pub/Sub (roles/pubsub.publisher) durante este procedimiento. Para obtener más información sobre el rol y por qué lo añade, consulte Añadir el rol de editor de Pub/Sub a la cuenta de servicio de Pub/Sub.

  1. En la consola, ve a la página Gestión de identidades y accesos. Google Cloud

    Ir a IAM

  2. Marca la casilla Incluir concesiones de roles proporcionadas por Google.

  3. Busca la cuenta de servicio que tenga el formato service-{PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com.

  4. En esta cuenta de servicio, haz clic en el botón Editar principal.

  5. Si es necesario, haz clic en Añadir otro rol.

  6. Busca y haz clic en el rol Creador de tokens de cuenta de servicio (roles/iam.serviceAccountTokenCreator).

  7. Haz clic en Guardar.

Crear un proveedor de identidades en Confluent Cloud

Para autenticarse en Confluent Cloud, la cuenta de servicio de Google Cloud necesita un grupo de identidades. Primero debes crear un proveedor de identidades en Confluent Cloud.

Para obtener más información sobre cómo crear un proveedor de identidades en Confluent Cloud, consulta la página Añadir un proveedor de identidades OAuth u OIDC.

  1. Inicia sesión en la consola de Confluent Cloud.

  2. En el menú, haga clic en Cuentas y acceso.

  3. Haz clic en Identidades de carga de trabajo.

  4. Haz clic en Añadir proveedor.

  5. Haz clic en OAuth/OIDC y, a continuación, en Next (Siguiente).

  6. Haz clic en Otro proveedor de OIDC y, a continuación, en Siguiente.

  7. Proporciona un nombre y una descripción de la finalidad del proveedor de identidades.

  8. Haz clic en Mostrar configuración avanzada.

  9. En el campo URI del emisor, introduce https://accounts.google.com.

  10. En el campo URI de JWKS, introduzca https://www.googleapis.com/oauth2/v3/certs.

  11. Haz clic en Validar y guardar.

Crea un grupo de identidades y asigna los roles adecuados en Confluent Cloud

Debes crear un grupo de identidades en tu perfil de identidad y conceder los roles necesarios para permitir que la cuenta de servicio de Pub/Sub se autentique y lea temas de Confluent Cloud Kafka.

Asegúrate de que tu clúster se haya creado en Confluent Cloud antes de crear un grupo de identidades.

Para obtener más información sobre cómo crear un grupo de identidades, consulta la página Usar grupos de identidades con tu proveedor de identidades de OAuth u OIDC.

  1. Inicia sesión en la consola de Confluent Cloud.

  2. En el menú, haga clic en Cuentas y acceso.

  3. Haz clic en Identidades de carga de trabajo.

  4. Haz clic en el proveedor de identidades que has creado en Crear un proveedor de identidades en Confluent Cloud.

  5. Haz clic en Añadir pool.

  6. Proporciona un nombre y una descripción para tu grupo de identidades.

  7. Define Reclamación de identidad como claims.

  8. En Definir filtros, haz clic en la pestaña Avanzado. Introduce el siguiente código:

    claims.iss=='https://accounts.google.com' && claims.sub=='<SERVICE_ACCOUNT_UNIQUE_ID>'
    

    Sustituye <SERVICE_ACCOUNT_UNIQUE_ID> por el ID único de tu cuenta de servicio, que se indica en Anota el ID único de la cuenta de servicio.

  9. Haz clic en Siguiente.

  10. Haz clic en Añadir nuevo permiso. A continuación, haz clic en Siguiente.

  11. En el clúster correspondiente, haz clic en Añadir asignación de rol.

  12. Haz clic en el rol Operador y, después, en Añadir.

    Este rol concede Pub/Sub. Acceso de la cuenta de servicio al clúster que contiene el tema de Confluent Kafka que quieres ingerir en Pub/Sub.

  13. Debajo del clúster, haz clic en Temas. A continuación, haz clic en Añadir asignación de rol.

  14. Selecciona el rol DeveloperRead.

  15. Haz clic en la opción correspondiente y especifica el tema o el prefijo. Por ejemplo, Tema específico, Regla de prefijo o Todos los temas.

  16. Haz clic en Añadir.

  17. Haz clic en Siguiente.

  18. Haz clic en Validar y guardar.

Añadir el rol de editor de Pub/Sub a la cuenta principal de Pub/Sub

Para habilitar la publicación, debes asignar un rol de editor a la cuenta de servicio de Pub/Sub para que Pub/Sub pueda publicar en el tema de importación de Confluent Cloud.

Añadir el rol de agente de servicio de Pub/Sub a la cuenta de servicio de Pub/Sub

Para permitir que Pub/Sub use la cuota de publicación del proyecto del tema de importación, el agente de servicio de Pub/Sub necesita el permiso serviceusage.services.use en el proyecto del tema de importación.

Para conceder este permiso, te recomendamos que añadas el rol de agente de servicio de Pub/Sub a la cuenta de servicio de Pub/Sub.

Si la cuenta de servicio de Pub/Sub no tiene el rol de agente de servicio de Pub/Sub, se le puede asignar de la siguiente manera:

  1. En la consola, ve a la página Gestión de identidades y accesos. Google Cloud

    Ir a IAM

  2. Marca la casilla Incluir concesiones de roles proporcionadas por Google.

  3. Busca la cuenta de servicio que tenga el formato service-{PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com.

  4. En esta cuenta de servicio, haz clic en el botón Editar principal.

  5. Si es necesario, haz clic en Añadir otro rol.

  6. Busca y haz clic en el rol Agente de servicio de Pub/Sub (roles/pubsub.serviceAgent).

  7. Haz clic en Guardar.

Habilitar la publicación de todos los temas

Usa este método si no has creado ningún tema de importación de Confluent Cloud.

  1. En la consola, ve a la página Gestión de identidades y accesos. Google Cloud

    Ir a IAM

  2. Marca la casilla Incluir concesiones de roles proporcionadas por Google.

  3. Busca la cuenta de servicio que tenga el formato service-{PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com.

  4. En esta cuenta de servicio, haz clic en el botón Editar principal.

  5. Si es necesario, haz clic en Añadir otro rol.

  6. Busca y haz clic en el rol Editor de Pub/Sub (roles/pubsub.publisher).

  7. Haz clic en Guardar.

Habilitar la publicación desde un solo tema

Usa este método solo si el tema de importación de Confluent Cloud ya existe.

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Ejecuta el comando gcloud pubsub topics add-iam-policy-binding:

    gcloud pubsub topics add-iam-policy-binding TOPIC_ID \
       --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com" \
       --role="roles/pubsub.publisher"

    Haz los cambios siguientes:

    • TOPIC_ID: el ID del tema de importación de Confluent Cloud.

    • PROJECT_NUMBER: el número de proyecto. Para ver el número de proyecto, consulta el artículo Identificar proyectos.

  3. Añadir el rol de usuario de cuenta de servicio a la cuenta de servicio

    El rol Usuario de cuenta de servicio (roles/iam.serviceAccountUser) incluye el permiso iam.serviceAccounts.actAs, que permite que un principal adjunte una cuenta de servicio a los ajustes de ingestión del tema de importación de Confluent Cloud y use esa cuenta de servicio para la identidad federada.

    1. En la consola, ve a la página Gestión de identidades y accesos. Google Cloud

      Ir a IAM

    2. En el principal que emite las llamadas para crear o actualizar temas, haz clic en el botón Editar principal.

    3. Si es necesario, haz clic en Añadir otro rol.

    4. Busca y haz clic en el rol Usuario de cuenta de servicio (roles/iam.serviceAccountUser).

    5. Haz clic en Guardar.

    Usar temas de importación de Confluent Cloud

    Puede crear un tema de importación o editar uno que ya tenga.

    Cuestiones importantes

    • Si creas el tema y la suscripción por separado, aunque lo hagas de forma rápida, se pueden perder datos. Hay un breve periodo en el que el tema está disponible sin suscripción. Si se envían datos al tema durante este periodo, se perderán. Si creas el tema primero, luego la suscripción y, por último, conviertes el tema en un tema de importación, te aseguras de que no se pierda ningún mensaje durante el proceso de importación.

    • Si necesitas volver a crear el tema de Kafka de un tema de importación con el mismo nombre, no puedes simplemente eliminar el tema de Kafka y volver a crearlo. Esta acción puede invalidar la gestión de desfases de Pub/Sub, lo que puede provocar la pérdida de datos. Para mitigar este problema, sigue estos pasos:

      • Elimina el tema de importación de Pub/Sub.
      • Elimina el tema de Kafka.
      • Crea el tema de Kafka.
      • Crea el tema de importación de Pub/Sub.
    • Los datos de un tema de Confluent Cloud Kafka siempre se leen desde el desplazamiento más antiguo.

    Crear un tema de importación de Confluent Cloud

    Para obtener más información sobre las propiedades asociadas a un tema, consulta Propiedades de un tema.

    Asegúrate de que has completado los siguientes procedimientos:

    Para crear un tema de importación de Confluent Cloud, sigue estos pasos:

    Consola

    1. En la consola de Google Cloud, ve a la página Temas.

      Ir a Temas

    2. Haz clic en Crear tema.
    3. En el campo ID de tema, introduce un ID para el tema de importación. Para obtener más información sobre cómo poner nombre a los temas, consulta las directrices de nomenclatura.
    4. Selecciona Añadir una suscripción predeterminada.
    5. Selecciona Habilitar la ingesta.
    6. En la fuente de ingestión, selecciona Confluent Cloud.
    7. Introduzca los siguientes detalles:
      1. Servidor de arranque: el servidor de arranque de tu clúster que contiene el tema de Kafka que estás ingiriendo en Pub/Sub. El formato es el siguiente: hostname:port.
      2. ID de clúster: el ID del clúster que contiene el tema de Kafka que estás ingiriendo en Pub/Sub.
      3. Tema: el nombre del tema de Kafka que estás ingiriendo en Pub/Sub.
      4. ID del grupo de identidades: el ID del grupo de identidades que se usa para autenticarte en Confluent Cloud.
      5. Cuenta de servicio: la cuenta de servicio que has creado en Crear una cuenta de servicio en Google Cloud.
    8. Haz clic en Crear tema.

    gcloud

    1. In the Google Cloud console, activate Cloud Shell.

      Activate Cloud Shell

      At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

    2. Ejecuta el comando gcloud pubsub topics create:
      gcloud pubsub topics create TOPIC_ID 
      --confluent-cloud-ingestion-bootstrap-server CONFLUENT_BOOTSTRAP_SERVER
      --confluent-cloud-ingestion-cluster-id CONFLUENT_CLUSTER_ID
      --confluent-cloud-ingestion-topic CONFLUENT_TOPIC
      --confluent-cloud-ingestion-identity-pool-id CONFLUENT_IDENTITY_POOL_ID
      --confluent-cloud-ingestion-service-account PUBSUB_SERVICE_ACCOUNT

      Haz los cambios siguientes:

      • TOPIC_ID: el nombre o el ID de tu tema de Pub/Sub.
      • CONFLUENT_BOOTSTRAP_SERVER: el servidor de arranque de tu clúster que contiene el tema de Kafka que estás ingiriendo en Pub/Sub. El formato es el siguiente: hostname:port.
      • CONFLUENT_CLUSTER_ID: el ID de tu clúster que contiene el tema de Kafka en el que estás ingiriendo datos en Pub/Sub.
      • CONFLUENT_TOPIC: el nombre del tema de Kafka que estás ingiriendo en Pub/Sub.
      • CONFLUENT_IDENTITY_POOL_ID: el ID del grupo de identidades que se usa para autenticarte en Confluent Cloud.
      • PUBSUB_SERVICE_ACCOUNT: la cuenta de servicio que has creado en Crear una cuenta de servicio en Google Cloud.
    3. C++

      Antes de probar este ejemplo, sigue las instrucciones de configuración de C++ que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de C++ de Pub/Sub.

      namespace pubsub = ::google::cloud::pubsub;
      namespace pubsub_admin = ::google::cloud::pubsub_admin;
      [](pubsub_admin::TopicAdminClient client, std::string project_id,
         std::string topic_id, std::string const& bootstrap_server,
         std::string const& cluster_id, std::string const& confluent_topic,
         std::string const& identity_pool_id,
         std::string const& gcp_service_account) {
        google::pubsub::v1::Topic request;
        request.set_name(
            pubsub::Topic(std::move(project_id), std::move(topic_id)).FullName());
        auto* confluent_cloud = request.mutable_ingestion_data_source_settings()
                                    ->mutable_confluent_cloud();
        confluent_cloud->set_bootstrap_server(bootstrap_server);
        confluent_cloud->set_cluster_id(cluster_id);
        confluent_cloud->set_topic(confluent_topic);
        confluent_cloud->set_identity_pool_id(identity_pool_id);
        confluent_cloud->set_gcp_service_account(gcp_service_account);
      
        auto topic = client.CreateTopic(request);
        // Note that kAlreadyExists is a possible error when the library retries.
        if (topic.status().code() == google::cloud::StatusCode::kAlreadyExists) {
          std::cout << "The topic already exists\n";
          return;
        }
        if (!topic) throw std::move(topic).status();
      
        std::cout << "The topic was successfully created: " << topic->DebugString()
                  << "\n";
      }

      Go

      En el siguiente ejemplo se usa la versión principal de la biblioteca de cliente de Pub/Sub de Go (v2). Si sigues usando la biblioteca v1, consulta la guía de migración a la versión 2. Para ver una lista de ejemplos de código de la versión 1, consulta los ejemplos de código obsoletos.

      Antes de probar este ejemplo, sigue las instrucciones de configuración de Go que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Go de Pub/Sub.

      import (
      	"context"
      	"fmt"
      	"io"
      
      	"cloud.google.com/go/pubsub"
      )
      
      func createTopicWithConfluentCloudIngestion(w io.Writer, projectID, topicID, bootstrapServer, clusterID, confluentTopic, poolID, gcpSA string) error {
      	// projectID := "my-project-id"
      	// topicID := "my-topic"
      
      	// // Confluent Cloud ingestion settings.
      	// bootstrapServer := "bootstrap-server"
      	// clusterID := "cluster-id"
      	// confluentTopic := "confluent-topic"
      	// poolID := "identity-pool-id"
      	// gcpSA := "gcp-service-account"
      
      	ctx := context.Background()
      	client, err := pubsub.NewClient(ctx, projectID)
      	if err != nil {
      		return fmt.Errorf("pubsub.NewClient: %w", err)
      	}
      	defer client.Close()
      
      	cfg := &pubsub.TopicConfig{
      		IngestionDataSourceSettings: &pubsub.IngestionDataSourceSettings{
      			Source: &pubsub.IngestionDataSourceConfluentCloud{
      				BootstrapServer:   bootstrapServer,
      				ClusterID:         clusterID,
      				Topic:             confluentTopic,
      				IdentityPoolID:    poolID,
      				GCPServiceAccount: gcpSA,
      			},
      		},
      	}
      	t, err := client.CreateTopicWithConfig(ctx, topicID, cfg)
      	if err != nil {
      		return fmt.Errorf("CreateTopic: %w", err)
      	}
      	fmt.Fprintf(w, "Created topic with Confluent Cloud ingestion: %v\n", t)
      	return nil
      }
      

      Java

      Antes de probar este ejemplo, sigue las instrucciones de configuración de Java que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Java de Pub/Sub.

      
      import com.google.cloud.pubsub.v1.TopicAdminClient;
      import com.google.pubsub.v1.IngestionDataSourceSettings;
      import com.google.pubsub.v1.Topic;
      import com.google.pubsub.v1.TopicName;
      import java.io.IOException;
      
      public class CreateTopicWithConfluentCloudIngestionExample {
        public static void main(String... args) throws Exception {
          // TODO(developer): Replace these variables before running the sample.
          String projectId = "your-project-id";
          String topicId = "your-topic-id";
          // Confluent Cloud ingestion settings.
          String bootstrapServer = "bootstrap-server";
          String clusterId = "cluster-id";
          String confluentTopic = "confluent-topic";
          String identityPoolId = "identity-pool-id";
          String gcpServiceAccount = "gcp-service-account";
      
          createTopicWithConfluentCloudIngestionExample(
              projectId,
              topicId,
              bootstrapServer,
              clusterId,
              confluentTopic,
              identityPoolId,
              gcpServiceAccount);
        }
      
        public static void createTopicWithConfluentCloudIngestionExample(
            String projectId,
            String topicId,
            String bootstrapServer,
            String clusterId,
            String confluentTopic,
            String identityPoolId,
            String gcpServiceAccount)
            throws IOException {
          try (TopicAdminClient topicAdminClient = TopicAdminClient.create()) {
            TopicName topicName = TopicName.of(projectId, topicId);
      
            IngestionDataSourceSettings.ConfluentCloud confluentCloud =
                IngestionDataSourceSettings.ConfluentCloud.newBuilder()
                    .setBootstrapServer(bootstrapServer)
                    .setClusterId(clusterId)
                    .setTopic(confluentTopic)
                    .setIdentityPoolId(identityPoolId)
                    .setGcpServiceAccount(gcpServiceAccount)
                    .build();
            IngestionDataSourceSettings ingestionDataSourceSettings =
                IngestionDataSourceSettings.newBuilder().setConfluentCloud(confluentCloud).build();
      
            Topic topic =
                topicAdminClient.createTopic(
                    Topic.newBuilder()
                        .setName(topicName.toString())
                        .setIngestionDataSourceSettings(ingestionDataSourceSettings)
                        .build());
      
            System.out.println(
                "Created topic with Confluent Cloud ingestion settings: " + topic.getAllFields());
          }
        }
      }

      Node.js

      Antes de probar este ejemplo, sigue las instrucciones de configuración de Node.js que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Node.js de Pub/Sub.

      /**
       * TODO(developer): Uncomment these variables before running the sample.
       */
      // const topicNameOrId = 'YOUR_TOPIC_NAME_OR_ID';
      // const bootstrapServer = 'url:port';
      // const clusterId = 'YOUR_CLUSTER_ID';
      // const confluentTopic = 'YOUR_CONFLUENT_TOPIC';
      // const identityPoolId = 'pool-ID';
      // const gcpServiceAccount = 'ingestion-account@...';
      
      // Imports the Google Cloud client library
      const {PubSub} = require('@google-cloud/pubsub');
      
      // Creates a client; cache this for further use
      const pubSubClient = new PubSub();
      
      async function createTopicWithConfluentCloudIngestion(
        topicNameOrId,
        bootstrapServer,
        clusterId,
        confluentTopic,
        identityPoolId,
        gcpServiceAccount,
      ) {
        // Creates a new topic with Confluent Cloud ingestion.
        await pubSubClient.createTopic({
          name: topicNameOrId,
          ingestionDataSourceSettings: {
            confluentCloud: {
              bootstrapServer,
              clusterId,
              topic: confluentTopic,
              identityPoolId,
              gcpServiceAccount,
            },
          },
        });
        console.log(`Topic ${topicNameOrId} created with Confluent Cloud ingestion.`);
      }

      Node.ts

      Antes de probar este ejemplo, sigue las instrucciones de configuración de Node.js que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Node.js de Pub/Sub.

      /**
       * TODO(developer): Uncomment these variables before running the sample.
       */
      // const topicNameOrId = 'YOUR_TOPIC_NAME_OR_ID';
      // const bootstrapServer = 'url:port';
      // const clusterId = 'YOUR_CLUSTER_ID';
      // const confluentTopic = 'YOUR_CONFLUENT_TOPIC';
      // const identityPoolId = 'pool-ID';
      // const gcpServiceAccount = 'ingestion-account@...';
      
      // Imports the Google Cloud client library
      import {PubSub} from '@google-cloud/pubsub';
      
      // Creates a client; cache this for further use
      const pubSubClient = new PubSub();
      
      async function createTopicWithConfluentCloudIngestion(
        topicNameOrId: string,
        bootstrapServer: string,
        clusterId: string,
        confluentTopic: string,
        identityPoolId: string,
        gcpServiceAccount: string,
      ) {
        // Creates a new topic with Confluent Cloud ingestion.
        await pubSubClient.createTopic({
          name: topicNameOrId,
          ingestionDataSourceSettings: {
            confluentCloud: {
              bootstrapServer,
              clusterId,
              topic: confluentTopic,
              identityPoolId,
              gcpServiceAccount,
            },
          },
        });
        console.log(`Topic ${topicNameOrId} created with Confluent Cloud ingestion.`);
      }

      Python

      Antes de probar este ejemplo, sigue las instrucciones de configuración de Python que se indican en la guía de inicio rápido sobre cómo usar bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API de Python de Pub/Sub.

      from google.cloud import pubsub_v1
      from google.pubsub_v1.types import Topic
      from google.pubsub_v1.types import IngestionDataSourceSettings
      
      # TODO(developer)
      # project_id = "your-project-id"
      # topic_id = "your-topic-id"
      # bootstrap_server = "your-bootstrap-server"
      # cluster_id = "your-cluster-id"
      # confluent_topic = "your-confluent-topic"
      # identity_pool_id = "your-identity-pool-id"
      # gcp_service_account = "your-gcp-service-account"
      
      publisher = pubsub_v1.PublisherClient()
      topic_path = publisher.topic_path(project_id, topic_id)
      
      request = Topic(
          name=topic_path,
          ingestion_data_source_settings=IngestionDataSourceSettings(
              confluent_cloud=IngestionDataSourceSettings.ConfluentCloud(
                  bootstrap_server=bootstrap_server,
                  cluster_id=cluster_id,
                  topic=confluent_topic,
                  identity_pool_id=identity_pool_id,
                  gcp_service_account=gcp_service_account,
              )
          ),
      )
      
      topic = publisher.create_topic(request=request)
      
      print(f"Created topic: {topic.name} with Confluent Cloud Ingestion Settings")

    Si tienes problemas, consulta Solucionar problemas al importar un tema de Confluent Cloud.

    Editar un tema de importación de Confluent Cloud Hubs

    Para editar la configuración de la fuente de datos de ingestión de un tema de importación de Confluent Cloud, sigue estos pasos:

    Consola

    1. En la Google Cloud consola, ve a la página Temas.

      Ir a Temas

    2. Haz clic en el tema de importación de Confluent Cloud.

    3. En la página de detalles del tema, haz clic en Editar.

    4. Actualiza los campos que quieras cambiar.

    5. Haz clic en Actualizar.

    gcloud

    1. In the Google Cloud console, activate Cloud Shell.

      Activate Cloud Shell

      At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

      Para no perder la configuración del tema de importación, asegúrate de incluirla por completo cada vez que actualices el tema. Si te olvidas de algo, Pub/Sub restablecerá el ajuste a su valor predeterminado original.

    2. Ejecuta el comando gcloud pubsub topics update con todas las marcas mencionadas en el siguiente ejemplo:

      gcloud pubsub topics update TOPIC_ID \
         --confluent-cloud-ingestion-bootstrap-server CONFLUENT_BOOTSTRAP_SERVER \
         --confluent-cloud-ingestion-cluster-id CONFLUENT_CLUSTER_ID \
         --confluent-cloud-ingestion-topic CONFLUENT_TOPIC \
         --confluent-cloud-ingestion-identity-pool-id CONFLUENT_IDENTITY_POOL_ID \
         --confluent-cloud-ingestion-service-account PUBSUB_SERVICE_ACCOUNT

      Haz los cambios siguientes:

      • TOPIC_ID: el nombre o el ID de tu tema de Pub/Sub.
      • CONFLUENT_BOOTSTRAP_SERVER: el servidor de arranque de tu clúster que contiene el tema de Kafka que estás ingiriendo en Pub/Sub. El formato es el siguiente: hostname:port.
      • CONFLUENT_CLUSTER_ID: ID del clúster que contiene el tema de Kafka que estás ingiriendo en Pub/Sub
      • CONFLUENT_TOPIC: nombre del tema de Kafka que estás ingiriendo en Pub/Sub.
      • CONFLUENT_IDENTITY_POOL_ID: ID del grupo de identidades utilizado para autenticarte en Confluent Cloud.
      • CONFLUENT_IDENTITY_POOL_ID: la cuenta de servicio que has creado en Crear una cuenta de servicio en Google Cloud.

    Cuotas y límites

    El rendimiento de publicación de los temas de importación está limitado por la cuota de publicación del tema. Para obtener más información, consulta las cuotas y los límites de Pub/Sub.

    Siguientes pasos

    Apache Kafka® es una marca registrada de Apache Software Foundation o sus filiales en Estados Unidos u otros países.