Trabalhar com dados do usuário da instância - Amazon Elastic Compute Cloud

Trabalhar com dados do usuário da instância

Você pode usar os dados do usuário da instância para personalizar as instâncias. Quando você inicia uma instância, pode armazenar parâmetros ou scripts como dados do usuário. Todos os scripts nos dados do usuário são executados ao iniciar a instância. Você pode visualizar os dados do usuário como um atributo da instância. Você também pode visualizar os dados do usuário da instância por meio do serviço de metadados de instância (IMDS).

Considerações
  • Os dados do usuário são tratados como dados opacos: o que você fornece é o que receberá de volta. Cabe à instância interpretá-los.

  • Os dados do usuário devem ser codificados por base64. O console do Amazon EC2 pode executar a codificação base64 para você ou aceitar a entrada codificada por base64.

  • Os dados do usuário são limitados a 16 KB, na forma bruta, antes de serem codificados em base64. O tamanho de uma string de comprimento n depois que a codificação em base64 for ceil (n/3)*4.

  • Os dados do usuário devem ser decodificados em base64 quando você os recupera. Se você recuperar os dados usando o console ou os metadados da instância, eles serão decodificados automaticamente para você.

  • Se você interromper uma instância, modificar os dados do usuário e iniciar a instância, os dados do usuário atualizados não serão executados automaticamente quando você iniciar a instância. Com as instâncias do Windows, é possível definir configurações para que os scripts de dados do usuário atualizados sejam executados uma vez quando você inicia a instância ou sempre que você reinicia ou inicia a instância.

  • Os dados do usuário são um atributo da instância. Se você criar uma AMI a partir de uma instância, os dados do usuário da instância não serão incluídos na AMI.

Especificar os dados do usuário da instância no lançamento

É possível especificar dados do usuário quando você executar uma instância. Para obter instruções para o console, consulte Especificar os dados do usuário da instância no lançamento. Para obter um exemplo do Linux que usa a AWS CLI, consulte Dados do usuário e AWS CLI. Para obter um exemplo do Windows que usa o Tools for Windows PowerShell, consulte Dados do usuário e Tools for Windows PowerShell.

Modificar os dados do usuário da instância

Você pode modificar os dados do usuário das instâncias com um volume raiz do EBS. A instância deve estar no estado interrompido. Para obter instruções para o console, consulte Visualizar e atualizar os dados do usuário da instância. Para obter um exemplo do Linux que usa a AWS CLI, consulte modify-instance-attribute. Para obter um exemplo do Windows que usa o Tools for Windows PowerShell, consulte Dados do usuário e Tools for Windows PowerShell.

Recuperar os dados do usuário da instância da sua instância

nota

Os exemplos nesta seção usam o endereço IPv4 do IMDS: 169.254.169.254. Se você estiver recuperando metadados de instância para instâncias do EC2 pelo endereço IPv6, certifique-se de habilitar e usar o endereço IPv6: [fd00:ec2::254]. O endereço IPv6 do IMDS é compatível com comandos IMDSv2. O endereço IPv6 só pode ser acessado em instâncias baseadas no AWS Nitro System e em uma sub-rede compatível com IPv6 (pilha dupla ou IPv6 apenas).

Para recuperar os dados do usuário de uma instância, use a seguinte URI.

http://169.254.169.254/latest/user-data

Uma solicitação de dados do usuário retorna os dados no estado em que se encontram (tipo de conteúdo application/octet-stream). Se a instância não tiver dados do usuário, a solicitação retornará 404 - Not Found.

Este exemplo retorna os dados do usuário que foram fornecidos como texto separado por vírgulas.

IMDSv2
[ec2-user ~]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \ && curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/user-data 1234,john,reboot,true | 4512,richard, | 173,,,
IMDSv1
[ec2-user ~]$ curl http://169.254.169.254/latest/user-data 1234,john,reboot,true | 4512,richard, | 173,,,
IMDSv2
PS C:\> [string]$token = Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} -Method PUT -Uri http://169.254.169.254/latest/api/token
PS C:\> Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} -Method GET -Uri http://169.254.169.254/latest/user-data 1234,john,reboot,true | 4512,richard, | 173,,,
IMDSv1
PS C:\> Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} ` -Method PUT -Uri http://169.254.169.254/latest/api/token} -Method GET -uri http://169.254.169.254/latest/user-data 1234,john,reboot,true | 4512,richard, | 173,,,

Este exemplo retorna os dados de usuário que foram fornecidos como um script.

IMDSv2
[ec2-user ~]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \ && curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/user-data #!/bin/bash yum update -y service httpd start chkconfig httpd on
IMDSv1
[ec2-user ~]$ curl http://169.254.169.254/latest/user-data #!/bin/bash yum update -y service httpd start chkconfig httpd on
IMDSv2
PS C:\> [string]$token = Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} -Method PUT -Uri http://169.254.169.254/latest/api/token
PS C:\> Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} -Method GET -Uri http://169.254.169.254/latest/user-data <powershell> $file = $env:SystemRoot + "\Temp\" + (Get-Date).ToString("MM-dd-yy-hh-mm") New-Item $file -ItemType file </powershell> <persist>true</persist>
IMDSv1
PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/user-data <powershell> $file = $env:SystemRoot + "\Temp\" + (Get-Date).ToString("MM-dd-yy-hh-mm") New-Item $file -ItemType file </powershell> <persist>true</persist>

Recuperar os dados do usuário da instância do seu computador

Você pode recuperar os dados do usuário de uma instância do seu próprio computador. Para obter instruções para o console, consulte Visualizar e atualizar os dados do usuário da instância. Para obter um exemplo que usa a AWS CLI, consulte Dados do usuário e AWS CLI. Para obter um exemplo que usa o Tools for Windows PowerShell, consulte Dados do usuário e Tools for Windows PowerShell.