Veja a documentação do EC2 sobre o assunto .
Corre:
wget -q -O - http://169.254.169.254/latest/meta-data/instance-id
Se você precisar de acesso programático ao ID da instância a partir de um script,
die() { status=$1; shift; echo "FATAL: $*"; exit $status; }
EC2_INSTANCE_ID="`wget -q -O - http://169.254.169.254/latest/meta-data/instance-id || die \"wget instance-id has failed: $?\"`"
Um exemplo de uso mais avançado (recuperar o ID da instância, bem como a zona e região de disponibilidade, etc.):
EC2_INSTANCE_ID="`wget -q -O - http://169.254.169.254/latest/meta-data/instance-id || die \"wget instance-id has failed: $?\"`"
test -n "$EC2_INSTANCE_ID" || die 'cannot obtain instance-id'
EC2_AVAIL_ZONE="`wget -q -O - http://169.254.169.254/latest/meta-data/placement/availability-zone || die \"wget availability-zone has failed: $?\"`"
test -n "$EC2_AVAIL_ZONE" || die 'cannot obtain availability-zone'
EC2_REGION="`echo \"$EC2_AVAIL_ZONE\" | sed -e 's:\([0-9][0-9]*\)[a-z]*\$:\\1:'`"
Você também pode usar em curl
vez de wget
, dependendo do que está instalado na sua plataforma.
169.254.169.254
,/etc/hosts
se isso faz você se sentir mais seguro, você deve ... se importar.$
), encontre um ou mais dígitos seguidos por uma ou mais letras minúsculas. Substitua apenas pelos dígitos. (Parênteses contrabarra + diga sed se lembrar de uma substring, que é recordada com\1
.) Eu achei um pouco mais fácil de ler - as únicas barras invertidas são os exigidos pela sed:EC2_REGION="$(echo "$EC2_AVAIL_ZONE" | sed -e 's:\([0-9][0-9]*\)[a-z]*$:\1:')"
.http://instance-data/
em vez de169.254.169.254
Nas AMIs do Amazon Linux, você pode:
Ou, no Ubuntu e em alguns outros tipos de Linux,
ec2metadata --instance-id
(este comando pode não ser instalado por padrão no ubuntu, mas você pode adicioná-losudo apt-get install cloud-utils
)Como o próprio nome sugere, você pode usar o comando para obter outros metadados úteis.
fonte
-
depoisec2
. Éec2metadata --instance-id
ec2-metadata
, no Ubuntu, pareceec2metadata
.No Ubuntu você pode:
E então você pode:
Você pode obter a maioria dos metadados associados à instância desta maneira:
fonte
apt-get install
recupera a versão 0.11-0ubuntu1, que não contém este utilitário. Foi adicionado ao pacote logo depois .Use o
/dynamic/instance-identity/document
URL se você também precisar consultar mais do que apenas o ID da sua instância.wget -q -O - http://169.254.169.254/latest/dynamic/instance-identity/document
Isso fornecerá dados JSON como este - com apenas uma única solicitação .
fonte
Para
.NET
Pessoas:fonte
no AWS Linux:
ec2-metadata --instance-id | cut -d " " -f 2
Resultado:
i-33400429
Usando em variáveis:
fonte
Para pessoas com PowerShell:
fonte
$instanceId=(Invoke-WebRequest -Uri 'http://169.254.169.254/latest/meta-data/instance-id').Content
Para Python:
que se resume ao one-liner:
Em vez de local_hostname, você também pode usar public_hostname, ou:
fonte
new AWS.MetadataService().request('instance-id',function(error,data) { myInstanceId = data; })
Para todas as máquinas ec2, o ID da instância pode ser encontrado no arquivo:
Você também pode obter o ID da instância executando o seguinte comando:
fonte
C:\ProgramData\Amazon\EC2-Windows\Launch\Log\Ec2Launch.log
contém o ID da instância, mas também possui muitos outros itens indesejados.Veja este post - observe que o endereço IP no URL fornecido é constante (o que me confundiu a princípio), mas os dados retornados são específicos para sua instância.
fonte
Para Ruby:
fonte
Uma solução mais contemporânea.
No Amazon Linux, o comando ec2-metadata já está instalado.
Do terminal
Oferecerá as opções disponíveis
retornará
fonte
ec2-metadata
com o seumotd
, documentos aqui: coderwall.com/p/hr_9pw/motds-on-amazon-amisBasta digitar:
fonte
Você pode tentar isso:
fonte
Uma classe c # .net que escrevi para os metadados do EC2 da api http. Vou construí-lo com a funcionalidade, conforme necessário. Você pode correr com ele, se quiser.
fonte
O Java SDK mais recente possui
EC2MetadataUtils
:Em Java:
Em Scala:
fonte
Para C ++ (usando cURL):
fonte
Simplesmente verifique o
var/lib/cloud/instance
link simbólico, ele deve apontar para/var/lib/cloud/instances/{instance-id}
onde{instance_id}
está o seu ID da instância.fonte
Se você deseja obter a lista de todas as instâncias em python, aqui está o código:
fonte
FWIW Escrevi um sistema de arquivos FUSE para fornecer acesso ao serviço de metadados do EC2: https://bitbucket.org/dgc/ec2mdfs . Eu executo isso em todas as AMIs personalizadas; permite-me usar este idioma: cat / ec2 / meta-data / ami-id
fonte
No Go, você pode usar o pacote goamz .
Aqui está a fonte GetMetaData.
fonte
Na pergunta em que você mencionou o usuário como root, uma coisa que devo mencionar é que o ID da instância não depende do usuário.
Para desenvolvedores de Nó ,
fonte
Para obter os metadados da instância, use
fonte
Você pode simplesmente fazer uma solicitação HTTP para GET Metadata, passando os parâmetros de metadados.
ou
Você não será cobrado por solicitações HTTP para obter metadados e dados do usuário.
Outro
Você pode usar a Ferramenta de consulta de metadados da instância do EC2, que é um script bash simples que usa curl para consultar os metadados da instância do EC2 de dentro de uma instância do EC2 em execução, conforme mencionado na documentação.
Faça o download da ferramenta:
Agora execute o comando para obter os dados necessários.
Referir:
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html
https://aws.amazon.com/items/1825?externalID=1825
Feliz por ajudar.. :)
fonte
Abordagem alternativa para PHP:
Isso fornecerá muitos dados sobre a instância, todos bem compactados em uma matriz, sem dependências externas. Como é um pedido que nunca falhou ou atrasou para mim, deve ser seguro fazê-lo dessa maneira, caso contrário, eu usaria curl ()
fonte
Para PHP:
Editar por @John
fonte
Rode isto:
Você poderá ver os diferentes tipos de atributos fornecidos pelo aws.
Use este link para ver mais
fonte
Todos os metadados relacionados ao recurso EC2 podem ser acessados pela própria instância do EC2 com a ajuda do seguinte comando sendo executado:
ONDULAÇÃO :
Para o seu caso: " metadata-request " deve ser id da instância , " api-version " geralmente é a mais recente que pode ser usada.
Nota adicional: Você também pode obter informações relacionadas aos atributos EC2 abaixo usando o comando acima.
ami-id, ami-launch-index, ami-manifest-path, mapeamento de dispositivo de bloco /, nome do host, iam /, instância-ação, instância-id, tipo de instância, local-hostname, local-ipv4, mac, métricas /, rede /, posicionamento /, perfil, nome do host público, ipv4 público, chaves públicas /, ID de reserva, grupos de segurança, serviços /,
Para mais detalhes, siga este link: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html
fonte
Para uma instância do Windows:
ou
fonte
Para o AWS beanstalk elástico eb cli run
eb tags --list
fonte