Crea un dominio

En esta página, se explica cómo crear, enumerar, describir y actualizar dominios de Game Servers. Un dominio es una agrupación definida por el usuario de clústeres de servidores de videojuegos según los requisitos de latencia del juego para las poblaciones de jugadores.

Antes de comenzar

Antes de comenzar, te recomendamos que te familiarices con los conceptos clave en la Descripción general de servidores para juegos. Asegúrate de haber realizado las siguientes tareas:

  • Asegúrate de haber habilitado la API de los servicios de juego.
  • Habilitar la API de Game Services
  • Elige una shell con la CLI de gcloud instalada o usa un cliente de API:
  • Cloud Shell

    Para iniciar Cloud Shell, sigue estos pasos:

    1. Ve a la consola de Google Cloud.

      Google Cloud Console

    2. Desde la esquina superior derecha de la consola, haz clic en el botón Activar Cloud Shell: .

    Se abrirá una sesión de Cloud Shell dentro de un marco en la parte inferior en la consola. Usa esta shell para ejecutar los comandos de gcloud.

    Shell local

    Instala la CLI de gcloud

    Verifica si configuraste el proyecto predeterminado deseado para la CLI de Google Cloud (de lo contrario, deberás especificar la marca --project de forma explícita para cada comando más adelante):

    gcloud config list project
    

    Si no puedes ejecutar el siguiente comando para configurar un proyecto predeterminado, reemplaza PROJECT_ID por el ID del proyecto deseado:

    gcloud config set project PROJECT_ID
    

    Ejecute el siguiente comando para verificar su versión de la CLI de Google Cloud. Game Servers requiere la versión 306.0.0 o una posterior de la CLI de gcloud.

    gcloud version
    

    Para actualizar la instalación, ejecuta el siguiente comando:

    gcloud components update
    

    curl / PowerShell

    Para usar la API de REST con curl o Windows PowerShell, haz lo siguiente:

    1. Crea una cuenta de servicio.
    2. Descarga una clave privada como un archivo JSON.
    3. Configura la variable de entorno GOOGLE_APPLICATION_CREDENTIALS en la ruta del archivo JSON que contiene la clave de tu cuenta de servicio. Esta variable solo se aplica a la sesión actual de shell. Por lo tanto, si abres una sesión nueva, deberás volver a configurar la variable.

    Biblioteca cliente

    Google Cloud Game Servers se puede controlar de manera programática mediante una biblioteca cliente. Consulta Descripción general de bibliotecas cliente a fin de obtener instrucciones para usar la biblioteca y la autenticación.

Crea un dominio

Los dominios pueden ser globales o regionales. Un dominio global es una buena opción si los clústeres registrados en un dominio pertenecen a regiones que abarcan varias ubicaciones geográficas, como América del Norte, América del Sur o Europa y Asia. Un dominio regional es una buena opción si los clústeres se encuentran en la misma región, como Europa Occidental. En el caso de una interrupción de red entre regiones, es posible que un dominio global no pueda administrar clústeres en todas las regiones. Para aumentar la resiliencia contra las interrupciones de red entre las regiones, asegúrate de crear dominios regionales en regiones lo más cerca posible de los clústeres del servidor para videojuegos asociados.

Por ejemplo, si creas clústeres en las regiones europe-west1, europe-west2 y europe-west3 para entregar servicios a los usuarios en el oeste de Europa, también puedes crear un dominio regional en una de estas regiones. Esta configuración garantiza que el dominio pueda continuar administrando los clústeres en caso de que no se pueda acceder a estas regiones desde otras partes del mundo debido a una interrupción en la red.

Si no sabes dónde crear tu dominio, puedes crearlo como dominio global. A medida que cambian tus requisitos, puedes crear un dominio nuevo en una región más cercana a los clústeres que necesita administrar. Luego, puedes mover los clústeres existentes al dominio regional nuevo. Para ello, primero borra y cancela el registro de los clústeres del dominio global y, luego, regístralos en el nuevo dominio regional.

