인스턴스 만들기

Bigtable 인스턴스는 Bigtable 클러스터의 컨테이너입니다. 클러스터가 두 개 이상 있는 인스턴스는 복제를 사용합니다. 최대 8개의 리전에 클러스터를 만들 수 있으며, 각 리전에 있는 클러스터 수는 영역 수만큼 만들 수 있습니다.

이 페이지에서는 인스턴스를 만드는 방법을 설명합니다. 이 페이지를 읽기 전에 Bigtable 개요를 숙지해야 합니다. 인스턴스, 클러스터, 노드의 개요도 읽어야 합니다.

시작하기 전에

환경을 준비합니다.

  1. Google 계정에 로그인합니다.

    아직 계정이 없으면 새 계정을 등록하세요.

  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  4. Enable the Cloud Bigtable API, Cloud Bigtable Admin API APIs.

    Enable the APIs

  5. Install the Google Cloud CLI.
  6. To initialize the gcloud CLI, run the following command:

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  8. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  9. Enable the Cloud Bigtable API, Cloud Bigtable Admin API APIs.

    Enable the APIs

  10. Install the Google Cloud CLI.
  11. To initialize the gcloud CLI, run the following command:

    gcloud init
  12. 다음 명령어를 실행하여 cbt CLI를 설치합니다.
    gcloud components install cbt

구성을 계획합니다.

  1. 선택 사항: 복제를 사용 설정하려는 경우 다음을 수행하세요.

  2. 선택 사항: 기본 Google 관리 암호화 대신 고객 관리 암호화 키 (CMEK)를 사용하려면 새 인스턴스를 만들기 전에 CMEK 사용 인스턴스 만들기의 작업을 완료하고 CMEK 키 ID를 준비합니다. CMEK 보호를 생성된 후에는 인스턴스에 추가할 수 없으며 인스턴스가 생성된 후에는 CMEK 키를 수정하거나 바꿀 수 없습니다.

인스턴스 만들기

Bigtable 인스턴스를 만들려면 다음 안내를 따르세요.

콘솔

  1. Google Cloud 콘솔에서 인스턴스 만들기 페이지로 이동합니다.

    인스턴스 만들기로 이동

  2. 인스턴스의 이름을 입력합니다.

    인스턴스 식별을 위해 Google Cloud 콘솔에 이 이름이 표시됩니다.

  3. 인스턴스 ID를 입력합니다.

    인스턴스 ID는 인스턴스의 영구 식별자입니다.

  4. 계속을 클릭합니다.

  5. 클러스터에 SSD 디스크를 사용할지 HDD 디스크를 사용할지 선택합니다. 대부분의 경우 SSD가 가장 좋습니다. 이 선택은 되돌릴 수 없습니다. 자세히 알아보기

  6. 계속을 클릭합니다.

  7. 첫 번째 클러스터의 클러스터 ID를 입력합니다.

    클러스터 ID는 클러스터의 영구 식별자입니다.

  8. 첫 번째 클러스터가 실행될 리전 및 영역을 선택합니다.

  9. 클러스터의 노드 확장 모드를 선택합니다. 대부분의 경우 자동 확장을 선택해야 합니다. 확장 안내는 자동 확장을 참조하세요.

    1. 수동 노드 할당에 첫 번째 클러스터의 Bigtable 노드 수를 입력합니다. 얼마나 많은 노드가 필요한지 잘 모르겠으면 기본값을 사용합니다. 이후에 노드를 더 추가할 수 있습니다.
    2. 자동 확장에 다음 값을 입력합니다.
      • 최소 노드 수
      • 최대 노드 수
      • CPU 사용률 목표
      • 스토리지 사용률 목표
  10. (선택사항) 기본 Google 관리 암호화 대신 CMEK로 인스턴스를 보호하려면 다음을 완료합니다.

    1. 암호화 옵션 표시를 클릭합니다.
    2. 고객 관리 암호화 키(CMEK) 옆의 라디오 버튼을 선택합니다.
    3. 클러스터에 사용할 CMEK 키의 리소스 이름을 선택하거나 입력합니다. 이 작업은 나중에 추가할 수 없습니다.
    4. CMEK 키의 서비스 계정에 권한을 부여하라는 메시지가 표시되면 권한 부여를 클릭합니다. 이 작업을 완료하려면 사용자 계정에 Cloud KMS 관리자 역할을 부여해야 합니다.
    5. 저장을 클릭합니다.
  11. (선택사항) 지금 복제를 사용 설정하려면 다음 추가 단계를 완료하세요.

    1. 고급 옵션 표시를 클릭합니다.
    2. 클러스터 추가를 클릭하고 클러스터의 설정을 입력한 다음 추가를 클릭합니다. 이 단계를 반복하여 인스턴스에 추가 클러스터를 만듭니다. 클러스터를 추가하여 복제를 사용 설정할 수도 있습니다.

    리전의 각 영역에는 클러스터가 하나만 포함될 수 있습니다. 클러스터 추가 버튼을 사용할 수 없는 경우 첫 번째 클러스터의 영역을 변경합니다.

    클러스터가 7개 이상인 인스턴스를 만들려면 먼저 클러스터가 6개 있는 인스턴스를 만든 후 인스턴스에 클러스터를 추가합니다.

  12. 만들기를 클릭하여 인스턴스를 만듭니다.

  13. 기본 앱 프로필에서 복제 설정을 검토하여 복제 사용 사례에 적합한지 확인합니다. 기본 앱 프로필을 업데이트하거나 커스텀 앱 프로필을 생성해야 할 수도 있습니다.

gcloud

  1. bigtable instances create 명령어를 사용하여 인스턴스를 만듭니다.

    gcloud bigtable instances create INSTANCE_ID \
        --display-name=DISPLAY_NAME \
        [--cluster-storage-type=CLUSTER_STORAGE_TYPE] \
        [--cluster-config=id=CLUSTER_ID,zone=CLUSTER_ZONE, \
        nodes=NODES] \
        [--cluster-config=id=CLUSTER_ID,zone=CLUSTER_ZONE, \
        autoscaling-min-nodes=AUTOSCALING_MIN_NODES, \
        autoscaling-max-nodes=AUTOSCALING_MAX_NODES, \
        autoscaling-cpu-target=AUTOSCALING_CPU_TARGET, \
        autoscaling-storage-target=AUTOSCALING_STORAGE_TARGET, \
        kms-key=KMS_KEY]
    

    다음을 바꿉니다.

    • INSTANCE_ID: 인스턴스의 영구 식별자입니다.
    • DISPLAY_NAME: Google Cloud 콘솔에서 인스턴스를 식별하는, 인간이 읽을 수 있는 이름
    • CLUSTER_ID: 클러스터의 영구 식별자입니다.
    • CLUSTER_ZONE: 클러스터가 실행되는 영역

    --cluster-config 플래그를 사용하여 인스턴스에 클러스터를 최소 한 개 이상 구성해야 합니다. 클러스터가 여러 개 있는 인스턴스를 만들려면 각 클러스터에 --cluster-config 플래그를 반복합니다.

    수동 노드 할당의 경우 --cluster-config 플래그에 nodes를 설정하는 것은 선택사항입니다. 값이 설정되지 않은 경우 Bigtable은 데이터 공간을 기반으로 클러스터에 노드를 자동으로 할당하고 스토리지 사용률을 50%로 최적화합니다. 노드의 자동 할당은 가격 책정에 영향을 미칩니다. 클러스터의 노드 수를 제어하려면 클러스터에 원하는 노드 수로 NODES를 바꿉니다. 노드 자세히 알아보기

    대부분의 경우 수동 노드 할당 대신 자동 확장을 선택합니다. 자동 확장의 경우 --cluster-config 플래그에 autoscaling- 옵션을 제공하고(autoscaling-storage-target은 선택사항) nodes를 사용하지 않습니다. 자동 확장 설정의 값을 선택하는 방법에 대한 안내는 자동 확장을 참조하세요. cluster-config 옵션 키를 바꿉니다.

    • AUTOSCALING_MIN_NODES: 클러스터의 최소 노드 수입니다.
    • AUTOSCALING_MAX_NODES: 클러스터의 최대 노드 수입니다.
    • AUTOSCALING_CPU_TARGET: 클러스터의 대상 CPU 사용률입니다. 이 값은 10~80 사이여야 합니다.
    • AUTOSCALING_STORAGE_TARGET: (선택사항) Bigtable이 노드를 추가하거나 제거하여 유지하는 스토리지 사용률 목표(GiB)입니다.
    • KMS_KEY: 클러스터의 CMEK 키입니다.

      KMS_KEY 값은 다음 형식이어야 합니다.

      projects/PROJECT/locations/LOCATION/keyRings/KEYRING/cryptoKeys/KEY
      
      

      다음을 바꿉니다.

      • PROJECT: 프로젝트의 영구 식별자
      • LOCATION: 클러스터의 위치
      • KEYRING: 키가 포함된 키링의 이름
      • KEY: 키의 이름

      다음은 그 예시입니다.

      projects/examplestore.com:dev/locations/us-east1/keyRings/devt-cmek-2/cryptoKeys/key2

      인스턴스가 CMEK로 보호되는 경우 각 클러스터는 CMEK 키와 동일한 리전에 있어야 합니다. CMEK로 이미 보호되는 인스턴스에만 CMEK 클러스터를 추가할 수 있습니다. 자세히 알아보기

    이 명령어에는 다음과 같은 선택적 플래그가 사용됩니다.

    • --cluster-storage-type=CLUSTER_STORAGE_TYPE: 인스턴스에 사용할 스토리지 유형입니다. 기본값은 SSD입니다. 대부분의 경우, 기본값이 가장 좋습니다. 이 선택은 되돌릴 수 없습니다. 자세히 알아보기

    • --project=PROJECT: 현재 프로젝트와 다른 경우 클러스터를 만들 프로젝트입니다.

  2. 기본 앱 프로필에서 복제 설정을 검토하여 복제 사용 사례에 적합한지 확인합니다. 기본 앱 프로필을 업데이트하거나 커스텀 앱 프로필을 생성해야 할 수도 있습니다.

