2013-04-12 20 views
16

Mam kilka narzędzi Amazon AWS CLI (EC2, Auto Scaling, MOnitoring i ELB). Narzędzia są poprawnie skonfigurowane i działają idealnie. Moi Vars środowiskowe są ustawione, te właściwe do tego Q samopoczucie:ec2-describe-instance-status Client.InvalidInstanceID.NotFound ale I KNOW instance istnieje

export EC2_REGION=eu-west-1 
export EC2_URL=https://ec2.$EC2_REGION.amazonaws.com 
export AWS_ELB_URL=https://elasticloadbalancing.$EC2_REGION.amazonaws.com 

Kiedy biegnę ec2-describe-instance-status i-XXXXXXXX dla żadnego z moich przypadkach uzyskać:

Client.InvalidInstanceID.NotFound: The instance ID 'i-XXXXXXXX' does not exist 

Znam przypadek ID istnieje, ja skopiowałem go z konsoli internetowej AWS i znajduje się on w regionie eu-west-1, a moje zmienne env są ustawione na ten region.

Za życie mnie nie mogę zrozumieć, dlaczego nie znajdzie moich instancji. Czy jest coś jaskrawo oczywistego, że robię niewłaściwie?

AKTUALIZACJA: odtworzenie x509 cert/pk rozwiązało to ... z jakiegoś powodu.

Odpowiedz

3

Weird problem - jak zwykle, gdy napotyka coś dziwnego w rozwoju oprogramowania, należy najpierw kwestionować założenia:

Znam przypadek ID istnieje, skopiowałem go z konsoli internetowej AWS, i znajduje się w regionie eu-west-1, a moje pola env są ustawione na ten region .

Więc instancja ID wywodzi się z innego środowiska niż ten, którego chcesz użyć go w - Chciałbym spróbować wyprowadzić id instancji za pośrednictwem tego samego środowiska, a nie, to znaczy:

ec2-describe-instances 

Zaryzykuję zgadnij, że lista nie zwróci oczekiwanych instancji. Wskazuje to, że używasz poświadczeń AWS, które należą do innego konta, lub że te poświadczenia nie mają wymaganych uprawnień odczytu przypisanych na przykład przez IAM policies.

+0

Dzięki za wejście. Przerażająco przykłady opisujące ec2 (nawet z argumentem regionu) nic nie dają. Zainstalowałem najnowsze narzędzia CLI EC2 (od dzisiaj), a regiony-e2 z opisem dają VALID wynik. Być może ma to coś wspólnego z moimi credami. – BoomShaka

+0

Odtworzyłem mój certyfikat x509 i klucz prywatny. To rozwiązało problem. Musiał wygasnąć, chociaż ten, którego używałem, został oznaczony jako aktywny. Dziwne. – BoomShaka

+0

