

# 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).

 