cbt

  1. 먼저 단일 클러스터로 인스턴스를 만듭니다. createinstance 명령어를 사용하여 인스턴스를 만듭니다.

    cbt createinstance INSTANCE_ID \
        DISPLAY_NAME \
        CLUSTER_ID \
        CLUSTER_ZONE \
        CLUSTER_NUM_NODES \
        CLUSTER_STORAGE_TYPE
    

    다음을 제공합니다.

    • INSTANCE_ID: 인스턴스의 영구 식별자입니다.
    • DISPLAY_NAME: Google Cloud 콘솔에서 인스턴스를 식별하는, 인간이 읽을 수 있는 이름
    • CLUSTER_ID: 클러스터의 영구 식별자입니다.
    • CLUSTER_ZONE: 클러스터가 실행되는 영역
    • CLUSTER_NUM_NODES: 이 필드는 선택사항입니다. 값이 설정되지 않은 경우 Bigtable은 데이터 공간을 기반으로 노드를 자동으로 할당하고 스토리지 사용률을 50%로 최적화합니다. 클러스터의 노드 수를 제어하려면 CLUSTER_NUM_NODES 값을 업데이트합니다. 노드 수가 0이 아닌 값으로 설정되었는지 확인합니다. 노드 자세히 알아보기
    • CLUSTER_STORAGE_TYPE: 클러스터에 사용할 저장소의 유형입니다. 인스턴스의 각 클러스터가 동일한 스토리지 유형을 사용해야 합니다. SSDHDD 값을 사용합니다. 대부분의 경우 SSD가 가장 좋습니다. 이 선택은 되돌릴 수 없습니다. 자세히 알아보기
  2. 복제를 사용 설정하려면 createcluster 명령어를 사용하여 클러스터를 추가합니다.

    
    cbt -instance=INSTANCE_ID \
    createcluster CLUSTER_ID \
    ZONE \
    NUM_NODES \
    STORAGE_TYPE
    
    

    다음을 제공합니다.

    • INSTANCE_ID: 방금 만든 인스턴스의 영구 식별자입니다.
    • CLUSTER_ID: 클러스터의 영구 식별자입니다.
    • ZONE: 클러스터가 실행되는 영역

      리전의 각 영역에는 클러스터가 하나만 포함될 수 있습니다. 예를 들어 인스턴스가 us-east1-b에 클러스터를 가지는 경우 동일한 리전의 다른 영역(예: us-east1-c) 또는 별도의 리전의 영역(예: europe-west2-a)에 클러스터를 추가할 수 있습니다.

    • NUM_NODES: 이 필드는 선택사항입니다. 값이 설정되지 않은 경우 Bigtable은 데이터 공간을 기반으로 노드를 자동으로 할당하고 스토리지 사용률을 50%로 최적화합니다. 클러스터의 노드 수를 제어하려면 NUM_NODES 값을 업데이트합니다. 노드 수가 0이 아닌 값으로 설정되었는지 확인합니다.

      대다수의 경우 한 인스턴스에 있는 각 클러스터는 노드 수가 동일해야 하지만 예외가 있습니다. 노드 및 복제 알아보기

    • STORAGE_TYPE: 클러스터에 사용할 저장소의 유형입니다. 인스턴스의 각 클러스터가 동일한 스토리지 유형을 사용해야 합니다. SSDHDD 값을 사용합니다.

  3. (선택사항) 기본 앱 프로필에서 복제 설정을 검토하여 복제 사용 사례에 적합한지 확인합니다. 기본 앱 프로필을 업데이트하거나 커스텀 앱 프로필을 생성해야 할 수도 있습니다.

