

# Uso del servicio de metadatos de instancias para acceder a metadatos de instancia
<a name="configuring-instance-metadata-service"></a>

Para acceder a los metadatos de instancia desde una instancia en ejecución puede utilizar uno de los métodos siguientes:
+ Servicio de metadatos de instancia, versión 2 (IMDSv2): un método orientado a la sesión

  Para ver ejemplos, consulte [Ejemplos de IMDSv2](#instance-metadata-retrieval-examples).
+ Servicio de metadatos de instancia, versión 1 (IMDSv1): un método de solicitud y respuesta

  Para ver ejemplos, consulte [Ejemplos de IMDSv1](#instance-metadata-retrieval-examples-imdsv1).

De forma predeterminada, puede usar IMDSv1 o IMDSv2, o ambos.

Puede configurar el servicio de metadatos de instancias (IMDS) en cada instancia para que solo acepte llamadas a IMDSv2, lo que provocará un error en las llamadas a IMDSv1. Para obtener información acerca de cómo configurar la instancia para usar IMDSv2, consulte [Configuración de las opciones del servicio de metadatos de instancias](configuring-instance-metadata-options.md).

Los encabezados `PUT` o `GET` son exclusivos de IMDSv2. Si estas cabeceras están presentes en la solicitud, entonces la solicitud está destinada a IMDSv2. Si no hay encabezados, se supone que la solicitud está destinada a IMDSv1.

Para obtener más información, consulte [Add defense in depth against open firewalls, reverse proxies, and SSRF vulnerabilities with enhancements to the EC2 Instance Metadata Service](https://aws.amazon.com/blogs/security/defense-in-depth-open-firewalls-reverse-proxies-ssrf-vulnerabilities-ec2-instance-metadata-service/) (Agregar defensa en profundidad contra firewalls abiertos, proxies inversos y vulnerabilidades SSRF con mejoras en el servicio de metadatos de instancias de EC2).

**Topics**
+ [Funcionamiento de Servicio de metadatos de instancia versión 2](#instance-metadata-v2-how-it-works)
+ [Uso de un AWS SDK compatible](#use-a-supported-sdk-version-for-imdsv2)
+ [Ejemplos de IMDSv2](#instance-metadata-retrieval-examples)
+ [Ejemplos de IMDSv1](#instance-metadata-retrieval-examples-imdsv1)

## Funcionamiento de Servicio de metadatos de instancia versión 2
<a name="instance-metadata-v2-how-it-works"></a>

IMDSv2 usa las solicitudes orientadas a la sesión. Las solicitudes orientadas a la sesión permiten crear un token de sesión que define la duración de la sesión, que puede ser de mínimo un segundo a un máximo de seis horas. En esa duración, puede utilizar el mismo token de sesión para solicitudes subsiguientes. Cuando la duración llegue a su fin, deberá crear un token de sesión nuevo para utilizarlo en las solicitudes futuras.

**nota**  
En los ejemplos de esta sección, se utiliza la dirección IPv4 del servicio de metadatos de instancia (IMDS): `169.254.169.254`. Si recupera metadatos de instancia para las instancias de EC2 a través de la dirección IPv6, asegúrese de habilitar y utilizar la dirección IPv6 en su lugar: `[fd00:ec2::254]`. La dirección IPv6 de IMDS es compatible con los comandos de IMDSv2. Solo se puede acceder a la dirección IPv6 con [instancias basadas en Nitro](instance-types.md#instance-hypervisor-type) en una [subred compatible con IPv6](https://docs.aws.amazon.com/vpc/latest/userguide/configure-subnets.html#subnet-ip-address-range) (de doble pila o solo IPv6).

En los siguientes ejemplos se usa un script de intérprete de comandos e IMDSv2 para recuperar los elementos de metadatos de instancias de nivel superior. Cada ejemplo:
+ Crea un token de sesión que dura seis horas (21 600 segundos) con la solicitud `PUT`
+ Almacena el encabezado del token de sesión en una variable denominada `TOKEN` (instancias de Linux) o `token` (instancias de Windows)
+ Solicita los elementos de metadatos de nivel superior con el token

### Ejemplo de Linux
<a name="how-imdsv2-works-example-linux"></a>

Puede ejecutar dos comandos separados o combinarlos.

**Comandos separados**

Primero, genere un token con el siguiente comando.

```
[ec2-user ~]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"`
```

A continuación, utilice el token para generar elementos de metadatos de nivel superior mediante el siguiente comando.

```
[ec2-user ~]$ curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/
```

**Comandos combinados**

Puede almacenar el token y combinar los comandos. En el siguiente ejemplo se combinan los dos comandos anteriores y se almacena el encabezado del token de sesión en una variable denominada TOKEN.

**nota**  
Si hay un error al crear el token, en lugar de un token válido, se almacena un mensaje de error en la variable y el comando no funcionará.

```
[ec2-user ~]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \
	&& curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/
```

Después de crear un token, puede volverlo a usar hasta que venza. En el siguiente comando de ejemplo, que toma el ID de la AMI utilizada para lanzar la instancia, se vuelve a utilizar el token que se almacena en `$TOKEN` en el ejemplo anterior.

```
[ec2-user ~]$ curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/ami-id
```

### Ejemplo de Windows
<a name="how-imdsv2-works-example-windows"></a>

```
PS C:\> [string]$token = Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} -Method PUT -Uri http://169.254.169.254/latest/api/token
```

```
PS C:\> Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} -Method GET -Uri http://169.254.169.254/latest/meta-data/
```

Después de crear un token, puede volverlo a usar hasta que venza. En el siguiente comando de ejemplo, que toma el ID de la AMI utilizada para lanzar la instancia, se vuelve a utilizar el token que se almacena en `$token` en el ejemplo anterior.

```
PS C:\> Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} `
	-Method GET -uri http://169.254.169.254/latest/meta-data/ami-id
```

Al utilizar IMDSv2 para solicitar metadatos de instancia, la solicitud debe incluir lo siguiente:

1. Use una solicitud `PUT` para iniciar una sesión en el servicio de metadatos de instancia. La solicitud `PUT` devuelve un token que debe incluirse en las solicitudes `GET` subsiguientes del servicio de metadatos de instancia. El token debe acceder a los metadatos con IMDSv2.

1. Incluya el token en todas las solicitudes `GET` en IMDS. Cuando el uso del token se establece en `required`, las solicitudes sin un token válido o con un token que ha vencido reciben un código de error HTTP `401 - Unauthorized`.
   + El token es una clave específica de la instancia. El token no es válido en otras instancias de EC2 y se rechazará si intenta usarlo fuera de la instancia en la que se generó.
   + La solicitud `PUT` debe incluir un encabezado que especifique el tiempo de vida (TTL) del token, en segundos, de un máximo de seis horas (21 600 segundos). El token representa una sesión lógica. El TTL especifica el período de tiempo que es válido el token y, en consecuencia, la duración de la sesión.
   + Cuando un token caduca, para poder seguir accediendo a los metadatos de instancia hay que crear una sesión nueva con otro `PUT`.
   + Puede escoger entre volver a utilizar un token o crear uno nuevo con cada solicitud. Para una cantidad pequeña de solicitudes, puede ser más sencillo generar y usar inmediatamente un token cada vez que necesite acceder a IMDS. Pero para ser más eficientes, puede especificar una duración más larga para el token y volver a usarlo en vez de escribir una solicitud `PUT` cada vez que tenga que solicitar metadatos de instancia. No existe ningún límite práctico en cuanto a la cantidad de tokens simultáneos, cada uno de los cuales representa su propia sesión. Sin embargo, IMDSv2 sigue limitado por la conexión normal de IMDS y la limitación controlada. Para obtener más información, consulte [Limitación de consultas](instancedata-data-retrieval.md#instancedata-throttling).

Los métodos HTTP `GET` y `HEAD` están permitidos en las solicitudes de metadatos de instancia IMDSv2. Las solicitudes `PUT` se rechazan si contienen un encabezado X-Forwarded-For.

De forma predeterminada, la respuesta a las solicitudes `PUT` tiene un límite de saltos de respuesta (tiempo de vida) de `1` en el nivel del protocolo IP. Si necesita un límite de saltos mayor, puede ajustarlo con el comando [modify-instance-metadata-options](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-metadata-options.html) de AWS CLI. Por ejemplo, puede necesitar un límite de saltos mayor para una compatibilidad con versiones anteriores con servicios de contenedor ejecutándose en la instancia. Para obtener más información, consulte [Configurar las opciones de metadatos para instancias existentes](configuring-IMDS-existing-instances.md).

## Uso de un AWS SDK compatible
<a name="use-a-supported-sdk-version-for-imdsv2"></a>

Para usar IMDSv2, las instancias de EC2 deben usar una versión de AWS SDK que admita el uso de IMDSv2. Las últimas versiones de todos los SDK de AWS son compatibles con IMDSv2.

**importante**  
Le recomendamos que se mantenga al día con las versiones del SDK para estar al tanto de las características, las actualizaciones de seguridad y las dependencias subyacentes más recientes. No se recomienda el uso continuo de una versión del SDK no admitida, hágalo según su criterio. Para obtener más información, consulte [Política de mantenimiento de SDK y herramientas de AWS](https://docs.aws.amazon.com/sdkref/latest/guide/maint-policy.html) en la *Guía de referencia de SDK y herramientas de AWS*.

Las siguientes son las versiones mínimas que admiten el uso de IMDSv2:
+ [AWS CLI](https://github.com/aws/aws-cli): 1.16.289
+ [AWS Tools for Windows PowerShell](https://github.com/aws/aws-tools-for-powershell)— 4.0.1.0
+ [AWS SDK para .NET](https://github.com/aws/aws-sdk-net): 3.3.634.1
+ [AWS SDK para C\$1\$1](https://github.com/aws/aws-sdk-cpp): 1.7.229
+ [AWS SDK para Go](https://github.com/aws/aws-sdk-go): 1.25.38
+ [AWS SDK para Go v2](https://github.com/aws/aws-sdk-go-v2) – 0.19.0
+ [AWS SDK para Java](https://github.com/aws/aws-sdk-java): 1.11.678
+ [AWS SDK for Java 2.x](https://github.com/aws/aws-sdk-java-v2): 2.10.21
+ [AWS SDK para JavaScript en Node.js](https://github.com/aws/aws-sdk-js) – 2.722.0
+ [AWS SDK para Kotlin](https://github.com/awslabs/aws-sdk-kotlin): 1.1.4
+ [AWS SDK para PHP](https://github.com/aws/aws-sdk-php): 3.147.7
+ [AWS SDK para Python (Botocore)](https://github.com/boto/botocore) – 1.13.25
+ [AWS SDK para Python (Boto3)](https://github.com/boto/boto3): 1.12.6
+ [AWS SDK para Ruby](https://github.com/aws/aws-sdk-ruby): 3.79.0

## Ejemplos de IMDSv2
<a name="instance-metadata-retrieval-examples"></a>

Ejecute los siguientes ejemplos en su instancia de Amazon EC2 para recuperar los metadatos de la instancia para IMDSv2.

En las instancias de Windows, se puede usar Windows PowerShell o instalar cURL o wget. Si se instala una herramienta de terceros en una instancia de Windows, asegúrese de leer detenidamente la documentación asociada, ya que las llamadas y el formato de salida pueden ser distintos a lo que se indica aquí.

**Topics**
+ [Obtener las versiones disponibles de los metadatos de instancia](#instance-metadata-ex-1)
+ [Obtener los elementos de metadatos del nivel superior](#instance-metadata-ex-2)
+ [Cómo obtener los valores de los elementos de metadatos](#instance-metadata-ex-2a)
+ [Obtener la lista de claves públicas disponibles](#instance-metadata-ex-3)
+ [Mostrar los formatos en los que se encuentra disponible la clave pública 0](#instance-metadata-ex-4)
+ [Obtener la clave pública 0 (en formato de clave OpenSSH)](#instance-metadata-ex-5)
+ [Obtener el ID de subred de una instancia](#instance-metadata-ex-6)
+ [Obtener las etiquetas de instancia de una instancia](#instance-metadata-ex-7)

### Obtener las versiones disponibles de los metadatos de instancia
<a name="instance-metadata-ex-1"></a>

Este ejemplo obtiene las versiones disponibles de los metadatos de la instancia. Cada versión hace referencia a una compilación de metadatos de instancia correspondiente al momento en que se publicaron nuevas categorías de metadatos de instancia. No existe una correlación entre las versiones de compilación de metadatos de instancia y las versiones de la API de Amazon EC2. Tiene disponibles las versiones anteriores en caso de que tenga scripts que se basen en la estructura y la información presente en la versión anterior.

------
#### [ cURL ]

```
[ec2-user ~]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \
&& curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/
1.0
2007-01-19
2007-03-01
2007-08-29
2007-10-10
2007-12-15
2008-02-01
2008-09-01
2009-04-04
2011-01-01
2011-05-01
2012-01-12
2014-02-25
2014-11-05
2015-10-20
2016-04-19
...
latest
```

------
#### [ PowerShell ]

```
PS C:\> [string]$token = Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} -Method PUT -Uri http://169.254.169.254/latest/api/token
```

```
PS C:\> Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} -Method GET -Uri http://169.254.169.254/
1.0
2007-01-19
2007-03-01
2007-08-29
2007-10-10
2007-12-15
2008-02-01
2008-09-01
2009-04-04
2011-01-01
2011-05-01
2012-01-12
2014-02-25
2014-11-05
2015-10-20
2016-04-19
...
latest
```

------

### Obtener los elementos de metadatos del nivel superior
<a name="instance-metadata-ex-2"></a>

Este ejemplo obtiene los elementos de metadatos del nivel superior. Para obtener más información sobre los elementos en la respuesta, consulte [Categorías de metadatos de instancia](ec2-instance-metadata.md#instancedata-data-categories).

Tenga en cuenta que se incluyen las etiquetas en este resultado solo si ha permitido el acceso. Para obtener más información, consulte [Habilitación del acceso a etiquetas en metadatos de instancia](work-with-tags-in-IMDS.md#allow-access-to-tags-in-IMDS).

------
#### [ cURL ]

```
[ec2-user ~]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \
&& curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/    
ami-id
ami-launch-index
ami-manifest-path
block-device-mapping/
events/
hostname
iam/
instance-action
instance-id
instance-life-cycle
instance-type
local-hostname
local-ipv4
mac
metrics/
network/
placement/
profile
public-hostname
public-ipv4
public-keys/
reservation-id
security-groups
services/
tags/
```

------
#### [ PowerShell ]

```
PS C:\> [string]$token = Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} -Method PUT -Uri http://169.254.169.254/latest/api/token
```

```
PS C:\> Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} -Method GET -Uri http://169.254.169.254/latest/meta-data/
ami-id
ami-launch-index
ami-manifest-path
block-device-mapping/
hostname
iam/
instance-action
instance-id
instance-life-cycle
instance-type
local-hostname
local-ipv4
mac
metrics/
network/
placement/
profile
public-hostname
public-ipv4
public-keys/
reservation-id
security-groups
services/
tags/
```

------

### Cómo obtener los valores de los elementos de metadatos
<a name="instance-metadata-ex-2a"></a>

En estos ejemplos se obtienen los valores de algunos elementos de metadatos de nivel superior del ejemplo anterior. Estas solicitudes usan el token almacenado creado mediante el comando del ejemplo anterior. El token no debe estar vencido.

------
#### [ cURL ]

```
[ec2-user ~]$ curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/ami-id
ami-0abcdef1234567890
```

```
[ec2-user ~]$ curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/reservation-id
r-0efghijk987654321
```

```
[ec2-user ~]$ curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/local-hostname
ip-10-251-50-12.ec2.internal
```

```
[ec2-user ~]$ curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/public-hostname
ec2-203-0-113-25.compute-1.amazonaws.com
```

------
#### [ PowerShell ]

```
PS C:\> Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} -Method GET -Uri http://169.254.169.254/latest/meta-data/ami-id
ami-0abcdef1234567890
```

```
PS C:\> Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} -Method GET -Uri http://169.254.169.254/latest/meta-data/reservation-id
r-0efghijk987654321
```

```
PS C:\> Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} -Method GET -Uri http://169.254.169.254/latest/meta-data/local-hostname
ip-10-251-50-12.ec2.internal
```

```
PS C:\> Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} -Method GET -Uri http://169.254.169.254/latest/meta-data/public-hostname
ec2-203-0-113-25.compute-1.amazonaws.com
```

------

### Obtener la lista de claves públicas disponibles
<a name="instance-metadata-ex-3"></a>

Este ejemplo obtiene la lista de las claves públicas disponibles.

------
#### [ cURL ]

```
[ec2-user ~]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \
&& curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/public-keys/
0=my-public-key
```

------
#### [ PowerShell ]

```
PS C:\> [string]$token = Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} -Method PUT -Uri http://169.254.169.254/latest/api/token
```

```
PS C:\> Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} -Method GET -Uri http://169.254.169.254/latest/meta-data/public-keys/
0=my-public-key
```

------

### Mostrar los formatos en los que se encuentra disponible la clave pública 0
<a name="instance-metadata-ex-4"></a>

Este ejemplo muestra los formatos en los que se encuentra disponible la clave pública 0.

------
#### [ cURL ]

```
[ec2-user ~]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \
&& curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/public-keys/0/
openssh-key
```

------
#### [ PowerShell ]

```
PS C:\> [string]$token = Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} -Method PUT -Uri http://169.254.169.254/latest/api/token
```

```
PS C:\> Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} -Method GET -Uri http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key
openssh-key
```

------

### Obtener la clave pública 0 (en formato de clave OpenSSH)
<a name="instance-metadata-ex-5"></a>

Este ejemplo obtiene la clave pública 0 (en formato de clave OpenSSH).

------
#### [ cURL ]

```
[ec2-user ~]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \
&& curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key
ssh-rsa MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w0BAQUFADCBiDELMAkGA1UEBhMC
VVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6
b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAd
BgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wHhcNMTEwNDI1MjA0NTIxWhcN
MTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYD
VQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25z
b2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFt
YXpvbi5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ
21uUSfwfEvySWtC2XADZ4nB+BLYgVIk60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9T
rDHudUZg3qX4waLG5M43q7Wgc/MbQITxOUSQv7c7ugFFDzQGBzZswY6786m86gpE
Ibb3OhjZnzcvQAaRHhdlQWIMm2nrAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4
nUhVVxYUntneD9+h8Mg9q6q+auNKyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0Fkb
FFBjvSfpJIlJ00zbhNYS5f6GuoEDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTb
NYiytVbZPQUQ5Yaxu2jXnimvw3rrszlaEXAMPLE my-public-key
```

------
#### [ PowerShell ]

```
PS C:\> [string]$token = Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} -Method PUT -Uri http://169.254.169.254/latest/api/token
```

```
PS C:\> Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} -Method GET -Uri http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key
ssh-rsa MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w0BAQUFADCBiDELMAkGA1UEBhMC
VVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6
b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAd
BgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wHhcNMTEwNDI1MjA0NTIxWhcN
MTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYD
VQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25z
b2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFt
YXpvbi5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ
21uUSfwfEvySWtC2XADZ4nB+BLYgVIk60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9T
rDHudUZg3qX4waLG5M43q7Wgc/MbQITxOUSQv7c7ugFFDzQGBzZswY6786m86gpE
Ibb3OhjZnzcvQAaRHhdlQWIMm2nrAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4
nUhVVxYUntneD9+h8Mg9q6q+auNKyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0Fkb
FFBjvSfpJIlJ00zbhNYS5f6GuoEDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTb
NYiytVbZPQUQ5Yaxu2jXnimvw3rrszlaEXAMPLE my-public-key
```

------

### Obtener el ID de subred de una instancia
<a name="instance-metadata-ex-6"></a>

Este ejemplo obtiene el ID de subred de una instancia.

------
#### [ cURL ]

```
[ec2-user ~]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \
&& curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/network/interfaces/macs/02:29:96:8f:6a:2d/subnet-id
subnet-be9b61d7
```

------
#### [ PowerShell ]

```
PS C:\> [string]$token = Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} -Method PUT -Uri http://169.254.169.254/latest/api/token
```

```
PS C:\> Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} -Method GET -Uri http://169.254.169.254/latest/meta-data/network/interfaces/macs/02:29:96:8f:6a:2d/subnet-id
subnet-be9b61d7
```

------

### Obtener las etiquetas de instancia de una instancia
<a name="instance-metadata-ex-7"></a>

Si el acceso a las etiquetas de la instancia en los metadatos de instancia está encendido, puede obtener las etiquetas para una instancia de los metadatos de instancia. Para obtener más información, consulte [Recuperar etiquetas desde los metadatos de instancia](work-with-tags-in-IMDS.md#retrieve-tags-from-IMDS).

## Ejemplos de IMDSv1
<a name="instance-metadata-retrieval-examples-imdsv1"></a>

Ejecute los siguientes ejemplos en su instancia de Amazon EC2 para recuperar los metadatos de la instancia para IMDSv1.

En las instancias de Windows, se puede usar Windows PowerShell o instalar cURL o wget. Si se instala una herramienta de terceros en una instancia de Windows, asegúrese de leer detenidamente la documentación asociada, ya que las llamadas y el formato de salida pueden ser distintos a lo que se indica aquí.

**Topics**
+ [Obtener las versiones disponibles de los metadatos de instancia](#instance-metadata-ex-1-imdsv1)
+ [Obtener los elementos de metadatos del nivel superior](#instance-metadata-ex-2-imdsv1)
+ [Cómo obtener los valores de los elementos de metadatos](#instance-metadata-ex-2a-imdsv1)
+ [Obtener la lista de claves públicas disponibles](#instance-metadata-ex-3-imdsv1)
+ [Mostrar los formatos en los que se encuentra disponible la clave pública 0](#instance-metadata-ex-4-imdsv1)
+ [Obtener la clave pública 0 (en formato de clave OpenSSH)](#instance-metadata-ex-5-imdsv1)
+ [Obtener el ID de subred de una instancia](#instance-metadata-ex-6-imdsv1)
+ [Obtener las etiquetas de instancia de una instancia](#instance-metadata-ex-7-imdsv1)

### Obtener las versiones disponibles de los metadatos de instancia
<a name="instance-metadata-ex-1-imdsv1"></a>

Este ejemplo obtiene las versiones disponibles de los metadatos de la instancia. Cada versión hace referencia a una compilación de metadatos de instancia correspondiente al momento en que se publicaron nuevas categorías de metadatos de instancia. No existe una correlación entre las versiones de compilación de metadatos de instancia y las versiones de la API de Amazon EC2. Tiene disponibles las versiones anteriores en caso de que tenga scripts que se basen en la estructura y la información presente en la versión anterior.

------
#### [ cURL ]

```
[ec2-user ~]$ curl http://169.254.169.254/
1.0
2007-01-19
2007-03-01
2007-08-29
2007-10-10
2007-12-15
2008-02-01
2008-09-01
2009-04-04
2011-01-01
2011-05-01
2012-01-12
2014-02-25
2014-11-05
2015-10-20
2016-04-19
...
latest
```

------
#### [ PowerShell ]

```
PS C:\> Invoke-RestMethod -uri http://169.254.169.254/
1.0
2007-01-19
2007-03-01
2007-08-29
2007-10-10
2007-12-15
2008-02-01
2008-09-01
2009-04-04
2011-01-01
2011-05-01
2012-01-12
2014-02-25
2014-11-05
2015-10-20
2016-04-19
...
latest
```

------

### Obtener los elementos de metadatos del nivel superior
<a name="instance-metadata-ex-2-imdsv1"></a>

Este ejemplo obtiene los elementos de metadatos del nivel superior. Para obtener más información sobre los elementos en la respuesta, consulte [Categorías de metadatos de instancia](ec2-instance-metadata.md#instancedata-data-categories).

Tenga en cuenta que se incluyen las etiquetas en este resultado solo si ha permitido el acceso. Para obtener más información, consulte [Habilitación del acceso a etiquetas en metadatos de instancia](work-with-tags-in-IMDS.md#allow-access-to-tags-in-IMDS).

------
#### [ cURL ]

```
[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/    
ami-id
ami-launch-index
ami-manifest-path
block-device-mapping/
events/
hostname
iam/
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
services/
tags/
```

------
#### [ PowerShell ]

```
PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/    
ami-id
ami-launch-index
ami-manifest-path
block-device-mapping/
hostname
iam/
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
services/
tags/
```

------

### Cómo obtener los valores de los elementos de metadatos
<a name="instance-metadata-ex-2a-imdsv1"></a>

En estos ejemplos se obtienen los valores de algunos elementos de metadatos de nivel superior del ejemplo anterior.

------
#### [ cURL ]

```
[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/ami-id
ami-0abcdef1234567890
```

```
[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/reservation-id
r-0efghijk987654321
```

```
[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/local-hostname
ip-10-251-50-12.ec2.internal
```

```
[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/public-hostname
ec2-203-0-113-25.compute-1.amazonaws.com
```

------
#### [ PowerShell ]

```
PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/ami-id
ami-0abcdef1234567890
```

```
PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/reservation-id
r-0efghijk987654321
```

```
PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/local-hostname
ip-10-251-50-12.ec2.internal
```

```
PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/public-hostname
ec2-203-0-113-25.compute-1.amazonaws.com
```

------

### Obtener la lista de claves públicas disponibles
<a name="instance-metadata-ex-3-imdsv1"></a>

Este ejemplo obtiene la lista de las claves públicas disponibles.

------
#### [ cURL ]

```
[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/public-keys/
0=my-public-key
```

------
#### [ PowerShell ]

```
PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/public-keys/ 0=my-public-key
```

------

### Mostrar los formatos en los que se encuentra disponible la clave pública 0
<a name="instance-metadata-ex-4-imdsv1"></a>

Este ejemplo muestra los formatos en los que se encuentra disponible la clave pública 0.

------
#### [ cURL ]

```
[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/public-keys/0/
openssh-key
```

------
#### [ PowerShell ]

```
PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key
openssh-key
```

------

### Obtener la clave pública 0 (en formato de clave OpenSSH)
<a name="instance-metadata-ex-5-imdsv1"></a>

Este ejemplo obtiene la clave pública 0 (en formato de clave OpenSSH).

------
#### [ cURL ]

```
[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key
ssh-rsa MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w0BAQUFADCBiDELMAkGA1UEBhMC
VVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6
b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAd
BgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wHhcNMTEwNDI1MjA0NTIxWhcN
MTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYD
VQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25z
b2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFt
YXpvbi5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ
21uUSfwfEvySWtC2XADZ4nB+BLYgVIk60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9T
rDHudUZg3qX4waLG5M43q7Wgc/MbQITxOUSQv7c7ugFFDzQGBzZswY6786m86gpE
Ibb3OhjZnzcvQAaRHhdlQWIMm2nrAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4
nUhVVxYUntneD9+h8Mg9q6q+auNKyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0Fkb
FFBjvSfpJIlJ00zbhNYS5f6GuoEDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTb
NYiytVbZPQUQ5Yaxu2jXnimvw3rrszlaEXAMPLE my-public-key
```

------
#### [ PowerShell ]

```
PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key
ssh-rsa MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w0BAQUFADCBiDELMAkGA1UEBhMC
VVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6
b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAd
BgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wHhcNMTEwNDI1MjA0NTIxWhcN
MTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYD
VQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25z
b2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFt
YXpvbi5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ
21uUSfwfEvySWtC2XADZ4nB+BLYgVIk60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9T
rDHudUZg3qX4waLG5M43q7Wgc/MbQITxOUSQv7c7ugFFDzQGBzZswY6786m86gpE
Ibb3OhjZnzcvQAaRHhdlQWIMm2nrAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4
nUhVVxYUntneD9+h8Mg9q6q+auNKyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0Fkb
FFBjvSfpJIlJ00zbhNYS5f6GuoEDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTb
NYiytVbZPQUQ5Yaxu2jXnimvw3rrszlaEXAMPLE my-public-key
```

------

### Obtener el ID de subred de una instancia
<a name="instance-metadata-ex-6-imdsv1"></a>

Este ejemplo obtiene el ID de subred de una instancia.

------
#### [ cURL ]

```
[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/network/interfaces/macs/02:29:96:8f:6a:2d/subnet-id
subnet-be9b61d7
```

------
#### [ PowerShell ]

```
PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/network/interfaces/macs/02:29:96:8f:6a:2d/subnet-id
subnet-be9b61d7
```

------

### Obtener las etiquetas de instancia de una instancia
<a name="instance-metadata-ex-7-imdsv1"></a>

Si el acceso a las etiquetas de la instancia en los metadatos de instancia está encendido, puede obtener las etiquetas para una instancia de los metadatos de instancia. Para obtener más información, consulte [Recuperar etiquetas desde los metadatos de instancia](work-with-tags-in-IMDS.md#retrieve-tags-from-IMDS).