

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

Puede configurar las siguientes opciones de metadatos para nuevas instancias.

**Topics**
+ [

## Requerir el uso de IMDSv2
](#configure-IMDS-new-instances)
+ [

## Habilitación de los puntos de conexión IPv4 e IPv6 de IMDS
](#configure-IMDS-new-instances-ipv4-ipv6-endpoints)
+ [

## Desactivar el acceso a los metadatos de instancia
](#configure-IMDS-new-instances--turn-off-instance-metadata)
+ [

## Permitir acceso a etiquetas en metadatos de instancia
](#configure-IMDS-new-instances-tags-in-instance-metadata)

**nota**  
Los ajustes de estas opciones se configuran a nivel de cuenta, ya sea directamente en la cuenta o mediante una política declarativa. Se deben configurar en cada Región de AWS en la que desee configurar las opciones de metadatos de la instancia. El uso de una política declarativa permite aplicar la configuración en varias regiones simultáneamente, así como en varias cuentas simultáneamente. Cuando se utiliza una política declarativa, no se puede modificar la configuración directamente en una cuenta. En este tema se describe cómo configurar el ajuste directamente dentro de una cuenta. Para obtener información sobre el uso de políticas declarativas, 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="configure-IMDS-new-instances"></a>

Puede usar los siguientes métodos para exigir el uso de IMDSv2 en sus instancias nuevas.

**Topics**
+ [

### Ajuste de IMDSv2 como valor predeterminado de la cuenta
](#set-imdsv2-account-defaults)
+ [

### Aplicar IMDSv2 a nivel de cuenta
](#enforce-imdsv2-at-the-account-level)
+ [

### Configuración de la instancia en el momento de la inicialización
](#configure-IMDS-new-instances-instance-settings)
+ [

### Configuración de la AMI
](#configure-IMDS-new-instances-ami-configuration)
+ [

### Uso de una política de IAM
](#configure-IMDS-new-instances-iam-policy)

### Ajuste de IMDSv2 como valor predeterminado de la cuenta
<a name="set-imdsv2-account-defaults"></a>

Puede establecer el valor predeterminado del servicio de metadatos de instancias (IMDS) a nivel de cuenta para cada Región de AWS. Cuando se inicia una instancia *nueva*, la versión de metadatos de la instancia se configura automáticamente al valor a nivel de cuenta predeterminado. Sin embargo, puede anular el valor manualmente al iniciarla o después. Para obtener más información sobre cómo afectan a una instancia la configuración a nivel de cuenta y las anulaciones manuales, consulte [Orden de prioridad para las opciones de metadatos de instancia](configuring-instance-metadata-options.md#instance-metadata-options-order-of-precedence)

**nota**  
Si se establece el valor predeterminado a nivel de cuenta, no se restablecen las instancias *existentes*. Por ejemplo, si establece el valor predeterminado a nivel de cuenta en IMDSv2, las instancias existentes que estén configuradas en IMDSv1 no se verán afectadas. Si desea cambiar el valor de las instancias existentes, debe cambiarlo manualmente en las propias instancias.

Puede establecer el valor predeterminado de la cuenta para la versión de metadatos de instancia en IMDSv2, de modo que todas las instancias *nuevas* de la cuenta se inicien con IMDSv2 obligatoriamente y, de esta forma, se deshabilita IMDSv1. Con esta cuenta predeterminada, cuando lance una instancia, los valores predeterminados de la instancia serán los siguientes:
+ Consola: la **versión de metadatos** se configura en **V2 únicamente (token obligatorio)** y el **límite de saltos de respuesta de los metadatos** se establece en **2**.
+ AWS CLI: `HttpTokens` se configuran como `required` y `HttpPutResponseHopLimit` se configura en `2`. 

**nota**  
Antes de establecer el valor predeterminado de la cuenta en IMDSv2, asegúrese de que las instancias no dependan de IMDSv1. Para obtener más información, consulte [Ruta recomendada para exigir IMDSv2](instance-metadata-transition-to-version-2.md#recommended-path-for-requiring-imdsv2).

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

**Cómo configurar IMDSv2 como valor predeterminado para la cuenta de la Región especificada**

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

1. Para cambiar la Región de AWS, utilice el Selector de regiones ubicado en la esquina superior derecha de la página.

1. En el panel de navegación, elija **Panel**.

1. En la tarjeta **Atributos de cuenta**, en **Configuración**, elija **Protección y seguridad de datos**.

1. **Junto a los **Valores predeterminados de IMDS**, seleccione Administrar**.

1. En la página **Administrar valores predeterminados de IMDS**, haga lo siguiente:

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

   1. En **Metadata version** (Versión de metadatos), elija **V2 only (token required)** (solo V2 [token obligatorio]).

   1. En el **Límite de saltos de respuesta de metadatos**, especifique **2** si las instancias alojarán contenedores. De lo contrario, seleccione **Sin preferencia**. Si no se especifica ninguna preferencia, en el momento del lanzamiento, el valor predeterminado será **2** si la AMI tiene la configuración `ImdsSupport: v2.0`; de lo contrario, el valor predeterminado será **1**.

   1. Elija **Actualizar**.

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

**Cómo configurar IMDSv2 como valor predeterminado para la cuenta de la Región especificada**  
Use el comando [modify-instance-metadata-defaults](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-metadata-defaults.html) y especifique la Región en la que desea modificar la configuración a nivel de cuenta de IMDS. Incluya `--http-tokens` establecidos como `required` y `--http-put-response-hop-limit` establecido en `2` si las instancias alojarán contenedores. De lo contrario, especifique `-1` si no desea indicar ninguna preferencia. Si se especifica `-1` (ninguna preferencia), en el momento del lanzamiento, el valor predeterminado será `2` si la AMI tiene la configuración `ImdsSupport: v2.0`; de lo contrario, el valor predeterminado será `1`.

```
aws ec2 modify-instance-metadata-defaults \
    --region us-east-1 \
    --http-tokens required \
    --http-put-response-hop-limit 2
```

A continuación, se muestra un ejemplo del resultado.

```
{
    "Return": true
}
```

**Cómo ver la configuración de cuenta predeterminada para las opciones de metadatos de instancia para la Región especificada**  
Use el comando [get-instance-metadata-defaults](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-instance-metadata-defaults.html) y especifique la Región.

```
aws ec2 get-instance-metadata-defaults --region us-east-1
```

A continuación, se muestra un ejemplo del resultado.

```
{
    "AccountLevel": {
        "HttpTokens": "required",
        "HttpPutResponseHopLimit": 2
    },
    "ManagedBy": "account"
}
```

El campo `ManagedBy` indica la entidad que configuró el ajuste. En este ejemplo, `account` indica que el ajuste se configuró directamente en la cuenta. Un valor de `declarative-policy` significaría que el ajuste se configuró mediante una política declarativa. 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*.

**Configuración de IMDSv2 como servicio predeterminado para la cuenta para todas las regiones**  
Use el comando [modify-instance-metadata-defaults](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-metadata-defaults.html) para modificar la configuración de nivel de cuenta de IMDS para todas las regiones. Incluya `--http-tokens` establecidos como `required` y `--http-put-response-hop-limit` establecido en `2` si las instancias alojarán contenedores. De lo contrario, especifique `-1` si no desea indicar ninguna preferencia. Si se especifica `-1` (ninguna preferencia), en el momento del lanzamiento, el valor predeterminado será `2` si la AMI tiene la configuración `ImdsSupport: v2.0`; de lo contrario, el valor predeterminado será `1`.

```
echo -e "Region          \t Modified" ; \
echo -e "--------------  \t ---------" ; \
for region in $(
    aws ec2 describe-regions \
        --region us-east-1 \
        --query "Regions[*].[RegionName]" \
        --output text
    ); 
    do (output=$(
        aws ec2 modify-instance-metadata-defaults \
            --region $region \
            --http-tokens required \
            --http-put-response-hop-limit 2 \
            --output text)
        echo -e "$region        \t $output"
    );
done
```

A continuación, se muestra un ejemplo del resultado.

```
Region                   Modified
--------------           ---------
ap-south-1               True
eu-north-1               True
eu-west-3                True
...
```

**Visualización de la configuración de cuenta predeterminada para las opciones de metadatos de instancia para todas las regiones**  
Use el comando [get-instance-metadata-defaults](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-instance-metadata-defaults.html).

```
echo -e "Region   \t Level          Hops    HttpTokens" ; \
echo -e "-------------- \t ------------   ----    ----------" ; \
for region in $(
    aws ec2 describe-regions \
        --region us-east-1 \
        --query "Regions[*].[RegionName]" \
        --output text
    ); 
    do (output=$(
        aws ec2 get-instance-metadata-defaults \
            --region $region \
            --output text)
        echo -e "$region \t $output" 
    );
done
```

A continuación, se muestra un ejemplo del resultado.

```
Region           Level          Hops    HttpTokens
--------------   ------------   ----    ----------
ap-south-1       ACCOUNTLEVEL   2       required
eu-north-1       ACCOUNTLEVEL   2       required
eu-west-3        ACCOUNTLEVEL   2       required
...
```

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

**Cómo configurar IMDSv2 como valor predeterminado para la cuenta de la Región especificada**  
Use el cmdlet [Edit-EC2InstanceMetadataDefault](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceMetadataDefault.html) y especifique la Región en la que desea modificar la configuración a nivel de cuenta de IMDS. Incluya `-HttpToken` establecidos como `required` y `-HttpPutResponseHopLimit` establecido en `2` si las instancias alojarán contenedores. De lo contrario, especifique `-1` si no desea indicar ninguna preferencia. Si se especifica `-1` (ninguna preferencia), en el momento del lanzamiento, el valor predeterminado será `2` si la AMI tiene la configuración `ImdsSupport: v2.0`; de lo contrario, el valor predeterminado será `1`.

```
Edit-EC2InstanceMetadataDefault `
    -Region us-east-1 `
    -HttpToken required `
    -HttpPutResponseHopLimit 2
```

A continuación, se muestra un ejemplo del resultado.

```
True
```

**Cómo ver la configuración de cuenta predeterminada para las opciones de metadatos de instancia para la Región especificada**  
Use el cmdlet [Get-EC2InstanceMetadataDefault](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceMetadataDefault.html) y especifique la región.

```
Get-EC2InstanceMetadataDefault -Region us-east-1 | Format-List
```

A continuación, se muestra un ejemplo del resultado.

```
HttpEndpoint            : 
HttpPutResponseHopLimit : 2
HttpTokens              : required
InstanceMetadataTags    :
```

**Configuración de IMDSv2 como servicio predeterminado para la cuenta para todas las regiones**  
Use el cmdlet [Edit-EC2InstanceMetadataDefault](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceMetadataDefault.html) para modificar la configuración de nivel de cuenta de IMDS de todas las regiones. Incluya `-HttpToken` establecidos como `required` y `-HttpPutResponseHopLimit` establecido en `2` si las instancias alojarán contenedores. De lo contrario, especifique `-1` si no desea indicar ninguna preferencia. Si se especifica `-1` (ninguna preferencia), en el momento del lanzamiento, el valor predeterminado será `2` si la AMI tiene la configuración `ImdsSupport: v2.0`; de lo contrario, el valor predeterminado será `1`.

```
(Get-EC2Region).RegionName | `
    ForEach-Object {
    [PSCustomObject]@{
        Region   = $_
        Modified = (Edit-EC2InstanceMetadataDefault `
                -Region $_ `
                -HttpToken required `
                -HttpPutResponseHopLimit 2)
    } 
} | `
Format-Table Region, Modified -AutoSize
```

Resultado previsto

```
Region         Modified
------         --------
ap-south-1         True
eu-north-1         True
eu-west-3          True
...
```

**Visualización de la configuración de cuenta predeterminada para las opciones de metadatos de instancia para todas las regiones**  
Utilice el cmdlet [Get-EC2InstanceMetadataDefault](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceMetadataDefault.html).

```
(Get-EC2Region).RegionName | `
    ForEach-Object {
    [PSCustomObject]@{
        Region = $_
        HttpPutResponseHopLimit = (Get-EC2InstanceMetadataDefault -Region $_).HttpPutResponseHopLimit
        HttpTokens              = (Get-EC2InstanceMetadataDefault -Region $_).HttpTokens
    }
} | `
Format-Table -AutoSize
```

Ejemplo de resultado

```
Region         HttpPutResponseHopLimit HttpTokens
------         ----------------------- ----------
ap-south-1                           2 required
eu-north-1                           2 required
eu-west-3                            2 required                    
...
```

------

### Aplicar IMDSv2 a nivel de cuenta
<a name="enforce-imdsv2-at-the-account-level"></a>

Puede aplicar el uso de IMDSv2 a nivel de cuenta para cada Región de AWS. Cuando se aplican, las instancias solo se pueden lanzar si están configuradas para que exijan IMDSv2. Esta aplicación se aplica independientemente de cómo esté configurada la instancia o la AMI.

**nota**  
Antes de habilitar la aplicación de IMDSv2 a nivel de cuenta, asegúrese de que sus aplicaciones y AMI sean compatibles con IMDSv2. Para obtener más información, consulte [Ruta recomendada para exigir IMDSv2](instance-metadata-transition-to-version-2.md#recommended-path-for-requiring-imdsv2). Si la aplicación de IMDSv2 está habilitada y `httpTokens` no está establecida en la configuración de la instancia `required` en el momento del lanzamiento, en la configuración de la cuenta o en la configuración de la AMI, el lanzamiento de la instancia fallará. Para obtener información sobre la resolución de problemas, consulte [Se produce un error al lanzar una instancia habilitada para IMDSv1](troubleshooting-launch.md#launching-an-imdsv1-enabled-instance-fails).

**nota**  
Esta configuración no cambia la versión de IMDS de las instancias existentes, pero bloquea la activación de IMDSv1 en las instancias existentes que actualmente tienen inhabilitado IMDSv1.

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

**Para aplicar IMDSv2 para la cuenta de la región especificada**

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

1. Para cambiar la región Región de AWS, utilice el selector de regiones en la esquina superior derecha de la página.

1. En el panel de navegación, elija **Panel**.

1. En la tarjeta **Atributos de cuenta**, en **Configuración**, elija **Protección y seguridad de datos**.

1. **Junto a los **Valores predeterminados de IMDS**, seleccione Administrar**.

1. En la página **Administrar valores predeterminados de IMDS**, haga lo siguiente:

   1. En **Metadata version** (Versión de metadatos), elija **V2 only (token required)** (solo V2 [token obligatorio]).

   1. En **Aplicar IMDSv2**, seleccione **Activado.**

   1. Elija **Actualizar**.

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

**Para aplicar IMDSv2 para la cuenta de la región especificada**  
 Use el comando [modify-instance-metadata-defaults](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-metadata-defaults.html) y especifique la Región en la que desea aplicar IMDSv2. 

```
aws ec2 modify-instance-metadata-defaults \
    --region us-east-1 \
    --http-tokens required \
    --http-tokens-enforced enabled
```

A continuación, se muestra un ejemplo del resultado.

```
{
"Return": true
}
```

**Para ver la configuración de aplicación de IMDSv2 para la cuenta en una región específica**  
Use el comando [get-instance-metadata-defaults](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-instance-metadata-defaults.html) y especifique la Región.

```
aws ec2 get-instance-metadata-defaults --region us-east-1
```

A continuación, se muestra un ejemplo del resultado.

```
{
    "AccountLevel": {
        "HttpTokens": "required",
        "HttpTokensEnforced": "enabled"
    },
    "ManagedBy": "account"
}
```

El campo `ManagedBy` indica la entidad que configuró el ajuste. En este ejemplo, `account` indica que el ajuste se configuró directamente en la cuenta. Un valor de `declarative-policy` significaría que el ajuste se configuró mediante una política declarativa. 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 organizaciones de AWS*.

**Para aplicar IMDSv2 para la cuenta para todas las regiones**  
Use el comando [modify-instance-metadata-defaults](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-metadata-defaults.html) para aplicar IMDSv2 en todas las regiones.

```
echo -e "Region          \t Modified" ; \
echo -e "--------------  \t ---------" ; \
for region in $(
    aws ec2 describe-regions \
        --region us-east-1 \
        --query "Regions[*].[RegionName]" \
        --output text
    ); 
    do (output=$(
        aws ec2 modify-instance-metadata-defaults \
            --region $region \
            --http-tokens-enforced enabled \
            --output text)
        echo -e "$region        \t $output"
    );
done
```

A continuación, se muestra un ejemplo del resultado.

```
Region                   Modified
--------------           ---------
ap-south-1               True
eu-north-1               True
eu-west-3                True
...
```

**Para ver la configuración de aplicación de IMDSv2 de la cuenta en todas las regiones**  
Use el comando [get-instance-metadata-defaults](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-instance-metadata-defaults.html).

```
echo -e "Region   \t Level           HttpTokensEnforced" ; \
echo -e "-------------- \t ------------   ----------------" ; \
for region in $(
    aws ec2 describe-regions \
        --region us-east-1 \
        --query "Regions[*].[RegionName]" \
        --output text
    ); 
    do (output=$(
        aws ec2 get-instance-metadata-defaults \
            --region $region \
            --query 'AccountLevel.HttpTokensEnforced' \           
            --output text)
        echo -e "$region \t ACCOUNTLEVEL $output" 
    );
done
```

A continuación, se muestra un ejemplo del resultado.

```
Region           Level          HttpTokensEnforced
--------------   ------------   ------------------
ap-south-1       ACCOUNTLEVEL   enabled
eu-north-1       ACCOUNTLEVEL   enabled
eu-west-3        ACCOUNTLEVEL   enabled
...
```

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

**Para aplicar IMDSv2 para la cuenta de la región especificada**  
Use el cmdlet [Edit-EC2InstanceMetadataDefault](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceMetadataDefault.html) y especifique la Región en la que desea aplicar IMDSv2. 

```
Edit-EC2InstanceMetadataDefault `
    -Region us-east-1 `
    -HttpToken required `
    -HttpPutResponseHopLimit 2
```

A continuación, se muestra un ejemplo del resultado.

```
@{
    Return = $true
}
```

**Para ver la configuración de aplicación de IMDSv2 para la cuenta en una región específica**  
Use el comando Get-EC2InstanceMetadataDefault y especifique la región.

```
Get-EC2InstanceMetadataDefault -Region us-east-1
```

A continuación, se muestra un ejemplo del resultado.

```
@{
    AccountLevel = @{
        HttpTokens = "required"
        HttpTokensEnforced = "enabled"
    }
    ManagedBy = "account"
}
```

El campo `ManagedBy` indica la entidad que configuró el ajuste. En este ejemplo, `account` indica que el ajuste se configuró directamente en la cuenta. Un valor de `declarative-policy` significaría que el ajuste se configuró mediante una política declarativa. 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 organizaciones de AWS*.

**Para aplicar IMDSv2 para la cuenta para todas las regiones**  
Use el comando [modify-instance-metadata-defaults](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-metadata-defaults.html) para aplicar IMDSv2 en todas las regiones.

```
echo -e "Region          \t Modified" ; \
echo -e "--------------  \t ---------" ; \
for region in $(
    aws ec2 describe-regions \
        --region us-east-1 \
        --query "Regions[*].[RegionName]" \
        --output text
    ); 
    do (output=$(
        aws ec2 modify-instance-metadata-defaults \
            --region $region \
            --http-tokens-enforced enabled \
            --output text)
        echo -e "$region        \t $output"
    );
done
```

A continuación, se muestra un ejemplo del resultado.

```
Region                   Modified
--------------           ---------
ap-south-1               True
eu-north-1               True
eu-west-3                True
...
```

**Configuración de IMDSv2 como servicio predeterminado para la cuenta para todas las regiones**  
Use el cmdlet [Edit-EC2InstanceMetadataDefault](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceMetadataDefault.html) para modificar la configuración de nivel de cuenta de IMDS de todas las regiones. Incluya `-HttpToken` establecidos como `required` y `-HttpPutResponseHopLimit` establecido en `2` si las instancias alojarán contenedores. De lo contrario, especifique `-1` si no desea indicar ninguna preferencia. Si se especifica `-1` (ninguna preferencia), en el momento del lanzamiento, el valor predeterminado será `2` si la AMI tiene la configuración `ImdsSupport: v2.0`; de lo contrario, el valor predeterminado será `1`.

```
(Get-EC2Region).RegionName | `
    ForEach-Object {
    [PSCustomObject]@{
        Region   = $_
        Modified = (Edit-EC2InstanceMetadataDefault `
                -Region $_ `
                -HttpToken required `
                -HttpPutResponseHopLimit 2)
    } 
} | `
Format-Table Region, Modified -AutoSize
```

Resultado previsto

```
Region         Modified
------         --------
ap-south-1         True
eu-north-1         True
eu-west-3          True
...
```

**Visualización de la configuración de cuenta predeterminada para las opciones de metadatos de instancia para todas las regiones**  
Utilice el cmdlet [Get-EC2InstanceMetadataDefault](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceMetadataDefault.html).

```
(Get-EC2Region).RegionName | `
    ForEach-Object {
    [PSCustomObject]@{
        Region = $_
        HttpPutResponseHopLimit = (Get-EC2InstanceMetadataDefault -Region $_).HttpPutResponseHopLimit
        HttpTokens              = (Get-EC2InstanceMetadataDefault -Region $_).HttpTokens
    }
} | `
Format-Table -AutoSize
```

Ejemplo de resultado

```
Region         HttpPutResponseHopLimit HttpTokens
------         ----------------------- ----------
ap-south-1                           2 required
eu-north-1                           2 required
eu-west-3                            2 required                    
...
```

------

### Configuración de la instancia en el momento de la inicialización
<a name="configure-IMDS-new-instances-instance-settings"></a>

Al [iniciar una instancia](ec2-launch-instance-wizard.md), puede configurarla para exigir el uso de IMDSv2 mediante la configuración de los siguientes campos:
+ Consola de Amazon EC2: establezca **Metadata version** (Versión de metadatos) en **V2 only (token required)** (Solo V2 [token obligatorio]).
+ AWS CLI: `HttpTokens` establecido en `required`.

Al especificar que IMDSv2 es obligatorio, también se debe habilitar el punto de conexión del servicio de metadatos de instancia (IMDS); para ello, se debe establecer **Metadatos accesibles** en **Habilitados** (consola) o `HttpEndpoint` en `enabled` (AWS CLI).

En un entorno de contenedores, cuando se requiere IMDSv2, recomendamos establecer el límite de saltos en `2`. Para obtener más información, consulte [Consideraciones sobre el acceso a los metadatos de instancia](instancedata-data-retrieval.md#imds-considerations).

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

**Para exigir el uso de IMDSv2 en una nueva instancia**
+ Al iniciar una nueva instancia en la consola de Amazon EC2, despliegue **Advanced details** (Detalles avanzados) y haga lo siguiente:
  + Para **Metadatos accesibles**, elija **Enabled** (Habilitado).
  + En **Metadata version** (Versión de metadatos), elija **V2 only (token required)** (solo V2 [token obligatorio]).
  + (Entorno de contenedores) Para el **límite de saltos de respuesta de metadatos**, elija **2**.

  Para obtener más información, consulte [Detalles avanzados](ec2-instance-launch-parameters.md#liw-advanced-details).

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

**Para exigir el uso de IMDSv2 en una nueva instancia**  
En el siguiente ejemplo de [run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html), se inicia una instancia `c6i.large` con `--metadata-options` establecido en `HttpTokens=required`. Cuando se especifica un valor para `HttpTokens`, también se debe establecer `HttpEndpoint` en `enabled`. Debido a que el encabezado del token de seguridad está establecido en `required` para las solicitudes de recuperación de metadatos, se requiere que la instancia use IMDSv2 al solicitar los metadatos de la instancia.

En un entorno de contenedores, cuando se requiere IMDSv2, recomendamos establecer el límite de saltos en `2` con `HttpPutResponseHopLimit=2`.

```
aws ec2 run-instances \
    --image-id ami-0abcdef1234567890 \
    --instance-type c6i.large \
	...
    --metadata-options "HttpEndpoint=enabled,HttpTokens=required,HttpPutResponseHopLimit=2"
```

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

**Para exigir el uso de IMDSv2 en una nueva instancia**  
En el siguiente ejemplo del cmdlet [New-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html), se inicia una instancia `c6i.large` con `MetadataOptions_HttpEndpoint` establecido en `enabled` y el parámetro `MetadataOptions_HttpTokens` en `required`. Cuando se especifica un valor para `HttpTokens`, también se debe establecer `HttpEndpoint` en `enabled`. Debido a que el encabezado del token de seguridad está establecido en `required` para las solicitudes de recuperación de metadatos, se requiere que la instancia use IMDSv2 al solicitar los metadatos de la instancia.

```
New-EC2Instance `
    -ImageId ami-0abcdef1234567890 `
    -InstanceType c6i.large `
    -MetadataOptions_HttpEndpoint enabled `
    -MetadataOptions_HttpTokens required
```

------
#### [ CloudFormation ]

Para especificar las opciones de metadatos de una instancia con CloudFormation, consulte la propiedad [AWS::EC2::LaunchTemplate MetadataOptions](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-metadataoptions.html) en la *Guía del usuario de AWS CloudFormation*.

------

### Configuración de la AMI
<a name="configure-IMDS-new-instances-ami-configuration"></a>

Al registrar una AMI nueva o modificar una AMI existente, puede establecer el parámetro `imds-support` en `v2.0`. Las instancias iniciadas desde esta AMI tendrán el valor de **Metadata version** (Versión de metadatos) establecido en **V2 only (token required)** (Solo V2 [token obligatorio]) (consola) o `HttpTokens` establecido en `required` (AWS CLI). Con esta configuración, la instancia requiere que se utilice IMDSv2 al solicitar los metadatos de la instancia.

Tenga en cuenta que cuando establezca `imds-support` en `v2.0`, las instancias iniciadas desde esta AMI también tendrán **Metadata response hop limit** (Límite de saltos de respuesta de metadatos) (consola) o `http-put-response-hop-limit` (AWS CLI) establecido en **2**.

**importante**  
No utilice este parámetro a menos que el software de AMI sea compatible con IMDSv2. Después de establecer el valor en `v2.0`, no podrá deshacer el cambio. La única forma de “restablecer” la AMI es crear una AMI nueva a partir de la instantánea subyacente.

**Para configurar una nueva AMI para IMDSv2**  
Utilice uno de los siguientes métodos para configurar una nueva AMI de IMDSv2.

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

El siguiente ejemplo de [register-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html) registra una AMI mediante la instantánea especificada de un volumen raíz de EBS como dispositivo `/dev/xvda`. Especifique `v2.0` para el parámetro `imds-support` a fin de que las instancias que se lancen desde esta AMI requieran que se utilice IMDSv2 al solicitar metadatos de instancia.

```
aws ec2 register-image \
    --name my-image \
    --root-device-name /dev/xvda \
    --block-device-mappings DeviceName=/dev/xvda,Ebs={SnapshotId=snap-0123456789example} \
    --architecture x86_64 \
    --imds-support v2.0
```

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

En el siguiente ejemplo del cmdlet [Register-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2Image.html), se registra una AMI mediante la instantánea especificada de un volumen raíz de EBS como dispositivo `/dev/xvda`. Especifique `v2.0` para el parámetro `ImdsSupport` a fin de que las instancias que se lancen desde esta AMI requieran que se utilice IMDSv2 al solicitar metadatos de instancia.

```
Register-EC2Image `
    -Name 'my-image' `
    -RootDeviceName /dev/xvda `
    -BlockDeviceMapping  ( 
    New-Object `
        -TypeName Amazon.EC2.Model.BlockDeviceMapping `
        -Property @{ 
        DeviceName = '/dev/xvda'; 
        EBS        = (New-Object -TypeName Amazon.EC2.Model.EbsBlockDevice -Property @{ 
                SnapshotId = 'snap-0123456789example'
                VolumeType = 'gp3' 
                } )      
        }  ) `
    -Architecture X86_64 `
    -ImdsSupport v2.0
```

------

**Para configurar una AMI existente para IMDSv2**  
Utilice uno de los métodos siguientes para configurar una AMI existente para IMDSv2.

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

El siguiente ejemplo [modify-image-attribute](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-image-attribute.html) modifica una AMI existente únicamente para IMDSv2. Especifique `v2.0` para el parámetro `imds-support` a fin de que las instancias que se lancen desde esta AMI requieran que se utilice IMDSv2 al solicitar metadatos de instancia.

```
aws ec2 modify-image-attribute \
    --image-id ami-0abcdef1234567890 \
    --imds-support v2.0
```

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

En el siguiente ejemplo de cmdlet [Edit-EC2ImageAttribute](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2ImageAttribute.html), se modifica una AMI existente únicamente para IMDSv2. Especifique `v2.0` para el parámetro `imds-support` a fin de que las instancias que se lancen desde esta AMI requieran que se utilice IMDSv2 al solicitar metadatos de instancia.

```
Edit-EC2ImageAttribute `
    -ImageId ami-0abcdef1234567890 `
    -ImdsSupport 'v2.0'
```

------

### Uso de una política de IAM
<a name="configure-IMDS-new-instances-iam-policy"></a>

Puede crear una política de IAM que realice una de las siguientes acciones:
+ Impide a los usuarios iniciar nuevas instancias a menos que exijan el uso de IMDSv2 en la nueva instancia.
+ Impide que los usuarios llamen a la API ModifyInstanceMetadataOptions para cambiar las opciones de metadatos de una instancia en ejecución. Restrinja el acceso a la propiedad ModifyInstanceMetadataOptions HttpTokens para evitar actualizaciones no deseadas de las instancias en ejecución.
+ Impida que los usuarios llamen a la API ModifyInstanceMetadataDefaults para cambiar la configuración predeterminada de las cuentas tanto de HttpTokens como de HttpTokensEnforced. Al restringir el acceso a estas dos propiedades, se garantizará que solo los roles autorizados puedan modificar los valores predeterminados de la cuenta.

**Para exigir el uso de IMDSv2 en todas las instancias nuevas mediante una política de IAM**  
Para asegurarse de que los usuarios solo puedan lanzar instancias que exigen el uso de IMDSv2 al solicitar metadatos de instancia, haga lo siguiente:
+ Restrinja el acceso a las API `ModifyInstanceMetadataOptions` y `ModifyInstanceMetadataDefaults`, más específicamente, a las propiedades `httpTokens` y `httpTokensEnforced`.
+ A continuación, establezca la cuenta predeterminada en `httpTokens = required` y `httpTokensEnforced = enabled`.

  Para ver una política de IAM de ejemplo, consulte [Trabajar con metadatos de instancias](ExamplePolicies_EC2.md#iam-example-instance-metadata).

## Habilitación de los puntos de conexión IPv4 e IPv6 de IMDS
<a name="configure-IMDS-new-instances-ipv4-ipv6-endpoints"></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).

Utilice uno de los siguientes métodos para lanzar una instancia con el punto de conexión IPv6 de IMDS habilitado.

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

**Para habilitar el punto de conexión IPv6 de IMDS en el momento del lanzamiento de una instancia**
+ [Lance la instancia](ec2-launch-instance-wizard.md) en la consola de Amazon EC2 con la siguiente información especificada en **Advanced details** (Detalles avanzados):
  + Para el **punto de conexión IPv6 para la obtención de metadatos**, seleccione **Activado**.

Para obtener más información, consulte [Detalles avanzados](ec2-instance-launch-parameters.md#liw-advanced-details).

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

**Para habilitar el punto de conexión IPv6 de IMDS en el momento del lanzamiento de una instancia**  
El siguiente ejemplo de [run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) inicia una instancia `c6i.large` con el punto de conexión de IPv6 habilitado para IMDS. Para habilitar el punto de conexión de IPv6, para el parámetro `--metadata-options`, especifique `HttpProtocolIpv6=enabled`. Cuando se especifica un valor para `HttpProtocolIpv6`, también se debe establecer `HttpEndpoint` en `enabled`.

```
aws ec2 run-instances \
    --image-id ami-0abcdef1234567890 \
    --instance-type c6i.large \
    ...
    --metadata-options "HttpEndpoint=enabled,HttpProtocolIpv6=enabled"
```

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

**Para habilitar el punto de conexión IPv6 de IMDS en el momento del lanzamiento de una instancia**  
En el siguiente ejemplo del cmdlet [New-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html), se inicia una instancia `c6i.large` con el punto de conexión de IPv6 habilitado para IMDS. Para habilitar el punto de conexión IPv6, especifique `MetadataOptions_HttpProtocolIpv6` como `enabled`. Cuando se especifica un valor para `MetadataOptions_HttpProtocolIpv6`, también se debe establecer `MetadataOptions_HttpEndpoint` en `enabled`.

```
New-EC2Instance `
    -ImageId ami-0abcdef1234567890 `
    -InstanceType c6i.large `
    -MetadataOptions_HttpEndpoint enabled `
    -MetadataOptions_HttpProtocolIpv6 enabled
```

------

## Desactivar el acceso a los metadatos de instancia
<a name="configure-IMDS-new-instances--turn-off-instance-metadata"></a>

Puede desactivar el acceso a los metadatos de la instancia si deshabilita el IMDS al iniciar una instancia. Puede activar el acceso más adelante si vuelve a habilitar el IMDS. Para obtener más información, consulte [Activación del acceso a los metadatos de instancias](configuring-IMDS-existing-instances.md#enable-instance-metadata-on-existing-instances).

**importante**  
Puede optar por deshabilitar el IMDS durante la inicialización o después. Si deshabilita el IMDS *durante la inicialización*, es posible que lo siguiente no funcione:  
Es posible que no tenga acceso mediante SSH a su instancia. `public-keys/0/openssh-key`, que es la clave de SSH pública de su instancia, no estará accesible porque normalmente se proporciona y se accede a ella desde los metadatos de la instancia de EC2.
Los datos de usuario de EC2 no estarán disponibles y no se ejecutarán al iniciar la instancia. Los datos de usuario de EC2 se alojan en el IMDS. Si deshabilita el IMDS, desactiva de forma eficaz el acceso a los datos de los usuarios.
Para acceder a esta funcionalidad, puede volver a habilitar el IMDS después de la inicialización.

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

**Para desactivar el acceso a los metadatos de instancia durante la inicialización**
+ [Lance la instancia](ec2-launch-instance-wizard.md) en la consola de Amazon EC2 con la siguiente información especificada en **Advanced details** (Detalles avanzados):
  + Para **Metadatos accesibles**, elija **Disabled** (Deshabilitado).

Para obtener más información, consulte [Detalles avanzados](ec2-instance-launch-parameters.md#liw-advanced-details).

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

**Para desactivar el acceso a los metadatos de instancia durante la inicialización**  
Lance la instancia con `--metadata-options` establecido en `HttpEndpoint=disabled`.

```
aws ec2 run-instances \
    --image-id ami-0abcdef1234567890 \
    --instance-type c6i.large \
    ... 
    --metadata-options "HttpEndpoint=disabled"
```

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

**Para desactivar el acceso a los metadatos de instancia durante la inicialización**  
En el siguiente ejemplo del cmdlet [New-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html), se inicia una instancia con `MetadataOptions_HttpEndpoint` establecido en `disabled`.

```
New-EC2Instance `
    -ImageId ami-0abcdef1234567890 `
    -InstanceType c6i.large `
    -MetadataOptions_HttpEndpoint disabled
```

------
#### [ CloudFormation ]

Para especificar las opciones de metadatos de una instancia con CloudFormation, consulte la propiedad [AWS::EC2::LaunchTemplate MetadataOptions](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-metadataoptions.html) en la *Guía del usuario de CloudFormation*. 

------

## Permitir acceso a etiquetas en metadatos de instancia
<a name="configure-IMDS-new-instances-tags-in-instance-metadata"></a>

De forma predeterminada, no se puede acceder a las etiquetas de instancia en los metadatos de la instancia. Para cada instancia, debe permitir el acceso de manera explícita. Si se permite el acceso, las *claves* de etiquetas de la instancia deben cumplir con restricciones de caracteres específicas; de lo contrario, fallará el lanzamiento de la instancia. 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).