C++

Bigtable용 클라이언트 라이브러리를 설치하고 사용하는 방법은 Bigtable 클라이언트 라이브러리를 참조하세요.

Bigtable에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.

namespace cbta = ::google::cloud::bigtable_admin;
using ::google::cloud::future;
using ::google::cloud::Location;
using ::google::cloud::Project;
using ::google::cloud::StatusOr;
[](cbta::BigtableInstanceAdminClient instance_admin,
   std::string const& project_id, std::string const& instance_id,
   std::string const& zone) {
  auto const project = Project(project_id);
  std::string project_name = project.FullName();
  std::string cluster_id = instance_id + "-c1";

  google::bigtable::admin::v2::Instance in;
  in.set_type(google::bigtable::admin::v2::Instance::PRODUCTION);
  in.set_display_name("Put description here");

  google::bigtable::admin::v2::Cluster cluster;
  cluster.set_location(Location(project, zone).FullName());
  cluster.set_serve_nodes(3);
  cluster.set_default_storage_type(google::bigtable::admin::v2::HDD);

  std::map<std::string, google::bigtable::admin::v2::Cluster> cluster_map = {
      {cluster_id, std::move(cluster)}};

  future<StatusOr<google::bigtable::admin::v2::Instance>> instance_future =
      instance_admin.CreateInstance(project_name, instance_id, std::move(in),
                                    std::move(cluster_map));
  // Show how to perform additional work while the long running operation
  // completes. The application could use future.then() instead.
  std::cout << "Waiting for instance creation to complete " << std::flush;
  instance_future.wait_for(std::chrono::seconds(1));
  std::cout << '.' << std::flush;
  auto instance = instance_future.get();
  if (!instance) throw std::move(instance).status();
  std::cout << "DONE, details=" << instance->DebugString() << "\n";
}

C#

Bigtable용 클라이언트 라이브러리를 설치하고 사용하는 방법은 Bigtable 클라이언트 라이브러리를 참조하세요.

Bigtable에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.

// Creates a production instance with "<intanceId>-prod" instance ID,
// with cluster ID "ssd-cluster1", 3 nodes and location us-east1-b.
displayName += " Prod"; // Display name is for display purposes only. It doesn't have to equal instanceId and can be amended after instance is created.
string instanceId = Regex.Replace(displayName, @"[^A-Za-z0-9_\.~]+", "-").ToLower();

// Please refer to the link below for the full list of available locations:
// https://cloud.google.com/bigtable/docs/locations
string zone1 = "us-east1-b";

