我想列出同一项目中Google Cloud Function的bucket中的文件
现在,我的云功能代码是
main.py
from google.cloud import storage
def my_function(event, context):
storage_client = storage.Client()
blobs = storage_client.list_blobs("my_bucket")
for blob in blobs:
print(blob.name)
需求.txt
google-cloud==0.34.0
我得到的错误是
从google.cloud导入存储导入错误:无法从"google.cloud"(未知位置(导入名称"storage">
我的印象是google-cloud
会预装在运行云功能的机器上,但事实似乎并非如此。
我试过:
- 阅读谷歌文档,这就是代码的来源
- 阅读这里的其他问题,即这个(这个问题表明
google-cloud
没有预加载,这就是我将其添加到requirements.txt
的原因(和这个(但我认为有一种方法可以在不设置GOOGLE_APPLICATION_CREDENTIALS
的情况下做到这一点,因为我在同一项目中调用它(。也请阅读这篇文章,但批准的答案的代码看起来像我的,不起作用
如何列出存储桶上的文件?
谷歌云模块(按原样(已弃用。最后一个版本是2018年。
您需要在requirements.txt中仅指定谷歌云存储,如下所示:
google-cloud-storage>=1.31.0
pypy和谷歌云python-github页面都表示,您只需要导入将要使用的服务的模块。
正如今天(2020年9月(一样,当你只安装谷歌云存储时,它最终会安装谷歌云,但不需要使用它或从代码中导入它。
此外,请记住,执行云功能的服务帐户必须具有"storage.backets.list"IAM权限。
google-cloud
依赖项包含Google Cloud客户端库的所有公共元素。但它并没有包含所有GCP产品的所有库。
因此,您必须包含CLoud Storage 的客户端库
- https://pypi.org/project/google-cloud-storage/
您可以删除google-cloud
依赖项,因为它自动包含在google-cloud-storage
一个中