Python 如何使用云函数触发器组合GCS bucket中的多个文件

Python 如何使用云函数触发器组合GCS bucket中的多个文件,python,google-cloud-functions,google-cloud-storage,Python,Google Cloud Functions,Google Cloud Storage,我有3个文件,每个日期,每个姓名,格式如下: “名称XX_日期”,以下是一个示例: “名称XX_01-01-20” “名称XY_01-01-20” “名称XZ_01-01-20” 其中“name”可以是任何内容,日期是文件上传的任何日期(几乎每天) 我需要编写一个云函数,每当一个新文件到达bucket时触发,该函数将3个XX、XY、XZ文件组合成一个filename=“name\u date”文件 以下是到目前为止我得到的信息: bucket_id = 'bucketname' client

我有3个文件,每个日期,每个姓名,格式如下: “名称XX_日期”,以下是一个示例: “名称XX_01-01-20” “名称XY_01-01-20” “名称XZ_01-01-20”

其中“name”可以是任何内容,日期是文件上传的任何日期(几乎每天)

我需要编写一个云函数,每当一个新文件到达bucket时触发,该函数将3个XX、XY、XZ文件组合成一个filename=“name\u date”文件

以下是到目前为止我得到的信息:


bucket_id = 'bucketname'
client = gcs.Client()
bucket = client.get_bucket(bucket_id)

name = 
date =
outfile = f'bucketname/{name}_{date}.CSV'

blobs = []
for shard in ('XX', 'XY', 'XZ'):
    sfile = f'{name}{shard}_{date}'
    blob = bucket.blob(sfile)
    if not blob.exists():
        # this causes a retry in 60s
        raise ValueError(f'branch {sfile} not present')
    blobs.append(blob)
bucket.blob(outfile).compose(blobs)
logging.info(f'Successfullt created {outfile}')
for blob in blobs:
    blob.delete()
logging.info('Deleted {} blobs'.format(len(blobs)))
我面临的问题是,我不确定如何获取新文件的名称和日期,以便找到其他两个匹配的文件并合并它们


顺便说一句,我从这篇文章中得到了这段代码,并试图在这里实现它:

据我所知,云函数是由特定GCS存储桶中的对象上的
google.storage.object.finalize
事件触发的

在这种情况下,您的云函数“签名”看起来像(取自您提到的“媒体”文章):

数据
是一本词典,其中包含了大量有关对象(文件)的详细信息,该对象(文件)已被
最终确定
。请参见此处的一些详细信息:

例如,
data[“name”]
-是正在讨论的对象的名称

如果您知道这些对象/碎片的命名所依据的模式/模板/规则,那么可以从对象/碎片名称中提取相关元素,并使用它来组合目标对象/文件名

def compose_shards(data, context):