*** ConnectionError :('连接已中止。',错误(13,'权限被拒绝'))尝试将文件上传到Google云端存储时

时间:2018-03-17 09:24:47

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

我正在使用Dim MyOutLookApp As Object Dim MyNameSpace As Object Dim MyFolder As Object Dim This As Variant '// Late Binding Set MyOutLookApp = CreateObject("Outlook.Application") '''I have also tried using = GetObject(, "Outlook.Application").... no change Set MyNameSpace = MyOutLookApp.GetNamespace("MAPI") On Error GoTo ErrFlder Set MyFolder = MyNameSpace.GetDefaultFolder(olFldr.olFolderInbox) Set MyFolder = MyFolder.Folders Set This = MyFolder Set This = MyFolder(strJobName) '''strJobname is a string picked up from elsewhere. It is simply the name of the inbox subfolder I want to go to. This.display End Sub 测试我的应用。

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

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'))

我的app.yaml:

gcloud auth application-default login

知道如何解决?

1 个答案:

答案 0 :(得分:0)

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

水桶'权限是通过使用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