我正在尝试从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
对象的循环。
顺便说一句,该代码在本地计算机上运行良好。
答案 0 :(得分:0)
我在lambda函数中使用的AWS VPC导致了此问题。 VPC阻止了对外部API(在我的情况下为BigQuery API)的请求。
配置VPC子网和NAT网关以将lambda功能公开给Internet(0.0.0.0/0)解决了该问题。