Отправить HTTP-запрос на сервер, размещенный на экземпляре AWS EC2 - PullRequest
0 голосов
/ 29 мая 2019

Я пытаюсь отправить HTTP-запрос POST от клиента на сервер, расположенный на моем экземпляре AWS EC2. Я получаю эту ошибку, когда пытаюсь настроить сервер на AWS.

Traceback (most recent call last):
  File "testReceive_AWS.py", line 197, in <module>
    httpd = server_class((server_address), MyHandler)
  File "/usr/lib/python2.7/SocketServer.py", line 417, in __init__
    self.server_bind()
  File "/usr/lib/python2.7/BaseHTTPServer.py", line 108, in server_bind
    SocketServer.TCPServer.server_bind(self)
  File "/usr/lib/python2.7/SocketServer.py", line 431, in server_bind
    self.socket.bind(self.server_address)
  File "/usr/lib/python2.7/socket.py", line 228, in meth
    return getattr(self._sock,name)(*args)
socket.error: [Errno 99] Cannot assign requested address

Вот мой код:

if __name__ == '__main__':
    server_class = BaseHTTPServer.HTTPServer
    handler_class=BaseHTTPServer.BaseHTTPRequestHandler

    server_address = ('EC2 instance public ip address', 9000) 

    httpd = server_class((server_address), MyHandler)

    print time.asctime(), "Server Starts - %s:%s" % (server_address)
    try:
        httpd.serve_forever()
    except KeyboardInterrupt:
        pass
    httpd.server_close()
    print time.asctime(), "Server Stops - %s:%s" % (server_address)

Я подтвердил, что IP-адрес правильный. Что я делаю не так?

Ответы [ 2 ]

2 голосов
/ 31 мая 2019

Вы можете привязать только частный IP-адрес экземпляра EC2.Стек IP в экземпляре EC2 не знает об общедоступном IP-адресе, поскольку этот адрес автоматически и прозрачно транслируется в / из частного IP-адреса экземпляра с помощью интернет-шлюза VPC.

Привязка к частному адресу или что-либо ещеБиблиотека принимает как «любой / все IPv4».Обычно это 0.0.0.0, иногда *, но в этом случае BaseHTTPServer ожидает пустую строку.

server_address = ('', 9000) 
0 голосов
/ 31 мая 2019

По какой-то причине изменение на server_address = ('0.0.0.0', 9000) вызвало похожую ошибку.

Но изменение на server_address = (' ', 9000) сработало.

...