Console

  1. En Google Cloud Console, ve a la página Clústeres y dominios.

    Ir a Game Servers

  2. Haz clic en Create Realm.

  3. En el cuadro Realm name, ingresa un identificador único para este dominio.

  4. En el cuadro Timezone, selecciona una zona horaria para este dominio. Cuando programas eventos basados en el tiempo, como las políticas de escalamiento, es para esta zona horaria.

  5. Haga clic en Crear.

gcloud

Puedes crear dominios con la CLI de Google Cloud. Para crear un dominio global, ejecuta el siguiente comando y reemplaza los valores de marcador de posición, como realmID, por los valores adecuados:

gcloud game servers realms create realmID --time-zone tz

Para crear un dominio regional, ejecuta el siguiente comando y reemplaza los valores del marcador de posición, como realmID, por los valores apropiados:

gcloud game servers realms create realmID --time-zone tz --location=region

Los marcadores de posición de variables corresponden a las siguientes descripciones:

  • realmID es un identificador único que puedes especificar para este dominio.
  • tz es la zona horaria para este dominio. Cuando programas eventos basados en el tiempo, como las políticas de escalamiento, es para esta zona horaria.
  • region es la región del dominio. Si quieres controlar los dominios con fallas, especifica una región. Te recomendamos crear un dominio global y omitir esta opción.

LÍNEA DE CMD Y REST

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: Es tu ID de tu proyecto de Google Cloud que aparece en Configuración de IAM.
  • LOCATION: Es la región del dominio. Si deseas controlar los dominios con fallas, especifica una región de la lista de ubicaciones compatibles. Te recomendamos que especifiques un dominio global.
  • REALM_ID: Es un identificador definido por el usuario para el dominio nuevo.
  • TIME_ZONE: La zona horaria para este dominio (por ejemplo, US/Eastern). Debes programar eventos basados en el tiempo, como las políticas de escalamiento, para esta zona horaria.

Cuerpo JSON de la solicitud:

{
  "timeZone": "TIME_ZONE"
}

Para enviar tu solicitud, expande una de estas opciones:

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.gaming.v1.OperationMetadata",
    "createTime": CREATE_TIME,
    "target": "projects/PROJECT_ID/locations/LOCATION/realms/REALM_ID",
    "verb": "create",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

C#

Si deseas obtener información para instalar y usar la biblioteca cliente de Game Servers, consulta las bibliotecas cliente de Game Servers.


using Google.Api.Gax.ResourceNames;
using Google.Cloud.Gaming.V1;
using Google.LongRunning;
using System.Threading.Tasks;

public class CreateRealmSample
{
    public async Task<Realm> CreateRealmAsync(
        string projectId, string regionId, string realmId)
    {
        // Create the client.
        RealmsServiceClient client = await RealmsServiceClient.CreateAsync();

        Realm realm = new Realm
        {
            RealmName = RealmName.FromProjectLocationRealm(projectId, regionId, realmId),
            TimeZone = "America/Los_Angeles"
        };

        CreateRealmRequest request = new CreateRealmRequest
        {
            ParentAsLocationName = LocationName.FromProjectLocation(projectId, regionId),
            RealmId = realmId,
            Realm = realm
        };

        // Make the request.
        Operation<Realm, OperationMetadata> response = await client.CreateRealmAsync(request);

        // Poll until the returned long-running operation is complete.
        Operation<Realm, OperationMetadata> completedResponse = await response.PollUntilCompletedAsync();

        // Retrieve the operation result.
        return completedResponse.Result;
    }
}

Go

Si deseas obtener información para instalar y usar la biblioteca cliente de Game Servers, consulta las bibliotecas cliente de Game Servers.


import (
	"context"
	"fmt"
	"io"

	gaming "cloud.google.com/go/gaming/apiv1"
	gamingpb "google.golang.org/genproto/googleapis/cloud/gaming/v1"
)

