virginia una tipo que instancia ec2 east aws amazon-web-services amazon-ec2 ec2-ami

amazon-web-services - una - tipo de instancia amazon



¿Cómo ver todas las instancias de Amazon EC2 en ejecución en todas las regiones? (12)

  1. Primero vaya a la consola de administración de AWS y haga clic en Grupo de recursos:

  2. Luego busque Network and Content Delivery y haga clic en VPC :

  3. Luego busque Ejecuciones en ejecución y expanda ver todas las regiones Aquí puede encontrar todas las instancias en ejecución de todas las regiones:

Con frecuencia cambio las instancias entre diferentes regiones y, a veces, me olvido de apagar mi instancia en ejecución desde una región diferente. No pude encontrar ninguna manera de ver todas las instancias en ejecución en la consola de Amazon.
¿Hay alguna forma de mostrar todas las instancias en ejecución independientemente de la región?


Basado en el código @hansaplast, creé una versión amigable de Windows que admite múltiples perfiles como argumento. Simplemente guarde ese archivo como cmd o bat. También necesita tener el comando jq .

@echo off setlocal enableDelayedExpansion set PROFILE=%1 IF "%1"=="" (SET PROFILE=default) echo checkin instances in all regions for %PROFILE% account FOR /F "tokens=* USEBACKQ" %%F IN (`aws ec2 describe-regions --query Regions[*].[RegionName] --output text --profile %PROFILE%`) DO ( echo === region: %%F aws ec2 describe-instances --region %%F --profile %PROFILE%| jq ".Reservations[].Instances[] | {type: .InstanceType, state: .State.Name, tags: .Tags, zone: .Placement.AvailabilityZone}" )


Basado en la respuesta imTachus pero menos detallado, más rápido. Necesita tener jq y aws-cli instalados.

set +m for region in $(aws ec2 describe-regions --query "Regions[*].[RegionName]" --output text); do aws ec2 describe-instances --region "$region" | jq ".Reservations[].Instances[] | {type: .InstanceType, state: .State.Name, tags: .Tags, zone: .Placement.AvailabilityZone}" & done; wait; set -m

El script ejecuta las aws ec2 describe-instances en paralelo para cada región (¡ahora 15!) Y extrae solo los bits relevantes (estado, etiquetas, zona de disponibilidad) de la salida json. El set +m es necesario para que los procesos en segundo plano no informen al iniciar / finalizar.

Salida de ejemplo:

{ "type": "t2.micro", "state": "stopped", "tags": [ { "Key": "Name", "Value": "MyEc2WebServer" }, ], "zone": "eu-central-1b" }


Buena herramienta para CRUD AWS recursos . Encuentre [EC2 | RDS | IAM ..] en todas las regiones. Puede hacer operaciones (detener | ejecutar | terminar) en los resultados de los filtros.

python3 awsconsole.py ec2 all // return list of all instances python3 awsconsole.py ec2 all -r eu-west-1 python3 awsconsole.py ec2 find -i i-0552e09b7a54fa2cf --[terminate|start|stop]


Cada vez que cree un recurso, etiquételo con un nombre y ahora puede usar Grupos de recursos para buscar todo tipo de recursos con una etiqueta de nombre en todas las regiones.


Creé un script de código abierto que lo ayuda a enumerar todas las instancias de AWS. https://github.com/Appnroll/aws-ec2-instances

Esa es una parte del script que enumera las instancias para un perfil que las registra en una base de datos postgreSQL con el uso de jq para el análisis json:

DATABASE="aws_instances" TABLE_NAME="aws_ec2" SAVED_FIELDS="state, name, type, instance_id, public_ip, launch_time, region, profile, publicdnsname" # collects the regions to display them in the end of script REGIONS_WITH_INSTANCES="" for region in `aws ec2 describe-regions --output text | cut -f3` do # this mappping depends on describe-instances command output INSTANCE_ATTRIBUTES="{ state: .State.Name, name: .KeyName, type: .InstanceType, instance_id: .InstanceId, public_ip: .NetworkInterfaces[0].Association.PublicIp, launch_time: .LaunchTime, /"region/": /"$region/", /"profile/": /"$AWS_PROFILE/", publicdnsname: .PublicDnsName }" echo -e "/nListing AWS EC2 Instances in region:''$region''..." JSON=".Reservations[] | ( .Instances[] | $INSTANCE_ATTRIBUTES)" INSTANCE_JSON=$(aws ec2 describe-instances --region $region) if echo $INSTANCE_JSON | jq empty; then # "Parsed JSON successfully and got something other than false/null" OUT="$(echo $INSTANCE_JSON | jq $JSON)" # check if empty if [[ ! -z "$OUT" ]] then for row in $(echo "${OUT}" | jq -c "." ); do psql -c "INSERT INTO $TABLE_NAME($SAVED_FIELDS) SELECT $SAVED_FIELDS from json_populate_record(NULL::$TABLE_NAME, ''${row}'') ON CONFLICT (instance_id) DO UPDATE SET state = EXCLUDED.state, name = EXCLUDED.name, type = EXCLUDED.type, launch_time = EXCLUDED.launch_time, public_ip = EXCLUDED.public_ip, profile = EXCLUDED.profile, region = EXCLUDED.region, publicdnsname = EXCLUDED.publicdnsname " -d $DATABASE done REGIONS_WITH_INSTANCES+="/n$region" else echo "No instances" fi else echo "Failed to parse JSON, or got false/null" fi done


