我正在尝试在本地测试aws lambda函数,并成功地使用moto库模拟了dynamo DB之类的aws资源,但是在引入一个组件(即,调用第三方库的请求时,由于连接被拒绝,我得到了错误)。
requests.exceptions.ConnectionError: Connection refused: GET https://www.google.com/
主要是因为moto库为reponse.py类,即httpPretty库。
我们还可以使用其他替代方法来解决这些问题,或者在本地使用aws资源以及调用第三方库来测试lambda函数。
我的lambda函数来源:
import boto3
import requests
def lambda_handler(event,context):
client=boto3.client('dynamodb')
response = client.put_item(TableName='divyanayan_test',
Item={'id': {'S': 'hello1'}})
r = requests.get('https://www.google.com/')
print(r)
也尝试使用localstack库并将映像部署到docker,但是它提供的URL无法连接到端点URL:“ http://localhost:4569/”。
答案 0 :(得分:0)
我发现的moto库第三方库的解决方案是模拟第三方响应以及预期响应,因此确实出现了任何连接被拒绝的错误。
对于用于本地lambda测试的localstack库,这是我的错误,因为我必须使用docker machine ip而不是localhost,然后该URL才可以访问。
如有任何疑问,请让我知道。