当我try 使用Python中的requests
库从AWS Lambda函数向未解析的域名发出HTTP请求时,我遇到了一个奇怪的行为.
当我try 使用以下命令发出请求时:
response = requests.get('https://Benandjerry.com', timeout=(1,1))
在AWS Lambda中,它始终需要大约10秒的时间才会抛出错误.然而,当我在我的本地环境中运行相同的代码时,它是瞬间的.我已经使用日志(log)和独立测试验证了这一点.
我考虑过Lambda冷启动、Lambda运行时差异甚至vPC配置等潜在问题,但似乎都不是根本原因.
我还try 使用cURL访问该域,它立即返回无法解析host:Benandjerry.com.
最后一点,这种情况发生在特定的未解析域名上,而不是所有域名上.
以下是一个示例:
- http://seen.ma/个
- Benandjerry.com
- Clenyabeauty.com
- Gong.com
仅供参考,您可以通过在AWS上创建一个python3.9 Lambda并添加以下代码来轻松复制该问题:
import json
from botocore.vendored import requests
import urllib.request
import os
def lambda_handler(event, context):
# TODO implement
url = 'http://Benandjerry.com'
try:
response = requests.get(url, proxies=None,verify=False)
except Exception as e:
print(e)
return {
'statusCode': 200,
'body': json.dumps('Hello from Lambda!')
}
问题:
- 是什么原因导致AWS Lambda出现持续10秒的延迟 对于使用请求的无法解析的域?
- 我如何才能让AWS Lambda立即识别该域无法解析,类似于我本地计算机上的行为?