2012-12-10 10 views
7

Podczas gdy znalazłem mnóstwo dokumentacji, w jaki sposób tworzyć nowe instancje AMI Amazon EC2 za pomocą skryptu danych użytkownika (ala Eric Hammond), nie widziałem sposobu na rozpoczęcie już istniejącego, ale obecnie zatrzymanego, Amazon Wystąpienie EC2 ze skryptem podanym przez użytkownika po jego ponownym uruchomieniu.Zrestartować istniejącą instancję Amazon EC2 za pomocą skryptu określonego przez użytkownika?

Mam wiele instancji Amazon EC2 Ubuntu, które są używane do testowania i odzyskiwania po awarii. Chciałbym móc go uruchomić i mieć go, na przykład, automatycznie pobrać i przywrócić kopię zapasową, która odpowiada naszemu stopniowi lub środowisku produkcyjnemu, w razie potrzeby. Wolałbym nie utrzymywać dwóch osobnych instancji, z których każdy ma własny elastyczny adres IP.

Czy można to zrobić z linii poleceń za pomocą narzędzi Amazon ec2, podobnie jak w przypadku polecenia ec2-run-instances? Zasadniczo chcę mieć możliwość przekazania skryptu, który uruchomi się jako root, tak jakby był wywoływany z rc.local lub podobnego.

Odpowiedz

0

Niestety, odpowiedź wydaje się, że obecnie nie można zrobić tego, o co prosiłem.

2
  1. Można to zrobić za pomocą API Tools. Sprawdź komendę ec2-modify-instance-attribute dla usługi --user-data.

  2. Również AWS Console pozwala zrobić to samo na zatrzymany przykład: enter image description here

  3. Alternatywnie, można zawsze uruchomić polecenie lub skrypt poprzez ssh jako ostatni argument:

    ssh [[email protected]]hostname [command]

+0

Problem jest to, że wydaje się, skrypty umieszczone w obszarze danych użytkownika są uruchamiane ** tylko ** gdy instancja jest najpierw tworzona z AMI, który h jest prawdopodobnie powodem, dla którego nie ma parametru danych użytkownika w komendzie ec2-start-instances, mimo że jest on obecny w poleceniu uruchomienia ec2-run-instances.Metoda SSH z pewnością jest wykonalna, ale nie odpowiada na pytanie, czy można to zrobić za pomocą ec2tools, i wymagałoby pewnego rodzaju uwierzytelnienia konta na początkowej instancji, chociaż myślę, że to nic wielkiego, skoro jesteśmy przy użyciu plików kluczy. –

+0

Właśnie zakończyłem prosty test danych użytkownika i widzę, że nie jest on wykonywany po ponownym uruchomieniu lub zatrzymaniu/uruchomieniu. Wydaje mi się dziwne, że można to zmienić, ale nie zostanie wykonane. Skontaktuję się z Amazonem w tej sprawie. BTW, Spójrz na tę stronę - może być także interesująca: https://help.ubuntu.com/community/CloudInit –

+0

Dzięki. Doceniam to. –

0

Można rozważyć Stop/Restart funkcjonalności Amazon EC2 instancji przy użyciu AWS Command Line Interface jak opisano here.

Bez Balancer Elastic obciążenia

aws ec2 stop-instances --instance-ids i-1a2b3c4d 
aws ec2 start-instances --instance-ids i-1a2b3c4d 

z elastycznym równoważenia obciążenia bez AutoScaling

aws elb deregister-instances-from-load-balancer --load-balancer-name elb-name --instances i-12ab34cd 
aws elb register-instances-from-load-balancer --load-balancer-name elb-name --instances i-12ab34cd 

Elastic Load Balancer z AutoScaling

aws autoscaling update-auto-scaling-group --auto-scaling-group-name "asg-name" --launch-configuration-name "launch-config-name" --min-size 0 --max-size 0 
aws autoscaling update-auto-scaling-group --auto-scaling-group-name "asg-name" --launch-configuration-name "launch-config-name" --min-size 1 --max-size 1