@BoomShaka - Zdecydowanie zaleca się przełączanie tylko na klawisze dostępu IAM, które są znacznie łatwiejsze w użyciu i znacznie bardziej uniwersalne, a więc implicite bezpieczniejsze; Certyfikaty X.509 są [w międzyczasie przestarzałe] (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/setting_up_ec2_command_linux.html#set_aws_credentials_linux) dla narzędzi wiersza poleceń EC2 i rzadko używane gdzie indziej już od dłuższego czasu . Zobacz moją odpowiedź na [Jak pobrać certyfikat EC2 X.509 z kontem użytkownika IAM?] (Http://stackoverflow.com/a/8995926/45773) za nieco więcej na ten temat. –

31

Miałem ten sam problem. To dlatego, że nie definiowałem regionu dla moich poleceń. Zakładam, że wyświetli wszystkie instancje we wszystkich regionach, ale domyślnie jest to us-west-1 i nie mam tam żadnych instancji.

Aby opisać moje maszyny w Irlandii używam następujące:

ec2-describe-instances --region eu-west-1
NB: Jestem definiowania klucz dostępu AWS i tajemnicy gdzie indziej.

Aby uniknąć tego problemu w przyszłości, mam teraz ustawić mój region za pośrednictwem environment variable na moich Linux i Windows maszyn: EC2_URL=https://ec2.eu-west-1.amazonaws.com tak, że nie muszą być jednoznaczne w wierszu poleceń.

Aktualizacja maj 2014 Można również ustawić region dodając następujące wiersze do pliku ~/.aws/config w katalogu domowym (nie testowane na Windows).To jest mój ulubiony sposób teraz, zwłaszcza na moim VM i zbiorników:

[default] 
region = eu-west-1 

Aby uzyskać więcej informacji, zobacz offical docs here.

+0

Twoja odpowiedź była pomocna, dzięki! –

+0

Dzięki za wskazówkę dotyczącą ustawienia w pliku konfiguracyjnym – asherrard

1

miałem podobny problem i piszę tutaj rozwiązanie dla każdego, kto może znaleźć przydatne.

Zostałem zatrzymany z tym błędem przez kilka godzin.

Client.InvalidInstanceID.NotFound: The instance ID 'i-XXXXXXXX' does not exist 

Wreszcie znalazłem, co się dzieje: miałem wystąpienie w innym regionie niż domyślna regionu (US East (Northern Virginia)) i musiałem zaktualizować te informacje. Domyślnie polecenia wyglądają tylko dla instancji w domyślnym regionie!

Jest to wyjaśnione w docs, sekcja (opcjonalnie): Ustaw regionhttp://docs.aws.amazon.com/AWSEC2/latest/UserGuide/SettingUp_CommandLine.html

0

To bardzo prosty problem. Jeśli otrzymujesz ten błąd, wykonaj następujące kroki.

  1. Sprawdź, w jakim regionie kraju czy instancja jest image here

Teraz wprowadź [email protected]:~# aws configure

Wprowadź

AWS Access Key ID [****************D7M2]:

AWS Secret Access Key [****************2h3r]:

Default region name [us-east-1]:

Gdy pojawi się pytanie o region domyślny, Zmień region, w którym rezydują instancje. Np .: us-east-2. Następnie naciśnij Enter. Acutally to lista dostępnych nazw regionu "RegionNames"

"Regions": [ 
    { 
     "RegionName": "ap-south-1", 
     "Endpoint": "ec2.ap-south-1.amazonaws.com" 
    }, 
    { 
     "RegionName": "eu-west-2", 
     "Endpoint": "ec2.eu-west-2.amazonaws.com" 
    }, 
    { 
     "RegionName": "eu-west-1", 
     "Endpoint": "ec2.eu-west-1.amazonaws.com" 
    }, 
    { 
     "RegionName": "ap-northeast-2", 
     "Endpoint": "ec2.ap-northeast-2.amazonaws.com" 
    }, 
    { 
     "RegionName": "ap-northeast-1", 
     "Endpoint": "ec2.ap-northeast-1.amazonaws.com" 
    }, 
    { 
     "RegionName": "sa-east-1", 
     "Endpoint": "ec2.sa-east-1.amazonaws.com" 
    }, 
    { 
     "RegionName": "ca-central-1", 
     "Endpoint": "ec2.ca-central-1.amazonaws.com" 
    }, 
    { 
     "RegionName": "ap-southeast-1", 
     "Endpoint": "ec2.ap-southeast-1.amazonaws.com" 
    }, 
    { 
     "RegionName": "ap-southeast-2", 
     "Endpoint": "ec2.ap-southeast-2.amazonaws.com" 
    }, 
    { 
     "RegionName": "eu-central-1", 
     "Endpoint": "ec2.eu-central-1.amazonaws.com" 
    }, 
    { 
     "RegionName": "us-east-1", 
     "Endpoint": "ec2.us-east-1.amazonaws.com" 
    }, 
    { 
     "RegionName": "us-east-2", 
     "Endpoint": "ec2.us-east-2.amazonaws.com" 
    }, 
    { 
     "RegionName": "us-west-1", 
     "Endpoint": "ec2.us-west-1.amazonaws.com" 
    }, 
    { 
     "RegionName": "us-west-2", 
     "Endpoint": "ec2.us-west-2.amazonaws.com" 
    } 
] 
} 

Default output format [None]:

Zostaw format wyjściowy puste i naciśnij Enter. Teraz skończysz

teraz w konsoli wpisz

[email protected]:~# aws ec2 describe-instance --instance-id i-06343434322t 

uszczęśliwiać BYĆ SZCZĘŚLIWY