エージェントの手動登録を使用する

Agent Registry を使用すると、 Google Cloudの外部でホストされている、サポートされていないランタイムで実行されている、または異なる Google Cloud プロジェクトにデプロイされている A2A 準拠の標準 REST エージェントを手動で登録できます。これらのエージェントに Service リソースを作成すると、エンドポイントと機能を AI エコシステム全体で検出できるようになります。

Agent Registry は、一元化された Google Cloud ガバナンス プロジェクトを使用します。このドキュメントでは、リモートという用語は、ガバナンス プロジェクトの外部(別の Google Cloud プロジェクト、オンプレミス環境、外部クラウドなど)でホストされているエージェント、またはサポートされていないランタイムで実行されているエージェントを指します。自動登録では、Agent Registry が有効になっているガバナンス プロジェクトにデプロイされたサポート対象のリソースのみが検出されるため、リモート エージェントをガバナンス プロジェクトのレジストリに手動で登録する必要があります。

エージェントの種類と制限事項

次の 2 種類のエージェントを手動で登録できます。

us と eu のマルチリージョン ロケーションでは、手動登録はサポートされていません。サポート対象の地域または global ロケーションを使用する必要があります。詳細については、Agent Registry のロケーションをご覧ください。

始める前に

  1. Agent Registry を設定する。
  2. Agent Registry が有効になっているガバナンス プロジェクトのプロジェクト ID を取得します。

  3. このドキュメントの Google Cloud CLI コマンドを使用するには、gcloud CLI 環境を設定します。

必要なロール

Agent Registry にエージェントを手動で登録するために必要な権限を取得するには、Agent Registry が有効になっているガバナンス プロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。

  • Agent Registry にエージェントを登録する: Agent Registry API 編集者 (roles/agentregistry.editor)
  • プロジェクト間の登録で、別の Google Cloud プロジェクトのエージェント メタデータにアクセスする場合: Agent Registry API 閲覧者 (roles/agentregistry.viewer)

ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

エージェントのエンドポイントまたはエージェント カードに、標準の公開 URL を使用してアクセスできる場合、または事前構成された認証情報を使用して認証されている場合は、追加の権限は必要ありません。

A2A 準拠のエージェントを登録する

リモート エージェントが A2A 仕様を実装している場合は、エージェント レジストリをエージェントの agent-card.json ペイロードに転送します。レジストリは、エージェント カードを自動的に同期し、エージェントが利用可能な A2A スキルをインデックスに登録して、検出できるようにします。

エージェントを登録する手順は次のとおりです。

コンソール

  1. Google Cloud コンソールで [Agent Registry] に移動します。

    Agent Registry に移動

  2. プロジェクト選択ツールから、Agent Registry を設定した Google Cloud プロジェクトを選択します。

  3. [エージェント] タブを選択します。

  4. [エージェントを追加] をクリックします。

  5. [エージェントの詳細] パネルで、次の詳細を入力します。

    • タイプ: [A2A] を選択します。
    • リージョン: エージェントを登録する地理的位置を選択します。
  6. 次のいずれかのオプションを選択します。

    • エージェント カードの URL を使用してエージェントを登録するには、[URI から] タブを選択し、[URI] フィールドに有効な URL を入力します。[インポート] をクリックして、URL からエージェント カードを取得します。
    • エージェント カードのコンテンツをコピーして貼り付けるには、[JSON を貼り付け] タブを選択し、agent-card.json ファイルのすべてのコンテンツを貼り付けます。
  7. [保存] をクリックします。

gcloud

使用する仕様フラグによって、コンポーネントが属するリソース コレクションが決まります。フラグとリソース コレクションの完全なマッピングについては、[サービス リソースと検出リソース](/agent-registry/data-model#service-resources)をご覧ください。

A2A エージェントを登録するには、エージェントのエージェント カードをローカル JSON ファイル(agent-card.json など)として保存し、gcloud agent-registry services create コマンドを実行します。

gcloud agent-registry services create AGENT_NAME \
    --project=PROJECT_ID \
    --location=REGION \
    --display-name="DISPLAY_NAME" \
    --agent-spec-type=a2a-agent-card \
    --agent-spec-content=agent-card.json

仕様ファイルの最大ファイルサイズは 10 KB です。

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

  • AGENT_NAME: エージェントに割り当てる ID(例: my-support-agent)。ID は 4 ~ 63 文字で、英小文字、数字、ハイフンのみを使用できます。
  • PROJECT_ID: プロジェクト ID。
  • REGION: エージェントを登録するリージョン。特定のリージョンを使用しない場合は、値 global を使用します。
  • DISPLAY_NAME: エージェントに付ける対人可読名(例: Support Agent)。

Terraform

構成する仕様ブロックによって、コンポーネントが属するリソース コレクションが決まります。仕様とリソース コレクションの完全なマッピングについては、[サービス リソースと検出リソース](/agent-registry/data-model#service-resources)をご覧ください。

A2A 準拠のエージェントを登録するには、google_agent_registry_service リソースを構成します。A2A_AGENT_CARD タイプと、エージェント カードの JSON ペイロードを表す content を含む agent_spec ブロックを指定します。

resource "google_agent_registry_service" "a2a_agent" {
  location     = "REGION"
  service_id   = "AGENT_NAME"
  display_name = "DISPLAY_NAME"

  agent_spec {
    type = "A2A_AGENT_CARD"
    content = jsonencode({
      name               = "AGENT_NAME"
      description        = "A custom support agent registered using Terraform."
      version            = "1.0.0"
      capabilities       = {}
      defaultInputModes  = ["text/plain"]
      defaultOutputModes = ["text/plain"]
      supportedInterfaces = [
        {
          url             = "https://api.example.com/v1/agents/support"
          protocolBinding = "JSONRPC"
          protocolVersion = "1.0"
        }
      ]
      skills = [
        {
          id          = "customer_lookup"
          name        = "customer_lookup"
          description = "Looks up customer info by email address."
          tags        = ["support", "customer"]
        }
      ]
    })
  }
}

output "agent_resource_name" {
  description = "The generated read-only Agent resource name."
  value       = google_agent_registry_service.a2a_agent.registry_resource
}

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

  • REGION: エージェントを登録するリージョン。
  • AGENT_NAME: エージェントに割り当てる一意の ID(例: my-support-agent)。ID は 4 ~ 63 文字で、英小文字、数字、ハイフンのみを使用できます。
  • DISPLAY_NAME: エージェントに付ける対人可読名(例: Support Agent)。

標準 REST エージェントを登録する

標準の REST エージェントは、名前と説明で検出可能ですが、A2A プロトコルを採用していない限り、検索可能な A2A スキルはありません。

A2A 仕様を実装していないリモート エージェントを登録するには、A2A 以外の Service リソースを作成します。Agent Registry は、エンドポイント URL を含む agents コレクション内の A2A エージェント以外のエージェントに対して、読み取り専用の Agent リソースを生成します。これにより、オーケストレーター、他のエージェント、Agent Gateway がエージェントを検出して接続できるようになります。

Google Cloud コンソールでエージェント タイプを Non-A2A に設定するか、gcloud CLI コマンドで --agent-spec-type=no-spec フラグを使用すると、AI エージェントが登録されます。そのエージェントを Endpoint リソースとして個別に登録しないでください。Endpoint リソースは、データベース API、サードパーティ SaaS API、Google API などのエージェント以外の REST API またはウェブサービスへのエージェントの下り(外向き)接続を管理する場合にのみ登録します。エージェント以外の API 宛先を登録する手順については、エンドポイントを登録するをご覧ください。

エージェントを登録する手順は次のとおりです。

コンソール

  1. Google Cloud コンソールで [Agent Registry] に移動します。

    Agent Registry に移動

  2. プロジェクト選択ツールから、Agent Registry を設定した Google Cloud プロジェクトを選択します。

  3. [エージェント] タブを選択します。

  4. [エージェントを追加] をクリックします。

  5. [エージェントの詳細] パネルで、次の詳細を入力します。

    • Type: [Non-A2A] を選択します。
    • 名前: エージェントの対人可読表示名(Travel Agent など)を入力します。
    • 説明: エージェントの機能の説明を入力します(例: A test agent that plans travel itineraries.)。
    • リージョン: エージェントを登録する地理的位置を選択します。
    • エンドポイント: エージェントがホストされているエンドポイントを入力します。
  6. [保存] をクリックします。

gcloud

使用する仕様フラグによって、コンポーネントが属するリソース コレクションが決まります。フラグとリソース コレクションの完全なマッピングについては、[サービス リソースと検出リソース](/agent-registry/data-model#service-resources)をご覧ください。

標準 REST エージェントを登録し、エージェントがホストされているエンドポイント URL を指定するには、--agent-spec-type=no-spec と --interfaces フラグを指定して gcloud agent-registry services create コマンドを実行します。

gcloud agent-registry services create AGENT_NAME \
    --project=PROJECT_ID \
    --location=REGION \
    --display-name="DISPLAY_NAME" \
    --agent-spec-type=no-spec \
    --interfaces=url=ENDPOINT_URL,protocolBinding=PROTOCOL

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

  • AGENT_NAME: エージェントに割り当てる ID(例: my-remote-rest-agent)。ID は 4 ~ 63 文字で、英小文字、数字、ハイフンのみを使用できます。
  • PROJECT_ID: プロジェクト ID。
  • REGION: レジストリ リージョン。
  • DISPLAY_NAME: エージェントに付ける対人可読名(例: Remote REST Agent)。
  • ENDPOINT_URL: エージェントの API エンドポイント URL(例: https://api.example.com/v1/agents/1234)。
  • PROTOCOL: エンドポイントのプロトコル バインディング。有効な値は http-json、grpc、jsonrpc です。

Terraform

構成する仕様ブロックによって、コンポーネントが属するリソース コレクションが決まります。仕様とリソース コレクションの完全なマッピングについては、[サービス リソースと検出リソース](/agent-registry/data-model#service-resources)をご覧ください。

標準の REST エージェントを登録するには、agent_spec を NO_SPEC タイプに設定して google_agent_registry_service リソースを構成し、エンドポイント インターフェース接続を定義します。

resource "google_agent_registry_service" "rest_agent" {
  location     = "REGION"
  service_id   = "AGENT_NAME"
  display_name = "DISPLAY_NAME"
  description  = "A standard REST agent registered using Terraform."

  agent_spec {
    type = "NO_SPEC"
  }

  interfaces {
    url              = "ENDPOINT_URL"
    protocol_binding = "PROTOCOL"
  }
}

output "agent_resource_name" {
  description = "The generated read-only Agent resource name."
  value       = google_agent_registry_service.rest_agent.registry_resource
}

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

  • REGION: エージェントを登録するリージョン。
  • AGENT_NAME: エージェントに割り当てる一意の ID(例: my-remote-rest-agent)。ID は 4 ~ 63 文字で、英小文字、数字、ハイフンのみを使用できます。
  • DISPLAY_NAME: エージェントに付ける対人可読名(例: Remote REST Agent)。
  • ENDPOINT_URL: エージェントの API エンドポイント URL(例: https://api.example.com/v1/agents/1234)。
  • PROTOCOL: エンドポイントのプロトコル バインディング。有効な値は HTTP_JSON、GRPC、JSONRPC です。

別のプロジェクトからエージェントを登録する

組織が複数の Google Cloud プロジェクトにエージェントをデプロイし、Agent-to-Anywhere 下り(外向き)モードで中央の Agent Gateway を使用してトラフィックを管理している場合は、他の Google Cloud プロジェクトから中央のガバナンス プロジェクトのレジストリに各リモート エージェントを手動で登録する必要があります。このアーキテクチャの詳細については、サンプル デプロイ パターンをご覧ください。

プロジェクト間の登録に関する考慮事項

プロジェクト間でエージェントを登録する前に、次の点を確認してください。

  • 互換性のあるロケーション: Agent Registry インスタンス、Agent Gateway、Agent Endpoint は、同じ地理的リージョンまたは global ロケーションに存在する必要があります。
  • 自動検出の制限: プロジェクト間の自動検出はサポートされていません。各リモート エージェントを手動で登録する必要があります。
  • ライフサイクル管理: エージェントが実行されている他のGoogle Cloud プロジェクトで変更が発生しても、Agent Registry の手動エントリは自動的に更新または削除されません。リモート エージェントが変更または削除された場合は、中央レジストリでこれらのエントリのライフサイクルを管理する必要があります。
  • 外向きモードのみ: Agent Gateway を使用したプロジェクト間のガバナンスは、Agent-to-Anywhere 外向きゲートウェイでのみサポートされます。クライアントからエージェントへの Ingress ゲートウェイでは、エージェントとゲートウェイが同じプロジェクトに存在する必要があります。

リモート エージェントを登録する

別のプロジェクトからエージェントを手動で登録する手順は次のとおりです。

コンソール

  1. Google Cloud コンソールで [Agent Registry] に移動します。

    Agent Registry に移動

  2. プロジェクト選択ツールで、エージェントを登録する中央ガバナンス プロジェクトを選択します。

  3. [エージェント] タブを選択します。

  4. [エージェントを追加] をクリックします。

  5. [エージェントの詳細] パネルで、次の詳細を入力します。

    • タイプ: リモート エージェントが A2A プロトコルを実装している場合は [A2A] を選択し、標準の REST エンドポイントの場合は [非 A2A] を選択します。
    • リージョン: セントラル ゲートウェイとリモート エージェントのデプロイに一致するリージョンを選択します。
  6. Agent Endpoint を指定します。

    • A2A エージェントの場合は、[URI から] を選択してリモート エージェントのエージェント カードの URL を入力するか、[JSON を貼り付け] を選択して agent-card.json の内容を貼り付けます。
    • A2A 以外のエージェントの場合は、リモート エージェントのエンドポイント URL を入力します。
  7. [保存] をクリックします。

gcloud

使用する仕様フラグによって、コンポーネントが属するリソース コレクションが決まります。フラグとリソース コレクションの完全なマッピングについては、[サービス リソースと検出リソース](/agent-registry/data-model#service-resources)をご覧ください。

gcloud agent-registry services create AGENT_NAME \
    --project=CENTRAL_PROJECT_ID \
    --location=REGION \
    --display-name="DISPLAY_NAME" \
    --agent-spec-type=a2a-agent-card \
    --agent-spec-content=agent-card.json
  • REST エージェント: 別のプロジェクトから標準の REST エージェントを登録するには、gcloud agent-registry services create コマンドを実行します。
gcloud agent-registry services create AGENT_NAME \
    --project=CENTRAL_PROJECT_ID \
    --location=REGION \
    --display-name="DISPLAY_NAME" \
    --agent-spec-type=no-spec \
    --interfaces=url=REMOTE_ENDPOINT_URL,protocolBinding=PROTOCOL

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

  • AGENT_NAME: 中央レジストリ内のエージェントの ID(例: remote-support-agent)。ID は 4 ~ 63 文字で、使用できるのは英小文字、数字、ハイフンのみです。
  • CENTRAL_PROJECT_ID: 一元管理プロジェクトのプロジェクト ID。
  • REGION: エージェントを登録するリージョン。中央ゲートウェイとリモート エージェントが存在するリージョン(例: us-central1)。
  • DISPLAY_NAME: エージェントの人が読める形式の名前(例: Remote Support Agent)。
  • REMOTE_ENDPOINT_URL: 別の Google Cloud プロジェクトで実行されているリモート エージェントのエンドポイント URL(例: https://remote-support-agent-abc123.us-central1.run.app、https://api.example.com/v1/agents/support)。
  • PROTOCOL: エンドポイントのプロトコル バインディング。有効な値は http-json、grpc、jsonrpc です。

Terraform

構成する仕様ブロックによって、コンポーネントが属するリソース コレクションが決まります。仕様とリソース コレクションの完全なマッピングについては、[サービス リソースと検出リソース](/agent-registry/data-model#service-resources)をご覧ください。

Terraform を使用して中央ガバナンス プロジェクトにリモート エージェントを登録するには、google_agent_registry_service リソースを構成し、中央プロジェクトを指定します。

resource "google_agent_registry_service" "remote_agent" {
  project      = "CENTRAL_PROJECT_ID"
  location     = "REGION"
  service_id   = "AGENT_NAME"
  display_name = "DISPLAY_NAME"
  description  = "Remote agent registered from project AGENT_PROJECT_ID."

  agent_spec {
    type = "NO_SPEC"
  }

  interfaces {
    url              = "REMOTE_ENDPOINT_URL"
    protocol_binding = "PROTOCOL"
  }
}

output "agent_resource_name" {
  description = "The generated read-only Agent resource name."
  value       = google_agent_registry_service.remote_agent.registry_resource
}

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

  • CENTRAL_PROJECT_ID: 一元管理プロジェクトのプロジェクト ID。
  • REGION: エージェントを登録するリージョン。中央ゲートウェイとリモート エージェントが存在するリージョン(例: us-central1)。
  • AGENT_NAME: レジストリ内のエージェントの一意の ID(例: remote-support-agent)。ID は 4 ~ 63 文字で、英小文字、数字、ハイフンのみを使用できます。
  • DISPLAY_NAME: エージェントの人が読める形式の名前(例: Remote Support Agent)。
  • AGENT_PROJECT_ID: リモート エージェントがホストされている別の Google Cloud プロジェクトのプロジェクト ID。
  • REMOTE_ENDPOINT_URL: 別の Google Cloud プロジェクトで実行されているリモート エージェントのエンドポイント URL(例: https://remote-support-agent-abc123.us-central1.run.app、https://api.example.com/v1/agents/support)。
  • PROTOCOL: エンドポイントのプロトコル バインディング。有効な値は HTTP_JSON、GRPC、JSONRPC です。

登録を確認する

エージェントを登録したら、Agent Registry が Service リソースを正常に処理し、対応する読み取り専用の Agent リソースを作成したことを確認します。

コンソール

  1. Google Cloud コンソールで [Agent Registry] に移動します。

    Agent Registry に移動

  2. プロジェクト選択ツールから、Agent Registry を設定した Google Cloud プロジェクトを選択します。

  3. [エージェント] タブを選択します。

    このページには、登録されているすべてのエージェントとその詳細のリストが表示されます。

gcloud

gcloud agent-registry agents list コマンドを使用して、レジストリに登録されているエージェントを一覧表示します。

gcloud agent-registry agents list \
    --project=PROJECT_ID \
    --location=REGION

複数のエージェントがある場合、または単一のエージェントの登録を確認する場合は、エージェントのメタデータでリストをフィルタできます。

gcloud agent-registry agents list \
    --project=PROJECT_ID \
    --location=REGION \
    --filter="FILTER_EXPRESSION"

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

  • PROJECT_ID: プロジェクト ID。
  • REGION: エージェントを登録するリージョン。特定のリージョンを使用しない場合は、値 global を使用します。
  • FILTER_EXPRESSION: フィルタするエージェントのフィルタ式。たとえば、表示名でフィルタするには、displayName='DISPLAY_NAME' を使用します。グローバルに一意のエージェント識別子(URN)でフィルタするには、agentId='urn:agent:AGENT_URN' を使用します。

Terraform

google_agent_registry_agent データソースを使用して、他の Terraform 構成で登録済みのエージェントを参照します。

data "google_agent_registry_agent" "my_agent" {
  location = "REGION"
  filter = "displayName=\"DISPLAY_NAME\""
}

output "agent_urn" {
  value = data.google_agent_registry_agent.my_agent.urn
}

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

  • REGION: レジストリ リージョン。
  • DISPLAY_NAME: エージェントの人が読める表示名。

次のステップ