1

我正在尝试在本地测试 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/ ”。

参考:https ://github.com/localstack/localstack

4

1 回答 1

0

我发现 moto 库第三方库的解决方案是嘲笑第三方响应以及预期响应,因此确实得到了任何连接被拒绝错误。

对于用于本地 lambda 测试的 localstack 库,这是我的错误,因为我必须使用 docker 机器 ip 而不是 localhost,然后可以访问 url。

如有任何疑问,请告诉我。

于 2019-01-07T11:46:03.213 回答