Подключение экземпляра AWS EC2 с помощью Python Socket - PullRequest
0 голосов
/ 17 июня 2020

Server.py (выполняется на моем экземпляре aws ec2)

import socket

s = socket.socket()
host = socket.gethostbyaddr('aws.ec2.public.ip')[0]
port = 12345
s.bind((host, port))

s.listen(5)
while True:
   c, addr = s.accept()
   print('Got connection from', addr)
   c.send('Thank you for connecting'.encode())
   c.close()

Client.py (выполняется на моем локальном p c)

import socket

s = socket.socket()
host = socket.gethostbyaddr('aws.ec2.public.ip')[0]
port = 12345

s.connect((host, port))
print(s.recv(1024).decode())
s.close()

Весь входящий и исходящий TCP-трафик c предоставлен

Код сервера не показывает ошибок. Но код клиента говорит:

Traceback (most recent call last):
  File "/Users/sohamjain/Desktop/client.py", line 7, in <module>
    s.connect((host, port))
TimeoutError: [Errno 60] Operation timed out
>>> 

Подключение к экземпляру EC2 через клиент rdp работает отлично

Когда я запускаю оба этих сценария на локальном хосте, они, похоже, работают нормально . Но в случае с экземпляром AWS EC2 это не так. Где я go ошибся?

1 Ответ

0 голосов
/ 03 августа 2020

Я только что столкнулся с вашей ситуацией:

Как упомянул Крис Уильямс в ответе на ваш вопрос, вы не можете использовать IP-адрес publi c при привязке сокета прослушивания к экземпляру EC2. Измените это, чтобы использовать частный IP-адрес, и он должен работать.

Также убедитесь, что вы включили трафик c для порта, который вы привязываете из групп безопасности AWS.

...