list_datasets()方法在AWS Lambda中不执行任何操作

时间:2019-04-24 10:05:47

标签: python-3.x amazon-web-services google-cloud-platform aws-lambda google-bigquery

我正在尝试从AWS lambda内的BigQuery获取数据集列表。但是,在执行client.list_datasets()方法时,它什么也不做,lambda超时。

我的代码如下:

from google.cloud.bigquery import Client
from google.oauth2.service_account import Credentials

credentials = Credentials.from_service_account_info(
            service_account_dict)

client = Client(
            project=service_account_dict.get("project_id"),
            credentials=credentials
        )

datasets = client.list_datasets()
print(datasets)

for dataset in datasets:
    print("dataset info", dataset.__dict__)

第一个打印语句的输出为:

<google.api_core.page_iterator.HTTPIterator object at 0x7fbae4975550>

但是,dataset.__dict__的第二张照片没有被打印。或者,不执行对HTTPIterator对象的循环。

顺便说一句,该代码在本地计算机上运行良好。

1 个答案:

答案 0 :(得分:0)

我在lambda函数中使用的AWS VPC导致了此问题。 VPC阻止了对外部API(在我的情况下为BigQuery API)的请求。

配置VPC子网和NAT网关以将lambda功能公开给Internet(0.0.0.0/0)解决了该问题。