Google Cloud Managed Service for Apache Kafka トピックを削除する

単一のトピックを削除するには、 Google Cloud コンソール、Google Cloud CLI、クライアント ライブラリ、Managed Kafka API、またはオープンソースの Apache Kafka API を使用します。

トピックの削除に必要なロールと権限

トピックの削除に必要な権限を取得するには、プロジェクトに対する Managed Kafka トピック編集者(roles/managedkafka.topicEditor)の IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。

この事前定義ロールには、トピックの削除に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

トピックを削除するには、次の権限が必要です。

  • トピックを削除する: managedkafka.topics.delete

カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

このロールの詳細については、Managed Service for Apache Kafka の事前定義ロールをご覧ください。

トピックの削除

トピックの削除は元に戻すことができず、そのトピックに保存されているすべてのデータが完全に失われます。続行する前に、適切なバックアップがあること、または必要なデータがエクスポートされていることを確認してください。

トピックを削除する前に、トピックに登録して別のトピックから消費するコンシューマーを停止または再構成してください。

トピックを削除する手順は次のとおりです。

コンソール

  1. Google Cloud コンソールで、[クラスタ] ページに移動します。

    [クラスタ] に移動

  2. クラスタのリストで、削除するトピックが属するクラスタをクリックします。

    [クラスタの詳細] ページが開きます。クラスタの詳細ページの [リソース] タブに、トピックが一覧表示されます。

  3. 削除するトピックをクリックします。

    [トピックの詳細] ページが開きます。

  4. [削除] をクリックし、オペレーションを確認します。

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. gcloud managed-kafka topics delete コマンドを実行します。

    gcloud managed-kafka topics delete TOPIC_ID \
        --cluster=CLUSTER_ID \
        --location=LOCATION_ID
    

    このコマンドは、指定されたトピックを指定された Google Cloud Managed Service for Apache Kafka クラスタから削除します。トピックに関連付けられているすべてのデータが削除され、プロデューサーまたはコンシューマーがトピックにアクセスできなくなります。

    次のように置き換えます。

    • TOPIC_ID: 削除するトピックの ID。
    • CLUSTER_ID: トピックが配置されているクラスタの ID。
    • LOCATION_ID: クラスタのロケーション。
  3. REST

    リクエストのデータを使用する前に、次のように置き換えます。

    • PROJECT_ID: 実際の Google Cloud プロジェクト ID
    • LOCATION: クラスタのロケーション
    • CLUSTER_ID: クラスタの ID
    • TOPIC_ID: トピックの ID

    HTTP メソッドと URL:

    DELETE https://managedkafka.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/clusters/CLUSTER_ID/topics/TOPIC_ID

    リクエストを送信するには、次のいずれかのオプションを展開します。

    次のような JSON レスポンスが返されます。

    {}
    

    Go

    このサンプルを試す前に、 クライアント ライブラリをインストールするにある Go の設定手順を行ってください。詳細については、 Managed Service for Apache Kafka Go API のリファレンス ドキュメントをご覧ください。

    Managed Service for Apache Kafka に対する認証を行うには、アプリケーションのデフォルト認証情報(ADC)を設定します。詳細については、ローカル開発環境の ADC の設定をご覧ください。

    import (
    	"context"
    	"fmt"
    	"io"
    
    	"cloud.google.com/go/managedkafka/apiv1/managedkafkapb"
    	"google.golang.org/api/option"
    
    	managedkafka "cloud.google.com/go/managedkafka/apiv1"
    )
    
    func deleteTopic(w io.Writer, projectID, region, clusterID, topicID string, opts ...option.ClientOption) error {
    	// projectID := "my-project-id"
    	// region := "us-central1"
    	// clusterID := "my-cluster"
    	// topicID := "my-topic"
    	ctx := context.Background()
    	client, err := managedkafka.NewClient(ctx, opts...)
    	if err != nil {
    		return fmt.Errorf("managedkafka.NewClient got err: %w", err)
    	}
    	defer client.Close()
    
    	clusterPath := fmt.Sprintf("projects/%s/locations/%s/clusters/%s", projectID, region, clusterID)
    	topicPath := fmt.Sprintf("%s/topics/%s", clusterPath, topicID)
    	req := &managedkafkapb.DeleteTopicRequest{
    		Name: topicPath,
    	}
    	if err := client.DeleteTopic(ctx, req); err != nil {
    		return fmt.Errorf("client.DeleteTopic got err: %w", err)
    	}
    	fmt.Fprint(w, "Deleted topic\n")
    	return nil
    }
    

    Java

    このサンプルを試す前に、 クライアント ライブラリをインストールするにある Java の設定手順を行ってください。詳細については、 Managed Service for Apache Kafka Java API リファレンス ドキュメントをご覧ください。

    Managed Service for Apache Kafka に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、 ローカル開発環境の ADC の設定をご覧ください。

    import com.google.api.gax.rpc.ApiException;
    import com.google.cloud.managedkafka.v1.ManagedKafkaClient;
    import com.google.cloud.managedkafka.v1.TopicName;
    import java.io.IOException;
    
    public class DeleteTopic {
    
      public static void main(String[] args) throws Exception {
        // TODO(developer): Replace these variables before running the example.
        String projectId = "my-project-id";
        String region = "my-region"; // e.g. us-east1
        String clusterId = "my-cluster";
        String topicId = "my-topic";
        deleteTopic(projectId, region, clusterId, topicId);
      }
    
      public static void deleteTopic(String projectId, String region, String clusterId, String topicId)
          throws Exception {
        try (ManagedKafkaClient managedKafkaClient = ManagedKafkaClient.create()) {
          // This operation is being handled synchronously.
          managedKafkaClient.deleteTopic(TopicName.of(projectId, region, clusterId, topicId));
          System.out.println("Deleted topic");
        } catch (IOException | ApiException e) {
          System.err.printf("managedKafkaClient.deleteTopic got err: %s", e.getMessage());
        }
      }
    }
    

    Python

    このサンプルを試す前に、 クライアント ライブラリをインストールするの Python の設定手順を行ってください。詳細については、 Managed Service for Apache Kafka Python API リファレンス ドキュメントをご覧ください。

    Managed Service for Apache Kafka に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の ADC の設定をご覧ください。

    from google.api_core.exceptions import NotFound
    from google.cloud import managedkafka_v1
    
    # TODO(developer)
    # project_id = "my-project-id"
    # region = "us-central1"
    # cluster_id = "my-cluster"
    # topic_id = "my-topic"
    
    client = managedkafka_v1.ManagedKafkaClient()
    
    topic_path = client.topic_path(project_id, region, cluster_id, topic_id)
    request = managedkafka_v1.DeleteTopicRequest(name=topic_path)
    
    try:
        client.delete_topic(request=request)
        print("Deleted topic")
    except NotFound as e:
        print(f"Failed to delete topic {topic_id} with error: {e.message}")
    

次のステップ