使用pythonapi-clien在Google云存储桶中提取zip文件

2024-10-05 14:23:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用api创建一个云函数,源代码将在zip存档中提供,其中包含一个索引.js&;包.json文件。我已经把这个归档文件上传到了存储桶中,通过API请求创建了一个云函数,但是现在我需要提取这个zip文件来指出云函数的来源,我该如何实现呢?在

以下是我所做的: 来自视图.py

            sclient = storage.Client()
            bucket = sclient.get_bucket(func_obj.bucket)
            blob = bucket.blob(func_obj.sourceFile.name)
            print('Uploading archive...')
            print(blob.upload_from_filename(file_name))
name = "projects/{}/locations/us-central1/functions/{}".format(func_obj.project, func_obj.fname,)
            print(name)
            req_body = {
              "name": name,
              "entryPoint": func_obj.entryPoint,
              "timeout": "3.5s",
              "availableMemoryMb": func_obj.fmemory,
              # "sourceUploadUrl": upload_url,
              "sourceArchiveUrl": "gs://newer_bucket/func.zip",
              "httpsTrigger": {},
            }
            service = discovery.build('cloudfunctions', 'v1')
            func_api = service.projects().locations().functions()

            response = func_api.create(location='projects/' + func_obj.project + '/locations/us-central1',
                                                body=req_body).execute()

            pprint.pprint(response)

Tags: 文件函数nameapiobjbucketbodyzip
1条回答
网友
1楼 · 发布于 2024-10-05 14:23:14

根据Cloud Function Docs,REST端点的请求主体必须包含CloudFunction的实例。在第二个链接中可以看到,云函数JSON资源的一个字段是"sourceArchiveUrl",它指向包含该函数的zip存档文件。根据我的理解,您不需要提取zip archiveforGoogle云函数来访问代码。检查non-REST API deployment of Cloud Functions;它需要存档文件,而不是提取的存档文件。在

但无论如何,没有直接的方法来提取桶内的档案。您需要下载/传输存档到某个地方(如本地机器、Google计算引擎VM实例等),对其执行提取操作,并将结果上传回bucket中。 如果需要提取归档文件,为什么要将其上传到Google云存储桶中?为什么不上传文件?在

你也可以检查一下this answer。同样的问题,不同的背景。在

相关问题 更多 >