SIGSEGV!尝试使用 python 与 Google Cloud Storage 存储桶交互时出错

问题描述 投票:0回答:1

我正在编写一个Google云函数。它的部分职责是将文件写入云存储桶。我相信我已经设置了存储桶权限和我的服务帐户等,但是每当我尝试与存储桶交互(上传文件,甚至bucket.exists())时,我都会收到以下错误:

[错误] Worker (pid:12345) 已发送 SIGSEGV!

这看起来像是一个内存错误,但是文件内容很小(37k),就像我说的,当我只调用bucket.exists()时,甚至会发生这种情况。存储桶确实存在,文件路径正确,文件也很好,因为我可以将其写入磁盘并访问它。我的预感是 GCP 身份验证/角色等仍然存在一些问题,但我找不到问题,并且错误没有多大帮助。有什么想法吗?

def upload_blob_from_memory(bucket_name, contents, destination_blob_name):
    credentials = service_account.Credentials.from_service_account_file('/my-service-account-creds.json')
    storage_client = storage.Client(credentials=credentials,project='my-bucket')
    bucket = storage_client.bucket(bucket_name)
    # fails here at bucket.exists(), but same issue any time I want to interact with a bucket
    print(f"bucket.exists() {bucket.exists()}")
    blob = bucket.blob(destination_blob_name)
    blob.upload_from_string(contents)

    print(
        f"{destination_blob_name} with contents {contents} uploaded to {bucket_name}."
    )

注意:此功能未部署,我正在本地测试:

functions-framework-python --target my-function
python google-cloud-platform google-cloud-functions google-cloud-storage
1个回答
0
投票

这是一个分段错误。添加

--debug
似乎可以解决这个问题。 老实说,我不知道是什么原因导致此问题,但调试模式可能会为运行时提供更多内存来运行,从而解决问题。

© www.soinside.com 2019 - 2024. All rights reserved.