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.
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. - Passez en revue les principes de base de la définition, de la classification et de 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 comme suit :
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 à l'échelle du projet :
compute.projects.get
- Pour afficher les métadonnées zonales personnalisées d'un projet :
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
http://metadata.google.internal/computeMetadata/v1
http://169.254.169.254/v1
http://metadata.goog/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, exécutez la commande suivante :
curl "http://metadata.google.internal/computeMetadata/v1/instance/METADATA_KEY" -H "Metadata-Flavor: Google"
Pour interroger une entrée de métadonnées de projet, exécutez la commande suivante :
curl "http://metadata.google.internal/computeMetadata/v1/project/METADATA_KEY" -H "Metadata-Flavor: Google"
Remplacez
METADATA_KEY
par la clé de métadonnées de l'instance ou du projet dont vous souhaitez interroger la valeur.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
- 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, exécutez la commande suivante :
$value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/instance/METADATA_KEY") $value
Pour interroger 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/project/METADATA_KEY") $value
Remplacez
METADATA_KEY
par la clé de métadonnées de l'instance ou du projet dont vous souhaitez interroger la valeur.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
Connectez-vous à la VM Linux.
Depuis votre VM Linux, exécutez les commandes suivantes :
Pour interroger un répertoire de métadonnées d'instance de VM, exécutez la commande suivante :
curl "http://metadata.google.internal/computeMetadata/v1/instance/METADATA_DIRECTORY_NAME/" -H "Metadata-Flavor: Google"
Pour interroger un répertoire de métadonnées de projet, exécutez la commande suivante :
curl "http://metadata.google.internal/computeMetadata/v1/project/METADATA_DIRECTORY_NAME/" -H "Metadata-Flavor: Google"
Remplacez
METADATA_DIRECTORY_NAME
par le nom de l'instance ou du répertoire de métadonnées du projet dont vous souhaitez interroger les listes.Par exemple, considérons 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
Connectez-vous à votre VM Windows.
Depuis votre VM Windows, exécutez les commandes suivantes :
Pour interroger un répertoire de métadonnées d'instance de VM, exécutez la commande suivante :
$value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/instance/METADATA_DIRECTORY_NAME/") $value
Pour interroger un répertoire 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/project/METADATA_DIRECTORY_NAME/") $value
Remplacez
METADATA_DIRECTORY_NAME
par le nom de l'instance ou du répertoire de métadonnées du projet dont vous souhaitez interroger les listes.Par exemple, considérons 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
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 listes d'un répertoire de métadonnées d'instance de VM, exécutez la commande suivante :
curl "http://metadata.google.internal/computeMetadata/v1/instance/METADATA_DIRECTORY_NAME/?recursive=true" -H "Metadata-Flavor: Google"
Pour interroger de manière récursive les listes d'un répertoire de métadonnées de projet, exécutez la commande suivante :
curl "http://metadata.google.internal/computeMetadata/v1/project/METADATA_DIRECTORY_NAME/?recursive=true" -H "Metadata-Flavor: Google"
Remplacez
METADATA_DIRECTORY_NAME
par le nom de l'instance ou du répertoire de métadonnées du projet dont vous souhaitez interroger les listes de manière récursive.Par exemple, la commande suivante interroge de manière récursive les listes de métadonnées de l'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
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 listes d'un répertoire de métadonnées d'instance de VM, exécutez la commande suivante :
$value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/instance/METADATA_DIRECTORY_NAME/?recursive=true") $value
Pour interroger de manière récursive les listes d'un répertoire 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/project/METADATA_DIRECTORY_NAME/?recursive=true") $value
Remplacez
METADATA_DIRECTORY_NAME
par le nom de l'instance ou du répertoire de métadonnées du projet dont vous souhaitez interroger les listes de manière récursive.Par exemple, la commande suivante interroge de manière récursive les listes de métadonnées de l'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
- 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, exécutez la commande suivante :
curl "http://metadata.google.internal/computeMetadata/v1/instance/METADATA_KEY?alt=DATA_FORMAT" -H "Metadata-Flavor: Google"
Pour modifier le format des données de réponse de requête pour une entrée de métadonnées de projet, exécutez la commande suivante :
curl "http://metadata.google.internal/computeMetadata/v1/project/METADATA_KEY?alt=DATA_FORMAT" -H "Metadata-Flavor: Google"
Remplacez les éléments suivants :
METADATA_KEY
: clé de métadonnées d'instance ou de projet dont vous souhaitez interroger la valeur.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, exécutez la commande suivante :
$value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/instance/METADATA_KEY?alt=DATA_FORMAT") $value
Pour modifier le format des données de réponse de requête pour 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/project/METADATA_KEY?alt=DATA_FORMAT") $value
Remplacez les éléments suivants :
METADATA_KEY
: clé de métadonnées d'instance ou de projet dont vous souhaitez interroger la valeur.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ête
wait-for-change
pour une entrée de métadonnées d'instance de VM, exécutez la commande suivante :curl "http://metadata.google.internal/computeMetadata/v1/instance/METADATA_KEY?wait_for_change=true" -H "Metadata-Flavor: Google"
Pour envoyer une requête
wait-for-change
pour une entrée de métadonnées de projet, exécutez la commande suivante :curl "http://metadata.google.internal/computeMetadata/v1/project/METADATA_KEY" -H "Metadata-Flavor: Google"
Remplacez
METADATA_KEY
par la clé de métadonnées de l'instance ou du projet dont vous souhaitez interroger la valeur.Après la modification de la clé de métadonnées spécifiée, la requête renvoie la nouvelle valeur.
- Connectez-vous à votre VM Windows.
À partir de votre VM Windows, exécutez la commande
Invoke-RestMethod
pour effectuer une requête.PS C:> $value = (Invoke-RestMethod
-Headers @{'Metadata-Flavor' = 'Google'}
-Uri "http://metadata.google.internal/computeMetadata/v1/METADATA_KEY?wait_for_change=true") $valuePour envoyer une requête
wait-for-change
pour une entrée de métadonnées d'instance de VM, exécutez la commande suivante :$value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/instance/METADATA_KEY?wait_for_change=true") $value
Pour envoyer une requête
wait-for-change
pour 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/project/METADATA_KEY?wait_for_change=true") $value
Remplacez
METADATA_KEY
par la clé de métadonnées de l'instance ou du projet pour laquelle vous souhaitez effectuer une requêtewait-for-change
.Après la modification de la clé de métadonnées spécifiée, la requête renvoie la nouvelle valeur.
- 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, exécutez la commande suivante :
curl -v "http://metadata.google.internal/computeMetadata/v1/instance/METADATA_KEY" -H "Metadata-Flavor: Google"
Pour obtenir l'ETag actuel d'une entrée de métadonnées de projet, exécutez la commande suivante :
curl -v "http://metadata.google.internal/computeMetadata/v1/project/METADATA_KEY" -H "Metadata-Flavor: Google"
Remplacez
METADATA_KEY
par la clé de métadonnées de l'instance ou du projet dont vous souhaitez interroger la valeur.Par exemple, la commande suivante obtient la valeur ETag actuelle pour la clé de métadonnées d'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
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ête
wait-for-change
de métadonnées d'instance, exécutez la commande suivante :curl "http://metadata.google.internal/computeMetadata/v1/instance/METADATA_KEY?wait_for_change=true&last_etag=ETAG" -H "Metadata-Flavor: Google"
Pour utiliser la valeur ETag pour la requête
wait-for-change
de métadonnées de projet, exécutez la commande suivante :curl "http://metadata.google.internal/computeMetadata/v1/project/METADATA_KEY?wait_for_change=true&last_etag=ETAG" -H "Metadata-Flavor: Google"
Remplacez les éléments suivants :
METADATA_KEY
: clé de métadonnées d'instance ou de projet dont vous souhaitez interroger la valeur.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 les requêtes pour l'entrée de métadonnées d'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, exécutez la commande suivante :
$value = (Invoke-WebRequest -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri http://metadata.google.internal/computeMetadata/v1/instance/METADATA_KEY) $value.Headers.ETag
Pour obtenir l'ETag actuel d'une entrée de métadonnées de projet, exécutez la commande suivante :
$value = (Invoke-WebRequest -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri http://metadata.google.internal/computeMetadata/v1/project/METADATA_KEY) $value.Headers.ETag
Remplacez
METADATA_KEY
par la clé de métadonnées de l'instance ou du projet dont vous souhaitez interroger la valeur.Par exemple, la commande suivante obtient la valeur ETag actuelle pour la clé de métadonnées d'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
Vous pouvez ensuite utiliser cette valeur ETag dans votre requête
wait-for-change
:Pour utiliser la valeur ETag pour la requête
wait-for-change
de métadonnées d'instance, exécutez la commande suivante :$value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/instance/METADATA_KEY?wait_for_change=true&last_etag=ETAG") $value
Pour utiliser la valeur ETag pour la requête
wait-for-change
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/project/METADATA_KEY?wait_for_change=true&last_etag=ETAG") $value
Remplacez les éléments suivants :
METADATA_KEY
: clé de métadonnées d'instance ou de projet dont vous souhaitez interroger la valeur.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 les requêtes pour l'entrée de métadonnées d'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ête
wait-for-change
avec une valeur de délai d'inactivité pour une entrée de métadonnées d'instance de VM, exécutez la commande suivante :curl "http://metadata.google.internal/computeMetadata/v1/instance/METADATA_KEY?wait_for_change=true&timeout_sec=TIMEOUT" -H "Metadata-Flavor: Google"
Pour exécuter une requête
wait-for-change
avec une valeur de délai d'expiration pour une entrée de métadonnées de projet, exécutez la commande suivante :curl "http://metadata.google.internal/computeMetadata/v1/project/METADATA_KEY?wait_for_change=true&timeout_sec=TIMEOUT" -H "Metadata-Flavor: Google"
Remplacez les éléments suivants :
METADATA_KEY
: clé de métadonnées d'instance ou de projet dont vous souhaitez interroger la valeur.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ête
wait-for-change
avec une valeur de délai d'inactivité pour une entrée de métadonnées d'instance de VM, exécutez la commande suivante :$value = (Invoke-RestMethod ` -Headers @{'Metadata-Flavor' = 'Google'} ` -Uri "http://metadata.google.internal/computeMetadata/v1/instance/METADATA_KEY?wait_for_change=true&timeout_sec=TIMEOUT") $value
Pour exécuter une requête
wait-for-change
avec une valeur de délai d'expiration pour 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/project/METADATA_KEY?wait_for_change=true&timeout_sec=TIMEOUT") $value
Remplacez les éléments suivants :
METADATA_KEY
: clé de métadonnées d'instance ou de projet dont vous souhaitez interroger la valeur.TIMEOUT
: valeur du délai d'expiration.
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 à l'échelle du projet
- Afficher les métadonnées zonales du projet (preview)
- Afficher les métadonnées d'instance
Dans Google Cloud Console, accédez à la page Métadonnées.
Accéder à la page "Métadonnées"
- Dans l'onglet Métadonnées, vous pouvez examiner la plupart des métadonnées de projet personnalisées, à l'exception des métadonnées de clés SSH.
- Dans l'onglet Clés SSH, vous pouvez consulter toutes les métadonnées de clés SSH au niveau du projet.
PROJECT_ID
: ID de votre projet.ZONE
: zone pour laquelle vous souhaitez afficher les métadonnées zonales du projet.PROJECT_ID
: ID de votre projet.ZONE
: zone pour laquelle vous souhaitez afficher les métadonnées zonales du projet.- 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 projet.ZONE
: 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 des métadonnées de manière automatisée à partir de la VM, vous n'avez besoin que des rôles et 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 section Gérer les accès.
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
À partir d'une VM, vous pouvez interroger les valeurs de métadonnées par défaut ou personnalisées de manière automatisée à l'aide d'outils tels que
curl
sous Linux ouInvoke-RestMethod
sous Windows.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 listes de répertoires de métadonnées. Les listes de répertoires 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és à 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 simple 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") $valueCodes d'état
Lorsque vous envoyez une requête
wait-for-change
, le serveur de métadonnées renvoie des codes d'état HTTP standards pour indiquer le succès ou l'échec de l'opération. En cas d'erreurs, le serveur de métadonnées peut faire échouer la requête à cause des conditions du réseau et peut renvoyer un code d'erreur. 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.Les états possibles renvoyés par le serveur de métadonnées sont les suivants :
État Description HTTP 200
Success! Une valeur a été modifiée, ou vous avez atteint la valeur timeout_sec
spécifiée, et la requête a bien été renvoyée.Error 400
La requête n'est pas valide. Corrigez la requête, puis réessayez. Error 404
La valeur de métadonnées que vous avez spécifiée n'existe plus. Le serveur de métadonnées renvoie également cette erreur si vos métadonnées sont supprimées pendant que vous attendez une modification. Error 503
Une erreur temporaire du serveur ou un événement temporaire de maintenance s'est produit(e). Réessayez d'envoyer la requête. Limites
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 à l'échelle 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 à l'échelle 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 du projet
Pour afficher les métadonnées personnalisées qui s'appliquent à toutes les instances de VM dans une zone spécifique d'un projet, utilisez l'une des méthodes suivantes.
gcloud
Pour interroger les métadonnées zonales du projet, exécutez la commande
gcloud beta compute project-zonal-metadata describe
.gcloud beta 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 du projet, envoyez une requête
GET
à la méthodeinstanceSettings().get
.GET https://compute.googleapis.com/compute/beta/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/11/22 (UTC).
-