python - *** ConnectionError : ('Connection aborted.' , error(13, 'Permission denied' )) 试图将文件上传到谷歌云存储时

标签 python ssl flask google-cloud-platform google-cloud-storage

我正在使用 dev_appserver.py 测试我的应用。

我上传文件的功能类似于:

def upload_file(file_stream, filename):
    """Upload a file to Google Cloud Storage."""

    client = google.cloud.storage.client.Client(project=_GOOGLE_CLOUD_PROJECT)
    bucket = client.get_bucket(_GOOGLE_STORAGE_BUCKET)  # Here it breaks!

    blob = bucket.blob(filename)
    blob.upload_from_string(file_stream)

    url = blob.public_url

    return url

在行 bucket = client.get_bucket(_GOOGLE_STORAGE_BUCKET) 我收到一条错误消息:

*** ConnectionError: ('Connection aborted.', error(13, 'Permission denied'))

我通过以下方式进行身份验证:

gcloud auth application-default login

我的 app.yaml:

runtime: python27
api_version: 1
threadsafe: true

handlers:
- url: /static
  static_dir: static
  application_readable: true
- url: /.*
  script: main.app

libraries:
- name: ssl
  version: latest

知道怎么解决吗?

最佳答案

您似乎没有设置适当的权限,无法从您用于运行应用程序的帐户访问您的 Cloud Storage 存储桶。

存储桶的权限是通过使用 Access Control Lists 设置的(ACL),它定义了哪些账户可以访问存储桶以及他们拥有的访问类型(读、写等)。

这是一个关于如何为特定帐户设置权限以便它可以访问存储桶的示例:

gsutil acl ch -u [USER_EMAIL]:[PERMISSION] gs://[BUCKET_NAME]

还有其他可用选项可用于设置 ACL,例如使用控制台或通过您的代码添加权限。您可以找到这些选项 here .

更新:

经过一些研究并咨询了处理此类情况的团队后,我可以确认 the use of SSL with sockets is not supported on dev_appserver从这一刻起。由于您使用的客户端库使用 HTTPS 进行连接,如果没有此支持,将无法使用 dev_appserver。

作为替代方案,您可以考虑使用 API client library for Python .在这里你可以找到一个 example了解如何使用此库从您的应用连接到 Cloud Storage 存储桶。

关于python - *** ConnectionError : ('Connection aborted.' , error(13, 'Permission denied' )) 试图将文件上传到谷歌云存储时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49334438/

相关文章:

mysql - App Engine 在线处理字符编码与本地处理字符编码的方式是否不同?

python-3.x - Flask 中 init_app 函数的目的是什么?

python - 如何使用多个 numpy 1d 数组创建 pandas DataFrame?

python - 如果一个轴包含时间,如何在 matplotlib 中绘制箭头?

python - 使用证书存储将证书加载到 ssl 中,而不是文件路径;与 python

Android RESTLet SSL 空指针

python - 有没有简单的方法来复制 gitignore 工作原理背后的逻辑?

python - 在模拟中修补生成器

amazon-web-services - 复制的 EC2 实例,SSL 证书冲突

javascript - xmlHttpRequest 卡在就绪状态 1