¿Cómo obtener la identificación de la instancia desde una instancia ec2?

411

¿Cómo puedo averiguar el instance idde una instancia ec2 desde dentro de la instancia ec2?

564

Consulte la documentación de EC2 sobre el tema .

Correr:

wget -q -O - http://169.254.169.254/latest/meta-data/instance-id

Si necesita acceso mediante programación al ID de la instancia desde un script,

die() { status=$1; shift; echo "FATAL: $*"; exit $status; }
EC2_INSTANCE_ID="`wget -q -O - http://169.254.169.254/latest/meta-data/instance-id || die \"wget instance-id has failed: $?\"`"

A continuación, se muestra un ejemplo de un uso más avanzado (recuperar el ID de instancia, así como la zona y región de disponibilidad, etc.):

EC2_INSTANCE_ID="`wget -q -O - http://169.254.169.254/latest/meta-data/instance-id || die \"wget instance-id has failed: $?\"`"
test -n "$EC2_INSTANCE_ID" || die 'cannot obtain instance-id'
EC2_AVAIL_ZONE="`wget -q -O - http://169.254.169.254/latest/meta-data/placement/availability-zone || die \"wget availability-zone has failed: $?\"`"
test -n "$EC2_AVAIL_ZONE" || die 'cannot obtain availability-zone'
EC2_REGION="`echo \"$EC2_AVAIL_ZONE\" | sed -e 's:\([0-9][0-9]*\)[a-z]*\$:\\1:'`"

También puede usar en curllugar de wget, dependiendo de lo que esté instalado en su plataforma.

10
  • @Leopd, obviamente sabes más que la gente de Amazon que implementó EC2 y redactó los documentos. Por cierto, nadie te impide crear un alias 169.254.169.254en /etc/hostssi eso te hace sentir más seguro, si ... te importa.
    vladr
    8/12/12 a las 15:45
  • 2
    ¿Y en el SDK de Java? ¿Hay alguna forma de obtener esto sin tener que hacer un GET en esa URL? Parece extraño si no está en el SDK
    Kevin M
    28/08/13 a las 15:12
  • 1
    Muy útil, gracias. Para otros que intentan averiguar la expresión regular en la última línea, esto es lo que se me ocurrió: Al final de la línea ( $), busque uno o más dígitos seguidos de una o más letras minúsculas. Sustituya solo con los dígitos. (Paréntesis barra invertida + a sed de recordar una subcadena, que se recordó con \1.) Me pareció un poco más fácil de leer - las únicas barras invertidas son las requeridas por el SED: EC2_REGION="$(echo "$EC2_AVAIL_ZONE" | sed -e 's:\([0-9][0-9]*\)[a-z]*$:\1:')". 29/07/14 a las 15:43
  • 75
    Puede eliminar los números mágicos usando en http://instance-data/lugar de169.254.169.254
    Jay P.
    6/01/15 a las 17:12
  • 22
    Revisé esto el 2016-02-04. Descubrí que el nombre de host "instancia-datos" (a) no figura en esa documentación y (b) no funciona (para mí) en un nuevo host EC2. La documentación - docs.aws.amazon.com/AWSEC2/latest/UserGuide/… - solo menciona la dirección 169.254 y no menciona el nombre de host "datos de instancia". es decir, use 169.254.169.254/latest/meta-data/instance-id
    JDS
    4 de febrero de 2016 a las 17:08
155

En las AMI de Amazon Linux, puede hacer lo siguiente:

$ ec2-metadata -i
instance-id: i-1234567890abcdef0

O, en Ubuntu y algunos otros sabores de Linux, ec2metadata --instance-id(Es posible que este comando no esté instalado de forma predeterminada en ubuntu, pero puede agregarlo con sudo apt-get install cloud-utils)

Como sugiere su nombre, también puede usar el comando para obtener otros metadatos útiles.

8
  • 3
    Si está pensando en usar esto, vale la pena leer este artículo (tldr: las herramientas de línea de comando was son java, y java tiene un tiempo de inicio prolongado)
    James
    22/0214 a las 10:29
  • La mejor respuesta 9 de ene. De 2018 a las 13:13
  • @Marc Nope. No -después ec2. Estáec2metadata --instance-id
    Dawny33
    29 de enero de 2018 a las 9:22
  • 5
    El comando es diferente en diferentes Linux: en Amazon Linux lo es ec2-metadata, en Ubuntu parece serlo ec2metadata.
    James
    29 de enero de 2018 a las 13:04
  • Bien James, encontré que el mismo ec2metadata funciona en Ubuntu. 20/06/19 a las 7:42
75

En Ubuntu puedes:

sudo apt-get install cloud-utils

Y luego puedes:

EC2_INSTANCE_ID=$(ec2metadata --instance-id)

Puede obtener la mayoría de los metadatos asociados con la instancia de esta manera:

ec2metadata --help
Syntax: /usr/bin/ec2metadata [options]

Query and display EC2 metadata.

If no options are provided, all options will be displayed

Options:
    -h --help               show this help

    --kernel-id             display the kernel id
    --ramdisk-id            display the ramdisk id
    --reservation-id        display the reservation id

    --ami-id                display the ami id
    --ami-launch-index      display the ami launch index
    --ami-manifest-path     display the ami manifest path
    --ancestor-ami-ids      display the ami ancestor id
    --product-codes         display the ami associated product codes
    --availability-zone     display the ami placement zone

    --instance-id           display the instance id
    --instance-type         display the instance type

    --local-hostname        display the local hostname
    --public-hostname       display the public hostname

    --local-ipv4            display the local ipv4 ip address
    --public-ipv4           display the public ipv4 ip address

    --block-device-mapping  display the block device id
    --security-groups       display the security groups

    --mac                   display the instance mac address
    --profile               display the instance profile
    --instance-action       display the instance-action

    --public-keys           display the openssh public keys
    --user-data             display the user data (not actually metadata)
3
  • Bajo Ubuntu apt-get installlucid recupera la versión 0.11-0ubuntu1 que no contiene esta utilidad. Se agregó al paquete justo después . 20 de julio de 2012 a las 4:25
  • 7
    El paquete cloud-utils se incluye de forma predeterminada en la AMI de cómputo del clúster LTS de Ubuntu 12.04.1.
    Andrew
    13/12/12 a las 22:11
  • 2
    cloud-utils parece estar también en RHEL / CentOS 16 de mayo de 2013 a las 6:47
58

Utilice la /dynamic/instance-identity/documentURL si también necesita consultar algo más que el ID de su instancia.

wget -q -O - http://169.254.169.254/latest/dynamic/instance-identity/document

Esto le proporcionará datos JSON como este, con una sola solicitud .

{
    "devpayProductCodes" : null,
    "privateIp" : "10.1.2.3",
    "region" : "us-east-1",
    "kernelId" : "aki-12345678",
    "ramdiskId" : null,
    "availabilityZone" : "us-east-1a",
    "accountId" : "123456789abc",
    "version" : "2010-08-31",
    "instanceId" : "i-12345678",
    "billingProducts" : null,
    "architecture" : "x86_64",
    "imageId" : "ami-12345678",
    "pendingTime" : "2014-01-23T45:01:23Z",
    "instanceType" : "m1.small"
}
2
  • 2
    +1 para mostrar todos los detalles, incluido instanceType, en una simple llamada 2 jun 14 a las 15:22
  • 1
    +1 por tener una línea bastante estándar (solo wget) y de trabajo (la URL de datos de instancia no me funcionó en amazon linux), sin instalar paquetes adicionales solo para esta simple tarea.
    tishma
    11 de enero de 2016 a las 12:46
32

en AWS Linux:

ec2-metadata --instance-id | cut -d " " -f 2

Producción:

i-33400429

Usando en variables:

ec2InstanceId=$(ec2-metadata --instance-id | cut -d " " -f 2);
ls "log/${ec2InstanceId}/";
1
  • Manera limpia y concisa. Trabajando desde el primer momento para una instancia con Ubuntu 14.
    berbt
    23/06/14 a las 9:32
31

Para todas las máquinas ec2, el ID de instancia se puede encontrar en el archivo:

    /var/lib/cloud/data/instance-id

También puede obtener la identificación de la instancia ejecutando el siguiente comando:

    ec2metadata --instance-id
