数据流:存储.客户端() 导入错误或如何列出 GCP 存储桶的所有 blob



我有一个使用python SDK编写的apache-beam==2.3.0管道,该管道在本地与我的DirectRunner一起使用。当我将运行器更改为数据流运行器时,我收到有关">存储"不是全局的错误。

检查我的代码,我认为这是因为我正在使用存储在环境中的凭据。在我的 python 代码中,我只是做:

class ExtractBlobs(beam.DoFn):
def process(self, element):
from google.cloud import storage
client = storage.Client() 
yield list(client.get_bucket(element).list_blobs(max_results=100))

真正的问题是我需要客户端,以便我可以获取存储桶,以便我可以列出 blob我在这里所做的一切都是为了我可以列出斑点。

因此,如果有人可以指出我使用"存储"的正确方向。数据流中的客户端(('或如何在不需要客户端的情况下列出 GCP 存储桶的 blob。

提前感谢! [+]我读过什么:https://cloud.google.com/docs/authentication/production#auth-cloud-implicit-python

已修复: 好的,经过进一步阅读和调查,事实证明我有在本地运行管道所需的库,但 Dataflow 需要知道这些库才能将它们下载到它启动的资源中。https://beam.apache.org/documentation/sdks/python-pipeline-dependencies/

所以我所做的只是创建一个需求.txt文件,其中包含我的 Google-Cloud-* 要求。

然后,我像这样启动我的管道:

python myPipeline.py --requirements_file requirements.txt --save_main_session True 

最后一个标志是告诉它保留你所做的导入。

最新更新