La solución @imTachu funciona bien. Para hacer esto a través de la consola de AWS ...

  • Consola AWS
  • Servicios
  • Redes y entrega de contenido
  • VPC
  • Busque un bloque llamado "Ejecución de instancias", esto le mostrará la región actual
  • Haga clic en el enlace "Ver todas las regiones" debajo

Mi script a continuación, basado en varios consejos de esta publicación y en otros lugares. El script es más fácil de seguir (al menos para mí) que las largas líneas de comando.

El script asume que los perfiles de credenciales se almacenan en el archivo ~/.aws/credentials que se parecen a:

[default] aws_access_key_id = foobar aws_secret_access_key = foobar [work] aws_access_key_id = foobar aws_secret_access_key = foobar

Guión:

#!/usr/bin/env bash #------------------------------------# # Script to display AWS EC2 machines # #------------------------------------# # NOTES: # o Requires ''awscli'' tools (for ex. on MacOS: $ brew install awscli) # o AWS output is tabbed - we convert to spaces via ''column'' command #~~~~~~~~~~~~~~~~~~~~# # Assemble variables # #~~~~~~~~~~~~~~~~~~~~# regions=$(aws ec2 describe-regions --output text | cut -f3 | sort) query_mach=''Reservations[].Instances[]'' query_flds=''PrivateIpAddress,InstanceId,InstanceType'' query_tags=''Tags[?Key==`Name`].Value[]'' query_full="$query_mach.[$query_flds,$query_tags]" #~~~~~~~~~~~~~~~~~~~~~~~~# # Output AWS information # #~~~~~~~~~~~~~~~~~~~~~~~~# # Iterate through credentials profiles for profile in ''default'' ''work''; do # Print profile header echo -e "/n" echo -e "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" echo -e "Credentials profile:''$profile''..." echo -e "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" # Iterate through all regions for region in $regions; do # Print region header echo -e "/n" echo -e "Region: $region..." echo -e "--------------------------------------------------------------" # Output items for the region aws ec2 describe-instances / --profile $profile / --region $region / --query $query_full / --output text / | sed ''s/None$/None/n/'' / | sed ''$!N;s//n/ /'' / | column -t -s $''/t'' done done


No creo que pueda hacer esto actualmente en la GUI de AWS. Pero aquí hay una manera de enumerar todas sus instancias en todas las regiones con la CLI de AWS:

for region in `aws ec2 describe-regions --region us-east-1 --output text | cut -f3` do echo -e "/nListing Instances in region:''$region''..." aws ec2 describe-instances --region $region done

Tomado de here (si quieres ver una discusión completa)

Además, si estás obteniendo un

Debe especificar una región. También puede configurar su región ejecutando "aws configure"

Puede hacerlo con aws configure set region us-east-1 , gracias @Sabuncu por el comentario.

[Editar: ahora (en 2019) el comando de corte se debe aplicar en el cuarto campo: cortar -f4]


Puede ejecutar DescribeInstances() en todas las regiones.

Además, puedes:

  • Automatízalo a través de Lambda y Cloud Watch.
  • Cree un punto final de la API utilizando Lambda y la puerta de enlace API y utilícelo en su código

Una muestra en NodeJS:

  • Crear y matriz de regiones (puntos finales). [también puede usar AWS describeRegions() ]

var regionNames = [''us-west-1'', ''us-west-2'', ''us-east-1'', ''eu-west-1'', ''eu-central-1'', ''sa-east-1'', ''ap-southeast-1'', ''ap-southeast-2'', ''ap-northeast-1'', ''ap-northeast-2'']; regionNames.forEach(function(region) { getInstances(region); });

  • Luego, en la función getInstances , se puede llamar a DescribeInstances() .

function getInstances(region) { EC2.describeInstances(params, function(err, data) { if (err) return console.log("Error connecting to AWS, No Such Instance Found!"); data.Reservations.forEach(function(reservation) { //do any operation intended }); }

Y por supuesto, siéntase libre de usar ES6 y superior.

Escribí una función lambda para obtener todas las instancias en cualquier estado [en ejecución, detenida] y desde cualquier región, también le daré detalles sobre el tipo de instancia y varios otros parámetros.

El script se ejecuta en todas las regiones de AWS y llama a DescribeInstances() para obtener las instancias.

Solo necesita crear una función lambda con nodejs tiempo de ejecución. Incluso puede crear API a partir de él y usarlo cuando sea necesario.

Además, puede ver los documentos oficiales de AWS For DescribeInstances para explorar muchas más opciones.


Puede usar la herramienta cli diseñada para enumerar recursos en la nube (análisis entre regiones y cuentas cruzadas): https://github.com/scopely-devops/skew

Después de una configuración breve, puede usar el siguiente código para enumerar todas las instancias en todas las regiones de AWS de EE. UU. (Suponiendo que 123456789012 es su número de cuenta de AWS).

from skew import scan arn = scan(''arn:aws:ec2:us-*:123456789012:instance/*'') for resource in arn: print(resource.data)


Una opción de GUI no obvia es Resource Groups > Tag Editor . Aquí puede encontrar todas las instancias en todas las regiones, incluso si las instancias no fueron etiquetadas.

EDITAR: Esta pantalla se rediseñó recientemente y ahora tiene una nueva apariencia y una opción de "Todas las regiones".