// createRealm creates a game server realm.
func createRealm(w io.Writer, projectID, location, realmID string) error {
	// projectID := "my-project"
	// location := "global"
	// realmID := "myrealm"
	ctx := context.Background()
	client, err := gaming.NewRealmsClient(ctx)
	if err != nil {
		return fmt.Errorf("NewRealmsClient: %v", err)
	}
	defer client.Close()

	req := &gamingpb.CreateRealmRequest{
		Parent:  fmt.Sprintf("projects/%s/locations/%s", projectID, location),
		RealmId: realmID,
		Realm: &gamingpb.Realm{
			TimeZone:    "US/Pacific",
			Description: "My Game Server Realm",
		},
	}

	op, err := client.CreateRealm(ctx, req)
	if err != nil {
		return fmt.Errorf("CreateRealm: %v", err)
	}
	resp, err := op.Wait(ctx)
	if err != nil {
		return fmt.Errorf("Wait: %v", err)
	}

	fmt.Fprintf(w, "Realm created: %v", resp.Name)
	return nil
}

Java

Si deseas obtener información para instalar y usar la biblioteca cliente de Game Servers, consulta las bibliotecas cliente de Game Servers.


import com.google.api.gax.longrunning.OperationFuture;
import com.google.cloud.gaming.v1.CreateRealmRequest;
import com.google.cloud.gaming.v1.OperationMetadata;
import com.google.cloud.gaming.v1.Realm;
import com.google.cloud.gaming.v1.RealmsServiceClient;
import java.io.IOException;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;

public class CreateRealm {
  public static void createRealm(String projectId, String regionId, String realmId)
      throws InterruptedException, ExecutionException, TimeoutException, IOException {
    // String projectId = "your-project-id";
    // String regionId = "us-central1-f";
    // String realmId = "your-realm-id";
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (RealmsServiceClient client = RealmsServiceClient.create()) {
      String parent = String.format("projects/%s/locations/%s", projectId, regionId);
      String realmName = String.format("%s/realms/%s", parent, realmId);

      Realm realm =
          Realm.newBuilder().setName(realmName).setTimeZone("America/Los_Angeles").build();

      CreateRealmRequest request =
          CreateRealmRequest.newBuilder()
              .setParent(parent)
              .setRealmId(realmId)
              .setRealm(realm)
              .build();

      OperationFuture<Realm, OperationMetadata> call = client.createRealmAsync(request);
      Realm result = call.get(1, TimeUnit.MINUTES);

      System.out.println("Realm created: " + result.getName());
    }
  }
}

Node.js

Si deseas obtener información para instalar y usar la biblioteca cliente de Game Servers, consulta las bibliotecas cliente de Game Servers.

const {RealmsServiceClient} = require('@google-cloud/game-servers');

const client = new RealmsServiceClient();

async function createRealm() {
  /**
   * TODO(developer): Uncomment these variables before running the sample.
   */
  // const projectId = 'Your Google Cloud Project ID';
  // const location = 'A Compute Engine region, e.g. "us-central1"';
  // const realmId = 'A unique identifier for the realm';
  const request = {
    parent: `projects/${projectId}/locations/${location}`,
    realmId: realmId,
    realm: {
      // Must use a supported time zone name.
      // See https://cloud.google.com/dataprep/docs/html/Supported-Time-Zone-Values_66194188
      timeZone: 'US/Pacific',
      description: 'My Game Server realm',
    },
  };

  const [operation] = await client.createRealm(request);
  const results = await operation.promise();
  const [realm] = results;

  console.log('Realm created:');

  console.log(`\tRealm name: ${realm.name}`);
  console.log(`\tRealm description: ${realm.description}`);
  console.log(`\tRealm time zone: ${realm.timeZone}`);
}

createRealm();

Python

Si deseas obtener información para instalar y usar la biblioteca cliente de Game Servers, consulta las bibliotecas cliente de Game Servers.

def create_realm(project_id, location, realm_id):
    """Creates a realm."""

    client = gaming.RealmsServiceClient()

    request = realms.CreateRealmRequest(
        parent=f"projects/{project_id}/locations/{location}",
        realm_id=realm_id,
        realm=realms.Realm(
            description="My Realm",
            time_zone="US/Pacific",
        ),
    )

    operation = client.create_realm(request)
    print(f"Create realm operation: {operation.operation.name}")
    operation.result(timeout=120)