// The instance to create.
Instance myInstance = new Instance
{
    DisplayName = displayName,
    // You can choose DEVELOPMENT or PRODUCTION type here.
    // If not set, will default to PRODUCTION type.
    // Instance type can be upgraded from DEVELOPMENT to PRODUCTION but cannot be dowgraded after the instance is created.
    Type = Instance.Types.Type.Production,
    Labels = { { "prod-label", "prod-label" } }
};

// The first cluster to be created within the instance.
Cluster myCluster1 = new Cluster
{
    // You can choose SSD or HDD storage type here: StorageType.Ssd or StorageType.Hdd.
    // Cluster storage type can not be changed after the instance is created.
    // If not set will default to SSD type.
    DefaultStorageType = StorageType.Ssd,
    LocationAsLocationName = new LocationName(projectId, zone1),
    // Serve Nodes count can only be set if PRODUCTION type instance is being created.
    // Minimum count of 3 serve nodes must be specified.
    // Serve Nodes count can be increased and decreased after an instance is created.
    ServeNodes = 3
};

// Initialize request argument(s).
CreateInstanceRequest request = new CreateInstanceRequest
{
    ParentAsProjectName = new ProjectName(projectId),
    Instance = myInstance,
    InstanceId = instanceId,
    // Must specify at lease one cluster.
    // Only PRODUCTION type instance can be created with more than one cluster.
    // Currently all clusters must have the same storage type.
    // Clusters must be set to different locations.
    Clusters = { { "ssd-cluster1", myCluster1 } }
};

try
{
    // Make a request.
    Operation<Instance, CreateInstanceMetadata> createInstanceResponse =
        bigtableInstanceAdminClient.CreateInstance(request);
    Console.WriteLine("Waiting for operation to complete...");

    // Poll until the returned long-running operation is complete
    Operation<Instance, CreateInstanceMetadata> completedResponse =
        createInstanceResponse.PollUntilCompleted();
}
catch (Exception ex)
{
    Console.WriteLine($"Exception while creating {displayName} instance");
    Console.WriteLine(ex.Message);
}

자바

Bigtable용 클라이언트 라이브러리를 설치하고 사용하는 방법은 Bigtable 클라이언트 라이브러리를 참조하세요.

Bigtable에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.

// Creates a Production Instance with the ID "ssd-instance",
// cluster id "ssd-cluster", 3 nodes and location "us-central1-f".
CreateInstanceRequest createInstanceRequest =
    CreateInstanceRequest.of(instanceId)
        .addCluster(clusterId, "us-central1-f", 3, StorageType.SSD)
        .setType(Instance.Type.PRODUCTION)
        .addLabel("department", "accounting");
// Creates a production instance with the given request.
try {
  Instance instance = adminClient.createInstance(createInstanceRequest);
  System.out.printf("PRODUCTION type instance %s created successfully%n", instance.getId());
} catch (Exception e) {
  System.err.println("Failed to create instance: " + e.getMessage());
  throw e;
}

Node.js

Bigtable용 클라이언트 라이브러리를 설치하고 사용하는 방법은 Bigtable 클라이언트 라이브러리를 참조하세요.

Bigtable에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.

// Creates a Production Instance with the ID "ssd-instance"
// with cluster id "ssd-cluster", 3 nodes and location us-central1-f

const instanceOptions = {
  clusters: [
    {
      id: clusterID,
      nodes: 3,
      location: 'us-central1-f',
      storage: 'ssd',
    },
  ],
  type: 'PRODUCTION', // Optional as default type is PRODUCTION
  labels: {'prod-label': 'prod-label'},
};

// Create production instance with given options
const [prodInstance, operation] = await instance.create(instanceOptions);
await operation.promise();
console.log(`Created Instance: ${prodInstance.id}`);

PHP

Bigtable용 클라이언트 라이브러리를 설치하고 사용하는 방법은 Bigtable 클라이언트 라이브러리를 참조하세요.

Bigtable에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.

