Consulte la documentación de EC2 sobre el tema .
Correr:
wget -q -O - http://169.254.169.254/latest/meta-data/instance-id
Si necesita acceso programático a la ID de la instancia desde un 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: $?\"`"
Un ejemplo de uso más avanzado (recuperar ID de instancia, así como zona y región de disponibilidad, 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:'`"
También puede usar en curl
lugar de wget
, según lo que esté instalado en su plataforma.
169.254.169.254
en/etc/hosts
caso de que te hace sentir más seguro, en caso de que ... cuidado.$
), encuentre uno o más dígitos seguidos de una o más letras minúsculas. Sustituir solo con los dígitos. (Paréntesis barra invertida + a sed de recordar una subcadena, que se recordó con\1
.) Me pareció un poco más fácil de leer - las únicas barras invertidas son las requeridas por el SED:EC2_REGION="$(echo "$EC2_AVAIL_ZONE" | sed -e 's:\([0-9][0-9]*\)[a-z]*$:\1:')"
.http://instance-data/
lugar de169.254.169.254
En las AMI de Amazon Linux puede hacer:
O, en Ubuntu y algunos otros sabores de Linux,
ec2metadata --instance-id
(este comando puede no estar instalado de manera predeterminada en ubuntu, pero puede agregarlo consudo apt-get install cloud-utils
)Como su nombre lo indica, también puede usar el comando para obtener otros metadatos útiles.
fuente
-
despuesec2
. Esec2metadata --instance-id
ec2-metadata
, en Ubuntu parece serec2metadata
.En Ubuntu puedes:
Y luego puedes:
Puede obtener la mayoría de los metadatos asociados con la instancia de esta manera:
fuente
apt-get install
lucid recupera la versión 0.11-0ubuntu1 que no contiene esta utilidad. Fue agregado al paquete justo después .Use la
/dynamic/instance-identity/document
URL si también necesita consultar más que su ID de instancia.wget -q -O - http://169.254.169.254/latest/dynamic/instance-identity/document
Esto le proporcionará datos JSON como este, con una sola solicitud .
fuente
Para
.NET
personas:fuente
en AWS Linux:
ec2-metadata --instance-id | cut -d " " -f 2
Salida:
i-33400429
Utilizando en variables:
fuente
Para las personas de PowerShell:
fuente
$instanceId=(Invoke-WebRequest -Uri 'http://169.254.169.254/latest/meta-data/instance-id').Content
Para Python:
que se reduce a una línea:
En lugar de local_hostname, también puedes usar public_hostname o:
fuente
new AWS.MetadataService().request('instance-id',function(error,data) { myInstanceId = data; })
Para todas las máquinas ec2, la instancia-id se puede encontrar en el archivo:
También puede obtener la identificación de la instancia ejecutando el siguiente comando:
fuente
C:\ProgramData\Amazon\EC2-Windows\Launch\Log\Ec2Launch.log
contiene el Id. de instancia, pero también tiene muchos otros archivos basura.Vea esta publicación : tenga en cuenta que la dirección IP en la URL proporcionada es constante (lo que me confundió al principio), pero los datos devueltos son específicos de su instancia.
fuente
Para Ruby:
fuente
Una solución más contemporánea.
Desde Amazon Linux, el comando ec2-metadata ya está instalado.
Desde la terminal
Te dará las opciones disponibles
volverá
fuente
ec2-metadata
con susmotd
documentos aquí: coderwall.com/p/hr_9pw/motds-on-amazon-amisSólo tipo:
fuente
Puedes probar esto:
fuente
Una clase de c # .net que escribí para metadatos EC2 desde la api http. Lo construiré con funcionalidad según sea necesario. Puedes correr con él si te gusta.
fuente
El último SDK de Java tiene
EC2MetadataUtils
:En Java:
En Scala:
fuente
Para C ++ (usando cURL):
fuente
Simplemente verifique el
var/lib/cloud/instance
enlace simbólico, debe apuntar a/var/lib/cloud/instances/{instance-id}
dónde{instance_id}
está su id de instancia.fuente
Si desea obtener la lista de ID de todas las instancias en Python, aquí está el código:
fuente
FWIW Escribí un sistema de archivos FUSE para proporcionar acceso al servicio de metadatos EC2: https://bitbucket.org/dgc/ec2mdfs . Ejecuto esto en todas las AMI personalizadas; me permite usar este modismo: cat / ec2 / meta-data / ami-id
fuente
En Go puedes usar el paquete goamz .
Aquí está la fuente GetMetaData.
fuente
En la pregunta que mencionó al usuario como root, una cosa que debo mencionar es que el ID de la instancia no depende del usuario.
Para los desarrolladores de nodos ,
fuente
Para obtener los metadatos de la instancia, use
fuente
Puede hacer una solicitud HTTP para OBTENER cualquier metadato pasando los parámetros de sus metadatos.
o
No se le facturarán las solicitudes HTTP para obtener metadatos y datos de usuario.
Más
Puede usar la herramienta de consulta de metadatos de instancia EC2, que es un script bash simple que usa curl para consultar los metadatos de instancia EC2 desde una instancia EC2 en ejecución como se menciona en la documentación.
Descargue la herramienta:
ahora ejecute el comando para obtener los datos requeridos.
Referir:
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html
https://aws.amazon.com/items/1825?externalID=1825
Feliz de ayudar.. :)
fuente
Enfoque alternativo para PHP:
Eso proporcionará una gran cantidad de datos sobre la instancia, todo bien empaquetado en una matriz, sin dependencias externas. Como es una solicitud que nunca falló o se retrasó para mí, debería ser seguro hacerlo de esa manera, de lo contrario iría por curl ()
fuente
Para PHP:
Editar por @John
fuente
Ejecuta esto:
Podrá ver diferentes tipos de atributos proporcionados por aws.
Use este enlace para ver más
fuente
La instancia de EC2 puede acceder a todos los metadatos relacionados con el recurso EC2 con la ayuda del siguiente comando que se está ejecutando:
CURL:
Para su caso: " metadata-request " debe ser id-instancia , " api-version " suele ser lo último que se puede utilizar.
Nota adicional: También puede obtener información relacionada con los siguientes atributos EC2 utilizando el comando anterior.
ami-id, ami-launch-index, ami-manifest-path, block-device-mapping /, hostname, iam /, instance-action, instance-id, instance-type, local-hostname, local-ipv4, mac, métricas /, red /, ubicación /, perfil, nombre de host público, ipv4 público, claves públicas /, id de reserva, grupos de seguridad, servicios /,
Para obtener más detalles, siga este enlace: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html
fuente
Para una instancia de Windows:
o
fuente
Para AWS elastic beanstalk eb cli run
eb tags --list
fuente