

# Configurar las opciones de metadatos para instancias existentes
<a name="configuring-IMDS-existing-instances"></a>

Puede modificar las opciones de metadatos para las instancias existentes.

Además, puede crear una política de IAM que impida a los usuarios modificar las opciones de metadatos de instancias existentes. Para controlar qué usuarios pueden modificar las opciones de metadatos de instancias, especifique una política que impida a todos los usuarios que no tengan un rol determinado utilizar la API [ModifyInstanceMetadataOptions](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyInstanceMetadataOptions.html). Para ver una política de IAM de ejemplo, consulte [Trabajar con metadatos de instancias](ExamplePolicies_EC2.md#iam-example-instance-metadata).

**nota**  
Si se utilizó una política declarativa para configurar las opciones de metadatos de la instancia, no podrá modificarlas directamente en la cuenta. Para obtener más información, consulte [Políticas declarativas](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_declarative.html) en la *Guía del usuario de AWS Organizations*.

## Requerir el uso de IMDSv2
<a name="modify-require-IMDSv2"></a>

Utilice uno de los siguientes métodos para modificar las opciones de metadatos de una instancia existente para requerir que se utilice IMDSv2 al requerir los metadatos de instancia. Cuando se requiere IMDSv2, no se puede usar IMDSv1.

**nota**  
Antes de solicitar el uso de IMDSv2, asegúrese de que la instancia no esté realizando llamadas a IMDSv1. La métrica `MetadataNoToken` de CloudWatch rastrea las llamadas de IMDSv1. Cuando `MetadataNoToken` no registra ningún uso de IMDSv1 en una instancia, la instancia estará lista para requerir IMDSv2.

------
#### [ Console ]

**Para exigir el uso de IMDSv2 en una instancia existente**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. En el panel de navegación, seleccione **Instances (Instancias)**.

1. Seleccione la instancia.

1. Elija **Acciones**, **Configuración de la instancia** y **Modificar opciones de metadatos de instancia**.

1. En el cuadro de diálogo **Modificar opciones de metadatos de instancia**, haga lo siguiente:

   1. En **Servicio de metadatos de instancia**, seleccione **Habilitar**.

   1. En **IMDSv2**, seleccione **Obligatorio**.

   1. Seleccione **Save**.

------
#### [ AWS CLI ]

**Para exigir el uso de IMDSv2 en una instancia existente**  
Use el comando de la CLI [modify-instance-metadata-options](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-metadata-options.html) y establezca el parámetro `http-tokens` en `required`. Cuando se especifica un valor para `http-tokens`, también se debe establecer `http-endpoint` en `enabled`.

```
aws ec2 modify-instance-metadata-options \
    --instance-id i-1234567890abcdef0 \
    --http-tokens required \
    --http-endpoint enabled
```

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

**Para exigir el uso de IMDSv2 en una instancia existente**  
Utilice el cmdlet [Edit-EC2InstanceMetadataOption](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceMetadataOption.html) y defina el parámetro `HttpTokens` en `required`. Cuando se especifica un valor para `HttpTokens`, también se debe establecer `HttpEndpoint` en `enabled`.

```
(Edit-EC2InstanceMetadataOption `
    -InstanceId i-1234567890abcdef0 `
    -HttpTokens required `
    -HttpEndpoint enabled).InstanceMetadataOptions