use Exception;
use Google\ApiCore\ApiException;
use Google\Cloud\Bigtable\Admin\V2\Client\BigtableInstanceAdminClient;
use Google\Cloud\Bigtable\Admin\V2\Cluster;
use Google\Cloud\Bigtable\Admin\V2\CreateInstanceRequest;
use Google\Cloud\Bigtable\Admin\V2\GetInstanceRequest;
use Google\Cloud\Bigtable\Admin\V2\Instance;
use Google\Cloud\Bigtable\Admin\V2\Instance\Type as InstanceType;
use Google\Cloud\Bigtable\Admin\V2\StorageType;

/**
 * Create a production Bigtable instance
 *
 * @param string $projectId The Google Cloud project ID
 * @param string $instanceId The ID of the Bigtable instance to be generated
 * @param string $clusterId The ID of the cluster to be generated
 * @param string $locationId The Bigtable region ID where you want your instance to reside
 */
function create_production_instance(
    string $projectId,
    string $instanceId,
    string $clusterId,
    string $locationId = 'us-east1-b'
): void {
    $instanceAdminClient = new BigtableInstanceAdminClient();

    $projectName = $instanceAdminClient->projectName($projectId);
    $instanceName = $instanceAdminClient->instanceName($projectId, $instanceId);

    $serveNodes = 3;
    $storageType = StorageType::SSD;
    $production = InstanceType::PRODUCTION;
    $labels = ['prod-label' => 'prod-label'];

    $instance = new Instance();
    $instance->setDisplayName($instanceId);

    $instance->setLabels($labels);
    $instance->setType($production);

    $cluster = new Cluster();
    $cluster->setDefaultStorageType($storageType);
    $locationName = $instanceAdminClient->locationName($projectId, $locationId);
    $cluster->setLocation($locationName);
    $cluster->setServeNodes($serveNodes);
    $clusters = [
        $clusterId => $cluster
    ];
    try {
        $getInstanceRequest = (new GetInstanceRequest())
            ->setName($instanceName);
        $instanceAdminClient->getInstance($getInstanceRequest);
        printf('Instance %s already exists.' . PHP_EOL, $instanceId);
        throw new Exception(sprintf('Instance %s already exists.' . PHP_EOL, $instanceId));
    } catch (ApiException $e) {
        if ($e->getStatus() === 'NOT_FOUND') {
            printf('Creating an Instance: %s' . PHP_EOL, $instanceId);
            $createInstanceRequest = (new CreateInstanceRequest())
                ->setParent($projectName)
                ->setInstanceId($instanceId)
                ->setInstance($instance)
                ->setClusters($clusters);
            $operationResponse = $instanceAdminClient->createInstance($createInstanceRequest);
            $operationResponse->pollUntilComplete();
            if (!$operationResponse->operationSucceeded()) {
                print('Error: ' . $operationResponse->getError()->getMessage());
            } else {
                printf('Instance %s created.', $instanceId);
            }
        } else {
            throw $e;
        }
    }
}

Python

Bigtable용 클라이언트 라이브러리를 설치하고 사용하는 방법은 Bigtable 클라이언트 라이브러리를 참조하세요.

Bigtable에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.

cluster = instance.cluster(
    cluster_id,
    location_id=location_id,
    serve_nodes=serve_nodes,
    default_storage_type=storage_type,
)
if not instance.exists():
    print("\nCreating an instance")
    # Create instance with given options
    operation = instance.create(clusters=[cluster])
    # Ensure the operation completes.
    operation.result(timeout=480)
    print("\nCreated instance: {}".format(instance_id))

Ruby

Bigtable용 클라이언트 라이브러리를 설치하고 사용하는 방법은 Bigtable 클라이언트 라이브러리를 참조하세요.

Bigtable에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.

# instance_id      = "my-instance"
# cluster_id       = "my-cluster"
# cluster_location = "us-east1-b"
puts "Creating a PRODUCTION Instance"
job = bigtable.create_instance(
  instance_id,
  display_name: "Sample production instance",
  labels:       { "env": "production" },
  type:         :PRODUCTION # Optional as default type is :PRODUCTION
) do |clusters|
  clusters.add cluster_id, cluster_location, nodes: 3, storage_type: :SSD
end

job.wait_until_done!
instance = job.instance
puts "Created Instance: #{instance.instance_id}"

다음 단계