Chaque machine virtuelle (VM) stocke ses métadonnées dans des répertoires sur un serveur de métadonnées. Votre VM a automatiquement accès à l'API de ce serveur de métadonnées, sans aucune autorisation supplémentaire. Vous pouvez utiliser les méthodes expliquées dans les sections suivantes de ce document pour afficher et interroger les valeurs de métadonnées de VM :
- Interroger les métadonnées de manière automatisée à partir d'une VM
- Afficher les métadonnées personnalisées de vos VM.
Si vous rencontrez des erreurs lorsque vous accédez au serveur de métadonnées, consultez la section Résoudre les problèmes d'accès au serveur de métadonnées.
Avant de commencer
- Pour les VM Windows Server, utilisez PowerShell 3.0 ou version ultérieure.
Nous vous recommandons d'utiliser
ctrl+v
pour coller les blocs de code copiés. - Examinez les principes de base de la définition, la classification et l'organisation des métadonnées de VM pour Compute Engine. Pour en savoir plus, consultez la page À propos des métadonnées de VM.
-
Si ce n'est pas déjà fait, configurez l'authentification.
L'authentification est le processus permettant de valider votre identité pour accéder aux services et aux API Google Cloud.
Pour exécuter du code ou des exemples depuis un environnement de développement local, vous pouvez vous authentifier auprès de Compute Engine en sélectionnant l'une des options suivantes:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
-
Administrateur d'instances Compute (v1) (
roles/compute.instanceAdmin.v1
) sur la VM ou le projet - Si vos VM utilisent des comptes de service : Utilisateur du compte de service (
roles/iam.serviceAccountUser
) sur le compte de service ou le projet -
Pour afficher les métadonnées personnalisées d'un projet :
compute.projects.get
-
Pour afficher les métadonnées zonales personnalisées :
compute.instanceSettings.get
-
Pour afficher des métadonnées personnalisées pour une instance de VM :
compute.instances.get
-
Si vos VM utilisent des comptes de service :
iam.serviceAccounts.actAs
- Interroger une seule entrée de métadonnées
- Interroger une liste de répertoires de métadonnées
- Interroger les modifications de métadonnées à l'aide de la fonctionnalité
wait-for-change
- Pour toutes les VM, vous pouvez interroger le serveur de métadonnées à l'aide du point de terminaison HTTP (
http://metadata.google.internal/computeMetadata/v1
). Pour les VM protégées, vous pouvez interroger le serveur de métadonnées à l'aide de l'une des méthodes suivantes :
- Point de terminaison HTTP :
http://metadata.google.internal/computeMetadata/v1
- Point de terminaison https : (
https://metadata.google.internal/computeMetadata/v1
). Ce point de terminaison https est disponible en version preview. Pour connaître le format permettant d'interroger le point de terminaison HTTPS, consultez Interroger les métadonnées à l'aide du point de terminaison du serveur de métadonnées HTTPS.
- Point de terminaison HTTP :
- Point de terminaison http :
http://metadata.google.internal/computeMetadata/v1
http://169.254.169.254/computeMetadata/v1
http://metadata.goog/computeMetadata/v1
- Point de terminaison https (preview) :
Il s'agit de la seule URL acceptée pendant la phase preview.https://metadata.google.internal/computeMetadata/v1
- Connectez-vous à la VM Linux.
À partir de votre VM Linux, utilisez l'outil
curl
pour envoyer une requête. Pour interroger une entrée de métadonnées d'instance de VM ou de projet, exécutez la commande suivante :curl "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY" -H "Metadata-Flavor: Google"
Remplacez
PATH_TO_METADATA_ENTRY
par le chemin d'accès à l'instance de VM ou à la clé de métadonnées du projet dont vous souhaitez interroger la valeur. Si la clé se trouve dans un sous-répertoire du répertoire de l'instance ou du projet, veillez à inclure également le sous-répertoire. Exemple :-
Pour afficher la clé de métadonnées
project-id
, qui est stockée dans les métadonnées du projet, spécifiezproject/project-id
. -
Pour afficher la clé de métadonnées
image
, qui est stockée dans les métadonnées de l'instance de VM, spécifiezinstance/image
. -
Pour afficher les
enable-oslogin
qui peuvent être stockés dans le sous-répertoire des attributs des métadonnées d'instance de projet ou de VM, spécifiezproject/attributes/enable-oslogin
ouinstance/attributes/enable-oslogin
en fonction de votre cas d'utilisation.
Par exemple, pour interroger l'image de démarrage de la VM, exécutez la requête suivante :
user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/image" -H "Metadata-Flavor: Google"
Le résultat ressemble à ce qui suit :
projects/rhel-cloud/global/images/rhel-8-v20210122
-
Pour afficher la clé de métadonnées
- Connectez-vous à votre VM Windows.
À partir de votre VM Windows, exécutez la commande
Invoke-RestMethod
pour effectuer une requête. Pour interroger une entrée de métadonnées d'instance de VM ou de projet, exécutez la commande suivante :$value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY") $value
Remplacez
PATH_TO_METADATA_ENTRY
par le chemin d'accès à l'instance de VM ou à la clé de métadonnées du projet dont vous souhaitez interroger la valeur. Si la clé se trouve dans un sous-répertoire du répertoire de l'instance ou du projet, veillez à inclure également le sous-répertoire. Exemple :-
Pour afficher la clé de métadonnées
project-id
, qui est stockée dans les métadonnées du projet, spécifiezproject/project-id
. -
Pour afficher la clé de métadonnées
image
, qui est stockée dans les métadonnées de l'instance de VM, spécifiezinstance/image
. -
Pour afficher les
enable-oslogin
qui peuvent être stockés dans le sous-répertoire des attributs des métadonnées d'instance de projet ou de VM, spécifiezproject/attributes/enable-oslogin
ouinstance/attributes/enable-oslogin
en fonction de votre cas d'utilisation.
Par exemple, pour interroger l'image de démarrage de la VM, exécutez la requête suivante :
PS C:\> $value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/instance/image") $value
Le résultat ressemble à ce qui suit :
projects/windows-cloud/global/images/windows-server-2019-dc-v20210112
-
Pour afficher la clé de métadonnées
Connectez-vous à la VM Linux.
Pour interroger un répertoire de métadonnées d'instance de VM ou de projet à partir de votre VM Linux, exécutez la commande suivante :
curl "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_DIRECTORY/" -H "Metadata-Flavor: Google"
Remplacez
PATH_TO_METADATA_DIRECTORY
par le chemin d'accès à l'instance de VM ou au répertoire de métadonnées du projet dont vous souhaitez interroger les listes de manière récursive. Exemple :-
Pour afficher l'entrée de répertoire des métadonnées du projet
attributes
, le chemin à spécifier estproject/attributes/
. -
Pour afficher l'entrée de répertoire des métadonnées de l'instance de VM
disks
, le chemin à spécifier estinstance/disks/
.
Prenons l'exemple de l'entrée
disks/
, qui est un répertoire de disques associé à la VM. Pour interroger l'entréedisks/
, procédez comme suit :Exécutez la commande de l'outil
curl
sur le répertoire de disques.user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/disks/" -H "Metadata-Flavor: Google"
Le résultat ressemble à ce qui suit :
0/ 1/ 2/
Si vous souhaitez obtenir plus d'informations sur le répertoire de disque
0/
, vous pouvez ensuite interroger l'URL spécifique de ce répertoire :user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/disks/0/" -H "Metadata-Flavor: Google"
Le résultat ressemble à ce qui suit :
device-name index mode type
Pour connaître le type de disque (
type
) des disques0/
, vous pouvez exécuter la commande suivante :user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/disks/0/type" -H "Metadata-Flavor: Google"
Le résultat ressemble à ce qui suit :
PERSISTENT
-
Pour afficher l'entrée de répertoire des métadonnées du projet
Connectez-vous à votre VM Windows.
Pour interroger un répertoire de métadonnées d'instance de VM ou de projet à partir de votre VM Windows, exécutez la commande suivante :
$value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_DIRECTORY/") $value
Remplacez
PATH_TO_METADATA_DIRECTORY
par le chemin d'accès à l'instance de VM ou au répertoire de métadonnées du projet dont vous souhaitez interroger les listes de manière récursive. Exemple :-
Pour afficher l'entrée de répertoire des métadonnées du projet
attributes
, le chemin à spécifier estproject/attributes/
. -
Pour afficher l'entrée de répertoire des métadonnées de l'instance de VM
disks
, le chemin à spécifier estinstance/disks/
.
Prenons l'exemple de l'entrée
disks/
, qui est un répertoire de disques associé à la VM. Pour interroger l'entréedisks/
, procédez comme suit :Exécutez la commande
Invoke-RestMethod
sur le répertoire de disques.PS C:\> $value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/instance/disks/") $value
Le résultat ressemble à ce qui suit :
0/ 1/ 2/
Si vous souhaitez en savoir plus sur le répertoire de disque
0/
, vous pouvez interroger l'URL spécifique de ce répertoire :PS C:\> $value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/instance/disks/0/") $value
Le résultat ressemble à ce qui suit :
device-name index mode type
Pour connaître le type de disque (
type
) des disques0/
, vous pouvez exécuter la commande suivante :PS C:\> $value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/instance/disks/0/type") $value
Le résultat ressemble à ce qui suit :
PERSISTENT
-
Pour afficher l'entrée de répertoire des métadonnées du projet
Connectez-vous à la VM Linux.
À partir de votre VM Linux, utilisez l'outil
curl
pour envoyer une requête. Pour interroger de manière récursive les fiches d'un répertoire de métadonnées d'instance de VM ou de projet, exécutez la commande suivante :curl "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_DIRECTORY/?recursive=true" -H "Metadata-Flavor: Google"
Remplacez
PATH_TO_METADATA_DIRECTORY
par le chemin d'accès à l'instance de VM ou au répertoire de métadonnées du projet dont vous souhaitez interroger les listes de manière récursive. Exemple :-
Pour afficher l'entrée de répertoire des métadonnées du projet
attributes
, le chemin à spécifier estproject/attributes/
. -
Pour afficher l'entrée de répertoire des métadonnées de l'instance de VM
disks
, le chemin à spécifier estinstance/disks/
.
Par exemple, la commande suivante interroge de manière récursive les fiches de métadonnées d'instance pour le répertoire
disks/
.user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/disks/?recursive=true" -H "Metadata-Flavor: Google"
Le résultat ressemble à ce qui suit :
[{"deviceName":"boot","index":0,"mode":"READ_WRITE","type":"PERSISTENT"}, {"deviceName":"persistent-disk-1","index":1,"mode":"READ_WRITE","type":"PERSISTENT"}, {"deviceName":"persistent-disk-2","index":2,"mode":"READ_ONLY","type":"PERSISTENT"}]
Par défaut, les contenus récursifs sont renvoyés au format JSON. Si vous souhaitez renvoyer ces contenus au format texte, ajoutez le paramètre de requête
alt=text
:user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/disks/?recursive=true&alt=text" -H "Metadata-Flavor: Google"
Le résultat ressemble à ce qui suit :
0/device-name boot 0/index 0 0/mode READ_WRITE 0/type PERSISTENT 1/device-name persistent-disk-1 1/index 1 1/mode READ_WRITE 1/type PERSISTENT 2/device-name persistent-disk-1 2/index 2 2/mode READ_ONLY 2/type PERSISTENT
-
Pour afficher l'entrée de répertoire des métadonnées du projet
Connectez-vous à votre VM Windows.
À partir de votre VM Windows, exécutez la commande
Invoke-RestMethod
pour effectuer une requête. Pour interroger de manière récursive les fiches d'un répertoire de métadonnées d'instance de VM ou de projet, exécutez la commande suivante :$value = (Invoke-RestMethod
-Headers @{'Metadata-Flavor' = 'Google'}
-Uri "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_DIRECTORY/?recursive=true") $valueRemplacez
PATH_TO_METADATA_DIRECTORY
par le chemin d'accès à l'instance de VM ou au répertoire de métadonnées du projet dont vous souhaitez interroger les listes de manière récursive. Exemple :-
Pour afficher l'entrée de répertoire des métadonnées du projet
attributes
, le chemin à spécifier estproject/attributes/
. -
Pour afficher l'entrée de répertoire des métadonnées de l'instance de VM
disks
, le chemin à spécifier estinstance/disks/
.
Par exemple, la commande suivante interroge de manière récursive les fiches de métadonnées d'instance pour le répertoire
disks/
.PS C:\> $value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/instance/disks/?recursive=true") $value
Le résultat ressemble à ce qui suit :
[{"deviceName":"boot","index":0,"mode":"READ_WRITE","type":"PERSISTENT"}, {"deviceName":"persistent-disk-1","index":1,"mode":"READ_WRITE","type":"PERSISTENT"}, {"deviceName":"persistent-disk-2","index":2,"mode":"READ_ONLY","type":"PERSISTENT"}]
Par défaut, les contenus récursifs sont renvoyés au format JSON. Si vous souhaitez renvoyer ces contenus au format texte, ajoutez le paramètre de requête
alt=text
:PS C:\> $value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/instance/disks/?recursive=true&alt=text") $value
Le résultat ressemble à ce qui suit :
0/device-name boot 0/index 0 0/mode READ_WRITE 0/type PERSISTENT 1/device-name persistent-disk-1 1/index 1 1/mode READ_WRITE 1/type PERSISTENT 2/device-name persistent-disk-1 2/index 2 2/mode READ_ONLY 2/type PERSISTENT
-
Pour afficher l'entrée de répertoire des métadonnées du projet
- Connectez-vous à la VM Linux.
À partir de votre VM Linux, utilisez l'outil
curl
pour envoyer une requête. Pour modifier le format des données de réponse de requête pour une entrée de métadonnées d'instance de VM ou de projet, exécutez la commande suivante :curl "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY?alt=DATA_FORMAT" -H "Metadata-Flavor: Google"
Remplacez les éléments suivants :
-
Remplacez
PATH_TO_METADATA_ENTRY
par le chemin d'accès à l'instance de VM ou à la clé de métadonnées du projet dont vous souhaitez interroger la valeur. Si la clé se trouve dans un sous-répertoire du répertoire de l'instance ou du projet, veillez à inclure également le sous-répertoire. Exemple :-
Pour afficher la clé de métadonnées
project-id
, qui est stockée dans les métadonnées du projet, spécifiezproject/project-id
. -
Pour afficher la clé de métadonnées
image
, qui est stockée dans les métadonnées de l'instance de VM, spécifiezinstance/image
. -
Pour afficher les
enable-oslogin
qui peuvent être stockés dans le sous-répertoire des attributs des métadonnées d'instance de projet ou de VM, spécifiezproject/attributes/enable-oslogin
ouinstance/attributes/enable-oslogin
en fonction de votre cas d'utilisation.
-
Pour afficher la clé de métadonnées
DATA_FORMAT
: format dans lequel vous souhaitez obtenir les données de réponse de la requête, par exempletext
oujson
.
-
- Connectez-vous à votre VM Windows.
À partir de votre VM Windows, exécutez la commande
Invoke-RestMethod
pour effectuer une requête. Pour modifier le format des données de réponse de requête pour une entrée de métadonnées d'instance de VM ou de projet, exécutez la commande suivante :$value = (Invoke-RestMethod
-Headers @{'Metadata-Flavor' = 'Google'}
-Uri "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY?alt=DATA_FORMAT") $valueRemplacez les éléments suivants :
-
Remplacez
PATH_TO_METADATA_ENTRY
par le chemin d'accès à l'instance de VM ou à la clé de métadonnées du projet dont vous souhaitez interroger la valeur. Si la clé se trouve dans un sous-répertoire du répertoire de l'instance ou du projet, veillez à inclure également le sous-répertoire. Exemple :-
Pour afficher la clé de métadonnées
project-id
, qui est stockée dans les métadonnées du projet, spécifiezproject/project-id
. -
Pour afficher la clé de métadonnées
image
, qui est stockée dans les métadonnées de l'instance de VM, spécifiezinstance/image
. -
Pour afficher les
enable-oslogin
qui peuvent être stockés dans le sous-répertoire des attributs des métadonnées d'instance de projet ou de VM, spécifiezproject/attributes/enable-oslogin
ouinstance/attributes/enable-oslogin
en fonction de votre cas d'utilisation.
-
Pour afficher la clé de métadonnées
DATA_FORMAT
: format dans lequel vous souhaitez obtenir les données de réponse de la requête, par exempletext
oujson
.
-
Vous ne pouvez exécuter une requête
wait-for-change
que sur un point de terminaison de métadonnées ou de manière récursive sur le contenu d'un répertoire. Vous ne pouvez pas exécuter de requêtewait-for-change
sur une liste de répertoires. Si vous tentez de le faire, le serveur de métadonnées fait échouer la requête et renvoie une erreur 400 Requête non valide.Vous ne pouvez pas envoyer une requête
wait-for-change
pour un jeton de compte de service. Si vous essayez d'envoyer une requêtewait-for-change
à l'URL du jeton du compte de service, la requête échoue immédiatement et renvoie une erreur 400 Requête non valide.- Connectez-vous à la VM Linux.
À partir de votre VM Linux, utilisez l'outil
curl
pour envoyer une requête. Pour envoyer une requêtewait-for-change
pour une entrée de métadonnées d'instance de VM ou de projet, exécutez la commande suivante :curl "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY?wait_for_change=true" -H "Metadata-Flavor: Google"
Remplacez
PATH_TO_METADATA_ENTRY
par le chemin d'accès à l'instance de VM ou à la clé de métadonnées du projet dont vous souhaitez interroger la valeur. Si la clé se trouve dans un sous-répertoire du répertoire de l'instance ou du projet, veillez à inclure également le sous-répertoire. Exemple :-
Pour afficher la clé de métadonnées
project-id
, qui est stockée dans les métadonnées du projet, spécifiezproject/project-id
. -
Pour afficher la clé de métadonnées
image
, qui est stockée dans les métadonnées de l'instance de VM, spécifiezinstance/image
. -
Pour afficher les
enable-oslogin
qui peuvent être stockés dans le sous-répertoire des attributs des métadonnées d'instance de projet ou de VM, spécifiezproject/attributes/enable-oslogin
ouinstance/attributes/enable-oslogin
en fonction de votre cas d'utilisation.
Après la modification de la clé de métadonnées spécifiée, la requête renvoie la nouvelle valeur.
-
Pour afficher la clé de métadonnées
- Connectez-vous à votre VM Windows.
À partir de votre VM Windows, exécutez la commande
Invoke-RestMethod
pour effectuer une requête. Pour envoyer une requêtewait-for-change
pour une instance de VM ou une entrée de métadonnées de projet, exécutez la commande suivante :$value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY?wait_for_change=true") $value
Remplacez
PATH_TO_METADATA_ENTRY
par le chemin d'accès à l'instance de VM ou à la clé de métadonnées du projet dont vous souhaitez interroger la valeur. Si la clé se trouve dans un sous-répertoire du répertoire de l'instance ou du projet, veillez à inclure également le sous-répertoire. Exemple :-
Pour afficher la clé de métadonnées
project-id
, qui est stockée dans les métadonnées du projet, spécifiezproject/project-id
. -
Pour afficher la clé de métadonnées
image
, qui est stockée dans les métadonnées de l'instance de VM, spécifiezinstance/image
. -
Pour afficher les
enable-oslogin
qui peuvent être stockés dans le sous-répertoire des attributs des métadonnées d'instance de projet ou de VM, spécifiezproject/attributes/enable-oslogin
ouinstance/attributes/enable-oslogin
en fonction de votre cas d'utilisation.
Après la modification de la clé de métadonnées spécifiée, la requête renvoie la nouvelle valeur.
-
Pour afficher la clé de métadonnées
- Connectez-vous à la VM Linux.
Envoyez une requête à cette clé et imprimez les en-têtes. Pour ce faire, utilisez l'outil
curl
avec l'option-v
. Pour obtenir l'ETag actuel d'une entrée de métadonnées d'instance de VM ou de projet, exécutez la commande suivante :curl -v "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY" -H "Metadata-Flavor: Google"
Remplacez
PATH_TO_METADATA_ENTRY
par le chemin d'accès à l'instance de VM ou à la clé de métadonnées du projet dont vous souhaitez interroger la valeur. Si la clé se trouve dans un sous-répertoire du répertoire de l'instance ou du projet, veillez à inclure également le sous-répertoire. Exemple :-
Pour afficher la clé de métadonnées
project-id
, qui est stockée dans les métadonnées du projet, spécifiezproject/project-id
. -
Pour afficher la clé de métadonnées
image
, qui est stockée dans les métadonnées de l'instance de VM, spécifiezinstance/image
. -
Pour afficher les
enable-oslogin
qui peuvent être stockés dans le sous-répertoire des attributs des métadonnées d'instance de projet ou de VM, spécifiezproject/attributes/enable-oslogin
ouinstance/attributes/enable-oslogin
en fonction de votre cas d'utilisation.
Par exemple, la commande suivante obtient la valeur ETag actuelle pour la clé de métadonnées de l'instance
tags
.user@myinst:~$ curl -v "http://metadata.google.internal/computeMetadata/v1/instance/tags" -H "Metadata-Flavor: Google"
Le résultat ressemble à ce qui suit :
* About to connect() to metadata port 80 (#0) * Trying 169.254.169.254... connected * Connected to metadata (169.254.169.254) port 80 (#0) > GET /computeMetadata/v1/instance/tags HTTP/1.1 > User-Agent: curl/7.19.7 (x86_64-pc-linux-gnu) libcurl/7.19.7 OpenSSL/0.9.8k zlib/1.2.3.3 libidn/1.15 > Host: metadata > Accept: */* > < HTTP/1.1 200 OK < Content-Type: application/text < ETag: 411261ca6c9e654e < Date: Wed, 13 Feb 2013 22:43:45 GMT < Server: Metadata Server for VM < Content-Length: 26 < X-XSS-Protection: 1; mode=block < X-Frame-Options: SAMEORIGIN < http-server db-client
-
Pour afficher la clé de métadonnées
Vous pouvez ensuite utiliser cette valeur ETag avec la commande de l'outil
curl
dans votre requêtewait-for-change
. Pour utiliser la valeur ETag pour la requêtewait-for-change
des métadonnées d'instance ou de projet, exécutez la commande suivante :curl "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY?wait_for_change=true&last_etag=ETAG" -H "Metadata-Flavor: Google"
Remplacez les éléments suivants :
-
Remplacez
PATH_TO_METADATA_ENTRY
par le chemin d'accès à l'instance de VM ou à la clé de métadonnées du projet dont vous souhaitez interroger la valeur. Si la clé se trouve dans un sous-répertoire du répertoire de l'instance ou du projet, veillez à inclure également le sous-répertoire. Exemple :-
Pour afficher la clé de métadonnées
project-id
, qui est stockée dans les métadonnées du projet, spécifiezproject/project-id
. -
Pour afficher la clé de métadonnées
image
, qui est stockée dans les métadonnées de l'instance de VM, spécifiezinstance/image
. -
Pour afficher les
enable-oslogin
qui peuvent être stockés dans le sous-répertoire des attributs des métadonnées d'instance de projet ou de VM, spécifiezproject/attributes/enable-oslogin
ouinstance/attributes/enable-oslogin
en fonction de votre cas d'utilisation.
-
Pour afficher la clé de métadonnées
ETAG
: valeur ETag de la clé de métadonnées.
Dans cet exemple, la commande suivante utilise la valeur ETag pour la clé
tags
et interroge l'entrée de métadonnées de l'instance.user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/tags?wait_for_change=true&last_etag=411261ca6c9e654e" -H "Metadata-Flavor: Google"
Le serveur de métadonnées fait correspondre la valeur ETag que vous avez spécifiée. Si cette valeur a été modifiée, la requête renvoie le nouveau contenu de votre clé de métadonnées.
-
- Connectez-vous à votre VM Windows.
Envoyez une requête à cette clé et imprimez les en-têtes. Sous Windows, utilisez la commande
Invoke-WebRequest
: Pour obtenir l'ETag actuel d'une entrée de métadonnées d'instance de VM ou de projet, exécutez la commande suivante :$value = (Invoke-WebRequest -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY)
$value.Headers.ETag
Remplacez
PATH_TO_METADATA_ENTRY
par le chemin d'accès à l'instance de VM ou à la clé de métadonnées du projet dont vous souhaitez interroger la valeur. Si la clé se trouve dans un sous-répertoire du répertoire de l'instance ou du projet, veillez à inclure également le sous-répertoire. Exemple :-
Pour afficher la clé de métadonnées
project-id
, qui est stockée dans les métadonnées du projet, spécifiezproject/project-id
. -
Pour afficher la clé de métadonnées
image
, qui est stockée dans les métadonnées de l'instance de VM, spécifiezinstance/image
. -
Pour afficher les
enable-oslogin
qui peuvent être stockés dans le sous-répertoire des attributs des métadonnées d'instance de projet ou de VM, spécifiezproject/attributes/enable-oslogin
ouinstance/attributes/enable-oslogin
en fonction de votre cas d'utilisation.
Par exemple, la commande suivante obtient la valeur ETag actuelle pour la clé de métadonnées de l'instance
tags
.PS C:> $value = (Invoke-WebRequest -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri http://metadata.google.internal/computeMetadata/v1/instance/tags)
$value.Headers.ETag
Le résultat ressemble à ce qui suit :
* About to connect() to metadata port 80 (#0) * Trying 169.254.169.254... connected * Connected to metadata (169.254.169.254) port 80 (#0) > GET /computeMetadata/v1/instance/tags HTTP/1.1 > User-Agent: curl/7.19.7 (x86_64-pc-linux-gnu) libcurl/7.19.7 OpenSSL/0.9.8k zlib/1.2.3.3 libidn/1.15 > Host: metadata > Accept: / > < HTTP/1.1 200 OK < Content-Type: application/text < ETag: 411261ca6c9e654e < Date: Wed, 13 Feb 2013 22:43:45 GMT < Server: Metadata Server for VM < Content-Length: 26 < X-XSS-Protection: 1; mode=block < X-Frame-Options: SAMEORIGIN < http-server db-client
-
Pour afficher la clé de métadonnées
Vous pouvez ensuite utiliser cette valeur ETag dans votre requête
wait-for-change
. Pour utiliser la valeur ETag pour la requêtewait-for-change
des métadonnées d'instance ou de projet, exécutez la commande suivante :$value = (Invoke-RestMethod
-Headers @{'Metadata-Flavor' = 'Google'}
-Uri "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY?wait_for_change=true&last_etag=ETAG") $valueRemplacez les éléments suivants :
-
Remplacez
PATH_TO_METADATA_ENTRY
par le chemin d'accès à l'instance de VM ou à la clé de métadonnées du projet dont vous souhaitez interroger la valeur. Si la clé se trouve dans un sous-répertoire du répertoire de l'instance ou du projet, veillez à inclure également le sous-répertoire. Exemple :-
Pour afficher la clé de métadonnées
project-id
, qui est stockée dans les métadonnées du projet, spécifiezproject/project-id
. -
Pour afficher la clé de métadonnées
image
, qui est stockée dans les métadonnées de l'instance de VM, spécifiezinstance/image
. -
Pour afficher les
enable-oslogin
qui peuvent être stockés dans le sous-répertoire des attributs des métadonnées d'instance de projet ou de VM, spécifiezproject/attributes/enable-oslogin
ouinstance/attributes/enable-oslogin
en fonction de votre cas d'utilisation.
-
Pour afficher la clé de métadonnées
ETAG
: valeur ETag de la clé de métadonnées.
Dans cet exemple, la commande suivante utilise la valeur ETag pour la clé
tags
et interroge l'entrée de métadonnées de l'instance.PS C:> $value = (Invoke-RestMethod
-Headers @{'Metadata-Flavor' = 'Google'}
-Uri "http://metadata.google.internal/computeMetadata/v1/instance/tags?wait_for_change=true&last_etag=411261ca6c9e654e") $valueLe serveur de métadonnées fait correspondre la valeur ETag que vous avez spécifiée. Si cette valeur a été modifiée, la requête renvoie le nouveau contenu de votre clé de métadonnées.
-
- Connectez-vous à la VM Linux.
À partir de votre VM Linux, utilisez l'outil
curl
pour envoyer une requête. Pour exécuter une requêtewait-for-change
avec une valeur de délai d'inactivité pour une entrée de métadonnées d'instance de VM ou de projet, exécutez la commande suivante :curl "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY?wait_for_change=true&timeout_sec=TIMEOUT" -H "Metadata-Flavor: Google"
Remplacez les éléments suivants :
-
Remplacez
PATH_TO_METADATA_ENTRY
par le chemin d'accès à l'instance de VM ou à la clé de métadonnées du projet dont vous souhaitez interroger la valeur. Si la clé se trouve dans un sous-répertoire du répertoire de l'instance ou du projet, veillez à inclure également le sous-répertoire. Exemple :-
Pour afficher la clé de métadonnées
project-id
, qui est stockée dans les métadonnées du projet, spécifiezproject/project-id
. -
Pour afficher la clé de métadonnées
image
, qui est stockée dans les métadonnées de l'instance de VM, spécifiezinstance/image
. -
Pour afficher les
enable-oslogin
qui peuvent être stockés dans le sous-répertoire des attributs des métadonnées d'instance de projet ou de VM, spécifiezproject/attributes/enable-oslogin
ouinstance/attributes/enable-oslogin
en fonction de votre cas d'utilisation.
-
Pour afficher la clé de métadonnées
TIMEOUT
: valeur du délai d'expiration.
-
- Connectez-vous à votre VM Windows.
À partir de votre VM Windows, exécutez la commande
Invoke-RestMethod
pour effectuer une requête. Pour exécuter une requêtewait-for-change
avec une valeur de délai d'inactivité pour une entrée de métadonnées d'instance de VM ou de projet, exécutez la commande suivante :$value = (Invoke-RestMethod
-Headers @{'Metadata-Flavor' = 'Google'}
-Uri "http://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY?wait_for_change=true&timeout_sec=TIMEOUT") $valueRemplacez les éléments suivants :
-
Remplacez
PATH_TO_METADATA_ENTRY
par le chemin d'accès à l'instance de VM ou à la clé de métadonnées du projet dont vous souhaitez interroger la valeur. Si la clé se trouve dans un sous-répertoire du répertoire de l'instance ou du projet, veillez à inclure également le sous-répertoire. Exemple :-
Pour afficher la clé de métadonnées
project-id
, qui est stockée dans les métadonnées du projet, spécifiezproject/project-id
. -
Pour afficher la clé de métadonnées
image
, qui est stockée dans les métadonnées de l'instance de VM, spécifiezinstance/image
. -
Pour afficher les
enable-oslogin
qui peuvent être stockés dans le sous-répertoire des attributs des métadonnées d'instance de projet ou de VM, spécifiezproject/attributes/enable-oslogin
ouinstance/attributes/enable-oslogin
en fonction de votre cas d'utilisation.
-
Pour afficher la clé de métadonnées
TIMEOUT
: valeur du délai d'expiration.
-
Vous devez demander l'accès à l'aperçu du point de terminaison du serveur de métadonnées HTTPS.
Une fois votre projet ajouté à la liste d'autorisation, vous pouvez créer la VM. La VM doit répondre aux exigences suivantes :
- L'environnement invité doit s'exécuter sur la VM.
- La VM doit être une VM protégée. En effet, le serveur de métadonnées HTTPS nécessite l'utilisation de l'interface UEFI (Unified Extensible Firmware Interface) et du module vTPM (Virtual Trusted Platform Module) pour valider les certificats.
Connectez-vous à la VM Linux.
À partir de votre VM Linux, utilisez l'outil
curl
pour envoyer une requête et spécifier le certificat d'identité du client. Vous pouvez également spécifier le certificat racine.curl "https://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY" \ -E CLIENT_CERTIFICATE \ [--cacert ROOT_CERTIFICATE] \ -H "Metadata-Flavor: Google"
Remplacez les éléments suivants :
-
Remplacez
PATH_TO_METADATA_ENTRY
par le chemin d'accès à l'instance de VM ou à la clé de métadonnées du projet dont vous souhaitez interroger la valeur. Si la clé se trouve dans un sous-répertoire du répertoire de l'instance ou du projet, veillez à inclure également le sous-répertoire. Exemple :-
Pour afficher la clé de métadonnées
project-id
, qui est stockée dans les métadonnées du projet, spécifiezproject/project-id
. -
Pour afficher la clé de métadonnées
image
, qui est stockée dans les métadonnées de l'instance de VM, spécifiezinstance/image
. -
Pour afficher les
enable-oslogin
qui peuvent être stockés dans le sous-répertoire des attributs des métadonnées d'instance de projet ou de VM, spécifiezproject/attributes/enable-oslogin
ouinstance/attributes/enable-oslogin
en fonction de votre cas d'utilisation.
-
Pour afficher la clé de métadonnées
CLIENT_CERTIFICATE
: chemin d'accès au certificat d'identité du client :/run/google-mds-mtls/client.key
.- Facultatif :
ROOT_CERTIFICATE
: chemin d'accès au certificat racine :/run/google-mds-mtls/root.crt
.
Par exemple, pour interroger l'image de démarrage d'une VM, exécutez la requête suivante :
user@myinst:~$ curl "https://metadata.google.internal/computeMetadata/v1/instance/image" \ -E /run/google-mds-mtls/client.key \ -H "Metadata-Flavor: Google"
Le résultat ressemble à ce qui suit :
projects/rhel-cloud/global/images/rhel-8-v20210122
Si un message d'erreur s'affiche, consultez la documentation de dépannage.
-
Connectez-vous à votre VM Windows.
Obtenez le certificat d'identité du client à l'aide de l'une des commandes suivantes :
$cert = Get-PfxCertificate -FilePath "C:\ProgramData\Google\Compute Engine\mds-mtls-client.key.pfx"
$cert = Get-ChildItem Cert:\LocalMachine\My | Where-Object { $_.Issuer -like "google.internal" }
À partir de votre VM Windows, utilisez la commande
Invoke-RestMethod
et spécifiez le certificat d'identité du client pour effectuer une requête.PS C:\> $value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} -Certificate CLIENT_CERTIFICATE ` -Uri "https://metadata.google.internal/computeMetadata/v1/PATH_TO_METADATA_ENTRY") $value
Remplacez les éléments suivants :
CLIENT_CERTIFICATE
: chemin d'accès au certificat d'identité du client sur la VM. Il s'agit de la variable$cert
définie à l'étape précédente.-
Remplacez
PATH_TO_METADATA_ENTRY
par le chemin d'accès à l'instance de VM ou à la clé de métadonnées du projet dont vous souhaitez interroger la valeur. Si la clé se trouve dans un sous-répertoire du répertoire de l'instance ou du projet, veillez à inclure également le sous-répertoire. Exemple :-
Pour afficher la clé de métadonnées
project-id
, qui est stockée dans les métadonnées du projet, spécifiezproject/project-id
. -
Pour afficher la clé de métadonnées
image
, qui est stockée dans les métadonnées de l'instance de VM, spécifiezinstance/image
. -
Pour afficher les
enable-oslogin
qui peuvent être stockés dans le sous-répertoire des attributs des métadonnées d'instance de projet ou de VM, spécifiezproject/attributes/enable-oslogin
ouinstance/attributes/enable-oslogin
en fonction de votre cas d'utilisation.
-
Pour afficher la clé de métadonnées
Par exemple, pour interroger l'image de démarrage d'une VM Windows Server 2019, exécutez la requête suivante :
PS C:\> $value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} -Certificate $cert ` -Uri "https://metadata.google.internal/computeMetadata/v1/instance/image") $value
Le résultat ressemble à ce qui suit :
projects/windows-cloud/global/images/windows-server-2019-dc-v20210112
Toutes les requêtes contenant l'en-tête
X-Forwarded-For
sont automatiquement rejetées par le serveur de métadonnées. Cet en-tête indique généralement que la requête a été exécutée par un serveur proxy et peut ne pas être une requête effectuée par un utilisateur autorisé. Pour des raisons de sécurité, toutes ces requêtes sont refusées.Lorsque vous exécutez la commande
curl
pour récupérer les métadonnées du serveur, notez que certains caractères encodés ne sont pas disponibles dans le chemin de la requête. Les caractères encodés ne sont acceptés que dans le chemin de la requête.Par exemple, la requête suivante est susceptible de ne pas aboutir :
curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/123456789-compute%40developer.gserviceaccount.com/?query_path=https%3A%2F%2Flocalhost%3A8200%2Fexample%2Fquery&another_param=true" -H "Metadata-Flavor: Google"
Pour que cette requête fonctionne, vous devez remplacer le caractère encodé non disponible dans le chemin de la requête (
%40
) par la valeur acceptée équivalente (@
).curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/1234567898-compute@developer.gserviceaccount.com/?query_path=https%3A%2F%2Flocalhost%3A8200%2Fexample%2Fquery&another_param=true" -H "Metadata-Flavor: Google"
Le tableau suivant récapitule les caractères encodés qui ne sont pas acceptés dans le chemin d'une requête.
Caractère encodé Valeur acceptée %21 !
%24 $
%27 '
%28 (
%29 )
%2A *
%2C ,
%40 @
- Afficher les métadonnées du projet
- Afficher les métadonnées zonales
- Afficher les métadonnées d'instance
Dans la console Google Cloud, accédez à la page Métadonnées.
Accéder à la page "Métadonnées"
La page Métadonnées affiche la liste de toutes les entrées de métadonnées personnalisées de votre projet.
PROJECT_ID
: ID de votre projet.ZONE
: zone pour laquelle vous souhaitez afficher les métadonnées zonales.PROJECT_ID
: ID de votre projet.ZONE
: zone pour laquelle vous souhaitez afficher les métadonnées zonales.- Dans la console Google Cloud, accédez à la page Instances de VM.
Cliquez sur le nom de la VM dont vous souhaitez afficher les métadonnées.
Clés SSH de cette VM. Dans la section Sécurité et accès, affichez le champ Clés SSH.
La valeur
None
indique qu'aucune clé SSH n'est stockée dans les métadonnées de l'instance.Les autres valeurs indiquent que des clés SSH sont stockées dans les métadonnées de l'instance.
Clés SSH d'un projet. Dans la section Sécurité et accès, affichez le champ Bloquer les clés SSH au niveau du projet.
La valeur
On
indique que la valeur de la clé de métadonnéesblock-project-ssh-keys
estTRUE
dans les métadonnées d'instance.La valeur
Off
indique que la valeur de la clé de métadonnéesblock-project-ssh-keys
estFALSE
ou que la clé n'est pas définie.
Toutes les autres métadonnées personnalisées. Consultez la section Métadonnées personnalisées. Vous voyez toutes les clés et valeurs des métadonnées personnalisées, autres que les métadonnées de clés SSH.
PROJECT_ID
: ID de votre projetZONE
: zone où se trouve la VMVM_NAME
: nom de la VM.- Apprenez-en plus sur les métadonnées des VM.
- Découvrez comment définir des métadonnées personnalisées.
- Découvrez comment définir et interroger des attributs d'invité.
Python
Pour utiliser les exemples Python de cette page dans un environnement de développement local, installez et initialisez gcloud CLI, puis configurez le service Identifiants par défaut de l'application à l'aide de vos identifiants utilisateur.
Pour en savoir plus, consultez Set up authentication for a local development environment.
REST
Pour utiliser les exemples d'API REST de cette page dans un environnement de développement local, vous devez utiliser les identifiants que vous fournissez à gcloud CLI.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Pour en savoir plus, consultez la section S'authentifier pour utiliser REST dans la documentation sur l'authentification Google Cloud.
Rôles requis
Les rôles et autorisations suivants sont nécessaires pour afficher des métadonnées personnalisées depuis l'extérieur de la VM à l'aide de la console Google Cloud, de la Google Cloud CLI ou de REST. Si vous interrogez les métadonnées de manière programmatique à partir de la VM, vous n'avez besoin que des rôles et des autorisations nécessaires pour vous connecter à la VM.
Pour obtenir les autorisations nécessaires pour afficher des métadonnées personnalisées extérieures à la VM, demandez à votre administrateur de vous accorder les rôles IAM suivants :
Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.
Ces rôles prédéfinis contiennent les autorisations requises pour afficher les métadonnées personnalisées depuis l'extérieur de la VM. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :
Autorisations requises
Vous devez disposer des autorisations suivantes pour afficher les métadonnées personnalisées depuis l'extérieur de la VM :
Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.
Interroger les métadonnées de manière automatisée
Vous pouvez accéder à toutes les métadonnées en interrogeant les entrées de valeur de métadonnées de manière automatisée à partir d'une VM Linux ou Windows. À partir de votre VM, vous pouvez interroger de manière automatisée vos valeurs de métadonnées de l'une des manières suivantes à l'aide d'outils tels que
curl
sous Linux ouInvoke-RestMethod
sous Windows :Points de terminaison du serveur de métadonnées
Pour interroger de manière automatisée les métadonnées à partir d'une VM, vous disposez des points de terminaison de serveur de métadonnées suivants :
La plupart des exemples de ce document utilisent le point de terminaison http. Toutefois, vous pouvez accéder à toutes les entrées de métadonnées, que vous utilisiez le point de terminaison https ou http.
Composantes d'une requête de métadonnées
Le tableau suivant récapitule les principaux composants d'une requête de métadonnées.
Composants Description URL racine Toutes les valeurs de métadonnées sont définies comme des sous-chemins d'accès situés sous l'URL racine suivante :
En-tête de requête Cet en-tête indique que la requête a été envoyée avec l'intention de récupérer des valeurs de métadonnées, et non involontairement à partir d'une source non sécurisée. De plus, il permet au serveur de métadonnées de renvoyer les données demandées. Si vous ne fournissez pas cet en-tête, le serveur de métadonnées refuse votre requête.
Metadata-Flavor: Google
Interroger une seule entrée de métadonnées
Utilisez les commandes suivantes pour interroger une seule entrée de métadonnées.
Linux
Windows
Interroger les listes de répertoires de métadonnées
Utilisez les commandes suivantes pour interroger les fiches de répertoire de métadonnées. Les fiches de répertoire sont des entrées de métadonnées contenant d'autres clés de métadonnées. Toute entrée de métadonnées se terminant par une barre oblique correspond à une liste de répertoires.
Linux
Windows
L'entrée
disks/
désigne un répertoire de disques associé à la VM. Pour interroger l'entrée de disque, procédez comme suit :Interroger les listes de répertoires de manière récursive
Si vous souhaitez renvoyer tout le contenu sous un répertoire, ajoutez le paramètre
recursive=true
à votre requête :Linux
Windows
Mettre en forme le résultat d'une requête
Par défaut, chaque point de terminaison a un format prédéfini pour la réponse. Certains points de terminaison peuvent renvoyer des données au format JSON par défaut, tandis que d'autres peuvent renvoyer des données sous forme de chaîne. Vous pouvez remplacer la spécification de format de données par défaut à l'aide des paramètres de requête
alt=json
oualt=text
. Ces paramètres renvoient respectivement les données au format de chaîne JSON ou sous forme de représentation en texte brut.Linux
Exemple
Par exemple, la clé
tags
renvoie automatiquement les données au format JSON. Spécifiez le paramètre de requêtealt=text
pour renvoyer les données au format texte.Requête par défaut
user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/tags" -H "Metadata-Flavor: Google"
Le résultat ressemble à ce qui suit :
["http-server", "db-client", "app-server", "mysql-server"]
Requête avec mise en forme
user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/tags?alt=text" -H "Metadata-Flavor: Google"
Le résultat ressemble à ce qui suit :
http-server db-client app-server mysql-server
Windows
Exemple
Par exemple, la clé
tags
renvoie automatiquement les données au format JSON. Spécifiez le paramètre de requêtealt=text
pour renvoyer les données au format texte.Requête par défaut
PS C:> $value = (Invoke-RestMethod
-Headers @{'Metadata-Flavor' = 'Google'}
-Uri "http://metadata.google.internal/computeMetadata/v1/instance/tags") $valueLe résultat ressemble à ce qui suit :
["http-server", "db-client", "app-server", "mysql-server"]
Requête avec mise en forme
PS C:> $value = (Invoke-RestMethod
-Headers @{'Metadata-Flavor' = 'Google'}
-Uri "http://metadata.google.internal/computeMetadata/v1/instance/tags?alt=text") $valueLe résultat ressemble à ce qui suit :
http-server db-client app-server mysql-server
Interroger les modifications de métadonnées à l'aide de la fonctionnalité
wait-for-change
Étant donné que les valeurs de métadonnées peuvent changer pendant que votre VM est en cours d'exécution, le serveur de métadonnées peut recevoir des notifications en cas de modifications des métadonnées à l'aide de la fonctionnalité
wait-for-change
. Avec cette option, la requête ne renvoie un résultat que lorsque les métadonnées spécifiées ont été modifiées.Vous pouvez utiliser cette fonctionnalité sur des métadonnées personnalisées ou définies par le serveur. Par conséquent, si des modifications sont apportées à votre VM ou à votre projet, ou si une mise à jour est effectuée sur une métadonnée personnalisée, vous pouvez réagir au changement de manière automatisée.
Par exemple, vous pouvez effectuer une requête sur la clé
tags
afin que la requête ne renvoie une réponse que si le contenu des métadonnées de tags a été modifié. Lorsque la requête est renvoyée, la nouvelle valeur de la clé de métadonnées est spécifiée.La fonctionnalité
wait-for-change
vous permet également de faire correspondre votre requête et de définir des délais avant expiration.Lorsque vous utilisez la fonctionnalité
wait-for-change
, tenez compte des points suivants :Pour envoyer une requête
wait-for-change
, interrogez une clé de métadonnées et ajoutez le paramètre de requête?wait_for_change=true
:Linux
Exemples
Dans cet exemple, si une requête est transmise à la méthode
setInstanceTags method
, la requête renvoie une réponse incluant les nouvelles valeurs :user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/tags?wait_for_change=true" -H "Metadata-Flavor: Google"
Le résultat ressemble à ce qui suit :
http-server db-client
Vous pouvez également envoyer une requête
wait-for-change
de manière récursive sur le contenu d'un répertoire :user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/attributes/?recursive=true&wait_for_change=true" -H "Metadata-Flavor: Google"
Le serveur de métadonnées renvoie le nouveau contenu en cas de modification :
{"foo":"bar","baz":"bat"}
Windows
Exemples
Après la modification de la clé de métadonnées spécifiée, la requête renvoie la nouvelle valeur. Dans cet exemple, si une requête est transmise à la méthode
setInstanceTags method
, la requête renvoie une réponse incluant les nouvelles valeurs :PS C:> $value = (Invoke-RestMethod
-Headers @{'Metadata-Flavor' = 'Google'}
-Uri "http://metadata.google.internal/computeMetadata/v1/instance/tags?wait_for_change=true") $valueLe résultat ressemble à ce qui suit :
http-server db-client
Vous pouvez également envoyer une requête
wait-for-change
de manière récursive sur le contenu d'un répertoire :PS C:> $value = (Invoke-RestMethod
-Headers @{'Metadata-Flavor' = 'Google'}
-Uri "http://metadata.google.internal/computeMetadata/v1/instance/attributes?recursive=true&wait_for_change=true") $valueLe serveur de métadonnées renvoie le nouveau contenu en cas de modification :
{"foo":"bar","baz":"bat"}
Utiliser les ETags
Lorsque vous soumettez une requête
wait-for-change
, le serveur de métadonnées renvoie une réponse si des modifications ont été apportées dans le contenu de ces métadonnées. Cependant, il existe une condition de concurrence inhérente entre une mise à jour des métadonnées et l'envoi d'une requêtewait-for-change
. Il est donc utile de savoir de manière fiable si les valeurs de métadonnées que vous obtenez sont les plus récentes.Pour vous aider, vous pouvez utiliser le paramètre de requête
last_etag
qui permet de comparer la valeur ETag que vous avez fournie avec la valeur ETag enregistrée sur le serveur de métadonnées. Si les valeurs ETag correspondent, la requêtewait-for-change
est acceptée. Si elles ne correspondent pas, cela indique que le contenu des métadonnées a été modifié depuis votre dernière récupération de la valeur ETag. Le serveur de métadonnées renvoie immédiatement la valeur la plus récente.VM Linux
Pour obtenir la valeur ETag actuelle d'une clé de métadonnées, procédez comme suit :
VM Windows
Pour obtenir la valeur ETag actuelle d'une clé de métadonnées, procédez comme suit :
Python
L'exemple Python suivant montre comment surveiller de manière automatisée les modifications apportées dans le serveur de métadonnées.
Cet exemple définit l'ETag initial sur
0
. Le serveur de métadonnées ne renvoie pas de réponse avec0
comme valeur ETag. Lorsque la valeur0
est spécifiée comme dernier ETag dans une requête, le serveur de métadonnées répond avec la valeur actuelle et l'ETag. Cela permet d'économiser la quantité de code nécessaire pour obtenir la valeur initiale et l'ETag.Définir les délais avant expiration
Si vous souhaitez que votre requête
wait-for-change
expire après un certain nombre de secondes, vous pouvez définir le paramètretimeout_sec
. Le paramètretimeout_sec
permet de limiter le temps d'attente de votre requête au nombre de secondes spécifié. Lorsque la requête atteint cette limite, elle renvoie le contenu actuel de la clé de métadonnées.Lorsque vous définissez le paramètre
timeout_sec
, la requête renvoie toujours une réponse après le nombre de secondes spécifié, que la valeur de métadonnées ait été réellement modifiée ou non. Le délai avant expiration ne peut être défini qu'avec un nombre entier.Linux
Par exemple, la commande suivante exécute une requête
wait-for-change
qui est définie pour expirer au bout de 360 secondes :user@myinst:~$ curl "http://metadata.google.internal/computeMetadata/v1/instance/tags?wait_for_change=true&timeout_sec=360" -H "Metadata-Flavor: Google"
Windows
Par exemple, la commande suivante exécute une requête
wait-for-change
qui est définie pour expirer au bout de 360 secondes :PS C:> $value = (Invoke-RestMethod
-Headers @{'Metadata-Flavor' = 'Google'}
-Uri "http://metadata.google.internal/computeMetadata/v1/instance/tags?wait_for_change=true&timeout_sec=360") $valueInterroger les métadonnées à l'aide du point de terminaison du serveur de métadonnées HTTPS
Le point de terminaison du serveur de métadonnées HTTPS (
https://metadata.google.internal/computeMetadata/v1
) offre une sécurité supplémentaire pour la transmission des informations entre le serveur de métadonnées et la VM.Pour utiliser le point de terminaison du serveur de métadonnées HTTPS, examinez les conditions suivantes :
Pour obtenir une présentation de la façon dont les requêtes au point de terminaison du serveur de métadonnées HTTPS sont gérées, consultez la section Point de terminaison du serveur de métadonnées HTTPS. Vous pouvez effectuer les mêmes requêtes sur le serveur de métadonnées, que vous utilisiez le point de terminaison https ou http. Toutefois, pour appeler le point de terminaison https, vous devez spécifier le chemin d'accès aux certificats d'identité du client et, dans certains cas, le certificat racine.
Les commandes suivantes montrent comment interroger le serveur de métadonnées à l'aide du point de terminaison https.
Linux
Windows
Limites
Codes d'état
Lorsque vous envoyez une requête au serveur de métadonnées, il renvoie des codes d'état HTTP standards pour indiquer le succès ou l'échec de l'opération. Parfois, les conditions du réseau ou les événements hôtes peuvent entraîner l'échec de la requête et le renvoi d'un code d'erreur par le serveur de métadonnées. Pour faire face à ce type de situation, vous devez concevoir votre application de sorte qu'elle soit tolérante aux pannes et capable de reconnaître et gérer ces erreurs.
Pour obtenir une liste détaillée des codes d'état pouvant être renvoyés, consultez la section Résoudre les problèmes liés aux codes serveur.
Afficher les métadonnées personnalisées de vos VM.
Vous pouvez afficher les valeurs de métadonnées personnalisées de vos VM Compute Engine de l'une des manières suivantes :
Afficher les métadonnées du projet
Pour afficher les métadonnées personnalisées qui s'appliquent à toutes les VM de votre projet, utilisez l'une des méthodes suivantes.
Console
gcloud
Exécutez la commande
gcloud compute project-info describe
pour interroger les métadonnées du projet :gcloud compute project-info describe --flatten="commonInstanceMetadata[]"
Le résultat ressemble à ce qui suit :
--- fingerprint: HcSFdS_1_1I= items: - key: ssh-keys value: USERNAME:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDWZ... kind: compute#metadata
REST
Pour interroger les métadonnées d'un projet, envoyez une requête
GET
à la méthodeproject.get
.Remplacez
PROJECT_ID
par l'ID du projet.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
Le résultat ressemble à ce qui suit :
"kind": "compute#project", "id": "XXXXXXX", "creationTimestamp": "2018-12-10T08:34:33.616-08:00", "name": "YOUR_PROJECT", "commonInstanceMetadata": { "kind": "compute#metadata", "fingerprint": "XXXXXCdg=", "items": [ { "key": "enable-guest-attributes", "value": "TRUE" }, { "key": "enable-os-inventory", "value": "true" }, { "key": "enable-osconfig", "value": "TRUE" }, { "key": "enable-oslogin", "value": "TRUE" }, { "key": "sshKeys", "value": "XXXXX" } ] }, ...
Afficher les métadonnées zonales
Pour afficher les métadonnées personnalisées qui s'appliquent à toutes les instances de VM d'une zone spécifique d'un projet, utilisez l'une des méthodes suivantes.
gcloud
Pour interroger les métadonnées zonales personnalisées, utilisez la commande
gcloud compute project-zonal-metadata describe
.gcloud compute project-zonal-metadata describe \ --zone=ZONE \ --project=PROJECT_ID
Remplacez les éléments suivants :
Le résultat ressemble à ce qui suit :
{ "fingerprint": "VlRIl8dx9vk=", "metadata": { items: { "key-1": "value-1", "key-2": "value-2" } } }
REST
Pour interroger les métadonnées zonales personnalisées, envoyez une requête
GET
à la méthodeinstanceSettings().get
.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceSettings
Remplacez les éléments suivants :
Le résultat ressemble à ce qui suit :
{ "fingerprint": "VlRIl8dx9vk=", "metadata": { items: { "key-1": "value-1", "key-2": "value-2" } } }
Afficher les métadonnées d'instance
Pour afficher les métadonnées qui s'appliquent à une seule VM de votre projet, utilisez l'une des méthodes suivantes.
Console
gcloud
Exécutez la commande
gcloud compute instances describe
pour interroger les métadonnées d'une instance :gcloud compute instances describe VM_NAME --flatten="metadata[]"
Remplacez
VM_NAME
par le nom de la VM pour laquelle vous souhaitez rechercher des métadonnées.Le résultat ressemble à ce qui suit :
--- fingerprint: MTgTJ5m-Cjs= items: - key: enable-oslogin value: 'true' kind: compute#metadata
REST
Pour interroger les métadonnées d'une VM spécifique, envoyez une requête
GET
à la méthodeinstances.get
.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
Le résultat ressemble à ce qui suit :
...... "metadata": { "kind": "compute#metadata", "fingerprint": "XXXXXXVo=", "items": [ { "key": "enable-oslogin", "value": "true" } ] },....
Remplacez les éléments suivants :
Étapes suivantes
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2024/12/22 (UTC).
-