request.get () выдает исключение в лямбда aws - PullRequest
3 голосов
/ 07 октября 2019

Я не могу сделать HTTP-вызовы из лямбда-функции на основе Python, размещенной на AWS и управляемой через Serverless Framework.

Я пытался использовать модуль botocore.vendored запросов, но он показывает предупреждение об устаревании и предлагаетиспользуйте сам модуль запросов.

url = V2_URL + '/api/analytics/validate/' + smId
headers = {
    'Content-Type':'application/json',
    'Authorization': token
}

response = requests.get(url, headers=headers)

print('Result: ')
print(response.content)

В Cloudwatch я вижу эту трассировку стека:

[ERROR] UnboundLocalError: local variable 'response' referenced before assignment
Traceback (most recent call last):
  File "/var/task/serverless_sdk/__init__.py", line 97, in wrapped_handler
    return user_handler(event, context)
  File "src/authorize.py", line 21, in validate
    principal_id = verify_token(whole_auth_token, event['pathParameters']['smId'])
  File "src/authorize.py", line 38, in verify_token
    response = requests.get(url, headers=headers)
  File "/var/task/requests/api.py", line 75, in get
    return request('get', url, params=params, **kwargs)
  File "/var/task/requests/api.py", line 60, in request
    return session.request(method=method, url=url, **kwargs)
  File "/var/task/requests/sessions.py", line 533, in request
    resp = self.send(prep, **send_kwargs)
  File "/var/task/requests/sessions.py", line 646, in send
    r = adapter.send(request, **kwargs)
  File "/var/task/requests/adapters.py", line 449, in send
    timeout=timeout
  File "/var/task/serverless_sdk/__init__.py", line 384, in wrapper
    if response:

1 Ответ

0 голосов
/ 09 октября 2019

Как отметили @blhsing и @Mark A, в версии 3.1.1 пакета @serverless/enterprise-plugin была ошибка. Обновление до версии 3.1.2 решило проблему для меня. Все, что мне нужно было сделать, это npm i -g serverless, и он позаботился о себе.

Подробности вопроса здесь: https://github.com/serverless/serverless/issues/6801

...