```

------

## Restauración del uso de IMDSv1
<a name="modify-restore-IMDSv1"></a>

Cuando se requiere IMDSv2 en una instancia, se producirá un error al usar una solicitud de IMDSv1. Cuando IMDSv2 sea opcional, tanto IMDSv2 como IMDSv1 funcionarán. Por lo tanto, para reemplazar IMDSv1, haga que IMDSv2 sea opcional (`httpTokens = optional`) mediante alguno de los métodos siguientes.

La propiedad IMDS de `httpTokensEnforced` también impide los intentos de habilitar IMDSv1 en una instancia existente. Si se habilita para una cuenta de una región, si se intenta establecer `httpTokens` en `optional` se producirá una excepción de `UnsupportedOperation`. Para obtener más información, consulte [Solución de problemas](#troubleshoot-modifying-an-imdsv1-enabled-instance-fails).

**importante**  
Si los lanzamientos de la instancia fallan debido a la aplicación de IMDSv2, tiene dos opciones para permitir que los lanzamientos se realicen correctamente:  
**Lanzar instancias solo como IMDSv2**: si el software que se ejecuta en las instancias usa solo IMDSv2 (sin depender de IMDSv1), puede lanzar las instancias solo como IMDSv2. Para ello, configure IMDSv2 únicamente mediante los parámetros de lanzamiento de `httpTokens = required` o los metadatos predeterminados de la cuenta de la región. 
**Desactivar la aplicación**: si su software sigue dependiendo de IMDSv1, establezca `httpTokensEnforced` en `disabled` para la cuenta de la región. Para obtener más información, consulte [Aplicar IMDSv2 a nivel de cuenta](configuring-IMDS-new-instances.md#enforce-imdsv2-at-the-account-level).

------
#### [ Console ]

**Para restaurar el uso de IMDSv1 en una instancia**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. En el panel de navegación, seleccione **Instances (Instancias)**.

1. Seleccione la instancia.

1. Elija **Acciones**, **Configuración de la instancia** y **Modificar opciones de metadatos de instancia**.

1. En el cuadro de diálogo **Modificar opciones de metadatos de instancia**, haga lo siguiente:

   1. Para **Servicio de metadatos de instancia**, asegúrese de que esté seleccionada la opción **Habilitar**.

   1. En **IMDSv2**, seleccione **Opcional**.

   1. Seleccione **Save**.

------
#### [ AWS CLI ]

**Para restaurar el uso de IMDSv1 en una instancia**  
Puede utilizar el comando de la CLI [modify-instance-metadata-options](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-metadata-options.html) `http-tokens` establecido en `optional` para restaurar el uso de IMDSv1 cuando se solicitan metadatos de la instancia.

```
aws ec2 modify-instance-metadata-options \
    --instance-id i-1234567890abcdef0 \
    --http-tokens optional \
    --http-endpoint enabled
```

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

**Para restaurar el uso de IMDSv1 en una instancia**  
Puede usar el cmdlet [Edit-EC2InstanceMetadataOption](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceMetadataOption.html) con `HttpTokens` establecido en `optional`, para restaurar el uso de IMDSv1 al solicitar los metadatos de la instancia.

```
(Edit-EC2InstanceMetadataOption `
    -InstanceId i-1234567890abcdef0 `
    -HttpTokens optional `
    -HttpEndpoint enabled).InstanceMetadataOptions
```

------

## Cambio del límite de saltos de respuesta PUT
<a name="modify-PUT-response-hop-limit"></a>

En las instancias existentes, puede modificar la configuración del límite de saltos de respuesta `PUT`.

Actualmente, solo la AWS CLI y los AWS SDK admiten cambiar el límite de saltos de respuesta PUT.

------
#### [ AWS CLI ]

**Para cambiar el límite de saltos de respuesta PUT**  
Use el comando de la CLI [modify-instance-metadata-options](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-metadata-options.html) y establezca el parámetro `http-put-response-hop-limit` en el número de saltos necesario. En el siguiente ejemplo, el límite de saltos se ha establecido en `3`. Tenga en cuenta que al especificar un valor para `http-put-response-hop-limit`, también debe establecer `http-endpoint` en `enabled`.

```
aws ec2 modify-instance-metadata-options \
    --instance-id i-1234567890abcdef0 \
    --http-put-response-hop-limit 3 \
    --http-endpoint enabled
```

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

**Para cambiar el límite de saltos de respuesta PUT**  
Utilice el cmdlet [Edit-EC2InstanceMetadataOption](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceMetadataOption.html) y defina el parámetro `HttpPutResponseHopLimit` para el número de saltos obligatorio. En el siguiente ejemplo, el límite de saltos se ha establecido en `3`. Tenga en cuenta que al especificar un valor para `HttpPutResponseHopLimit`, también debe establecer `HttpEndpoint` en `enabled`.

```
(Edit-EC2InstanceMetadataOption `
    -InstanceId i-1234567890abcdef0 `
    -HttpPutResponseHopLimit 3 `
    -HttpEndpoint enabled).InstanceMetadataOptions
