Как исправить «Соединение прервано», OSError (97, «Семейство адресов не поддерживается протоколом» в aws-lambda? - PullRequest
0 голосов
/ 13 июня 2019

Я создаю нового бота AWS, который должен подключаться к приложению, установленному на моем локальном компьютере в Apache Tomcat Server.Я могу сделать запрос от почтальона, используя URL 'https://localhost:8080/iii'. Но если я дам тот же URL в своем лямбда-коде, используя python 3.7 и функцию запросов, он выдаст следующую ошибку:

[ОШИБКА] ConnectionError: («Соединение прервано.», OSError (97, «Семейство адресов не поддерживается протоколом»))

Журналы:

Traceback (most recent call last):
     File "/var/task/lambda_function.py", line 64, in lambda_handler
    request_status = request_ent(idenName_input,AppName_input,EntName_input,OpName_input)
  File "/var/task/lambda_function.py", line 47, in request_entitlement
    r = requests.post(url, json.dumps(data),auth=('username', 'password'))
  File "/var/runtime/botocore/vendored/requests/api.py", line 109, in post
    return request('post', url, data=data, json=json, **kwargs)
  File "/var/runtime/botocore/vendored/requests/api.py", line 50, in request
    response = session.request(method=method, url=url, **kwargs)
  File "/var/runtime/botocore/vendored/requests/sessions.py", line 465, in request
    resp = self.send(prep, **send_kwargs)
  File "/var/runtime/botocore/vendored/requests/sessions.py", line 573, in send
    r = adapter.send(request, **kwargs)
  File "/var/runtime/botocore/vendored/requests/adapters.py", line 415, in send
    raise ConnectionError(err, request=request)
END RequestId: 0c190f74-9cd0-49f7-bb6c-be0a98805e83

1 Ответ

0 голосов
/ 13 июня 2019

Localhost, как следует из названия, это local to your host .К нему нельзя получить прямой доступ через Интернет.Чтобы добиться того, что вы пытаетесь, вам нужно использовать что-то вроде ngrok .Он откроет ваш локальный сервер Apache в Интернете и даст вам общедоступный URL-адрес, на который вы можете отправлять запросы, и ngrok перенаправит его на ваш локальный сервер Apache. Теперь, в вашей лямбда-функции используйте этот публичный URL-адрес ngrok, и он должен работать.

Но убедитесь, что функция Lambda может получить доступ к Интернету.Вам нужно настроить шлюз NAT и все.Просто прочитайте мой ответ здесь о том, как это сделать.

...