4
  • 4
    Esta es una solución muy limpia, que no requiere una solicitud HTTP.
    Yuri
    28/03/18 a las 6:19
  • La mejor respuesta posible en realidad
    Shlublu
    24 oct 2018 a las 20:52
  • 2
    Gran respuesta, pero no pude encontrar una referencia para esto en la documentación. ¿Puedo preguntar cuál es su referencia? La preocupación es que si vamos a ejecutar este código en producción, ¿cómo sabemos que no cambiará en el futuro? 25/10/18 a las 6:57
  • 1
    Todos los linux máquinas EC2, tal vez, pero definitivamente no todas las máquinas EC2. No existe tal archivo en Windows. C:\ProgramData\Amazon\EC2-Windows\Launch\Log\Ec2Launch.logcontiene el Id de la instancia, pero también tiene muchos otros archivos basura.
    James
    11/09/19 a las 22:19
27

Para la .NETgente:

string instanceId = new StreamReader(
      HttpWebRequest.Create("http://169.254.169.254/latest/meta-data/instance-id")
      .GetResponse().GetResponseStream())
    .ReadToEnd();
23

Para Python:

import boto.utils
region=boto.utils.get_instance_metadata()['local-hostname'].split('.')[1]

que se reduce a una sola línea:

python -c "import boto.utils; print boto.utils.get_instance_metadata()['local-hostname'].split('.')[1]"

En lugar de local_hostname, también puede usar public_hostname, o:

boto.utils.get_instance_metadata()['placement']['availability-zone'][:-1]
4
  • Todas las versiones más nuevas de boto que veo le permiten llamar directamente a la clave "instance_id". Hice las ediciones sugeridas pertinentes. 1 de agosto de 2013 a las 18:47
  • 8
    inst_id = boto.utils.get_instance_metadata () ['id-instancia']
    atisman
    3 de junio de 2014 a las 2:01
  • Te das cuenta de que esto obtiene la región en la que se encuentra la instancia, no el id de la instancia como se solicitó en la pregunta, ¿verdad?
    LukeGT
    27 de mayo de 2015 a las 6:42
  • 3
    Para cualquiera que se pregunte, esto está en boto pero aún no está en boto3. Consulte stackoverflow.com/a/33733852 para obtener una solución alternativa con urllib. Hay una solicitud de función abierta en github.com/boto/boto3/issues/313 FWIW, el JS SDK también tiene esto: docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/… Usenew AWS.MetadataService().request('instance-id',function(error,data) { myInstanceId = data; }) 5 de febrero de 2016 a las 18:13
22

Para la gente de powershell:

(New-Object System.Net.WebClient).DownloadString("http://169.254.169.254/latest/meta-data/instance-id")
2
  • 4
    solo un comando diferente: $instanceId=(Invoke-WebRequest -Uri 'http://169.254.169.254/latest/meta-data/instance-id').Content 13 de mayo de 2016 a las 7:45 p.m.
  • Invoke-WebRequest no siempre funciona cuando se ejecuta un script en dicha instancia EC2 con un comando ssm send-command (o Send-SSMCommand). Realmente no dice en los documentos . Posiblemente no sea asincrónico ... lo cual sería extraño. Pero la opción de stefancaunter funciona sin problemas hasta ahora.
    J-Roel
    25 de agosto de 2017 a las 16:32
14

Vea esta publicación : tenga en cuenta que la dirección IP en la URL proporcionada es constante (lo que me confundió al principio), pero los datos devueltos son específicos de su instancia.

2
  • Link es 404ing para mí 29 mar.20 a las 18:00
  • Verifique la respuesta de @ DEtDev a continuación; mi respuesta es bastante antigua y parece que el enlace se ha eliminado. 3 abr.20 a las 0:13
11

Sólo tipo:

ec2metadata --instance-id
4
  • ¿Qué AMI estás usando? 23 de febrero de 2016 a las 4:45
  • 4
    Aparentemente, ese es un comando para la AMI de Amazon, debe actualizar su respuesta 23 feb 2016 a las 12:06
  • @ WédneyYuri Sí. 28 de mayo de 2018 a las 7:26
  • Para una ami alinux2, no tengo el ec2-metadatacomando ec2metadata. No estoy seguro de si se trata de un error tipográfico o si el comando ha cambiado en la nueva instancia de AMI. ec2-metadata --instance-id | cut -d' ' -f2solo por la identificación como una cadena 26/08/20 a las 11:57
10

Para Ruby:

require 'rubygems'
require 'aws-sdk'
require 'net/http'

metadata_endpoint = 'http://169.254.169.254/latest/meta-data/'
instance_id = Net::HTTP.get( URI.parse( metadata_endpoint + 'instance-id' ) )

ec2 = AWS::EC2.new()
instance = ec2.instances[instance_id]
2
10

Una solución más contemporánea.

Desde Amazon Linux, el comando ec2-metadata ya está instalado.

Desde la terminal

ec2-metadata -help

Te dará las opciones disponibles.

ec2-metadata -i

volverá

instance-id: yourid
3
  • 1
    mucho mejor que depender de la pseudo ip
    Mike D
    25 de junio de 2015 a las 13:08
  • combine ec2-metadatacon sus motddocumentos aquí: coderwall.com/p/hr_9pw/motds-on-amazon-amis
    Mike D
    25/06/15 a las 13:10
  • 3
    En la imagen de Ubuntu, el comando es "ec2metadata --instance-id" y devolverá solo el valor de identificación de la instancia 4 de marzo de 2016 a las 15:02
10

El último SDK de Java tiene EC2MetadataUtils:

En Java:

import com.amazonaws.util.EC2MetadataUtils;
String myId = EC2MetadataUtils.getInstanceId();

En escala:

import com.amazonaws.util.EC2MetadataUtils
val myid = EC2MetadataUtils.getInstanceId
0
9

Puedes probar esto:

#!/bin/bash
aws_instance=$(wget -q -O- http://169.254.169.254/latest/meta-data/instance-id)
aws_region=$(wget -q -O- http://169.254.169.254/latest/meta-data/hostname)
aws_region=${aws_region#*.}
aws_region=${aws_region%%.*}
aws_zone=`ec2-describe-instances $aws_instance --region $aws_region`
aws_zone=`expr match "$aws_zone" ".*\($aws_region[a-z]\)"`
8

Una clase de c # .net que escribí para los metadatos de EC2 desde la API http. Lo construiré con la funcionalidad necesaria. Puedes correr con él si te gusta.

using Amazon;
using System.Net;

namespace AT.AWS
{
    public static class HttpMetaDataAPI
    {
        public static bool TryGetPublicIP(out string publicIP)
        {
            return TryGetMetaData("public-ipv4", out publicIP);
        }
        public static bool TryGetPrivateIP(out string privateIP)
        {
            return TryGetMetaData("local-ipv4", out privateIP);
        }
        public static bool TryGetAvailabilityZone(out string availabilityZone)
        {
            return TryGetMetaData("placement/availability-zone", out availabilityZone);
        }

        /// <summary>
        /// Gets the url of a given AWS service, according to the name of the required service and the AWS Region that this machine is in
        /// </summary>
        /// <param name="serviceName">The service we are seeking (such as ec2, rds etc)</param>
        /// <remarks>Each AWS service has a different endpoint url for each region</remarks>
        /// <returns>True if the operation was succesful, otherwise false</returns>
        public static bool TryGetServiceEndpointUrl(string serviceName, out string serviceEndpointStringUrl)
        {
            // start by figuring out what region this instance is in.
            RegionEndpoint endpoint;
            if (TryGetRegionEndpoint(out endpoint))
            {
                // now that we know the region, we can get details about the requested service in that region
                var details = endpoint.GetEndpointForService(serviceName);
                serviceEndpointStringUrl = (details.HTTPS ? "https://" : "http://") + details.Hostname;
                return true;
            }
            // satisfy the compiler by assigning a value to serviceEndpointStringUrl
            serviceEndpointStringUrl = null;
            return false;
        }
        public static bool TryGetRegionEndpoint(out RegionEndpoint endpoint)
        {
            // we can get figure out the region end point from the availability zone
            // that this instance is in, so we start by getting the availability zone:
            string availabilityZone;
            if (TryGetAvailabilityZone(out availabilityZone))
            {
                // name of the availability zone is <nameOfRegionEndpoint>[a|b|c etc]
                // so just take the name of the availability zone and chop off the last letter
                var nameOfRegionEndpoint = availabilityZone.Substring(0, availabilityZone.Length - 1);
                endpoint = RegionEndpoint.GetBySystemName(nameOfRegionEndpoint);
                return true;
            }
            // satisfy the compiler by assigning a value to endpoint
            endpoint = RegionEndpoint.USWest2;
            return false;
        }
        /// <summary>
        /// Downloads instance metadata
        /// </summary>
        /// <returns>True if the operation was successful, false otherwise</returns>
        /// <remarks>The operation will be unsuccessful if the machine running this code is not an AWS EC2 machine.</remarks>
        static bool TryGetMetaData(string name, out string result)
        {
            result = null;
            try { result = new WebClient().DownloadString("http://169.254.169.254/latest/meta-data/" + name); return true; }
            catch { return false; }
        }

/************************************************************
 * MetaData keys.
 *   Use these keys to write more functions as you need them
 * **********************************************************
ami-id
ami-launch-index
ami-manifest-path
block-device-mapping/
hostname
instance-action
instance-id
instance-type
local-hostname
local-ipv4
mac
metrics/
network/
placement/
profile
public-hostname
public-ipv4
public-keys/
reservation-id
security-groups
*************************************************************/
    }
}
5

Para C ++ (usando cURL):

    #include <curl/curl.h>

    //// cURL to string
    size_t curl_to_str(void *contents, size_t size, size_t nmemb, void *userp) {
        ((std::string*)userp)->append((char*)contents, size * nmemb);
        return size * nmemb;
    };

    //// Read Instance-id 
    curl_global_init(CURL_GLOBAL_ALL); // Initialize cURL
    CURL *curl; // cURL handler
    CURLcode res_code; // Result
    string response;
    curl = curl_easy_init(); // Initialize handler
    curl_easy_setopt(curl, CURLOPT_URL, "http://169.254.169.254/latest/meta-data/instance-id");
    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, curl_to_str);
    curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response);
    res_code = curl_easy_perform(curl); // Perform cURL
    if (res_code != CURLE_OK) { }; // Error
    curl_easy_cleanup(curl); // Cleanup handler
    curl_global_cleanup(); // Cleanup cURL
5

Simplemente verifique el var/lib/cloud/instanceenlace simbólico, debe apuntar a /var/lib/cloud/instances/{instance-id}dónde {instance_id}está su ID de instancia.

1
  • 1
    No usaría esto. Es mejor que utilice la solicitud HTTP aprobada para obtener los metadatos. 6/11/18 a las 14:43
4

Si desea obtener la lista de identificación de todas las instancias en Python, aquí está el código:

import boto3

ec2=boto3.client('ec2')
instance_information = ec2.describe_instances()

for reservation in instance_information['Reservations']:
   for instance in reservation['Instances']:
      print(instance['InstanceId'])
3

En Go puedes usar el paquete goamz .

import (
    "github.com/mitchellh/goamz/aws"
    "log"
)

func getId() (id string) {
    idBytes, err := aws.GetMetaData("instance-id")
    if err != nil {
        log.Fatalf("Error getting instance-id: %v.", err)
    }

    id = string(idBytes)

    return id
}

Aquí está la fuente GetMetaData.

2

FWIW Escribí un sistema de archivos FUSE para proporcionar acceso al servicio de metadatos EC2: https://bitbucket.org/dgc/ec2mdfs . Ejecuto esto en todas las AMI personalizadas; me permite usar este modismo: cat / ec2 / meta-data / ami-id

0
2

Puede simplemente hacer una solicitud HTTP para OBTENER cualquier metadato pasando sus parámetros de metadatos.

curl http://169.254.169.254/latest/meta-data/instance-id

o

wget -q -O - http://169.254.169.254/latest/meta-data/instance-id

No se le facturarán las solicitudes HTTP para obtener metadatos y datos de usuario.

Demás

Puede usar la herramienta de consulta de metadatos de instancias EC2, que es un script bash simple que usa curl para consultar los metadatos de la instancia EC2 desde una instancia EC2 en ejecución, como se menciona en la documentación.

Descarga la herramienta:

$ wget http://s3.amazonaws.com/ec2metadata/ec2-metadata

ahora ejecute el comando para obtener los datos requeridos.

$ec2metadata -i

Referir:

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html

https://aws.amazon.com/items/1825?externalID=1825

Encantado de ayudarle.. :)

1

En la pregunta que mencionó al usuario como root, una cosa que debo mencionar es que el ID de la instancia no depende del usuario.

Para los desarrolladores de Node ,

