2013-08-20 19 views
10

Próbuję skonfigurować środki do zarejestrowania instancji w route53 automatycznie, gdy instancja jest tworzona przy użyciu soli i ten artykuł: http://cantina.co/2012/01/25/automated-dns-for-aws-instances-using-route-53/Jak uzyskać nazwę instancji z instancji w AWS?

W artykule wykorzystano ec2-metadata aby uzyskać identyfikator instancji i i nazwę hosta. Zastanawiam się, czy istnieje sposób, używając bash w instancji, aby zamiast tego uzyskać nazwę instancji. ec2-metadata tylko wydaje się pokazywać identyfikator instancji. Z góry dziękuję.

Odpowiedz

0

Nie jestem pewien, jak będzie wyglądać bash, ale możesz użyć SDK z samej instancji, jeśli uzyskasz identyfikator instancji. Zapytałbyś o regres ec2 i przekazałeś identyfikator instancji EC2. Korzystanie z SDK rubinowy to będzie wyglądać:

i = ec2.instances["i-12345678"] 
puts i.dns_name 
10

Przede wszystkim, Amazon EC2Instance metadane usługi zapewnia również zupełnie inne Nazwy oprócz instance-id, jeśli mogą one być to, czego szukasz - zobacz Instance Metadata Categories:

  • hostname - prywatny hosta instancji. W przypadkach, w których występuje wiele interfejsów sieciowych, odnosi się to do urządzenia eth0 (urządzenia, dla którego numer urządzenia to 0).
  • local-hostname - Prywatna nazwa hosta DNS instancji. W przypadkach, w których występuje wiele interfejsów sieciowych, odnosi się to do urządzenia eth0 (urządzenia, dla którego numer urządzenia to 0).
  • public-hostname - Publiczny DNS instancji. Jeśli instancja znajduje się w VPC, kategoria ta jest zwracana tylko wtedy, gdy atrybut enableDnsHostnames ma wartość true.

Jeśli szukasz Nazwa jako narażone na AWS Management Console chociaż, byś rzeczywiście trzeba uciekać się do korzystania z jednego z Tools for Amazon Web Services je odzyskać - że Nazwa jest w rzeczywistości zwykłym tagu z kluczem Nazwa (patrz Tagging Your Amazon EC2 Resources), która jest używana w większości usług AWS w oczywistym celu.

Oto jak je zdobyć z AWS Command Line Interface na przykład (z pominięciem region i poświadczenia):

aws ec2 describe-tags \ 
--filters Name=resource-id,Values=i-abcd1234 Name=key,Values=Name \ 
--query Tags[].Value --output text 
  • dla bardziej zaawansowanych CLI JSON przetwarzania wyjścia niż to, co jest możliwe dzięki wbudowanemu w --query opcji, można odwołaj się do jq (lekkiego i elastycznego procesora JSON z linii poleceń).

  • Overthink's answer stanowi przykład w oparciu o obecnie spuścizny Amazon EC2 API Tools (proszę zwrócić uwagę na komentarze, które prawidłowo wskazują, że chcesz dzisiaj do czynienia z poświadczeniami inaczej, patrz Tell the CLI Tools Who You Are i IAM Roles for EC2 instances szczegółów).

+3

You może również użyć parametru wiersza poleceń --query wraz z --output, aby bezpośrednio wyprowadzić tylko nazwę instancji, np .: 'aws ec2 describe-tags --filters Name = resource-id, Values ​​= i-abcd1234 Name = key, Values = Name --query Tags []. Value --output text' –

+1

@CarlosP - Zaktualizowałem odpowiedź dzięki rzeczywiście prostszemu podejściu, które zaproponowałeś (opcja '--query' nie była dostępna w interfejsie CLI AWS z dostań się), dzięki za wskazanie tego! –

-2

Znaleziono, że opis-znaczniki nie działają w mojej konfiguracji, nie powiodło się błąd "UnauthorizedOperation".Got to praca z describe-przypadkach: przy użyciu

aws ec2 describe-instances --filters Name=instance-id,Values=$(wget -qO- http://instance-data/latest/meta-data/instance-id) --query Reservations[].Instances[].Tags[].Value --output text 

poleceń regionu oraz dostęp do kluczy z AWS bieżącego użytkownika [domyślnie] sekcja pliku konfiguracyjnego jest: ~/.aws/config. Jeśli trzeba użyć Region/klucze innego użytkownika (można znaleźć na AWS konsoli IAM desce rozdzielczej), można dodać je do innej sekcji w tym pliku, na przykład [USER2] i użyć w poleceniu tak:

aws --profile user2 ec2 describe-instances --filters Name=instance-id,Values=$(wget -qO- http://instance-data/latest/meta-data/instance-id) --query Reservations[].Instances[].Tags[].Value --output text 
Powiązane problemy