繁体   English   中英

使用 airflow 获取存储在存储桶中的文件大小 (GCP)

[英]Get file size stored (GCP) in a bucket with airflow

上下文是,如果存储在 Google Cloud Platform 中的文件为空,我需要结束该过程,但如果不是空的,请遵循正常的工作流程。 我正在使用 airflow 中的分支运算符执行此操作,但我必须通过一个条件来决定该过程是否需要在那里结束或继续。

所以我的问题是:如何获取存储在 GCP 存储桶中的平面文件的大小?

提前致谢!

您可以使用 Google Cloud Storage Library 中的Blobs/Objects内置函数,用于 Python。

为了检查文件是否在您的存储桶中并且其大小大于零,我创建了以下代码:

from google.cloud.storage import Blob
from google.cloud import storage

client = storage.Client()
bucket = client.bucket('bucket_name')

desired_file = "file_name.csv"

for blob in bucket.list_blobs():
    if desired_file== blob.name and blob.size > 0:
        print("Name: "+ blob.name +" Size blob obj: "+str(blob.size) + "bytes")
        #do something  

上面, list_blobs()方法用于列出指定存储桶内的所有文件。 然后,我们使用blob.name检索文件名和blob.size以返回文件的大小(以BYTES为单位)。 在这一小块代码之后,您可以继续您的任务。

附加信息:也可以过滤您将列出的带有前缀的文件,以防数量巨大,例如for blob in client_bucket.bucket('bucket_name').list_blobs(prefix='test_'):

更新:

为了提供更细粒度的权限,对于特定的存储桶和对象,您可以使用访问控制列表 它允许您根据所需的访问级别定义对特定存储桶和对象的访问。 因此,go 到:存储>存储桶>单击您的文件>单击编辑权限(屏幕中上部,在下载旁边) >添加项目 然后,select 你要添加的实体如:Project、Domain、Group、User,填写名称(email id、project、service account)。 来自 Google 的“如何使用 ACL” 链接

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM