テナントの基本

テナントは、割り当てられている任意のジョブや会社のオブジェクトを所有するエンティティであり、Google Cloud Platform プロジェクトとアップロードされたデータの間に組織の中間層を作成します。テナントを使用すると、データがテナントの壁を超えて共有されるのを防ぐため、複数のプロジェクトを作成しなくても、データのさまざまなグループを分離できます。マルチテナンシーは、複数の顧客が存在し、顧客間でデータを共有したくないものの、内部の請求と報告のために単一の GCP プロジェクトを維持する場合に役立ちます。次に例を示します。

  • 複数の子会社がある組織のために求人サイトを構築している求人サイト プロバイダ。
  • 複数の顧客のために応募者追跡システムを構築している人材採用会社。

各 Google Cloud Platform プロジェクトでは、1 つのデフォルト テナントに対して 1 つの tenant_id が割り当てられています。必要に応じて、特定のプロジェクト内に複数のテナントを作成することによってデフォルトを変更できます。

テナントは互いに完全に分離されています。すべての API で、単一の API 呼び出しによって複数のテナントにまたがってデータが照会されるのを防ぐために、単一のテナントのみが必要とされます。機械学習(ML)でも同様に、テナントが個別の単位として扱われ、テナントの壁を越えません。プロジェクトでは、必要なだけいくつでもテナントをサポートできます。

デフォルト テナント

求人検索 v4beta1 以降では、テナント エンティティが必要です。すべてのプロジェクトに、1 つのデフォルト テナント用の tenant_id が割り当てられています。複数のテナントを使用しない場合は、次のいずれかを実行できます。

  1. プロジェクトのデフォルト テナントを使用します(推奨)。このために特にテナントを参照する必要はありません。projects/{project_id}/jobs/{job_id} 形式を使用でき、Cloud Talent Solution バックエンドではデフォルト テナントを使用していると想定されます。

  2. 単一のテナントを作成し、デフォルト テナントの代わりに使用します。独自のテナントを作成する場合は、projects/{project_id}/tenants/{tenant_id}/jobs/{job_id} を参照する必要があります。

デフォルトの tenant_id は各プロジェクトに固有のものであり、追加のテナントを作成しても上書きされたり置き換えられたりすることはありません。デフォルト テナントで CRUD メソッドを呼び出すことはできません。

作成されたテナント(オプション)

独自のテナントを作成することは省略可です。各求人検索プロジェクトには、CTS バックエンドによってデフォルト テナントが割り当てられます。データの下位地域区分を分離するためにマルチテナンシーを使用したくない場合は、デフォルト テナントを使用することをおすすめします。

テナントを作成する

一意の externalId 値を作成し、新しいテナントに割り当てる必要があります。この呼び出しにより、バックエンド システムによって割り当てられた固有の name が返されます。この値もテナントに割り当てられています。nameexternalId のどちらの値も更新、削除、参照するときに使用するため、必ず記録して保管してください。

以下のコードサンプルでは、新しいテナントを作成します。

Java


import com.google.cloud.talent.v4beta1.CreateTenantRequest;
import com.google.cloud.talent.v4beta1.ProjectName;
import com.google.cloud.talent.v4beta1.Tenant;
import com.google.cloud.talent.v4beta1.TenantServiceClient;
import java.io.IOException;

public class JobSearchCreateTenant {

  public static void createTenant() throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "your-project-id";
    String externalId = "your-external-id";
    createTenant(projectId, externalId);
  }

  // Create Tenant for scoping resources, e.g. companies and jobs.
  public static void createTenant(String projectId, String externalId) throws IOException {
    try (TenantServiceClient tenantServiceClient = TenantServiceClient.create()) {
      ProjectName parent = ProjectName.of(projectId);
      Tenant tenant = Tenant.newBuilder().setExternalId(externalId).build();

      CreateTenantRequest request =
          CreateTenantRequest.newBuilder().setParent(parent.toString()).setTenant(tenant).build();

      Tenant response = tenantServiceClient.createTenant(request);
      System.out.println("Created Tenant");
      System.out.printf("Name: %s\n", response.getName());
      System.out.printf("External ID: %s\n", response.getExternalId());
    }
  }
}

PHP

Cloud Talent Solution クライアントのインストールと作成の詳細については、Cloud Talent Solution クライアント ライブラリをご覧ください。

require __DIR__ . '/vendor/autoload.php';

use Google\Cloud\Talent\V4beta1\TenantServiceClient;
use Google\Cloud\Talent\V4beta1\Tenant;

/** Create Tenant for scoping resources, e.g. companies and jobs */
function sampleCreateTenant($projectId, $externalId)
{

    $tenantServiceClient = new TenantServiceClient();

    // $projectId = 'Your Google Cloud Project ID';
    // $externalId = 'Your Unique Identifier for Tenant';
    $formattedParent = $tenantServiceClient->projectName($projectId);
    $tenant = new Tenant();
    $tenant->setExternalId($externalId);

    try {
        $response = $tenantServiceClient->createTenant($formattedParent, $tenant);
        printf('Created Tenant'.PHP_EOL);
        printf('Name: %s'.PHP_EOL, $response->getName());
        printf('External ID: %s'.PHP_EOL, $response->getExternalId());
    } finally {
        $tenantServiceClient->close();
    }

}

Ruby

Cloud Talent Solution クライアントのインストールと作成の詳細については、Cloud Talent Solution クライアント ライブラリをご覧ください。


# Create Tenant for scoping resources, e.g. companies and jobs
def sample_create_tenant project_id, external_id
  # Instantiate a client
  tenant_client = Google::Cloud::Talent::TenantService.new version: :v4beta1

  # project_id = "Your Google Cloud Project ID"
  # external_id = "Your Unique Identifier for Tenant"
  formatted_parent = tenant_client.class.project_path(project_id)
  tenant = { external_id: external_id }

  response = tenant_client.create_tenant(formatted_parent, tenant)
  puts "Created Tenant"
  puts "Name: #{response.name}"
  puts "External ID: #{response.external_id}"
end

C#

Cloud Talent Solution クライアントのインストールと作成の詳細については、Cloud Talent Solution クライアント ライブラリをご覧ください。

public static object CreateTenant(string projectId, string externalId)
{
    TenantServiceClient tenantServiceClient = TenantServiceClient.Create();
    Tenant tenant = new Tenant
    {
        ExternalId = externalId,
    };
    ProjectName parent = new ProjectName(projectId);
    CreateTenantRequest request = new CreateTenantRequest
    {
        ParentAsProjectName = parent,
        Tenant = tenant
    };
    Tenant response = tenantServiceClient.CreateTenant(request);

    Console.WriteLine($"Created Tenant.");
    Console.WriteLine($"Name: {response.Name}");
    Console.WriteLine($"External ID: {response.ExternalId}");
    return 0;
}

テナントを取得する

Java

Cloud Talent Solution クライアントのインストールと作成の詳細については、Cloud Talent Solution クライアント ライブラリをご覧ください。


import com.google.cloud.talent.v4beta1.GetTenantRequest;
import com.google.cloud.talent.v4beta1.Tenant;
import com.google.cloud.talent.v4beta1.TenantName;
import com.google.cloud.talent.v4beta1.TenantServiceClient;
import java.io.IOException;

public class JobSearchGetTenant {

  public static void getTenant() throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "your-project-id";
    String tenantId = "your-tenant-id";
    getTenant(projectId, tenantId);
  }

  // Get Tenant by name.
  public static void getTenant(String projectId, String tenantId) throws IOException {
    try (TenantServiceClient tenantServiceClient = TenantServiceClient.create()) {
      TenantName name = TenantName.of(projectId, tenantId);

      GetTenantRequest request = GetTenantRequest.newBuilder().setName(name.toString()).build();

      Tenant response = tenantServiceClient.getTenant(request);
      System.out.printf("Name: %s\n", response.getName());
      System.out.printf("External ID: %s\n", response.getExternalId());
    }
  }
}

PHP

Cloud Talent Solution クライアントのインストールと作成の詳細については、Cloud Talent Solution クライアント ライブラリをご覧ください。

require __DIR__ . '/vendor/autoload.php';

use Google\Cloud\Talent\V4beta1\TenantServiceClient;

