检查blob是否存在

时间:2019-04-11 16:42:30

标签: google-cloud-storage airflow google-cloud-composer

我正在尝试构建DAG,该DAG首先检查Google Cloud Storage中是否存在给定的路径/ blob。该Blob是包含一些RAW数据的Blob,而不是安装在Composer worker中的Blob。

或者,可以方便地一次性查看它是否存在并包含文件(列表> 1),但是恢复存在已经是一件好事了。

到目前为止,我尝试通过bash命令同时使用gsutil统计信息,google.cloud.storage库和gcs_hook均无济于事。他们都为我确定存在的文件夹返回False

def check_folder(templates_dict,**kwargs):
    bucket = 'bucketname'
    blob_name = templates_dict['blob_name']
    # Blob name is something along the lines of '2019-04-10/11/' 
    gcs = GoogleCloudStorageHook()
    flag = gcs.exists(bucket,blob_name)
    if flag:
        print(flag)
        return('this_is_true')
    else:
        print(flag)
        return('this_is_not_true')

对于给定的blob_name,我非常确定存在,我期望为true,但始终返回False。知道发生了什么吗?谢谢!

1 个答案:

答案 0 :(得分:4)

exists中的GoogleCloudStorageHook函数检查对象,并且不支持使用前缀。如果要检查给定前缀中是否有任何数据,则可以使用list函数。

示例:

if bool(hook.list(bucket, prefix=prefix)):
    print('some data is in my folder!')

您可能还想检查传感器GoogleCloudStoragePrefixSensor的实现,因为它与您所做的非常相似。