

# Configurar as opções de serviço de metadados de instância
<a name="configuring-instance-metadata-options"></a>

O serviço de metadados de instância (IMDS) é executado localmente em cada instância do EC2. As *opções de metadados de instância* se referem a um conjunto de configurações que controlam a acessibilidade e o comportamento do IMDS em uma instância do EC2.

É possível configurar as seguintes opções de metadados da instância em cada instância:

**Serviço de metadados de instância (IMDS)**: `enabled` \$1 `disabled`  
É possível habilitar ou desabilitar o IMDS em uma instância. Quando desabilitado, os metadados da instância não poderão ser acessados por você ou por nenhum outro código.  
O IMDS tem dois endpoints em uma instância: IPv4 (`169.254.169.254`) e IPv6 (`[fd00:ec2::254]`). Quando você habilita o IMDS, o endpoint IPv4 é habilitado automaticamente. Se quiser habilitar o endpoint IPv6, você precisará fazer isso explicitamente.

**Endpoint IPv6 do IMDS**: `enabled` \$1 `disabled`  
É possível habilitar explicitamente o endpoint IPv6 do IMDS em uma instância. Quando o endpoint IPv6 estiver habilitado, o endpoint IPv4 permanecerá habilitado. O endpoint IPv6 só é compatível com [instâncias baseadas em Nitro](instance-types.md#instance-hypervisor-type) em [sub-redes compatíveis com IPv6](https://docs.aws.amazon.com/vpc/latest/userguide/configure-subnets.html#subnet-ip-address-range) (pilha dupla ou IPv6 apenas).

**Versão de metadados**: `IMDSv1 or IMDSv2 (token optional)` \$1 `IMDSv2 only (token required)`  
Ao solicitar metadados de instância, as chamadas do IMDSv2 exigem um token. As chamadas do IMDSv1 não exigem um token. É possível configurar uma instância para permitir chamadas do IMDSv1 ou do IMDSv2 (quando um token for opcional) ou para permitir somente chamadas do IMDSv2 (quando um token for obrigatório).

**Limite de salto de resposta de metadados**: `1`–`64`  
O limite de saltos é o número de saltos de rede que a resposta PUT pode fazer. É possível definir o limite de saltos para um mínimo de `1` e um máximo de `64`. Em um ambiente de contêiner, um limite de salto igual a `1` pode gerar problemas. Para obter informações sobre como mitigar esses problemas, consulte as informações sobre ambientes de contêiner em [Considerações sobre o acesso aos metadados da instância](instancedata-data-retrieval.md#imds-considerations).

**Acesso a tags nos metadados da instância**: `enabled` \$1 `disabled`  
É possível habilitar ou desabilitar o acesso às tags de uma instância nos metadados de uma instância. Para obter mais informações, consulte [Visualizar tags para as instâncias do EC2 usando os metadados de instância](work-with-tags-in-IMDS.md).

Para ver a configuração atual de uma instância, consulte [Consultar as opções de metadados da instância para as instâncias existentes](instancedata-data-retrieval.md#query-IMDS-existing-instances).

## Onde configurar as opções de metadados da instância
<a name="where-to-configure-instance-metadata-options"></a>

É possível configurar as opções de metadados da instância em diferentes níveis, da seguinte forma:
+ **Conta**: você pode definir valores padrão para as opções de metadados da instância por conta para cada Região da AWS. Quando uma instância for executada, as opções de metadados da instância serão definidas automaticamente para os valores na conta. É possível alterar esses valores na execução. Os valores padrão por conta não afetam as instâncias existentes.
+ **AMI**: ao registrar ou modificar uma AMI, é possível definir o parâmetro `imds-support` como `v2.0`. Quando uma instância for executada com essa AMI, a versão dos metadados da instância será definida automaticamente como IMDSv2 e o limite de saltos será definido como 2.
+ **Instância**: você pode alterar todas as opções de metadados de uma instância na execução, substituindo as configurações padrão. Também é possível alterar as opções de metadados da instância após a execução em uma instância em execução ou parada. Observe que as alterações poderão sofrer restrições de uma política do IAM ou SCP.

Para obter mais informações, consulte [Configurar opções de metadados da instância para novas instâncias](configuring-IMDS-new-instances.md) e [Modificar as opções de metadados de instância para as instâncias existentes](configuring-IMDS-existing-instances.md).

## Ordem de precedência das opções de metadados da instância
<a name="instance-metadata-options-order-of-precedence"></a>

O valor de cada opção de metadados da instância é determinado na inicialização da instância, seguindo uma ordem hierárquica de precedência. A hierarquia, com a maior precedência no topo, é a seguinte:
+ **Precedência 1: configuração da instância na execução**: é possível especificar os valores no modelo de execução ou na configuração da instância. Todos os valores especificados aqui substituirão os valores especificados por conta ou na AMI.
+ **Precedência 2: configurações da conta**: se não houver um valor especificado na inicialização da instância, ele será determinado pelas configurações por conta (que são definidas para cada Região da AWS). As configurações por conta incluem um valor para cada opção de metadados ou não indicam nenhuma preferência.
+ **Precedência 3: configuração da AMI**: se não houver um valor especificado na execução da instância ou por conta, ele será determinado pela configuração da AMI. Isso se aplica somente a `HttpTokens` e `HttpPutResponseHopLimit`.

Cada opção de metadados é avaliada separadamente. É possível configurar a instância com uma combinação de configuração direta da instância, padrões por conta e a configuração da AMI.

A menos que as alterações sejam restringidas por uma política do IAM ou SCP, será possível alterar o valor de qualquer opção de metadados após a execução em uma instância em execução ou parada.

**nota**  
A configuração de imposição do IMDSv2 no nível da conta é avaliada depois que a ordem de precedência determina as configurações do IMDS da instância. Quando a imposição do IMDSv2 estiver habilitada, as instâncias habilitadas com o IMDSv1 falharão. Para ter mais informações sobre imposições, consulte [Aplique o IMDSv2 no nível da conta](configuring-IMDS-new-instances.md#enforce-imdsv2-at-the-account-level).

**Atenção**  
Se a imposição do IMDSv2 estiver habilitada e o `httpTokens` não tiver sido definido como `required` na configuração da instância na inicialização, nas configurações da conta ou na configuração da AMI, sua execução falhará.

**Exemplo 1: determinar os valores para opções de metadados**

Neste exemplo, uma instância do EC2 é iniciada em uma região na qual `HttpPutResponseHopLimit` está definido como `1` para a conta. A AMI especificada tem `ImdsSupport` definido como `v2.0`. Nenhuma opção de metadados é especificada diretamente na instância na execução. A instância é executada com as seguintes opções de metadados:

```
"MetadataOptions": {
    ...
    "HttpTokens": "required",
    "HttpPutResponseHopLimit": 1,
    ...
```

Esses valores foram determinados da seguinte manneira:
+ **Nenhuma opção de metadados especificada na execução:** durante a execução da instância, não se forneceu valores específicos para as opções de metadados nos parâmetros de execução da instância nem no modelo de execução.
+ **As configurações da conta têm a próxima precedência:** na ausência da definição de valores específicos na execução, as configurações por conta na região terão precedência. Isso significa que os valores padrão configurados por conta serão aplicados. Nesse caso, o `HttpPutResponseHopLimit` foi definido como `1`.
+ **As configurações da AMI têm a última precedência:** na ausência de um valor específico definido na inicialização ou no nível da conta para `HttpTokens` (a versão de metadados da instância), a configuração da AMI é aplicada. Nesse caso, a configuração da AMI `ImdsSupport: v2.0` determinou que `HttpTokens` estava definido como `required`. Observe que, embora a configuração da AMI `ImdsSupport: v2.0` tenha sido projetada para definir `HttpPutResponseHopLimit: 2`, ela foi substituída pela configuração no nível da conta `HttpPutResponseHopLimit: 1`, que tem maior precedência.

**Exemplo 2: determinar os valores para opções de metadados**

Neste exemplo, a instância do EC2 é executada com as mesmas configurações do Exemplo 1 anterior, mas com a configuração `HttpTokens` definida como `optional` diretamente na instância na execução. A instância é executada com as seguintes opções de metadados:

```
"MetadataOptions": {
    ...
    "HttpTokens": "optional",
    "HttpPutResponseHopLimit": 1,
    ...
```

O valor de `HttpPutResponseHopLimit` é determinado da mesma forma que no Exemplo 1. No entanto, o valor de `HttpTokens` é determinado da seguinte forma: as opções de metadados configuradas na instância na execução terão precedência. Embora a AMI tenha sido configurada com `ImdsSupport: v2.0` (em outras palavras, `HttpTokens` esteja definido como `required`), o valor especificado na instância na execução (`HttpTokens` definido como `optional`) teve precedência.

**Exemplo 3: determinar os valores para opções de metadados com o HttpTokensEnforced habilitado**

Neste exemplo, a conta na região têm `HttpTokens = required` e `HttpTokensEnforced = enabled`.

Considere as seguintes tentativas de inicialização das instâncias do EC2:
+ Tentativa de inicialização com `HttpTokens` definido como `optional`: a inicialização falha porque a imposição no nível da conta está habilitada (`HttpTokensEnforced = enabled`) e o parâmetro de inicialização tem precedência sobre o padrão da conta.
+ Tentativa de inicialização com `HttpTokens` definido como `required`: a inicialização é bem-sucedida porque está em conformidade com a imposição em nível de conta. 
+ Tentativa de inicialização sem valor de `HttpTokens` especificado: a inicialização é bem-sucedida porque o valor padrão é `required` baseado nas configurações da conta. 

### Definir a versão de metadados da instância
<a name="metadata-version-order-of-precedence"></a>

**Quando uma instância é iniciada, o valor da *versão de metadados* da instância é **IMDSv1 ou IMDSv2 (token opcional)** (`httpTokens=optional`) ou somente IMDSv2 (token obrigatório) (`httpTokens=required`)**.

Na execução da instância, é possível especificar manualmente o valor da versão de metadados ou usar o valor padrão. Se você especificar o valor manualmente, ele substituirá todos os padrões. Se você optar por não especificar o valor manualmente, ele será determinado por uma combinação de configurações padrão.

O fluxograma apresentado a seguir mostra como a versão dos metadados de uma instância na execução é determinada pelas configurações nos diferentes níveis da configuração e por onde a fiscalização é avaliada. A tabela a seguir fornece as configurações específicas em cada nível.

![\[Um fluxograma que mostra os pontos de avaliação da versão de metadados da instância e da aplicação do IMDSv2.\]](http://docs.aws.amazon.com/pt_br/AWSEC2/latest/UserGuide/images/imds-defaults-launch-flow.png)


A tabela mostra como a versão dos metadados de uma instância na execução (indicada pela **Configuração resultante da instância** na coluna 4) é determinada pelas configurações nos diferentes níveis de configuração. A ordem de precedência é da esquerda para a direita, com a primeira coluna tendo a maior precedência, da seguinte maneira:
+ Coluna 1: **Parâmetro de inicialização**: representa a configuração na instância que você especifica manualmente na execução.
+ Coluna 2: **Padrão por conta**: representa a configuração da conta.
+ Coluna 3: **Padrão da AMI**: representa a configuração na AMI.


| Parâmetro de execução | Padrão por conta | Padrão da AMI | Configuração resultante da instância | 
| --- | --- | --- | --- | 
| Somente V2 (requer token) | Sem preferência | Somente V2 | Somente V2 | 
| Somente V2 (requer token) | Somente V2 | Somente V2 | Somente V2 | 
| Somente V2 (requer token) | V1 ou V2 | Somente V2 | Somente V2 | 
| V1 ou V2 (token opcional) | Sem preferência | Somente V2 | V1 ou V2 | 
| V1 ou V2 (token opcional) | Somente V2 | Somente V2 | V1 ou V2 | 
| V1 ou V2 (token opcional) | V1 ou V2 | Somente V2 | V1 ou V2 | 
| Não definido | Sem preferência | Somente V2 | Somente V2 | 
| Não definido | Somente V2 | Somente V2 | Somente V2 | 
| Não definido | V1 ou V2 | Somente V2 | V1 ou V2 | 
| Somente V2 (requer token) | Sem preferência | nulo | Somente V2 | 
| Somente V2 (requer token) | Somente V2 | nulo | Somente V2 | 
| Somente V2 (requer token) | V1 ou V2 | nulo | Somente V2 | 
| V1 ou V2 (token opcional) | Sem preferência | nulo | V1 ou V2 | 
| V1 ou V2 (token opcional) | Somente V2 | nulo | V1 ou V2 | 
| V1 ou V2 (token opcional) | V1 ou V2 | nulo | V1 ou V2 | 
| Não definido | Sem preferência | nulo | V1 ou V2 | 
| Não definido | Somente V2 | nulo | Somente V2 | 
| Não definido | V1 ou V2 | nulo | V1 ou V2 | 

## Usar chaves de condição do IAM para restringir as opções de metadados da instância
<a name="iam-condition-keys-and-imds"></a>

É possível usar chaves de condição do IAM em uma política do IAM ou SCP da seguinte maneira:
+ Permitir que uma instância seja executada somente se ela estiver configurada para exigir o uso do IMDSv2
+ Restringir o número de saltos permitidos
+ Desativar o acesso aos metadados da instância

**Topics**
+ [Onde configurar as opções de metadados da instância](#where-to-configure-instance-metadata-options)
+ [Ordem de precedência das opções de metadados da instância](#instance-metadata-options-order-of-precedence)
+ [Usar chaves de condição do IAM para restringir as opções de metadados da instância](#iam-condition-keys-and-imds)
+ [Configurar opções de metadados da instância para novas instâncias](configuring-IMDS-new-instances.md)
+ [Modificar as opções de metadados de instância para as instâncias existentes](configuring-IMDS-existing-instances.md)

**nota**  
Proceda com cautela e conduza testes cuidadosos antes de fazer qualquer alteração. Anote o seguinte:  
Se você exigir o uso do IMDSv2, as aplicações ou agentes que usam o IMDSv1 para acesso aos metadados da instância falharão.
Se você desativar todo o acesso aos metadados da instância, as aplicações ou agentes que contam com o acesso aos metadados da instância para funcionarem falharão.
Para IMDSv2, use `/latest/api/token` ao recuperar o token.
(Somente para o Windows) Se a versão do PowerShell for uma versão anterior à 4.0, você deverá [atualizar para o Windows Management Framework 4.0](https://devblogs.microsoft.com/powershell/windows-management-framework-wmf-4-0-update-now-available-for-windows-server-2012-windows-server-2008-r2-sp1-and-windows-7-sp1/) para exigir o uso do IMDSv2.

# Configurar opções de metadados da instância para novas instâncias
<a name="configuring-IMDS-new-instances"></a>

É possível configurar as opções de metadados de instância a seguir em cada instância.

**Topics**
+ [Exigir o uso de IMDSv2](#configure-IMDS-new-instances)
+ [Habilitar os endpoints IPv4 e IPv6 do IMDS](#configure-IMDS-new-instances-ipv4-ipv6-endpoints)
+ [Desativar o acesso aos metadados da instância](#configure-IMDS-new-instances--turn-off-instance-metadata)
+ [Permitir acesso a tags em metadados de instância](#configure-IMDS-new-instances-tags-in-instance-metadata)

**nota**  
A configuração dessa opções é definida no nível da conta, diretamente na conta ou usando uma política declarativa. Elas devem ser configuradas em cada Região da AWS onde você quiser configurar as opções de metadados da instância. O uso de uma política declarativa permite que você aplique as configurações em várias regiões simultaneamente, bem como em várias contas simultaneamente. Quando uma política declarativa está em uso, você não pode modificar as configurações diretamente em uma conta. Este tópico descreve como ajustar as configurações diretamente em uma conta. Para obter informações sobre o uso de políticas declarativas, consulte [Políticas declarativas](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_declarative.html) no *Guia do usuário do AWS Organizations*.

## Exigir o uso de IMDSv2
<a name="configure-IMDS-new-instances"></a>

É possível utilizar um dos métodos a seguir para exigir o uso do IMDSv2 nas novas instâncias.

**Topics**
+ [Definir o IMDSv2 como o padrão para a conta](#set-imdsv2-account-defaults)
+ [Aplique o IMDSv2 no nível da conta](#enforce-imdsv2-at-the-account-level)
+ [Configurar a instância na inicialização](#configure-IMDS-new-instances-instance-settings)
+ [Configurar a AMI](#configure-IMDS-new-instances-ami-configuration)
+ [Usar uma política do IAM](#configure-IMDS-new-instances-iam-policy)

### Definir o IMDSv2 como o padrão para a conta
<a name="set-imdsv2-account-defaults"></a>

É possível definir a versão padrão do serviço de metadados de instância (IMDS) em nível de conta para cada Região da AWS. Isso significa que, quando uma *nova* instância é executada, a versão dos metadados da instância é definida automaticamente para padrão do nível de conta. No entanto, você pode substituir manualmente o valor na execução ou após a execução. Para obter mais informações sobre como as configurações em nível de conta e as substituições manuais afetam uma instância, consulte [Ordem de precedência das opções de metadados da instância](configuring-instance-metadata-options.md#instance-metadata-options-order-of-precedence).

**nota**  
Definir o padrão no nível de conta não redefine as instâncias *existentes*. Por exemplo, se você definir o padrão no nível de conta como IMDSv2, as instâncias existentes definidas como IMDSv1 não serão afetadas. Se desejar alterar o valor nas instâncias existentes, altere manualmente o valor nas próprias instâncias.

É possível definir o padrão da conta para a versão dos metadados de instância como IMDSv2 para que todas as *novas* instâncias na conta sejam iniciadas com o IMDSv2 obrigatório. Nesse caso, o IMDSv1 será desabilitado. Com esse padrão da conta, quando você executar uma instância, os valores padrão da instância serão os seguintes:
+ Console: a **Versão de metadados** estará definida como **Somente V2 (requer token)** e o **Limite de salto de resposta de metadados** como **2**.
+ AWS CLI: `HttpTokens` estará definido como `required` e `HttpPutResponseHopLimit` como `2`. 

**nota**  
Antes de definir a conta padrão para IMDSv2, certifique-se de que suas instâncias não dependam do IMDSv1. Para obter mais informações, consulte [Caminho recomendado para exigir IMDSv2](instance-metadata-transition-to-version-2.md#recommended-path-for-requiring-imdsv2).

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

**Para definir o IMDSv2 como padrão para a conta da região especificada**

1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Para alterar a Região da AWS, use o seletor de regiões no canto superior direito da página.

1. No painel de navegação, escolha **Painel**.

1. No cartão **Atributos da conta**, em **Configurações**, escolha **Proteção e segurança de dados**.

1. Ao lado de **Padrões do IMDS**, escolha **Gerenciar**.

1. Na página **Gerenciar padrões do IMDS**, faça o seguinte:

   1. Em **Serviço de metadados de instância**, escolha **Habilitado**.

   1. Em **Metadata version** (Versão de metadados), selecione **V2 only (token required)** (Apenas V2 [token obrigatório]).

   1. Em **Limite de salto de resposta de metadados**, especifique **2** se suas instâncias forem hospedar contêineres. Caso contrário, selecione **Sem preferência**. Quando nenhuma preferência é especificada, na inicialização, o valor padrão é **2** se a AMI tiver a configuração `ImdsSupport: v2.0`; caso contrário, o padrão é **1**.

   1. Selecione **Atualizar**.

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

**Para definir o IMDSv2 como padrão para a conta da região especificada**  
Use o comando [modify-instance-metadata-defaults](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-metadata-defaults.html) e especifique a região na qual deseja modificar as configurações do IMDS por conta. Inclua `--http-tokens` definido como `required` e `--http-put-response-hop-limit` como `2` se suas instâncias forem hospedar contêineres. Caso contrário, especifique `-1` para não indicar nenhuma preferência. Quando `-1` (nenhuma preferência) é especificada, na inicialização, o valor padrão é `2` se a AMI tiver a configuração `ImdsSupport: v2.0`; caso contrário, o padrão é `1`.

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

O seguinte é um exemplo de saída.

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

**Para visualizar as configurações padrão de conta para as opções de metadados de instância para a região especificada**  
Use o comando [get-instance-metadata-defaults](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-instance-metadata-defaults.html) e especifique a região.

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

O seguinte é um exemplo de saída.

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

O campo `ManagedBy` indica a entidade que definiu as configurações. Neste exemplo, `account` indica que as configurações foram definidas diretamente na conta. Um valor de `declarative-policy` significaria que as configurações foram definidas por uma política declarativa. Para obter mais informações, consulte [Políticas declarativas](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_declarative.html) no *Guia do Usuário do AWS Organizations*.

**Para definir o IMDSv2 como o padrão para a conta de todas as regiões**  
Use o comando [modify-instance-metadata-defaults](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-metadata-defaults.html) para modificar as configurações em nível de conta do IMDS para todas as regiões. Inclua `--http-tokens` definido como `required` e `--http-put-response-hop-limit` como `2` se suas instâncias forem hospedar contêineres. Caso contrário, especifique `-1` para não indicar nenhuma preferência. Quando `-1` (nenhuma preferência) é especificada, na inicialização, o valor padrão é `2` se a AMI tiver a configuração `ImdsSupport: v2.0`; caso contrário, o padrão é `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
```

O seguinte é um exemplo de saída.

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

**Para visualizar as configurações padrão de conta para as opções de metadados de instância para todas as regiões**  
Use o 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
```

O seguinte é um exemplo de saída.

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

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

**Para definir o IMDSv2 como padrão para a conta da região especificada**  
Use o cmdlet [Edit-EC2InstanceMetadataDefault](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceMetadataDefault.html) e especifique a região na qual deseja modificar as configurações de nível de conta do IMDS. Inclua `-HttpToken` definido como `required` e `-HttpPutResponseHopLimit` como `2` se suas instâncias forem hospedar contêineres. Caso contrário, especifique `-1` para não indicar nenhuma preferência. Quando `-1` (nenhuma preferência) é especificada, na inicialização, o valor padrão é `2` se a AMI tiver a configuração `ImdsSupport: v2.0`; caso contrário, o padrão é `1`.

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

O seguinte é um exemplo de saída.

```
True
```

**Para visualizar as configurações padrão de conta para as opções de metadados de instância para a região especificada**  
Use o cmdlet [Get-EC2InstanceMetadataDefault](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceMetadataDefault.html) e especifique a região.

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

O seguinte é um exemplo de saída.

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

**Para definir o IMDSv2 como o padrão para a conta de todas as regiões**  
Use o cmdlet [Edit-EC2InstanceMetadataDefault](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceMetadataDefault.html) para modificar as configurações em nível de conta do IMDS para todas as regiões. Inclua `-HttpToken` definido como `required` e `-HttpPutResponseHopLimit` como `2` se suas instâncias forem hospedar contêineres. Caso contrário, especifique `-1` para não indicar nenhuma preferência. Quando `-1` (nenhuma preferência) é especificada, na inicialização, o valor padrão é `2` se a AMI tiver a configuração `ImdsSupport: v2.0`; caso contrário, o padrão é `1`.

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

Saída esperada

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

**Para visualizar as configurações padrão de conta para as opções de metadados de instância para todas as regiões**  
Use o 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
```

Exemplo de saída

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

------

### Aplique o IMDSv2 no nível da conta
<a name="enforce-imdsv2-at-the-account-level"></a>

Você pode impor o uso do IMDSv2 por conta para cada Região da AWS. Quando impostas, as instâncias só podem ser iniciadas se estiverem configuradas para exigir o IMDSv2. Essa imposição se aplica independentemente de como a instância ou a AMI estejam configuradas.

**nota**  
Antes de ativar a aplicação do IMDSv2 no nível da conta, certifique-se de que suas aplicações e AMIs sejam compatíveis com o IMDSv2. Para obter mais informações, consulte [Caminho recomendado para exigir IMDSv2](instance-metadata-transition-to-version-2.md#recommended-path-for-requiring-imdsv2). Se a imposição do IMDSv2 estiver habilitada e o `httpTokens` não tiver sido definido para `required` na configuração da instância na inicialização, nas configurações da conta ou na configuração da AMI, sua execução falhará. Para obter informações sobre a solução de problemas, consulte [Falha na inicialização de uma instância habilitada para IMDSv1](troubleshooting-launch.md#launching-an-imdsv1-enabled-instance-fails).

**nota**  
Essa configuração não altera a versão do IMDS das instâncias existentes, mas bloqueia a ativação do IMDSv1 em instâncias existentes que atualmente têm o IMDSv1 desabilitado.

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

**Para impor o IMDSv2 para a conta na região especificada**

1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Para alterar a Região da AWS, use o seletor de regiões no canto superior direito da página.

1. No painel de navegação, escolha **Painel**.

1. No cartão **Atributos da conta**, em **Configurações**, escolha **Proteção e segurança de dados**.

1. Ao lado de **Padrões do IMDS**, escolha **Gerenciar**.

1. Na página **Gerenciar padrões do IMDS**, faça o seguinte:

   1. Em **Metadata version** (Versão de metadados), selecione **V2 only (token required)** (Apenas V2 [token obrigatório]).

   1. Para **Impor IMDSv2**, escolha **Habilitado**.

   1. Selecione **Atualizar**.

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

**Para impor o IMDSv2 para a conta na região especificada**  
 Use o comando [modify-instance-metadata-defaults](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-metadata-defaults.html) e especifique a região na qual deseja impor o IMDSv2. 

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

O seguinte é um exemplo de saída.

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

**Para visualizar a configuração de imposição do IMDSv2 para a conta em uma região específica**  
Use o comando [get-instance-metadata-defaults](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-instance-metadata-defaults.html) e especifique a região.

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

O seguinte é um exemplo de saída.

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

O campo `ManagedBy` indica a entidade que definiu as configurações. Neste exemplo, `account` indica que as configurações foram definidas diretamente na conta. Um valor de `declarative-policy` significaria que as configurações foram definidas por uma política declarativa. Para obter mais informações, consulte [Políticas declarativas](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_declarative.html) no *Guia do Usuário do AWS Organizations*.

**Para impor o IMDSv2 para a conta de todas as regiões**  
Use o comando [modify-instance-metadata-defaults](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-metadata-defaults.html) para impor o IMDSv2 em todas as regiões.

```
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
```

O seguinte é um exemplo de saída.

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

**Para visualizar a configuração de imposição do IMDSv2 para a conta em todas as regiões**  
Use o 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
```

O seguinte é um exemplo de saída.

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

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

**Para impor o IMDSv2 para a conta na região especificada**  
Use o cmdlet [Edit-EC2InstanceMetadataDefault](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceMetadataDefault.html) e especifique a região na qual deseja impor o IMDSv2. 

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

O seguinte é um exemplo de saída.

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

**Para visualizar a configuração de imposição do IMDSv2 para a conta em uma região específica**  
Use o comando Get-EC2InstanceMetadataDefault e especifique a região.

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

O seguinte é um exemplo de saída.

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

O campo `ManagedBy` indica a entidade que definiu as configurações. Neste exemplo, `account` indica que as configurações foram definidas diretamente na conta. Um valor de `declarative-policy` significaria que as configurações foram definidas por uma política declarativa. Para obter mais informações, consulte [Políticas declarativas](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_declarative.html) no *Guia do Usuário do AWS Organizations*.

**Para impor o IMDSv2 para a conta de todas as regiões**  
Use o comando [modify-instance-metadata-defaults](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-metadata-defaults.html) para impor o IMDSv2 em todas as regiões.

```
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
```

O seguinte é um exemplo de saída.

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

**Para definir o IMDSv2 como o padrão para a conta de todas as regiões**  
Use o cmdlet [Edit-EC2InstanceMetadataDefault](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceMetadataDefault.html) para modificar as configurações em nível de conta do IMDS para todas as regiões. Inclua `-HttpToken` definido como `required` e `-HttpPutResponseHopLimit` como `2` se suas instâncias forem hospedar contêineres. Caso contrário, especifique `-1` para não indicar nenhuma preferência. Quando `-1` (nenhuma preferência) é especificada, na inicialização, o valor padrão é `2` se a AMI tiver a configuração `ImdsSupport: v2.0`; caso contrário, o padrão é `1`.

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

Saída esperada

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

**Para visualizar as configurações padrão de conta para as opções de metadados de instância para todas as regiões**  
Use o 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
```

Exemplo de saída

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

------

### Configurar a instância na inicialização
<a name="configure-IMDS-new-instances-instance-settings"></a>

Quando você [inicia uma instância](ec2-launch-instance-wizard.md), pode configurá-la para exigir o uso do IMDSv2, configurando os seguintes campos:
+ Console do Amazon EC2: defina **Metadata version** (Versão de metadados) como **V2 only (token required)** (Apenas V2 [token obrigatório]).
+ AWS CLI: defina `HttpTokens` como `required`.

Quando você especificar que o IMDSv2 é obrigatório, também deverá habilitar o endpoint do Serviço de metadados da instância (IMDS) definindo **Metadados acessíveis** como **Habilitado** (console) ou `HttpEndpoint` como `enabled` (AWS CLI).

Em um ambiente de contêiner, quando o IMDSv2 for necessário, recomendamos definir o limite de saltos como `2`. Para obter mais informações, consulte [Considerações sobre o acesso aos metadados da instância](instancedata-data-retrieval.md#imds-considerations).

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

**Como exigir o uso do IMDSv2 em uma nova instância**
+ Ao executar uma nova instância no console do Amazon EC2, expanda **Advanced details** (Detalhes avançados) e faça o seguinte:
  + Para **Metadata acessible** (Metadados acessíveis), escolha **Enabled** (Habilitado).
  + Em **Metadata version** (Versão de metadados), selecione **V2 only (token required)** (Apenas V2 [token obrigatório]).
  + (Ambiente de contêiner) Em **Limite de salto de resposta dos metadados**, escolha **2**.

  Para obter mais informações, consulte [Detalhes avançados](ec2-instance-launch-parameters.md#liw-advanced-details).

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

**Como exigir o uso do IMDSv2 em uma nova instância**  
O exemplo de [run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) a seguir executa uma instância `c6i.large` com `--metadata-options` definido como `HttpTokens=required`. Quando você especifica um valor para `HttpTokens`, você também deve definir `HttpEndpoint` como `enabled`. Como o cabeçalho de token seguro é definido como `required` para solicitações de recuperação de metadados, é necessário que a instância use o IMDSv2 ao solicitar metadados da instância.

Em um ambiente de contêiner, quando o IMDSv2 for necessário, recomendamos definir o limite de saltos como `2` com `HttpPutResponseHopLimit=2`.

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

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

**Como exigir o uso do IMDSv2 em uma nova instância**  
O exemplo de cmdlet [New-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html) a seguir inicia uma instância `c6i.large` com `MetadataOptions_HttpEndpoint` definido como `enabled` e o parâmetro `MetadataOptions_HttpTokens` como `required`. Quando você especifica um valor para `HttpTokens`, você também deve definir `HttpEndpoint` como `enabled`. Como o cabeçalho de token seguro é definido como `required` para solicitações de recuperação de metadados, é necessário que a instância use o IMDSv2 ao solicitar metadados da instância.

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

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

Para especificar as opções de metadados de uma instância usando CloudFormation, consulte a propriedade [AWS::EC2::LaunchTemplate MetadataOptions](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-metadataoptions.html) no *Guia do usuário do AWS CloudFormation*.

------

### Configurar a AMI
<a name="configure-IMDS-new-instances-ami-configuration"></a>

Ao registrar uma nova AMI ou modificar uma AMI existente, é possível definir o parâmetro `imds-support` como `v2.0`. As instâncias iniciadas a partir dessa AMI terão **Metadata version** (Versão de metadados) definido como **V2 only (token required)** (Apenas V2 [token obrigatório]) (console) ou `HttpTokens` definido como `required` (AWS CLI). Com essas configurações, a instância exige que o IMDSv2 seja usado ao solicitar metadados da instância.

Observe que quando você configura `imds-support` como `v2.0`, as instâncias iniciadas a partir dessa AMI também têm **Metadata response hop limit** (Limite de saltos na resposta de metadados) (console) ou `http-put-response-hop-limit` (AWS CLI) definido como **2**.

**Importante**  
Não use esse parâmetro, a menos que seu software AMI ofereça suporte ao IMDSv2. Após definir o valor como `v2.0`, você não poderá desfazer essa ação. A única maneira de “redefinir” sua AMI é criando uma nova AMI a partir do snapshot subjacente.

**Para configurar uma nova AMI para o IMDSv2**  
Use um dos métodos a seguir para configurar uma nova AMI para o IMDSv2.

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

O exemplo de [register-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html) a seguir registra uma AMI usando o snapshot especificado de um volume raiz do EBS como `/dev/xvda` de dispositivo. Especifique `v2.0` para o parâmetro `imds-support`, de forma que instâncias iniciadas a partir dessa AMI exijam que o IMDSv2 seja usado ao solicitar metadados da instância.

```
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 ]

O exemplo de cmdlet [Register-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2Image.html) a seguir registra uma AMI usando o snapshot especificado de um volume raiz do EBS como dispositivo `/dev/xvda`. Especifique `v2.0` para o parâmetro `ImdsSupport`, de forma que instâncias iniciadas a partir dessa AMI exijam que o IMDSv2 seja usado ao solicitar metadados da instância.

```
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 uma AMI existente para o IMDSv2**  
Use um dos métodos a seguir para configurar uma AMI para IMDSv2 existente.

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

O exemplo de [modify-image-attribute](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-image-attribute.html) a seguir modifica uma AMI existente para IMDSv2 somente. Especifique `v2.0` para o parâmetro `imds-support`, de forma que instâncias iniciadas a partir dessa AMI exijam que o IMDSv2 seja usado ao solicitar metadados da instância.

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

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

O exemplo de cmdlet [Edit-EC2ImageAttribute](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2ImageAttribute.html) a seguir só modifica uma AMI existente para IMDSv2. Especifique `v2.0` para o parâmetro `imds-support`, de forma que instâncias iniciadas a partir dessa AMI exijam que o IMDSv2 seja usado ao solicitar metadados da instância.

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

------

### Usar uma política do IAM
<a name="configure-IMDS-new-instances-iam-policy"></a>

Você pode criar uma política do IAM que faça o seguinte:
+ Impeça que os usuários iniciem novas instâncias, a menos que exijam o IMDSv2 na nova instância.
+ Impeça que os usuários chamem a API ModifyInstanceMetadataOptions para alterar as opções de metadados de uma instância em execução. Restrinja o acesso à propriedade ModifyInstanceMetadataOptions httpTokens para evitar atualizações não intencionais das instâncias em execução.
+ Impeça que os usuários chamem a API ModifyInstanceMetadataDefaults para alterar as configurações padrão da conta de httpTokens e httpTokensEnforced. Restringir o acesso a essas duas propriedades garantirá que somente perfis autorizados possam modificar os padrões da conta.

**Para impor o uso do IMDSv2 em todas as novas instâncias usando uma política do IAM**  
Para garantir que os usuários possam executar apenas instâncias que requeiram o uso do IMDSv2 ao solicitar metadados da instância, faça o seguinte:
+ Restrinja o acesso à API `ModifyInstanceMetadataOptions` e `ModifyInstanceMetadataDefaults` e mais especificamente às propriedades `httpTokens` e `httpTokensEnforced`.
+ Em seguida, defina o padrão da conta como `httpTokens = required` e `httpTokensEnforced = enabled`.

  Para ver um exemplo de política do IAM, consulte [Trabalhar com metadados de instância](ExamplePolicies_EC2.md#iam-example-instance-metadata).

## Habilitar os endpoints IPv4 e IPv6 do IMDS
<a name="configure-IMDS-new-instances-ipv4-ipv6-endpoints"></a>

O IMDS tem dois endpoints em uma instância: IPv4 (`169.254.169.254`) e IPv6 (`[fd00:ec2::254]`). Quando você habilita o IMDS, o endpoint IPv4 é habilitado automaticamente. O endpoint IPv6 permanece desabilitado mesmo que você inicie uma instância em uma sub-rede IPv6 apenas. Para habilitar o endpoint IPv6, você precisa fazer isso explicitamente. Quando você habilita o endpoint IPv6, o endpoint IPv4 permanece habilitado.

É possível habilitar o endpoint iPv6 ao iniciar a instância ou posteriormente.

**Requisitos para habilitação do endpoint iPv6**
+ O tipo de instância selecionado é uma [instância baseada em Nitro](instance-types.md#instance-hypervisor-type).
+ A sub-rede selecionada é compatível com IPv6, no qual a sub-rede é de [pilha dupla ou IPv6 apenas](https://docs.aws.amazon.com/vpc/latest/userguide/configure-subnets.html#subnet-ip-address-range).

Use um dos métodos a seguir para iniciar uma instância com o endpoint IPv6 do IMDS habilitado.

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

**Para habilitar o endpoint IPv6 do IMDS na inicialização de instância**
+ [Inicie a instância](ec2-launch-instance-wizard.md) no console do Amazon EC2 com o valor a seguir especificado em **Advanced details** (Detalhes avançados):
  + Para o **endpoint IPv6 de metadados**, escolha **Habilitado**.

Para obter mais informações, consulte [Detalhes avançados](ec2-instance-launch-parameters.md#liw-advanced-details).

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

**Para habilitar o endpoint IPv6 do IMDS na inicialização de instância**  
O exemplo de [run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) a seguir inicia uma instância `c6i.large` com o endpoint IPv6 habilitado para o IMDS. Para habilitar o endpoint IPv6, no parâmetro `--metadata-options`, especifique `HttpProtocolIpv6=enabled`. Quando você especifica um valor para `HttpProtocolIpv6`, você também deve definir `HttpEndpoint` como `enabled`.

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

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

**Para habilitar o endpoint IPv6 do IMDS na inicialização de instância**  
O exemplo de cmdlet [New-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html) a seguir inicia uma instância `c6i.large` com o endpoint IPv6 habilitado para IMDS. Para habilitar o endpoint IPv6, especifique `MetadataOptions_HttpProtocolIpv6` como `enabled`. Quando você especifica um valor para `MetadataOptions_HttpProtocolIpv6`, você também deve definir `MetadataOptions_HttpEndpoint` como `enabled`.

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

------

## Desativar o acesso aos metadados da instância
<a name="configure-IMDS-new-instances--turn-off-instance-metadata"></a>

É possível desativar o acesso aos metadados da instância desativando o IMDS ao executar uma instância. É possível ativar o acesso mais tarde reativando o IMDS. Para obter mais informações, consulte [Ativar o acesso aos metadados da instância](configuring-IMDS-existing-instances.md#enable-instance-metadata-on-existing-instances).

**Importante**  
É possível desativar o IMDS na execução ou após a execução. Se você desativar o IMDS *na execução*, os seguintes problemas poderão ocorrer:  
Talvez você não tenha acesso SSH à sua instância. A `public-keys/0/openssh-key`, que é a chave SSH pública da sua instância, não estará acessível porque a chave normalmente é fornecida e acessada nos metadados da instância do EC2.
Os dados do usuário do EC2 não estarão disponíveis e não serão executados no início da instância. Os dados do usuário do EC2 são hospedados no IMDS. Caso desative o IMDS, você desativará efetivamente o acesso aos dados do usuário.
Para acessar essa funcionalidade, você pode reativar o IMDS após a execução.

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

**Desativar o acesso aos metadados da instância na execução**
+ [Inicie a instância](ec2-launch-instance-wizard.md) no console do Amazon EC2 com o valor a seguir especificado em **Advanced details** (Detalhes avançados):
  + Para **Metadata acessible** (Metadados acessíveis), escolha **Disabled** (Desabilitado).

Para obter mais informações, consulte [Detalhes avançados](ec2-instance-launch-parameters.md#liw-advanced-details).

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

**Desativar o acesso aos metadados da instância na execução**  
Inicie a instância com `--metadata-options` definido como `HttpEndpoint=disabled`.

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

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

**Desativar o acesso aos metadados da instância na execução**  
O exemplo de cmdlet [New-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html) a seguir inicia uma instância `MetadataOptions_HttpEndpoint` definida como `disabled`.

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

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

Para especificar as opções de metadados de uma instância usando CloudFormation, consulte a propriedade [AWS::EC2::LaunchTemplate MetadataOptions](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-metadataoptions.html) no *Guia do usuário do CloudFormation*. 

------

## Permitir acesso a tags em metadados de instância
<a name="configure-IMDS-new-instances-tags-in-instance-metadata"></a>

Por padrão, as tags de instância não podem ser acessadas nos metadados da instância. Para cada instância, permita o acesso explicitamente. Se o acesso for permitido, as *chaves* de tag da instância devem estar em conformidade com restrições de caracteres específicas, caso contrário, a execução da instância falhará. Para obter mais informações, consulte [Habilitar o acesso a tags em metadados da instância](work-with-tags-in-IMDS.md#allow-access-to-tags-in-IMDS).

# Modificar as opções de metadados de instância para as instâncias existentes
<a name="configuring-IMDS-existing-instances"></a>

É possível modificar as opções de metadados da instância para instâncias existentes.

Também é possível criar uma política do IAM que impeça que os usuários modifiquem as opções de metadados em instâncias existentes. Para controlar quais usuários podem modificar as opções de metadados em uma instância, especifique uma política que impeça que todos os usuários que não tenham um perfil especificado usem a API [ModifyInstanceMetadataOptions](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyInstanceMetadataOptions.html). Para ver um exemplo de política do IAM, consulte [Trabalhar com metadados de instância](ExamplePolicies_EC2.md#iam-example-instance-metadata).

**nota**  
Se uma política declarativa foi usada para configurar as opções de metadados da instância, você não poderá modificá-las diretamente na conta. Para obter mais informações, consulte [Políticas declarativas](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_declarative.html) no *Guia do usuário do AWS Organizations*.

## Exigir o uso de IMDSv2
<a name="modify-require-IMDSv2"></a>

Use um dos seguintes métodos para modificar as opções de metadados da instância para exigir que o IMDSv2 seja usado ao solicitar metadados da instância. Quando o IMDSv2 for necessário, o IMDSv1 não poderá ser usado.

**nota**  
Antes de exigir que o IMDSv2 seja usado, certifique-se de que a instância não esteja fazendo chamadas do IMDSv1. A métrica `MetadataNoToken` do CloudWatch rastreia as chamadas do IMDSv1. Quando `MetadataNoToken` registra zero uso do IMDSv1 para uma instância, a instância está pronta para exigir o IMDSv2.

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

**Para exigir o uso do IMDSv2 em uma instância existente**

1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. No painel de navegação, escolha **Instances (Instâncias)**.

1. Selecione sua instância.

1. Escolha **Ações**, **Configurações da instância** e **Modificar opções de metadados da instância**.

1. Na caixa de diálogo **Modificar opções de metadados da instância**, faça o seguinte:

   1. Em **Serviço de metadados de instância**, selecione **Habilitar**.

   1. Em **IMDSv2**, escolha **Obrigatório**.

   1. Escolha **Salvar**.

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

**Para exigir o uso do IMDSv2 em uma instância existente**  
Use o comando [modify-instance-metadata-options](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-metadata-options.html) da CLI e defina o parâmetro `http-tokens` como `required`. Quando você especifica um valor para `http-tokens`, você também deve definir `http-endpoint` como `enabled`.

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

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

**Para exigir o uso do IMDSv2 em uma instância existente**  
Use o cmdlet [Edit-EC2InstanceMetadataOption](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceMetadataOption.html) e defina o parâmetro `HttpTokens` como `required`. Quando você especifica um valor para `HttpTokens`, você também deve definir `HttpEndpoint` como `enabled`.

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

------

## Restaurar o uso do IMDSv1
<a name="modify-restore-IMDSv1"></a>

Quando o IMDSv2 é necessário em uma instância, o uso de uma solicitação do IMDSv1 falhará. Quando o IMDSv2 for opcional, tanto o IMDSv2 quanto o IMDSv1 funcionarão. Portanto, para restaurar o IMDSv1, defina o IMDSv2 opcional (`httpTokens = optional`) usando um dos métodos a seguir.

A propriedade `httpTokensEnforced` do IMDS também impede tentativas de habilitar o IMDSv1 em uma instância existente. Quando habilitada para uma conta em uma região, uma tentativa de definir `httpTokens` como `optional` resultará em uma exceção `UnsupportedOperation`. Para obter mais informações, consulte [Solução de problemas](#troubleshoot-modifying-an-imdsv1-enabled-instance-fails).

**Importante**  
Se as execuções de sua instância falharem devido à imposição do IMDSv2, você tem duas opções para permitir que as execuções sejam bem-sucedidas:  
**Inicie instâncias somente como IMDSv2**: se o software executado nas instâncias usar somente o IMDSv2 (sem depender do IMDSv1), você poderá iniciar as instâncias somente como IMDSv2. Para fazer isso, configure o IMDSv2 apenas quando definido como `httpTokens = required` nos parâmetros de inicialização ou nos metadados padrão da conta na região. 
**Desabilitar a imposição**: se seu software ainda depender do IMDSv1, defina `httpTokensEnforced` como `disabled` para a conta na região. Para obter mais informações, consulte [Aplique o IMDSv2 no nível da conta](configuring-IMDS-new-instances.md#enforce-imdsv2-at-the-account-level).

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

**Para restaurar o uso do IMDSv1 em uma instância**

1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. No painel de navegação, escolha **Instances (Instâncias)**.

1. Selecione sua instância.

1. Escolha **Ações**, **Configurações da instância** e **Modificar opções de metadados da instância**.

1. Na caixa de diálogo **Modificar opções de metadados da instância**, faça o seguinte:

   1. Em **Serviço de metadados de instância**, certifique-se de que a opção **Habilitar** esteja selecionada.

   1. Em **IMDSv2**, escolha **Opcional**.

   1. Escolha **Salvar**.

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

**Para restaurar o uso do IMDSv1 em uma instância**  
É possível usar o comando da CLI [modify-instance-metadata-options](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-metadata-options.html) com `http-tokens` definido como `optional` para restaurar o uso de IMDSv1 ao solicitar metadados de instância.

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

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

**Para restaurar o uso do IMDSv1 em uma instância**  
É possível usar o cmdlet [Edit-EC2InstanceMetadataOption](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceMetadataOption.html) com o `HttpTokens` configurado como `optional` para restaurar o uso do IMDSv1 ao solicitar metadados da instância.

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

------

## Alterar o limite de salto de resposta PUT
<a name="modify-PUT-response-hop-limit"></a>

Para instâncias existentes, é possível alterar as configurações do limite de saltos de resposta de `PUT`.

Atualmente, somente os SDKs AWS CLI e AWS oferecem suporte à alteração do limite de salto de resposta PUT.

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

**Como alterar o limite de salto de resposta PUT**  
Use o comando [modify-instance-metadata-options](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-metadata-options.html) da CLI e defina o parâmetro `http-put-response-hop-limit` como o número de saltos necessário. No exemplo a seguir, o limite de saltos está definido como `3`. Observe que ao especificar um valor para `http-put-response-hop-limit`, também é necessário definir `http-endpoint` como `enabled`.

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

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

**Como alterar o limite de salto de resposta PUT**  
Use o cmdlet [Edit-EC2InstanceMetadataOption](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceMetadataOption.html) e defina o parâmetro `HttpPutResponseHopLimit`para o número necessário de saltos. No exemplo a seguir, o limite de saltos está definido como `3`. Observe que ao especificar um valor para `HttpPutResponseHopLimit`, também é necessário definir `HttpEndpoint` como `enabled`.

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

------

## Habilitar os endpoints IPv4 e IPv6 do IMDS
<a name="enable-ipv6-endpoint-for-existing-instances"></a>

O IMDS tem dois endpoints em uma instância: IPv4 (`169.254.169.254`) e IPv6 (`[fd00:ec2::254]`). Quando você habilita o IMDS, o endpoint IPv4 é habilitado automaticamente. O endpoint IPv6 permanece desabilitado mesmo que você inicie uma instância em uma sub-rede IPv6 apenas. Para habilitar o endpoint IPv6, você precisa fazer isso explicitamente. Quando você habilita o endpoint IPv6, o endpoint IPv4 permanece habilitado.

É possível habilitar o endpoint iPv6 ao iniciar a instância ou posteriormente.

**Requisitos para habilitação do endpoint iPv6**
+ O tipo de instância selecionado é uma [instância baseada em Nitro](instance-types.md#instance-hypervisor-type).
+ A sub-rede selecionada é compatível com IPv6, no qual a sub-rede é de [pilha dupla ou IPv6 apenas](https://docs.aws.amazon.com/vpc/latest/userguide/configure-subnets.html#subnet-ip-address-range).

Atualmente, apenas a AWS CLI e os SDKs da AWS são compatíveis com a habilitação do endpoint IPv6 do IMDS após a inicialização da instância.

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

**Para habilitar o endpoint de IPv6 do IMDS para a instância**  
Use o comando [modify-instance-metadata-options](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-metadata-options.html) da CLI e defina o parâmetro `http-protocol-ipv6` como `enabled`. Observe que ao especificar um valor para `http-protocol-ipv6`, também é necessário definir `http-endpoint` como `enabled`.

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

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

**Para habilitar o endpoint de IPv6 do IMDS para a instância**  
Use o cmdlet [Edit-EC2InstanceMetadataOption](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceMetadataOption.html) e defina o parâmetro `HttpProtocolIpv6` como `enabled`. Observe que ao especificar um valor para `HttpProtocolIpv6`, também é necessário definir `HttpEndpoint` como `enabled`.

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

------

## Ativar o acesso aos metadados da instância
<a name="enable-instance-metadata-on-existing-instances"></a>

É possível ativar o acesso aos metadados da instância habilitando o endpoint de HTTP do IMDS na sua instância, independentemente da versão do IMDS que esteja sendo usada. É possível reverter essa alteração a qualquer momento desabilitando o endpoint de HTTP.

Use um dos métodos a seguir para ativar o acesso aos metadados da instância em uma instância.

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

**Para ativar o acesso aos metadados da instância**

1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. No painel de navegação, escolha **Instances (Instâncias)**.

1. Selecione sua instância.

1. Escolha **Ações**, **Configurações da instância** e **Modificar opções de metadados da instância**.

1. Na caixa de diálogo **Modificar opções de metadados da instância**, faça o seguinte:

   1. Em **Serviço de metadados de instância**, selecione **Habilitar**.

   1. Escolha **Salvar**.

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

**Para ativar o acesso aos metadados da instância**  
Use o comando [modify-instance-metadata-options](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-metadata-options.html) da CLI e defina o parâmetro `http-endpoint` como `enabled`.

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

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

**Para ativar o acesso aos metadados da instância**  
Use o cmdlet [Edit-EC2InstanceMetadataOption](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceMetadataOption.html) e defina o parâmetro `HttpEndpoint` como `enabled`.

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

------

## Desativar o acesso aos metadados da instância
<a name="disable-instance-metadata-on-existing-instances"></a>

É possível desativar o acesso aos metadados da instância desabilitando o endpoint de HTTP do IMDS na sua instância, independentemente da versão do IMDS que esteja sendo usada. É possível reverte essa alteração a qualquer momento habilitando o HTTP endpoint.

Use um dos métodos a seguir para desativar o acesso aos metadados da instância em uma instância.

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

**Como desabilitar o acesso aos metadados da instância**

1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. No painel de navegação, escolha **Instances (Instâncias)**.

1. Selecione sua instância.

1. Escolha **Ações**, **Configurações da instância** e **Modificar opções de metadados da instância**.

1. Na caixa de diálogo **Modificar opções de metadados da instância**, faça o seguinte:

   1. Em **Serviço de metadados de instância**, desmarque **Habilitar**.

   1. Escolha **Salvar**.

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

**Como desabilitar o acesso aos metadados da instância**  
Use o comando [modify-instance-metadata-options](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-metadata-options.html) da CLI e defina o parâmetro `http-endpoint` como `disabled`.

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

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

**Como desabilitar o acesso aos metadados da instância**  
Use o cmdlet [Edit-EC2InstanceMetadataOption](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceMetadataOption.html) e defina o parâmetro `HttpEndpoint` como `disabled`.

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

------

## Permitir acesso a tags em metadados de instância
<a name="modify-access-to-tags-in-instance-metadata-on-existing-instances"></a>

É possível permitir o acesso a tags em metadados de instância em uma instância em execução ou parada. Para cada instância, permita o acesso explicitamente. Se o acesso for permitido, as *chaves* de tag da instância devem estar em conformidade com restrições de caracteres específicas, caso contrário, você receberá um erro. Para obter mais informações, consulte [Habilitar o acesso a tags em metadados da instância](work-with-tags-in-IMDS.md#allow-access-to-tags-in-IMDS).

## Solução de problemas
<a name="troubleshoot-modifying-an-imdsv1-enabled-instance-fails"></a>

### Falha na modificação de uma instância habilitada para IMDSv1
<a name="modifying-an-imdsv1-enabled-instance-fails"></a>

#### Descrição
<a name="modifying-an-imdsv1-enabled-instance-fails-description"></a>

Você recebeu a seguinte mensagem de erro:

`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>

Esse erro é gerado quando você tenta modificar uma instância existente para habilitar o IMDSv1 (`httpTokens = optional`) em uma conta onde as configurações da conta do EC2 ou uma política declarativa da organização da AWS impõem o uso de IMDSv2 (`httpTokensEnforced = enabled`). 

#### Solução
<a name="modifying-an-imdsv1-enabled-instance-fails-solution"></a>

Se você precisar do suporte do IMDSv1 em instâncias existentes, precisará desabilitar a aplicação do IMDSv2 para a conta na região. Para desabilitar a aplicação do IMDSv2, defina `HttpTokensEnforced` como `disabled`. Para obter mais informações, consulte [ModifyInstanceMetadataDefaults](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyInstanceMetadataDefaults.html) na Referência a APIs do Amazon EC2. Se você preferir definir essa configuração usando o console, consulte [Aplique o IMDSv2 no nível da conta](configuring-IMDS-new-instances.md#enforce-imdsv2-at-the-account-level).

Recomendamos usar somente o IMDSv2 (`httpTokens=required`). Para obter mais informações, consulte [Transição para usar o Serviço de metadados da instância versão 2](instance-metadata-transition-to-version-2.md).

 