Genera listas de dominios

Console

  1. En Google Cloud Console, ve a la página Clústeres y dominios.

    Ir a Game Servers

  2. Puedes usar el cuadro de filtro para filtrar la lista de dominios directos por diferentes propiedades.

LÍNEA DE CMD Y REST

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: Es tu ID de tu proyecto de Google Cloud que aparece en Configuración de IAM.
  • LOCATION: Es la región para los dominios o global.

Para enviar tu solicitud, expande una de estas opciones:

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

{
  "realms": [
    {
      "name": "projects/PROJECT_ID/locations/LOCATION/realms/realm1",
      "createTime": CREATE_TIME,
      "updateTime": UPDATE_TIME,
      "timeZone": "US/Eastern",
      "etag": "PlXtLrUJ5pHQoZk0Lz-pWkPFN_dt3PXhIpRrJ5HHWu8"
    },
    {
      "name": "projects/PROJECT_ID/locations/LOCATION/realms/realm2",
      "createTime": CREATE_TIME,
      "updateTime": UPDATE_TIME,
      "timeZone": "America/Eirunepe",
      "etag": "ay1tXqeujLSsSd93n6uhlZwlxdNTOfG7El992Tsiz98"
    },
    {
      "name": "projects/PROJECT_ID/locations/LOCATION/realms/realm3",
      "createTime": CREATE_TIME,
      "updateTime": UPDATE_TIME,
      "timeZone": "Asia/Anadyr",
      "etag": "cBxzV2AWK_zgijSmYA-oXPWv3giwhUzssoWcqjPZFuk"
    }
  ]
}

gcloud

Puedes enumerar dominios globales o regionales con la CLI de Google Cloud.

Para enumerar los dominios globales y regionales, ejecuta el siguiente comando:

gcloud game servers realms list

Para enumerar los dominios en una ubicación específica, ejecuta el siguiente comando y reemplaza region por global o una región de Google Cloud:

gcloud game servers realms list --location=region

C#

Si deseas obtener información para instalar y usar la biblioteca cliente de Game Servers, consulta las bibliotecas cliente de Game Servers.


using Google.Api.Gax;
using Google.Api.Gax.ResourceNames;
using Google.Cloud.Gaming.V1;
using System.Collections.Generic;
using System.Linq;

public class ListRealmsSample
{
    public IList<Realm> ListRealms(
        string projectId, string regionId)
    {
        // Create the client.
        RealmsServiceClient client = RealmsServiceClient.Create();

        ListRealmsRequest request = new ListRealmsRequest
        {
            ParentAsLocationName = LocationName.FromProjectLocation(projectId, regionId)
        };

        // Make the request.
        PagedEnumerable<ListRealmsResponse, Realm> response = client.ListRealms(request);

        // The returned sequence will lazily perform RPCs as it's being iterated over.
        return response.ToList();
    }
}

Go

Si deseas obtener información para instalar y usar la biblioteca cliente de Game Servers, consulta las bibliotecas cliente de Game Servers.


import (
	"context"
	"fmt"
	"io"

	gaming "cloud.google.com/go/gaming/apiv1"
	"google.golang.org/api/iterator"
	gamingpb "google.golang.org/genproto/googleapis/cloud/gaming/v1"
)

// listRealms lists the realms in a location.
func listRealms(w io.Writer, projectID, location string) error {
	// projectID := "my-project"
	// location := "global"
	ctx := context.Background()
	client, err := gaming.NewRealmsClient(ctx)
	if err != nil {
		return fmt.Errorf("NewRealmsClient: %v", err)
	}
	defer client.Close()

	req := &gamingpb.ListRealmsRequest{
		Parent: fmt.Sprintf("projects/%s/locations/%s", projectID, location),
	}

	it := client.ListRealms(ctx, req)
	for {
		resp, err := it.Next()
		if err == iterator.Done {
			break
		}
		if err != nil {
			return fmt.Errorf("Next: %v", err)
		}

		fmt.Fprintf(w, "Realm listed: %v\n", resp.Name)
	}

	return nil
}

Java

Si deseas obtener información para instalar y usar la biblioteca cliente de Game Servers, consulta las bibliotecas cliente de Game Servers.


import com.google.cloud.gaming.v1.ListRealmsRequest;
import com.google.cloud.gaming.v1.Realm;
import com.google.cloud.gaming.v1.RealmsServiceClient;
import com.google.cloud.gaming.v1.RealmsServiceClient.ListRealmsPagedResponse;
import com.google.common.base.Strings;
import java.io.IOException;

public class ListRealms {
  public static void listRealms(String projectId, String regionId) throws IOException {
    // String projectId = "your-project-id";
    // String regionId = "us-central1-f";
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (RealmsServiceClient client = RealmsServiceClient.create()) {
      String parent = String.format("projects/%s/locations/%s", projectId, regionId);

      ListRealmsPagedResponse response = client.listRealms(parent);
      for (Realm realm : response.iterateAll()) {
        System.out.println("Realm found: " + realm.getName());
      }

      while (!Strings.isNullOrEmpty(response.getNextPageToken())) {
        ListRealmsRequest request =
            ListRealmsRequest.newBuilder()
                .setParent(parent)
                .setPageToken(response.getNextPageToken())
                .build();
        response = client.listRealms(request);
        for (Realm realm : response.iterateAll()) {
          System.out.println("Realm found: " + realm.getName());
        }
      }
    }
  }
}

Node.js

Si deseas obtener información para instalar y usar la biblioteca cliente de Game Servers, consulta las bibliotecas cliente de Game Servers.

const {RealmsServiceClient} = require('@google-cloud/game-servers');

const client = new RealmsServiceClient();

async function listRealms() {
  /**
   * TODO(developer): Uncomment these variables before running the sample.
   */
  // const projectId = 'Your Google Cloud Project ID';
  // const location = 'A Compute Engine region, e.g. "us-central1"';
  const request = {
    parent: `projects/${projectId}/locations/${location}`,
  };

  const [results] = await client.listRealms(request);
  for (const realm of results) {
    console.log(`Realm name: ${realm.name}`);
    console.log(`Realm description: ${realm.description}`);
    console.log(`Realm time zone: ${realm.timeZone}`);

    const createTime = realm.createTime;
    const createDate = new Date(createTime.seconds * 1000);
    console.log(`Realm created on: ${createDate.toLocaleDateString()}\n`);
  }
}

listRealms();

Python

Si deseas obtener información para instalar y usar la biblioteca cliente de Game Servers, consulta las bibliotecas cliente de Game Servers.



def list_realms(project_id, location):
    """Lists the existing realms."""

    client = gaming.RealmsServiceClient()

    response = client.list_realms(parent=f"projects/{project_id}/locations/{location}")

    for realm in response.realms:
        print(f"Name: {realm.name}")

    return response.realms

Describe los dominios

Console

  1. En Google Cloud Console, ve a la página Clústeres y dominios.

    Ir a Game Servers

  2. Puedes usar el cuadro de filtro para filtrar la lista de dominios directos por diferentes propiedades.

  3. En la última columna de la tabla, haz clic en las elipsis y selecciona View details.

gcloud

Puedes obtener detalles sobre un dominio, como la hora de creación o la zona horaria, con la CLI de Google Cloud.

Para describir un dominio global, ejecuta el siguiente comando y reemplaza realmID por el identificador para un dominio que creaste antes:

gcloud game servers realms describe realmID

Si creaste uno o más dominios que no eran globales, puedes describir los detalles de un dominio en una región específica. Para describir un dominio en una región, reemplaza realmID por el identificador de un dominio que creaste antes y region por la región en la que está el dominio:

gcloud game servers realms describe realmID --location=region

LÍNEA DE CMD Y REST

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: Es tu ID de tu proyecto de Google Cloud que aparece en Configuración de IAM.
  • LOCATION: Es la región para el dominio o global.
  • REALM_ID: Es un identificador definido por el usuario para el dominio.