var meta  = new AWS.MetadataService();

meta.request("/latest/meta-data/instance-id", function(err, data){
    console.log(data);
});
1

Para obtener el uso de metadatos de la instancia

wget -q -O - http://169.254.169.254/latest/meta-data/instance-id
1

Motivación : al usuario le gustaría recuperar los metadatos de la instancia de aws.

Solución: la dirección IP 169.254.169.254es una dirección local de enlace (y es válida solo desde la instancia) aws nos proporciona un enlace con la API Restful dedicada para recuperar metadatos de nuestra instancia en ejecución (tenga en cuenta que no se le facturan las solicitudes HTTP utilizadas para recuperar metadatos de instancia y datos del usuario). para documentación adicional

Ejemplo :

//Request:
curl http://169.254.169.254/latest/meta-data/instance-id

//Response
ami-123abc

Puede obtener etiquetas de metadatos adicionales de su instancia utilizando este enlace, http://169.254.169.254/latest/meta-data/<metadata-field>simplemente elija las etiquetas correctas:

  1. ami-id
  2. ami-launch-index
  3. ami-manifest-path
  4. dispositivo de bloque
  5. cartografía
  6. eventos
  7. hibernación
  8. nombre de host
  9. yo soy
  10. credenciales de identidad
  11. instancia-acción
  12. id-instancia
  13. tipo de instancia
  14. nombre de host local
  15. local-ipv4
  16. Mac
  17. métrica
  18. la red
  19. colocación
  20. perfil
  21. ID de reserva
  22. grupos de seguridad
  23. servicios
1
  • curl: (7) No se pudo conectar al puerto IP 80: Conexión rechazada, el puerto 80 está abierto 7 de junio a las 14:51
0

Enfoque alternativo para PHP:

$instance = json_decode(file_get_contents('http://169.254.169.254/latest/dynamic/instance-identity/document'),true);
$id = $instance['instanceId'];
print_r($instance);

Eso proporcionará una gran cantidad de datos sobre la instancia, todos bien empaquetados en una matriz, sin dependencias externas. Como es una solicitud que nunca falló o se retrasó para mí, debería ser seguro hacerlo de esa manera, de lo contrario, optaría por curl ()

0

Para PHP:

$instance = json_decode(file_get_contents('http://169.254.169.254/latest/dynamic/instance-identity/document));
$id = $instance['instanceId'];

Editar por @John

3
  • Pero, ¿por qué usaría GuzzeHttp para ese propósito si tiene funciones curl y nativas en PHP?
    John
    3 dic 2017 a las 17:27
  • Es mi preferencia. Utilizo guzzle para muchas otras cosas, también es un requisito previo común para muchos otros paquetes. 5/12/2017 a las 22:31
  • $ instancia = json_decode (file_get_contents (' 169.254.169.254/latest/dynamic/instance-identity/… ); $ id = $ instance [' instanceId ']; Sé que Guzzle está muy extendido, nunca lo he tocado. una tarea simple que proporcionaría el enfoque más ligero.
    John
    6 de diciembre de 2017 a las 1:43
0

Ejecuta esto:

curl http://169.254.169.254/latest/meta-data/

Podrá ver diferentes tipos de atributos proporcionados por aws.

Utilice este enlace para ver más

0

La propia instancia EC2 puede acceder a todos los metadatos relacionados con el recurso EC2 con la ayuda del siguiente comando que se ejecuta:

RIZO:

http://169.254.169.254/<api-version>/meta-data/<metadata-requested>

Para su caso: " metadata-required " debe ser instance-id , " api-version " suele ser la última que se puede utilizar.

Nota adicional: también puede obtener información relacionada con los atributos de EC2 a continuación mediante el comando anterior.

ami-id, ami-launch-index, ami-manifest-path, block-device-mapping /, hostname, iam /, instance-action, instance-id, instance-type, local-hostname, local-ipv4, mac, métricas /, red /, ubicación /, perfil, public-hostname, public-ipv4, public-keys /, reserva-id, security-groups, services /,

Para obtener más detalles, siga este enlace: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html

0

Para una instancia de Windows:

(wget http://169.254.169.254/latest/meta-data/instance-id).Content

o

(ConvertFrom-Json (wget http://169.254.169.254/latest/dynamic/instance-identity/document).Content).instanceId