Como ver todas as instâncias do Amazon EC2 em execução em todas as regiões?

Mudo frequentemente as instâncias entre regiões diferentes e, por vezes, esqueço-me de desligar a minha instância de execução de uma região diferente. Eu não consegui encontrar nenhuma maneira de ver todas as instâncias em execução no Console Amazon.
Existe alguma maneira de mostrar todas as instâncias em execução, independentemente da região?

Author: JerryGoyal, 2017-02-07

8 answers

Acho que não consegues fazer isto na GUI AWS. Mas aqui está uma maneira de listar todas as suas instâncias em todas as regiões com o AWS CLI:
for region in `aws ec2 describe-regions --output text | cut -f3`
do
     echo -e "\nListing Instances in region:'$region'..."
     aws ec2 describe-instances --region $region
done

Retirado de aqui (Se quiser ver a discussão completa)

 33
Author: imTachu, 2017-12-07 08:28:27

Sempre que criar um recurso, marque-o com um nome e agora poderá usar Os grupos de Recursos para encontrar todos os tipos de recursos com uma marca de nome em todas as regiões.

 7
Author: Mallikarjuna Reddy, 2018-07-03 22:02:50

Baseado na resposta de imTachus, mas menos verbosa, mais rápida. Você precisa ter jq e 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

O script executa o aws ec2 describe-instances em paralelo para cada região (agora 15!) e extrai apenas os bits relevantes (estado, tags, zona de disponibilidade) da saída json. O set +m é necessário para que os processos de fundo não relatem ao iniciar/terminar.

Exemplo de saída:

{
  "type": "t2.micro",
  "state": "stopped",
  "tags": [
    {
      "Key": "Name",
      "Value": "MyEc2WebServer"
    },
  ],
  "zone": "eu-central-1b"
}
 5
Author: hansaplast, 2018-01-06 07:05:30

Uma opção gráfica não óbvia é Resource Groups > Tag Editor. Esta tela pode encontrar todas as instâncias com um link para vê-las dentro da região, mesmo que você não marcá-las. enter image description here

 2
Author: Heinrich Filter, 2018-08-16 11:25:01

A solução de imTachu funciona bem. Para fazer isso através do console AWS...

  • Consola AWS
  • serviços
  • Ligação Em Rede E Entrega De Conteúdos
  • VPC
  • Procure por um bloco chamado "Running Instances" , isto irá mostrar-lhe a região actual
  • Clique no link" Ver todas as regiões " por baixo
 1
Author: Carlton, 2018-07-06 10:23:21

Podes correr DescribeInstances() por todas as regiões.

Além disso, pode:

    Automatize - o através de Lambda e Cloud watch.
  • Crie o endpoint da api usando a Gateway Lambda e api e use-o no seu código

Uma amostra em NodeJS:

  • criar e dispor de regiões (objectivos). [pode também utilizar as expressões descritivas AWS () ]
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);
    });

  • Então, na função getInstances, DescribeInstances() pode ser conhecer.
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
      });
    }

E Fora Claro, sinta-se livre para usar ES6 e acima.

Eu escrevi uma função lambda para obter todas as instâncias em qualquer estado [executando, parado] e de qualquer região, também irá dar detalhes sobre o tipo de instância e vários outros parâmetros.

O Script passa por todas as regiões AWS e chamadas DescribeInstances(), para obter as instâncias.

Você só precisa criar uma função lambda com o tempo de execução {[[6]}. Você pode até mesmo criar API a partir dele e usá-lo como e quando necessario.

Além disso, pode ver os documentos oficiais da AWS para descrever as circunstâncias para explorar muitas mais opções.

 1
Author: J. Parashar, 2018-08-20 05:18:56

Baseado no código @hansaplast I criou a versão do Windows friendly que suporta vários perfis como argumento. Basta gravar esse ficheiro como ficheiro cmd ou bat. Você também precisa ter o 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}"
)
 0
Author: Pawel, 2018-06-28 11:31:11

Pode usar uma ferramenta de cli concebida para enumerar os recursos das nuvens (análise de cross-region e cross-accounts) - https://github.com/scopely-devops/skew

Após uma configuração curta, poderá usar o seguinte código para listar todas as instâncias em todas as regiões AWS dos EUA (assumindo que 123456789012 é o seu número de conta AWS).

from skew import scan

arn = scan('arn:aws:ec2:us-*:123456789012:instance/*')
for resource in arn:
    print(resource.data)
 0
Author: Dmytro, 2018-09-30 14:39:51