/** Get Tenant by name */
function sampleGetTenant($projectId, $tenantId)
{

    $tenantServiceClient = new TenantServiceClient();

    // $projectId = 'Your Google Cloud Project ID';
    // $tenantId = 'Your Tenant ID';
    $formattedName = $tenantServiceClient->tenantName($projectId, $tenantId);

    try {
        $response = $tenantServiceClient->getTenant($formattedName);
        printf('Name: %s'.PHP_EOL, $response->getName());
        printf('External ID: %s'.PHP_EOL, $response->getExternalId());
    } finally {
        $tenantServiceClient->close();
    }

}

Ruby

Cloud Talent Solution クライアントのインストールと作成の詳細については、Cloud Talent Solution クライアント ライブラリをご覧ください。


# Get Tenant by name
def sample_get_tenant project_id, tenant_id
  # Instantiate a client
  tenant_client = Google::Cloud::Talent::TenantService.new version: :v4beta1

  # project_id = "Your Google Cloud Project ID"
  # tenant_id = "Your Tenant ID"
  formatted_name = tenant_client.class.tenant_path(project_id, tenant_id)

  response = tenant_client.get_tenant(formatted_name)
  puts "Name: #{response.name}"
  puts "External ID: #{response.external_id}"
end

C#

Cloud Talent Solution クライアントのインストールと作成の詳細については、Cloud Talent Solution クライアント ライブラリをご覧ください。

public static object GetTenant(string projectId, string tenantId)
{
    TenantServiceClient tenantServiceClient = TenantServiceClient.Create();
    TenantName name = TenantName.FromProjectTenant(projectId, tenantId);
    GetTenantRequest request = new GetTenantRequest
    {
        TenantName = name
    };
    Tenant response = tenantServiceClient.GetTenant(request);
    Console.WriteLine($"Name: {response.Name}");
    Console.WriteLine($"External ID: {response.ExternalId}");
    return 0;
}

テナントの一覧表示

Java

Cloud Talent Solution クライアントのインストールと作成の詳細については、Cloud Talent Solution クライアント ライブラリをご覧ください。


import com.google.cloud.talent.v4beta1.ListTenantsRequest;
import com.google.cloud.talent.v4beta1.ProjectName;
import com.google.cloud.talent.v4beta1.Tenant;
import com.google.cloud.talent.v4beta1.TenantServiceClient;
import java.io.IOException;

public class JobSearchListTenants {

  public static void listTenants() throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "your-project-id";
    listTenants(projectId);
  }

  // List Tenants.
  public static void listTenants(String projectId) throws IOException {
    try (TenantServiceClient tenantServiceClient = TenantServiceClient.create()) {
      ProjectName parent = ProjectName.of(projectId);

      ListTenantsRequest request =
          ListTenantsRequest.newBuilder().setParent(parent.toString()).build();

      for (Tenant responseItem : tenantServiceClient.listTenants(request).iterateAll()) {
        System.out.printf("Tenant Name: %s\n", responseItem.getName());
        System.out.printf("External ID: %s\n", responseItem.getExternalId());
      }
    }
  }
}

PHP

Cloud Talent Solution クライアントのインストールと作成の詳細については、Cloud Talent Solution クライアント ライブラリをご覧ください。

require __DIR__ . '/vendor/autoload.php';

use Google\Cloud\Talent\V4beta1\TenantServiceClient;

/** List Tenants */
function sampleListTenants($projectId)
{

    $tenantServiceClient = new TenantServiceClient();

    // $projectId = 'Your Google Cloud Project ID';
    $formattedParent = $tenantServiceClient->projectName($projectId);

    try {
        // Iterate through all elements
        $pagedResponse = $tenantServiceClient->listTenants($formattedParent);
        foreach ($pagedResponse->iterateAllElements() as $responseItem) {
            printf('Tenant Name: %s'.PHP_EOL, $responseItem->getName());
            printf('External ID: %s'.PHP_EOL, $responseItem->getExternalId());
        }
    } finally {
        $tenantServiceClient->close();
    }

}

Ruby

Cloud Talent Solution クライアントのインストールと作成の詳細については、Cloud Talent Solution クライアント ライブラリをご覧ください。


