Zgodnie z artykułem informacyjnym New EC2 Run Command , AWS CLI powinien obsługiwać nowe polecenie podrzędne do wykonywania skryptów na zdalnych instancjach EC2.
Jednak zameldowałem się aws ec2 help
, ale nie mogę znaleźć odpowiedniego polecenia.
Zainstalowałem aws
przez apt-get
:
$ aws --version
aws-cli/1.14.32 Python/3.5.4 Linux/4.12.7-64 botocore/1.8.36
Którego polecenia podrzędnego powinienem szukać i jakiej składni użyć, powiedzmy ipconfig
w PowerShell na zdalnej instancji EC2?
amazon-ec2
aws-cli
kenorb
źródło
źródło
Odpowiedzi:
Aby uruchomić ipconfig z polecenia Uruchom menedżera systemów AWS:
Uwaga: jeśli wystąpił błąd, rozważ podanie prawa
--region
.Zakłada się, że masz poprawnie skonfigurowane poświadczenia AWS i CLI. Aby uzyskać więcej informacji, zobacz Przewodnik po uruchamianiu poleceń menedżera systemów Korzystanie z interfejsu AWS CLI .
Oto praktyczny przykład polecenia powłoki wysyłania i otrzymywania danych wyjściowych polecenia:
źródło
Oto pomocniczy skrypt Bash, który służy
aws ssm send-command
do uruchamiania poleceń:Stosowanie:
Przykład:
Aby wykonać większe wyjścia, zobacz: Jak uniknąć obcinania wyjścia podczas uruchamiania polecenia AWS SSM?
źródło
Tak, możesz to zrobić za pomocą menedżera AWS Systems. Uruchom polecenie AWS Systems Manager pozwala na zdalne i bezpieczne uruchamianie zestawu poleceń na serwerze EC2 oraz na serwerze lokalnym. Poniżej znajdują się kroki na wysokim szczeblu, aby to osiągnąć.
Dołącz rolę IAM instancji: Instancja ec2 musi mieć rolę IAM z polityką AmazonSSMFullAccess. Ta rola umożliwia instancji komunikację z interfejsem API programu Systems Manager.
Zainstaluj agenta SSM: Instancja EC2 musi mieć zainstalowanego agenta SSM. Agent SSM przetwarza żądania uruchomienia polecenia i konfiguruje instancję zgodnie z poleceniem.
Wykonaj polecenie: Przykładowe użycie za pomocą interfejsu AWS CLI:
Wykonaj następujące polecenie, aby pobrać usługi uruchomione w instancji. Zamień identyfikator wystąpienia na identyfikator wystąpienia ec2.
Bardziej szczegółowe informacje: tutaj
źródło
Oto coś super fajnego, co robię z AWS SSM Send-Command!
Za pomocą Apache Airflow tworzę zupełnie nową instancję EC2 przy użyciu szablonu formacji chmurowej (w skrócie CFT), który jest tylko plikiem JSON ze wszystkimi wartościami konfiguracji dla mojej instancji EC2, którą chcę; Zauważ też, że w tym CFT mam również polecenie bootstrap, które kopiuje skrypt Pythona z lokalizacji S3 do nowej instancji EC2, dzięki czemu mogę go później wykonać za pomocą polecenia wysyłania SSM! Robię to za pomocą Python3 i AWS SDK dla Python3 o nazwie biblioteka Boto3. Oto część polecenia tworzenia nowego stosu CFT, który z kolei tworzy moją nową instancję EC2:
Następnie mogę uzyskać identyfikator nowej instancji EC2 (wymagany do użycia polecenia wysyłania SSM) za pomocą czegoś takiego:
Następnie mogę uzyskać identyfikator wystąpienia bieżącej instancji EC2 serwera bieżącego pracownika Airflow, uruchamiając tę komendę
wget -q -O - http://169.254.169.254/latest/meta-data/instance-id
za pomocą języka Python:TERAZ!!!! NA WIELKI FINAŁ
Następnie mogę wykonać skrypt na utworzonej przeze mnie nowej instancji EC2 i wysłać ten skrypt bez względu na parametry / argumenty, jakie chcę ... w tym identyfikator instancji serwera, który wysłał polecenie wysyłania SSM, w ten sposób po zakończeniu skryptu działając na nowej instancji EC2, może wysłać kolejną komendę SSM Send-Command z powrotem na mój serwer Airflow, aby poinformować go, że skrypt został zakończony. To jest na bardzo wysokim poziomie bez szczegółów, ale to tylko demonstracja pomysłu :)
Nie jestem pewien, czy to pomogło komukolwiek, ale jest to fajny i zabawny przykład robienia czegoś z AWS SSM Send-Command! Chociaż prawdopodobnie kod pachnie xD
źródło