EC2 Instance Connect Endpoint w praktyce

W poniższym artykule przedstawię sposób na połączenie się z instancją EC2 na AWS, która działa w prywatnym subnecie i dotychczas główną opcją połączenia się z nią, było wykorzystanie bastion host.

Jakiś czas temu AWS wprowadziło EC2 Instance Connect Endpoint. Dzięki temu rozwiązaniu, możemy połączyć się z naszą instancją nie tworząc specjalnie bastion hostu.

1. Zanim zaczniemy

Zanim zaczniemy tworzyć endpoint, do tego zadania potrzebujemy kilku rzeczy:

  1. Skonfigurowane AWS CLI na komputerze lokalnym
  2. Skonfigurowaną sieć VPC, aby miała prywatny subnet
  3. Utworzoną instancję EC2, która uruchomiona jest w powyższym subnecie

2. Security Group dla Endpointu oraz instancji

Odnośnie konfiguracji Security Group dla instancji EC2 oraz endpointu, odeślę do dokumentacji, ponieważ AWS rekomenduje kilka sposobów, więc każdy może dobrać odpowiednie dla siebie. Link do SG https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/eice-security-groups.html

3. Tworzymy EC2 Instance Connect Endpoint

W pierwszej kolejności, musimy utworzyć endpoint dla naszego prywtnego subnetu, robimy to przy pomocy polecenia

aws ec2 create-instance-connect-endpoint --region eu-cetral-1 --subnet-id subnet-0123456789example

Oczywiście, należy wpisać swój region od subnet ID 🙂 Po wykonaniu powyższego polecenia, dostaniemy w zwrotce kilka wartości, jedną z nich będzie InstanceConnectEndpointId, skopiujmy to sobie, bo będzie to nam potrzebne za chwilę.

4. Łączenie przez SSH do wybranej instacji

Połączenie przez SSH do instancji, którą mamy w prywatnym subnecie jest wręcz identyczne jak normalnie łączenie przez ssh, z tą różnicą, że musimy przekazać dodatkową opcję. Tak więc, aby połączyć się z naszą instancją, wykonujemy poniższe polecenie

ssh -i klucz-ssh.pem uzytkownik@prywatne_ip  -o ProxyCommand='aws ec2-instance-connect open-tunnel --instance-id id_instancji'

Efektem powyższego polecenia, powinno być połączenie się przez SSH z naszą instancją 🙂

6. Usunięcie endpointu

Jeżeli nie potrzebujemy już dalej endpointu, możemy go usunąć w prosty sposób, wykonując poniższe polecenie

aws ec2 delete-instance-connect-endpoint --instance-connect-endpoint-id endpoint_id

 

Co prawda krótki artykuł, ale mam nadzieję, że przydatny, ponieważ dzięki Instance Endpoint nie musimy się bawić w tworzenie i utrzymywanie bastion hostów.

Related Posts