Créer un domaine

Cette page explique comment créer, répertorier, décrire et mettre à jour des domaines Game Servers. Un domaine est un regroupement défini par l'utilisateur de clusters de serveurs de jeu en fonction des exigences de latence du jeu pour le remplissage des joueurs.

Avant de commencer

Avant de commencer, nous vous recommandons de vous familiariser avec les concepts clés de la page Présentation de Game Servers. Assurez-vous également que vous avez également effectué les tâches suivantes :

  • Assurez-vous d'avoir activé l'API des services de jeux.
  • Activer l'API Game Services
  • Vous pouvez choisir une interface système où gcloud CLI est installé ou utiliser un client API:
  • Cloud Shell

    Pour lancer Cloud Shell, procédez comme suit :

    1. Accédez à Google Cloud Console.

      Google Cloud Console

    2. Dans l'angle supérieur droit de la console, cliquez sur le bouton Activer Cloud Shell :

    Une session Cloud Shell s'ouvre dans un cadre situé en bas de la console. Cette interface système vous permet d'exécuter les commandes gcloud.

    Interface système locale

    Installer gcloud CLI

    Vérifiez que vous avez défini le projet par défaut souhaité pour Google Cloud CLI (sinon, vous devrez spécifier explicitement l'option --project pour chaque commande):

    gcloud config list project
    

    Si non, vous pouvez exécuter la commande suivante pour définir un projet par défaut, en remplaçant PROJECT_ID par l'ID de projet souhaité :

    gcloud config set project PROJECT_ID
    

    Exécutez la commande suivante pour vérifier votre version de la CLI Google Cloud. Game Servers nécessite la version 306.0.0 ou ultérieure de la CLI gcloud.

    gcloud version
    

    Pour mettre à jour votre installation, exécutez la commande suivante :

    gcloud components update
    

    curl/PowerShell

    Pour utiliser l'API REST avec curl ou Windows PowerShell, procédez comme suit :

    1. Créer un compte de service
    2. Téléchargez une clé privée sous la forme d'un fichier JSON.
    3. Définissez la variable d'environnement GOOGLE_APPLICATION_CREDENTIALS pour qu'elle pointe vers le chemin du fichier JSON contenant la clé de votre compte de service. Cette variable ne s'applique qu'à la session de shell actuelle. Par conséquent, si vous ouvrez une nouvelle session, vous devez de nouveau la définir.

    Bibliothèque cliente

    Google Cloud Game Servers peut être contrôlé par programmation à l'aide d'une bibliothèque cliente. Pour obtenir des instructions sur l'utilisation de la bibliothèque et l'authentification, consultez la page Présentation des bibliothèques clientes.

Créer un domaine

Les domaines peuvent être globaux ou régionaux. Un domaine global est une bonne option si les clusters enregistrés auprès d'un domaine proviennent de régions qui couvrent différentes zones géographiques, telles que l'Amérique du Nord, l'Amérique du Sud ou l'Europe et l'Asie. Un domaine régional est une bonne option si les clusters se trouvent dans la même région, par exemple Europe West. En cas de panne de réseau entre les régions, un domaine global risque de ne pas pouvoir gérer les clusters dans toutes les régions. Pour augmenter la résilience des pannes réseau entre les régions, veillez à créer des domaines régionaux dans des régions aussi proches que possible des clusters de serveurs de jeu associés.

Par exemple, si vous créez des clusters dans les régions europe-west1, europe-west2 et europe-west3 pour servir des utilisateurs à l'ouest de l'Europe, vous pouvez également créer un domaine régional dans l'une de ces régions. Cette configuration garantit que le domaine peut continuer à gérer les clusters si ces régions ne sont pas accessibles à partir des régions d'autres parties du monde en raison d'une panne du réseau.

Si vous ne savez pas où créer votre domaine, vous pouvez le créer en tant que domaine global. À mesure que vos exigences évoluent, vous pouvez créer un domaine dans une région plus proche des clusters qu'il doit gérer. Pour déplacer des clusters existants vers le nouveau domaine régional, commencez par supprimer et annuler l'enregistrement des clusters du domaine global, puis enregistrez-les dans le nouveau domaine régional.

Console

  1. Dans Google Cloud Console, accédez à la page Realms & Clusters.

    Accéder à Game Servers

  2. Cliquez sur Créer un domaine.

  3. Dans la zone Nom de domaine, saisissez un identifiant unique pour ce domaine.

  4. Dans la zone Fuseau horaire, sélectionnez un fuseau horaire pour ce domaine. Lorsque vous planifiez des événements basés sur l'heure, tels que des stratégies de scaling, il est défini pour ce fuseau horaire.

  5. Cliquez sur Create (Créer).

gcloud

Vous pouvez créer des domaines à l'aide de la CLI Google Cloud. Pour créer un domaine global, exécutez la commande suivante et remplacez les valeurs d'espace réservé (par exemple, realmID) par les valeurs appropriées:

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

Pour créer un domaine régional, exécutez la commande suivante et remplacez les valeurs des espaces réservés tels que realmID par les valeurs appropriées :

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

Les espaces réservés de variables correspondent aux descriptions suivantes :

  • realmID est un identifiant unique que vous pouvez spécifier pour ce domaine.
  • tz est le fuseau horaire de ce domaine. Lorsque vous planifiez des événements basés sur l'heure, tels que des stratégies de scaling, il est défini pour ce fuseau horaire.
  • region est la région du domaine. Si vous souhaitez contrôler les domaines de défaillance, spécifiez une région. Nous vous recommandons de créer un domaine global et d'omettre cette option.

API REST et ligne de commande

Avant d'utiliser les données de la requête, effectuez les remplacements suivants:

  • PROJECT_ID : ID de votre projet Google Cloud répertorié dans les paramètres IAM.
  • LOCATION : région du domaine. Si vous souhaitez contrôler les domaines de défaillance, spécifiez une région dans la liste des emplacements acceptés. Nous vous recommandons de spécifier un domaine global.
  • REALM_ID : identifiant défini par l'utilisateur pour le domaine
  • TIME_ZONE : fuseau horaire de ce domaine (par exemple, US/Eastern). Vous planifiez des événements basés sur l'heure, tels que des stratégies de scaling, pour ce fuseau horaire.

Corps JSON de la requête :

{
  "timeZone": "TIME_ZONE"
}

Pour envoyer votre requête, développez l'une des options suivantes :

Vous devriez recevoir une réponse JSON de ce type :

{
  "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#

Pour apprendre à installer et à utiliser la bibliothèque cliente pour Game Servers, consultez la page Bibliothèques clientes 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

Pour apprendre à installer et à utiliser la bibliothèque cliente pour Game Servers, consultez la page Bibliothèques clientes 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

Pour apprendre à installer et à utiliser la bibliothèque cliente pour Game Servers, consultez la page Bibliothèques clientes 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

Pour apprendre à installer et à utiliser la bibliothèque cliente pour Game Servers, consultez la page Bibliothèques clientes 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

Pour apprendre à installer et à utiliser la bibliothèque cliente pour Game Servers, consultez la page Bibliothèques clientes 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)

Répertorier les domaines

Console

  1. Dans Google Cloud Console, accédez à la page Realms & Clusters.

    Accéder à Game Servers

  2. Vous pouvez utiliser la zone de filtre pour filtrer la liste des domaines selon différentes propriétés.

API REST et ligne de commande

Avant d'utiliser les données de la requête, effectuez les remplacements suivants:

  • PROJECT_ID : ID de votre projet Google Cloud répertorié dans les paramètres IAM.
  • LOCATION : région des domaines ou global

Pour envoyer votre requête, développez l'une des options suivantes :

Vous devriez recevoir une réponse JSON de ce type :

{
  "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

Vous pouvez répertorier les domaines régionaux ou régionaux à l'aide de la CLI Google Cloud.

Pour répertorier les domaines globaux et régionaux, exécutez la commande suivante :

gcloud game servers realms list

Pour répertorier les domaines d'un emplacement spécifique, exécutez la commande suivante et remplacez region par global ou une région Google Cloud :

gcloud game servers realms list --location=region

C#

Pour apprendre à installer et à utiliser la bibliothèque cliente pour Game Servers, consultez la page Bibliothèques clientes 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

Pour apprendre à installer et à utiliser la bibliothèque cliente pour Game Servers, consultez la page Bibliothèques clientes 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

Pour apprendre à installer et à utiliser la bibliothèque cliente pour Game Servers, consultez la page Bibliothèques clientes 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

Pour apprendre à installer et à utiliser la bibliothèque cliente pour Game Servers, consultez la page Bibliothèques clientes 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

Pour apprendre à installer et à utiliser la bibliothèque cliente pour Game Servers, consultez la page Bibliothèques clientes 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

Décrire les domaines

Console

  1. Dans Google Cloud Console, accédez à la page Realms & Clusters.

    Accéder à Game Servers

  2. Vous pouvez utiliser la zone de filtre pour filtrer la liste des domaines selon différentes propriétés.

  3. Dans la dernière colonne de tableau, cliquez sur les points de suspension , puis sélectionnez Afficher les détails.

gcloud

Vous pouvez obtenir des détails sur un domaine, tels que l'heure ou le fuseau horaire de la création, à l'aide de la CLI Google Cloud.

Pour décrire un domaine global, exécutez la commande suivante et remplacez realmID par l'identifiant d'un domaine que vous avez précédemment créé :

gcloud game servers realms describe realmID

Si vous avez créé un ou plusieurs domaines qui ne sont pas globaux, vous pouvez fournir des informations sur un domaine dans une région spécifique. Pour décrire un domaine d'une région, remplacez realmID par l'identifiant d'un domaine que vous avez précédemment créé et region par la région où se trouve le domaine :

gcloud game servers realms describe realmID --location=region

API REST et ligne de commande

Avant d'utiliser les données de la requête, effectuez les remplacements suivants:

  • PROJECT_ID : ID de votre projet Google Cloud répertorié dans les paramètres IAM.
  • LOCATION : région du domaine ou global
  • REALM_ID : identifiant défini par l'utilisateur pour le domaine

Pour envoyer votre requête, développez l'une des options suivantes :

Vous devriez recevoir une réponse JSON de ce type :

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

C#

Pour apprendre à installer et à utiliser la bibliothèque cliente pour Game Servers, consultez la page Bibliothèques clientes 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

Pour apprendre à installer et à utiliser la bibliothèque cliente pour Game Servers, consultez la page Bibliothèques clientes 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

Pour apprendre à installer et à utiliser la bibliothèque cliente pour Game Servers, consultez la page Bibliothèques clientes 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

Pour apprendre à installer et à utiliser la bibliothèque cliente pour Game Servers, consultez la page Bibliothèques clientes 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

Pour apprendre à installer et à utiliser la bibliothèque cliente pour Game Servers, consultez la page Bibliothèques clientes 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

Mettre à jour un domaine

gcloud

Pour mettre à jour un champ d'un domaine existant, exécutez la commande gcloud game servers realms update après avoir remplacé realmID et region pour un domaine existant. La commande suivante met à jour la valeur de fuseau horaire pour un domaine. Remplacez tz par une valeur de fuseau horaire compatible.

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

Pour trouver les options des autres champs de domaine, consultez la documentation de référence sur gcloud.

API REST et ligne de commande

L'exemple suivant met à jour le champ timeZone. Pour mettre à jour d'autres champs, ajoutez les noms de champ au paramètre de requête ?updateMask= et demandez un corps JSON.

Avant d'utiliser les données de la requête, effectuez les remplacements suivants:

  • PROJECT_ID : ID de votre projet Google Cloud répertorié dans les paramètres IAM.
  • LOCATION : région du domaine
  • REALM_ID : identifiant défini par l'utilisateur pour le domaine
  • TIME_ZONE : fuseau horaire mis à jour de ce domaine (par exemple, US/Eastern). Vous planifiez des événements basés sur l'heure, tels que des stratégies de scaling, pour ce fuseau horaire.

Corps JSON de la requête :

{
  "timeZone": "TIME_ZONE"
}

Pour envoyer votre requête, développez l'une des options suivantes :

Vous devriez recevoir une réponse JSON de ce type :

{
  "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#

Pour apprendre à installer et à utiliser la bibliothèque cliente pour Game Servers, consultez la page Bibliothèques clientes 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

Pour apprendre à installer et à utiliser la bibliothèque cliente pour Game Servers, consultez la page Bibliothèques clientes 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

Pour apprendre à installer et à utiliser la bibliothèque cliente pour Game Servers, consultez la page Bibliothèques clientes 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

Pour apprendre à installer et à utiliser la bibliothèque cliente pour Game Servers, consultez la page Bibliothèques clientes 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

Pour apprendre à installer et à utiliser la bibliothèque cliente pour Game Servers, consultez la page Bibliothèques clientes 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)

Étapes suivantes