# List Tenants
def sample_list_tenants project_id
  # Instantiate a client
  tenant_client = Google::Cloud::Talent::TenantService.new version: :v4beta1

  # project_id = "Your Google Cloud Project ID"
  formatted_parent = tenant_client.class.project_path(project_id)

  # Iterate over all results.
  tenant_client.list_tenants(formatted_parent).each do |element|
    puts "Tenant Name: #{element.name}"
    puts "External ID: #{element.external_id}"
  end
end

C#

Cloud Talent Solution クライアントのインストールと作成の詳細については、Cloud Talent Solution クライアント ライブラリをご覧ください。

public static object ListTenants(string projectId)
{
    TenantServiceClient tenantServiceClient = TenantServiceClient.Create();
    ProjectName parent = new ProjectName(projectId);
    ListTenantsRequest request = new ListTenantsRequest
    {
        ParentAsProjectName = parent
    };
    var tenants = tenantServiceClient.ListTenants(request);
    foreach (var tenant in tenants)
    {
        Console.WriteLine($"Tenant Name: {tenant.Name}");
        Console.WriteLine($"External ID: {tenant.ExternalId}");
    }
    return 0;
}

テナントを削除する

Java

Cloud Talent Solution クライアントのインストールと作成の詳細については、Cloud Talent Solution クライアント ライブラリをご覧ください。


import com.google.cloud.talent.v4beta1.DeleteTenantRequest;
import com.google.cloud.talent.v4beta1.TenantName;
import com.google.cloud.talent.v4beta1.TenantServiceClient;
import java.io.IOException;

public class JobSearchDeleteTenant {

  public static void deleteTenant() throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "your-project-id";
    String tenantId = "your-tenant-id";
    deleteTenant(projectId, tenantId);
  }

  // Delete Tenant.
  public static void deleteTenant(String projectId, String tenantId) throws IOException {
    try (TenantServiceClient tenantServiceClient = TenantServiceClient.create()) {
      TenantName name = TenantName.of(projectId, tenantId);

      DeleteTenantRequest request =
          DeleteTenantRequest.newBuilder().setName(name.toString()).build();

      tenantServiceClient.deleteTenant(request);
      System.out.println("Deleted Tenant.");
    }
  }
}

PHP

Cloud Talent Solution クライアントのインストールと作成の詳細については、Cloud Talent Solution クライアント ライブラリをご覧ください。

require __DIR__ . '/vendor/autoload.php';

use Google\Cloud\Talent\V4beta1\TenantServiceClient;

/** Delete Tenant */
function sampleDeleteTenant($projectId, $tenantId)
{

    $tenantServiceClient = new TenantServiceClient();

    // $projectId = 'Your Google Cloud Project ID';
    // $tenantId = 'Your Tenant ID)';
    $formattedName = $tenantServiceClient->tenantName($projectId, $tenantId);

    try {
        $tenantServiceClient->deleteTenant($formattedName);
        printf('Deleted Tenant.'.PHP_EOL);
    } finally {
        $tenantServiceClient->close();
    }

}

Ruby

Cloud Talent Solution クライアントのインストールと作成の詳細については、Cloud Talent Solution クライアント ライブラリをご覧ください。


# Delete Tenant
def sample_delete_tenant project_id, tenant_id
  # Instantiate a client
  tenant_client = Google::Cloud::Talent::TenantService.new version: :v4beta1

  # project_id = "Your Google Cloud Project ID"
  # tenant_id = "Your Tenant ID)"
  formatted_name = tenant_client.class.tenant_path(project_id, tenant_id)

  tenant_client.delete_tenant(formatted_name)

  puts "Deleted Tenant."
end

C#

Cloud Talent Solution クライアントのインストールと作成の詳細については、Cloud Talent Solution クライアント ライブラリをご覧ください。

public static object DeleteTenant(string projectId, string tenantId)
{
    TenantServiceClient tenantServiceClient = TenantServiceClient.Create();
    TenantName tenantName = TenantName.FromProjectTenant(projectId, tenantId);
    DeleteTenantRequest request = new DeleteTenantRequest
    {
        TenantName = tenantName
    };
    tenantServiceClient.DeleteTenant(request);
    Console.WriteLine($"Deleted Tenant.");
    return 0;
}