Тайм-аут на лямбда-функции, запрашивая другую функцию, дает ошибку тайм-аута - PullRequest
0 голосов
/ 20 апреля 2020

У меня есть лямбда-функция A с валидатором пользователя, который запрашивает вторую лямбда-функцию B с токеном Bearer и ожидает получения информации о пользователе.

Когда я определяю время ожидания функции A как менее чем за 28 секунд , я получаю следующую ошибку:

ОШИБКА: Получить https://dev.url.com/auth/: net / http: запрос отменен во время ожидания соединения (Client.Timeout превышено при ожидании заголовков)

Мой код:

    client := &http.Client{
        Timeout: time.Second * 20,
    }

    req, err := http.NewRequest("GET", m.authURL, nil)
    req.Header.Set("Content-Type", "application/json")
    req.Header.Set("Authorization", "Bearer "+m.token)
    resp, err := client.Do(req)
    if err != nil || resp.StatusCode != http.StatusOK {
        return errors.Errorf("Failed to request auth service.\ntoken: %s\nERROR: %+v\n", m.token, err)
    }
    defer resp.Body.Close()
    body, err := ioutil.ReadAll(resp.Body)

    log.Println(string(body))
    return err

Когда я определяю время ожидания функции A как выше или равно 28 секундам все работает как положено, обе функции работают правильно, и весь процесс занимает около 7 мс (!!!).

Возможно ли, что тайм-аут играет такую ​​роль в выполнении? Если так, то почему?

1 Ответ

0 голосов
/ 20 апреля 2020

Кому может прийти та же проблема, о которой упоминалось в комментариях выше, моя лямбда-функция была внутри VP C. Вначале я поставил под сомнение свои конфигурации VP C, но, поскольку иногда выполнение между двумя лямбда-кодами было успешно выполнено, я с ранних лет исключил эту гипотезу.

Все еще не понимаю, почему увеличение времени ожидания моей лямбды могло сделай так, чтоб это работало. У меня закончились предположения, и комментарий Сураджа побудил меня сбросить конфигурации VP C и вместо того, чтобы делать конфигурации, основанные на моем опыте, попытался следовать каждой детали в следующей ссылке . В процессе выяснилось, что ранее я назначил таблицу маршрутов publi c для частного su bnet. Это, кажется, объясняет проблему.

...