```

------

## Habilitación de los puntos de conexión IPv4 e IPv6 de IMDS
<a name="enable-ipv6-endpoint-for-existing-instances"></a>

El IMDS tiene dos puntos de conexión en una instancia: IPv4 (`169.254.169.254`) e IPv6 (`[fd00:ec2::254]`). Al habilitar el IMDS, el punto de conexión IPv4 se habilita automáticamente. El punto de conexión IPv6 permanece deshabilitado incluso si se lanza una instancia en una subred de solo IPv6. Para habilitar el punto de conexión IPv6, tiene que hacerlo de manera explícita. Si habilita el punto de conexión IPv6, el punto de conexión IPv4 permanece habilitado.

Puede habilitar el punto de conexión IPv6 al momento de lanzar una instancia o después.

**Requisitos para la habilitación de un punto de conexión IPv6**
+ El tipo de instancia seleccionado es una [instancia basada en Nitro](instance-types.md#instance-hypervisor-type).
+ Las subredes seleccionadas son compatibles con IPv6, y cada subred es [de doble pila o solo IPv6](https://docs.aws.amazon.com/vpc/latest/userguide/configure-subnets.html#subnet-ip-address-range).

En la actualidad, solo la AWS CLI y los AWS SDK son compatibles con la habilitación de un punto de conexión IPv6 de IMDS después del lanzamiento de una instancia.

------
#### [ AWS CLI ]

**Para habilitar el punto de conexión IPv6 de IMDS para una instancia**  
Use el comando de la CLI [modify-instance-metadata-options](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-metadata-options.html) y establezca el parámetro `http-protocol-ipv6` en `enabled`. Tenga en cuenta que al especificar un valor para `http-protocol-ipv6`, también debe establecer `http-endpoint` en `enabled`.

```
aws ec2 modify-instance-metadata-options \
	--instance-id i-1234567890abcdef0 \
	--http-protocol-ipv6 enabled \
	--http-endpoint enabled
```

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

**Para habilitar el punto de conexión IPv6 de IMDS para una instancia**  
Utilice el cmdlet [Edit-EC2InstanceMetadataOption](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceMetadataOption.html) y defina el parámetro `HttpProtocolIpv6` en `enabled`. Tenga en cuenta que al especificar un valor para `HttpProtocolIpv6`, también debe establecer `HttpEndpoint` en `enabled`.

```
(Edit-EC2InstanceMetadataOption `
    -InstanceId i-1234567890abcdef0 `
    -HttpProtocolIpv6 enabled `
    -HttpEndpoint enabled).InstanceMetadataOptions
```

------

## Activación del acceso a los metadatos de instancias
<a name="enable-instance-metadata-on-existing-instances"></a>

Puede activar el acceso a los metadatos de instancia al habilitar el punto de conexión HTTP del IMDS en la instancia, independientemente de la versión del IMDS que utilice. Para anular este cambio en cualquier momento, deshabilite el punto de conexión HTTP.

Utilice uno de los métodos siguientes para activar el acceso a los metadatos de una instancia en una instancia.

------
#### [ Console ]

**Para activar el acceso a los metadatos de instancia**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. En el panel de navegación, seleccione **Instances (Instancias)**.

1. Seleccione la instancia.

1. Elija **Acciones**, **Configuración de la instancia** y **Modificar opciones de metadatos de instancia**.

1. En el cuadro de diálogo **Modificar opciones de metadatos de instancia**, haga lo siguiente:

   1. En **Servicio de metadatos de instancia**, seleccione **Habilitar**.

   1. Seleccione **Save**.

------
#### [ AWS CLI ]

**Para activar el acceso a los metadatos de instancia**  
Use el comando de la CLI [modify-instance-metadata-options](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-metadata-options.html) y establezca el parámetro `http-endpoint` en `enabled`.

```
aws ec2 modify-instance-metadata-options \
    --instance-id i-1234567890abcdef0 \
    --http-endpoint enabled
```

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

**Para activar el acceso a los metadatos de instancia**  
Utilice el cmdlet [Edit-EC2InstanceMetadataOption](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceMetadataOption.html) y defina el parámetro `HttpEndpoint` en `enabled`.

```
(Edit-EC2InstanceMetadataOption `
    -InstanceId i-1234567890abcdef0 `
    -HttpEndpoint enabled).InstanceMetadataOptions
```

------

## Desactivar el acceso a los metadatos de instancia
<a name="disable-instance-metadata-on-existing-instances"></a>

Puede desactivar el acceso a los metadatos de instancia al deshabilitar el punto de conexión HTTP del IMDS en la instancia, independientemente de la versión del IMDS que utilice. Puede anular este cambio en cualquier momento mediante la activación del punto de conexión HTTP.

Utilice uno de los métodos siguientes para desactivar el acceso a los metadatos de una instancia.

------
#### [ Console ]

**Para desactivar el acceso a los metadatos de instancia**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. En el panel de navegación, seleccione **Instances (Instancias)**.

1. Seleccione la instancia.

1. Elija **Acciones**, **Configuración de la instancia** y **Modificar opciones de metadatos de instancia**.

1. En el cuadro de diálogo **Modificar opciones de metadatos de instancia**, haga lo siguiente:

   1. Para **Servicio de metadatos de instancia**, desactive **Habilitar**.

   1. Seleccione **Save**.

------
#### [ AWS CLI ]

**Para desactivar el acceso a los metadatos de instancia**  
Use el comando de la CLI [modify-instance-metadata-options](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-metadata-options.html) y establezca el parámetro `http-endpoint` en `disabled`.

```
aws ec2 modify-instance-metadata-options \
    --instance-id i-1234567890abcdef0 \
    --http-endpoint disabled
```

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

**Para desactivar el acceso a los metadatos de instancia**  
Utilice el cmdlet [Edit-EC2InstanceMetadataOption](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceMetadataOption.html) y defina el parámetro `HttpEndpoint` en `disabled`.

```
(Edit-EC2InstanceMetadataOption `
    -InstanceId i-1234567890abcdef0 `
    -HttpEndpoint disabled).InstanceMetadataOptions
```

------

## Permitir acceso a etiquetas en metadatos de instancia
<a name="modify-access-to-tags-in-instance-metadata-on-existing-instances"></a>

Puede permitir el acceso a etiquetas en los metadatos de instancia en una instancia en ejecución o detenida. Para cada instancia, debe permitir el acceso de manera explícita. Si se permite el acceso, las *claves* de etiquetas de instancia deben cumplir con restricciones de caracteres específicas; de lo contrario, dará error. 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).