Para enviar tu solicitud, expande una de estas opciones:

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/realms/REALM_ID",
  "createTime": CREATE_TIME,
  "updateTime": UPDATE_TIME,
  "timeZone": "Asia/Anadyr",
  "etag": "cBxzV2AWK_zgijSmYA-oXPWv3giwhUzssoWcqjPZFuk"
}

C#

Si deseas obtener información para instalar y usar la biblioteca cliente de Game Servers, consulta las bibliotecas cliente de Game Servers.


using Google.Cloud.Gaming.V1;

public class GetRealmSample
{
    public Realm GetRealm(
        string projectId, string regionId, string realmId)
    {
        // Create the client.
        RealmsServiceClient client = RealmsServiceClient.Create();

        GetRealmRequest request = new GetRealmRequest
        {
            RealmName = RealmName.FromProjectLocationRealm(projectId, regionId, realmId)
        };

        // Make the request.
        Realm response = client.GetRealm(request);
        return response;
    }
}

Go

Si deseas obtener información para instalar y usar la biblioteca cliente de Game Servers, consulta las bibliotecas cliente de Game Servers.


import (
	"context"
	"fmt"
	"io"

	gaming "cloud.google.com/go/gaming/apiv1"
	gamingpb "google.golang.org/genproto/googleapis/cloud/gaming/v1"
)

// getRealm retrieves info on a realm.
func getRealm(w io.Writer, projectID, location, realmID string) error {
	// projectID := "my-project"
	// location := "global"
	// realmID := "myrealm"
	ctx := context.Background()
	client, err := gaming.NewRealmsClient(ctx)
	if err != nil {
		return fmt.Errorf("NewRealmsClient: %v", err)
	}
	defer client.Close()

	req := &gamingpb.GetRealmRequest{
		Name: fmt.Sprintf("projects/%s/locations/%s/realms/%s", projectID, location, realmID),
	}

	resp, err := client.GetRealm(ctx, req)
	if err != nil {
		return fmt.Errorf("GetRealm: %v", err)
	}

	fmt.Fprintf(w, "Realm retrieved: %v", resp.Name)
	return nil
}

Java

Si deseas obtener información para instalar y usar la biblioteca cliente de Game Servers, consulta las bibliotecas cliente de Game Servers.


import com.google.cloud.gaming.v1.Realm;
import com.google.cloud.gaming.v1.RealmsServiceClient;
import java.io.IOException;

public class GetRealm {
  public static void getRealm(String projectId, String regionId, String realmId)
      throws IOException {
    // String projectId = "your-project-id";
    // String regionId = "us-central1-f";
    // String realmId = "your-realm-id";
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (RealmsServiceClient client = RealmsServiceClient.create()) {
      String realmName =
          String.format("projects/%s/locations/%s/realms/%s", projectId, regionId, realmId);

      Realm allocationPolicy = client.getRealm(realmName);

      System.out.println("Realm found: " + allocationPolicy.getName());
    }
  }
}

Node.js

Si deseas obtener información para instalar y usar la biblioteca cliente de Game Servers, consulta las bibliotecas cliente de Game Servers.

const {RealmsServiceClient} = require('@google-cloud/game-servers');

const client = new RealmsServiceClient();

async function getRealm() {
  /**
   * TODO(developer): Uncomment these variables before running the sample.
   */
  // const projectId = 'Your Google Cloud Project ID';
  // const location = 'A Compute Engine region, e.g. "us-central1"';
  // const realmId = 'Unique identifier of the realm';
  const request = {
    // Realm name is the full resource name including project ID and location
    name: client.realmPath(projectId, location, realmId),
  };

  const [realm] = await client.getRealm(request);
  console.log(`Realm name: ${realm.name}`);
  console.log(`Realm description: ${realm.description}`);
  console.log(`Realm time zone: ${realm.timeZone}`);

  const createTime = realm.createTime;
  const createDate = new Date(createTime.seconds * 1000);

  console.log(`Realm created on: ${createDate.toLocaleDateString()}`);
}

getRealm();

Python

