【问题标题】:How to deploy google function from google SDK from local system runtime python如何从本地系统运行时 python 从 google SDK 部署 google 功能
【发布时间】:2020-02-14 06:38:50
【问题描述】:

我正在尝试使用 gcloud 命令行工具从本地系统部署 Google Cloud Function。

我的文件被压缩成一个 .zip 文件。如附件screenshot 中所述,zip 文件包含 ma​​in.pyrequirement.txt

ma​​in.py (取自网络进行测试)

from wand.image import Image
from google.cloud import storage
client = storage.Client.from_service_account_json(
         'C:\\Users\\an20086686\\AppData\\Local\\Google\\Cloud SDK\\deploy\\****-*****-poc-e4b410a65986.JSON')
THUMBNAIL_BUCKET = 'a_demo_storage_trigger1'
def make_thumbnail(data, context):

    bucket = client.get_bucket(data['****_my-awesome-bucket'])
    blob = bucket.get_blob(data['name'])
    imagedata = blob.download_as_string()

    newimage = Image(blob=imagedata)
    newimage.sample(200,200)

    bucket = client.get_bucket(THUMBNAIL_BUCKET)
    newblob = bucket.blob('thumbnail-' + data['name'])     
    newblob.upload_from_string(newimage.make_blob())

requirements.txt

google-cloud-storage
Wand

使用下面的命令来部署这个功能:

gcloud beta functions deploy make_thumbnail --runtime python37 \
--trigger-bucket ****_my-awesome-bucket \
--trigger-event google.storage.object.finalize

错误 1:(gcloud.beta.functions.deploy)无法识别的参数: google.storage.object.finalize

当我使用时:

gcloud beta functions deploy make_thumbnail --runtime python37 \
--trigger-bucket ****_my-awesome-bucket \
--trigger-event google.storage.object.finalize

ERROR: (gcloud.beta.functions.deploy) OperationError: code=3,message=Function 在加载用户代码时失败。

错误信息:预期定义函数的文件 main.py 不存在

遇到错误的日志:

Screenshot

【问题讨论】:

    标签: python-3.x google-cloud-platform google-cloud-functions google-cloud-storage


    【解决方案1】:

    本教程不使用 ZIP 文件。

    如果您想使用 ZIP 文件,您需要使用 --source 选项指定它。见docs

    不确定这是否是您问题中的拼写错误,但--trigger-event 之前需要有一个空格。

    【讨论】:

      【解决方案2】:

      正如@YaguraStation 所提到的,问题是因为 ZIP 文件。让我再解释一下。

      如果您遵循此文档Deploying from Your Local Machine,为了使用gcloud 命令部署您的功能,您的文件不应压缩到 ZIP 文件中.

      您的命令应该如下所示:

      gcloud functions deploy make_thumbnail --runtime python37 \
      --trigger-resource ****_my-awesome-bucket \
      --trigger-event google.storage.object.finalize
      

      注意:RUNTIMETRIGGER 是两个不同的值。

      如果您想部署一个函数并将您的文件压缩到 ZIP 文件中,请添加 --source flag:

      gcloud functions deploy make_thumbnail --runtime python37 \
      --trigger-resource ****_my-awesome-bucket \
      --trigger-event google.storage.object.finalize \
      --source gs://path/to_file/file.zip
      

      我测试了上述两个命令,它们都按预期为我工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-05-16
        • 2021-12-31
        • 1970-01-01
        • 1970-01-01
        • 2015-12-27
        • 2017-08-18
        • 1970-01-01
        • 2020-02-02
        相关资源
        最近更新 更多