## Solución de problemas
<a name="troubleshoot-modifying-an-imdsv1-enabled-instance-fails"></a>

### Se produce un error al modificar una instancia habilitada para IMDSv1
<a name="modifying-an-imdsv1-enabled-instance-fails"></a>

#### Descripción
<a name="modifying-an-imdsv1-enabled-instance-fails-description"></a>

Ha recibido este mensaje de error:

`You can't launch instances with IMDSv1 because httpTokensEnforced is enabled for this account. Either launch the instance with httpTokens=required or contact your account owner to disable httpTokensEnforced using the ModifyInstanceMetadataDefaults API or the account settings in the EC2 console.`

#### Causa
<a name="modifying-an-imdsv1-enabled-instance-fails-cause"></a>

Este error se produce cuando se intenta modificar una instancia existente para que esté habilitada para IMDSv1 (`httpTokens = optional`) en una cuenta en la que la configuración de la cuenta EC2 o una política declarativa de la organización de AWS aplica el uso de IMDSv2 (`httpTokensEnforced = enabled`). 

#### Solución
<a name="modifying-an-imdsv1-enabled-instance-fails-solution"></a>

Si necesita compatibilidad con IMDSv1 en las instancias existentes, tendrá que deshabilitar la aplicación de IMDSv2 en la cuenta de la región. Configure `HttpTokensEnforced` en `disabled` para deshabilitar la aplicación de IMDSv2. Para obtener más información, consulte [ModifyInstanceMetadataDefaults](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyInstanceMetadataDefaults.html) en la Referencia de la API de Amazon EC2. Si prefiere configurar este ajuste mediante la consola, consulte [Aplicar IMDSv2 a nivel de cuenta](configuring-IMDS-new-instances.md#enforce-imdsv2-at-the-account-level).

Se recomienda que use únicamente IMDSv2 (`httpTokens=required`). Para obtener más información, consulte [Transición al uso de Servicio de metadatos de instancia, versión 2](instance-metadata-transition-to-version-2.md).

 