Si deseas obtener información para instalar y usar la biblioteca cliente de Game Servers, consulta las bibliotecas cliente de Game Servers.

def get_realm(project_id, location, realm_id):
    """Gets a realm."""

    client = gaming.RealmsServiceClient()

    request = realms.GetRealmRequest(
        name=f"projects/{project_id}/locations/{location}/realms/{realm_id}",
    )

    response = client.get_realm(request)
    print(f"Get realm response:\n{response}")
    return response

Actualiza un dominio

gcloud

Para actualizar un campo para un dominio, ejecuta el comando gcloud game servers realms update después de reemplazar realmID y region para un dominio existente. El siguiente comando actualiza el valor de la zona horaria para un dominio. Reemplaza tz por un valor de zona horaria compatible.

gcloud game servers realms update realmID --location=region \
    --time-zone=tz --no-dry-run

Para encontrar las marcas de otros campos de dominio, consulta la referencia de gcloud.

LÍNEA DE CMD Y REST

En el siguiente ejemplo, se actualiza el campo timeZone. Para actualizar otros campos, agrega los nombres de campo al parámetro de búsqueda ?updateMask= y solicita el cuerpo JSON.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: Es tu ID de tu proyecto de Google Cloud que aparece en Configuración de IAM.
  • LOCATION: Es la región del dominio.
  • REALM_ID: Es el identificador definido por el usuario para el dominio.
  • TIME_ZONE: Es la zona horaria para este dominio (por ejemplo, US/Eastern). Debes programar eventos basados en el tiempo, como las políticas de escalamiento, para esta zona horaria.

Cuerpo JSON de la solicitud:

{
  "timeZone": "TIME_ZONE"
}

Para enviar tu solicitud, expande una de estas opciones:

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.gaming.v1.OperationMetadata",
    "createTime": CREATE_TIME,
    "target": "projects/PROJECT_ID/locations/LOCATION/realms/REALM_ID",
    "verb": "update",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

C#

Si deseas obtener información para instalar y usar la biblioteca cliente de Game Servers, consulta las bibliotecas cliente de Game Servers.


using Google.Cloud.Gaming.V1;
using Google.LongRunning;
using Google.Protobuf.WellKnownTypes;
using System.Threading.Tasks;

public class UpdateRealmSample
{
    public async Task<Realm> UpdateRealmAsync(
        string projectId, string regionId, string realmId)
    {
        // Create the client.
        RealmsServiceClient client = await RealmsServiceClient.CreateAsync();

        Realm realm = new Realm
        {
            RealmName = RealmName.FromProjectLocationRealm(projectId, regionId, realmId),
        };
        realm.Labels.Add("label-key-1", "label-value-1");
        realm.Labels.Add("label-key-2", "label-value-2");

        UpdateRealmRequest request = new UpdateRealmRequest
        {
            Realm = realm,
            UpdateMask = new FieldMask { Paths = { "labels" } }
        };

        // Make the request.
        Operation<Realm, OperationMetadata> response = await client.UpdateRealmAsync(request);
        Operation<Realm, OperationMetadata> completedResponse = await response.PollUntilCompletedAsync();

        // Retrieve the operation result. This result will NOT contain the updated labels.
        // If you want to get the updated resource, use a GET request on the resource.
        return completedResponse.Result;
    }
}

Go

Si deseas obtener información para instalar y usar la biblioteca cliente de Game Servers, consulta las bibliotecas cliente de Game Servers.


import (
	"context"
	"fmt"
	"io"

	gaming "cloud.google.com/go/gaming/apiv1"
	gamingpb "google.golang.org/genproto/googleapis/cloud/gaming/v1"
	"google.golang.org/protobuf/types/known/fieldmaskpb"
)

// updateRealm updates a realm.
func updateRealm(w io.Writer, projectID, location, realmID string) error {
	// projectID := "my-project"
	// location := "global"
	// realmID := "myrealm"
	ctx := context.Background()
	client, err := gaming.NewRealmsClient(ctx)
	if err != nil {
		return fmt.Errorf("NewRealmsClient: %v", err)
	}
	defer client.Close()

	req := &gamingpb.UpdateRealmRequest{
		Realm: &gamingpb.Realm{
			Name:        fmt.Sprintf("projects/%s/locations/%s/realms/%s", projectID, location, realmID),
			Description: "My Updated Game Server Realm",
			Labels: map[string]string{
				"label-key-1": "label-value-1",
			},
		},
		UpdateMask: &fieldmaskpb.FieldMask{
			Paths: []string{
				"description", "labels",
			},
		},
	}

	op, err := client.UpdateRealm(ctx, req)
	if err != nil {
		return fmt.Errorf("UpdateRealm: %v", err)
	}
	resp, err := op.Wait(ctx)
	if err != nil {
		return fmt.Errorf("Wait: %v", err)
	}

	fmt.Fprintf(w, "Realm updated: %v", resp.Name)
	return nil
}

Java

Si deseas obtener información para instalar y usar la biblioteca cliente de Game Servers, consulta las bibliotecas cliente de Game Servers.


import com.google.api.gax.longrunning.OperationFuture;
import com.google.cloud.gaming.v1.OperationMetadata;
import com.google.cloud.gaming.v1.Realm;
import com.google.cloud.gaming.v1.RealmsServiceClient;
import com.google.protobuf.FieldMask;
import java.io.IOException;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;

public class UpdateRealm {
  public static void updateRealm(String projectId, String regionId, String realmId)
      throws IOException, InterruptedException, ExecutionException, TimeoutException {
    // String projectId = "your-project-id";
    // String regionId = "us-central1-f";
    // String realmId = "your-realm-id";
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (RealmsServiceClient client = RealmsServiceClient.create()) {
      String parent = String.format("projects/%s/locations/%s", projectId, regionId);
      String realmName = String.format("%s/realms/%s", parent, realmId);

      Realm realm = Realm.newBuilder().setName(realmName).setTimeZone("America/New_York").build();

      FieldMask fieldMask = FieldMask.newBuilder().addPaths("time_zone").build();

      OperationFuture<Realm, OperationMetadata> call = client.updateRealmAsync(realm, fieldMask);

      Realm updated = call.get(1, TimeUnit.MINUTES);
      System.out.println("Realm updated: " + updated.getName());
    }
  }
}

Node.js

Si deseas obtener información para instalar y usar la biblioteca cliente de Game Servers, consulta las bibliotecas cliente de Game Servers.

const {RealmsServiceClient} = require('@google-cloud/game-servers');

const client = new RealmsServiceClient();

async function updateRealm() {
  /**
   * TODO(developer): Uncomment these variables before running the sample.
   */
  // const projectId = 'Your Google Cloud Project ID';
  // const location = 'A Compute Engine region, e.g. "us-central1"';
  // const realmId = 'The unique identifier for the realm';
  const request = {
    realm: {
      name: client.realmPath(projectId, location, realmId),
      labels: {
        'label-key-1': 'label-value-1',
      },
      timeZone: 'US/Pacific',
      description: 'My updated Game Server realm',
    },
    updateMask: {
      paths: ['labels', 'time_zone', 'description'],
    },
  };

  const [operation] = await client.updateRealm(request);
  const results = await operation.promise();
  const [realm] = results;

  console.log(`Realm updated: ${realm.name}`);
}

updateRealm();

Python

Si deseas obtener información para instalar y usar la biblioteca cliente de Game Servers, consulta las bibliotecas cliente de Game Servers.

def update_realm(project_id, location, realm_id):
    """Updates a realm."""

    client = gaming.RealmsServiceClient()

    request = realms.UpdateRealmRequest(
        realm=realms.Realm(
            name=f"projects/{project_id}/locations/{location}/realms/{realm_id}",
            labels={"label-key-1": "label-value-1", "label-key-2": "label-value-2"},
        ),
        update_mask=field_mask.FieldMask(paths=["labels"]),
    )

    operation = client.update_realm(request)
    print(f"Update realm operation: {operation.operation.name}")
    operation.result(timeout=120)

¿Qué sigue?