标签: gcloud-python

GCloud 上传 httplib2.RedirectMissingLocation:重定向但响应缺少位置:标头

我正在尝试使用一个简单的 python 程序将一个小文件上传到 gcloud

client = storage.Client(project=GCLOUD_PROJECT)
bucket = client.get_bucket(GCLOUD_BUCKET)
blob = bucket.blob(GCLOUD_FILE_ON_CLOUD)
blob.upload_from_filename(GCLOUD_FILE_LOCAL)
Run Code Online (Sandbox Code Playgroud)

它一直工作到最近,并且发生了一些变化。现在,每当我上传大于 5MB 的文件时,都会出现以下错误。小于或等于 5MB 的文件通过。大小不足以实现可续传,是吗?

Traceback (most recent call last):
  File "/Users/mmumshad/PycharmProjects/quiz-python-flask-angular/gcloud_upload.py", line 40, in <module>
    blob.upload_from_filename(GCLOUD_FILE_LOCAL)
  File "/Users/mmumshad/PycharmProjects/quiz-python-flask-angular/venv36/lib/python3.6/site-packages/gcloud/storage/blob.py", line 597, in upload_from_filename
    encryption_key=encryption_key, client=client)
  File "/Users/mmumshad/PycharmProjects/quiz-python-flask-angular/venv36/lib/python3.6/site-packages/gcloud/storage/blob.py", line 543, in upload_from_file
    http_response = upload.stream_file(use_chunks=True)
  File "/Users/mmumshad/PycharmProjects/quiz-python-flask-angular/venv36/lib/python3.6/site-packages/gcloud/streaming/transfer.py", line 1086, in stream_file
    response = send_func(self.stream.tell())
  File "/Users/mmumshad/PycharmProjects/quiz-python-flask-angular/venv36/lib/python3.6/site-packages/gcloud/streaming/transfer.py", line 1215, in _send_chunk
    return self._send_media_request(request, end)
  File "/Users/mmumshad/PycharmProjects/quiz-python-flask-angular/venv36/lib/python3.6/site-packages/gcloud/streaming/transfer.py", line 1125, in _send_media_request
    self.bytes_http, request, retries=self.num_retries)
  File "/Users/mmumshad/PycharmProjects/quiz-python-flask-angular/venv36/lib/python3.6/site-packages/gcloud/streaming/http_wrapper.py", line 423, in …
Run Code Online (Sandbox Code Playgroud)

python file-upload google-cloud-storage gcloud gcloud-python

15
推荐指数
3
解决办法
7795
查看次数

使用Google App Engine的Google云端存储签名网址

处理Google云端存储的常规签名URL(查询字符串身份验证)令人沮丧.

Google云端存储签名网址示例 - >这是否是整个互联网中唯一可用于生成Google云端存储签名网址的代码?如果需要,我应该全部阅读并手动修改Pure Python GAE吗?

当你将它与已经包含在任何SDK中的AWS S3 getAuthenticatedURL()进行比较时,这很荒谬......

我错过了一些明显的东西,还是每个人都面临同样的问题?这是怎么回事?

python google-app-engine google-cloud-storage gcloud-python google-cloud-python

14
推荐指数
2
解决办法
3296
查看次数

使用Python将文件上传到Google Cloud Storage Bucket子目录

我已成功实现python函数将文件上传到Google Cloud Storage存储桶,但我想将其添加到存储桶中的子目录(文件夹)中,当我尝试将其添加到存储桶名称时代码无法找到夹.

谢谢!

def upload_blob(bucket_name, source_file_name, destination_blob_name):
  """Uploads a file to the bucket."""
  storage_client = storage.Client()
  bucket = storage_client.get_bucket(bucket_name +"/folderName") #I tried to add my folder here
  blob = bucket.blob(destination_blob_name)

  blob.upload_from_filename(source_file_name)

  print('File {} uploaded to {}.'.format(
    source_file_name,
    destination_blob_name))
Run Code Online (Sandbox Code Playgroud)

python python-3.x google-cloud-storage gcloud-python

11
推荐指数
1
解决办法
7745
查看次数

谷歌云函数部署“允许未经身份验证的调用......”

每当我必须使用gcloudsdk部署新的 python 函数时,我都会收到此消息

允许未经身份验证的新函数 [function-name] 调用?

(是/否)?

警告:使用受限访问 IAM 策略创建的函数。要启用未经授权的访问,请考虑

“gcloud alpha 函数 add-iam-policy-binding function-name --region=europe-west1 --member=allUsers --role=roles/cloudfunctions.invoker”

是否有任何标志可以添加到命令中以使其NO在部署时成为一个?

这是我用来部署一个函数的示例命令:

gcloud functions deploy function-name --region=europe-west1 --entry-point function-entry-point --trigger-resource "projects/my-project/databases/(default)/documents/user_ids/{user_id}" --trigger-event providers/cloud.firestore/eventTypes/document.create --runtime python37 --timeout 60 --project my-project
Run Code Online (Sandbox Code Playgroud)

python google-cloud-platform gcloud gcloud-python google-cloud-functions

10
推荐指数
3
解决办法
3608
查看次数

Google Cloud Storage + Python:如何在GCS中的某个文件夹中列出obj?

我打算编写一个Python程序来检查文件是否在我的Google云端存储的某个文件夹中,基本的想法是获取list文件夹中的所有对象,文件名list,然后检查文件abc.txt是否在文件名list.

现在的问题是,看起来Google只提供了一种获取方式obj list,即uri.get_bucket()下面的代码来自https://developers.google.com/storage/docs/gspythonlibrary#listing-objects

uri = boto.storage_uri(DOGS_BUCKET, GOOGLE_STORAGE)
for obj in uri.get_bucket():
    print '%s://%s/%s' % (uri.scheme, uri.bucket_name, obj.name)
    print '  "%s"' % obj.get_contents_as_string()
Run Code Online (Sandbox Code Playgroud)

缺点uri.get_bucket()是,看起来它首先得到所有的对象,这是我不想要的,我只需要得到特定文件夹的obj名称list(例如gs//mybucket/abc/myfolder),这应该很快.

有人可以帮忙回答吗?感谢每一个答案!

python google-cloud-storage gcloud-python google-cloud-python

9
推荐指数
3
解决办法
9953
查看次数

使用gcloud-python在Google云端存储中设置元数据

我正在尝试使用文件上传文件到Google云端存储gcloud-python并设置一些自定义元数据属性.为了尝试这个,我创建了一个简单的脚本.

import os

from gcloud import storage

client = storage.Client('super secret app id')
bucket = client.get_bucket('super secret bucket name')

blob = bucket.get_blob('kirby.png')
blob.metadata = blob.metadata or {}
blob.metadata['Color'] = 'Pink'
with open(os.path.expanduser('~/Pictures/kirby.png'), 'rb') as img_data:        
    blob.upload_from_file(img_data)
Run Code Online (Sandbox Code Playgroud)

我可以上传文件内容.上传文件后,我可以从开发者控制台手动设置元数据并检索它.

我无法弄清楚如何以编程方式上传元数据.

python google-cloud-storage gcloud-python google-cloud-python

5
推荐指数
1
解决办法
1917
查看次数

python中的Google Cloud Datastore超时错误

我在Google Cloud Datastore中有一个表,我在其中存储一个小数据结构,该结构用一个Python服务编写,另一个用另一个Python服务读取.我正在使用gcloud版本0.15.0.这是我用来向GCD写入/读取数据的Python代码:

from gcloud import datastore
import datetime
import json
class GCD(object):
def __init__(self, project_id):
    self.client = datastore.Client(project_id)

def put(self, table, key, data):
    with self.client.transaction():
        entity = datastore.Entity(self.client.key(table, key), exclude_from_indexes=['context'])
        entity.update({'context': json.dumps(data), 'created': datetime.datetime.utcnow(), 'done': True})
        try:
            self.client.put(entity)
        except Exception as e:
            print "GCD save failed with exception: %s" % e
    return None

def get(self, table, key):
    entity_key = self.client.key(table, key)
    entity = None
    try:
        entity = self.client.get(entity_key)
    except Exception as e:
        print "GCD read failed with exception: %s" …
Run Code Online (Sandbox Code Playgroud)

python google-cloud-datastore gcloud-python google-app-engine-python google-cloud-python

5
推荐指数
1
解决办法
591
查看次数

如何通过 Python 以编程方式使用 gcloud 命令

Google 文档在这个主题上有点通用,我发现很难绕过他们使用的不同 API 和术语,所以我想知道是否有人可以给我指出正确的方向。

我正在寻找一种gcloud直接从 Python 调用命令的方法。我已经安装gcloud在我的 Python 环境中,作为一个示例,我想知道如何从 Python 执行以下操作:

gcloud compute copy-files [Source directory or file name] [destination directory of file name]
Run Code Online (Sandbox Code Playgroud)

python google-compute-engine gcloud gcloud-python google-cloud-python

5
推荐指数
1
解决办法
2万
查看次数

比较生成的和谷歌云存储的难度提供了CRC32c校验和

我attemptting得到CRC32c我的本地文件的校验和,所以我可以把它比作blob.crc32c由gcloud库提供.谷歌说我应该使用crcmod模块来实际计算CRC32c我的数据的哈希值.

modifiedFile.txt 已从Google云端存储桶下载到我的本地文件系统.

这里的目标是,should_download只有在我的本地客户端与远程服务器上modifiedFile.txt有不同的情况时才设置为true CRC32c.CRC32c如果我的本地文件系统和我的gcloud Blob都具有相同的内容,我如何让它们生成匹配?

from crcmod import PredefinedCrc
from gcloud import storage

# blob is a gcloud Blob object

should_download = True

with open('modifiedFile.txt') as f:
  hasher = PredefinedCrc('crc-32c')
  hasher.update(f.read())
  crc32c = hasher.digest()
  print crc32c # \207\245.\240
  print blob.crc32c # CJKo0A==
  should_download = crc32c != blob.crc32c
Run Code Online (Sandbox Code Playgroud)

不幸的是,它目前总是失败,因为我实际上并不知道如何将我构建的校验和与crcmod我在匹配Blob对象中看到的属性进行比较.

python crc32 google-cloud-storage gcloud-python google-cloud-python

4
推荐指数
1
解决办法
779
查看次数

在App Engine(python)之外使用数据存储区?

我习惯使用Google Cloud SQL,您可以在其中连接到GAE之外的数据库.这样的GAE数据存储是否可以这样,理想地使用Python NDB接口?

基本上,我的用例是我想运行预先填充和清理数据存储区的验收测试.

看起来当前的选项是JSON API或协议缓冲区 - 测试版.如果是这样,那就是一种痛苦,那么我不能使用我的NDB模型填充数据,但必须重新实现它们以进行测试,并担心它们没有像以前那样保存到数据存储区.通过申请.

只是检查我没有错过什么....

PS.是的我知道remote_api_shell,但我不想要shell.我猜管道命令是一种方式,但ugghh ......

google-app-engine python-2.7 google-cloud-datastore gcloud-python google-cloud-python

4
推荐指数
1
解决办法
852
查看次数

将Google Cloud Datastore与NDB API配合使用?

有关使用NDB API和Google App Engine数据存储区的大量信息,但我找不到有关如何将NDB与Google Cloud Datastore一起使用的任何信息.我发现的唯一模块是googledatastore,它是非常原始的库.

App Engine数据存储区与云数据存储区有何不同?NDB是否可用于云数据存储?

python google-app-engine google-cloud-datastore gcloud-python google-cloud-python

4
推荐指数
1
解决办法
1113
查看次数

使用浏览器查看时,创建数据存储条目会导致加密属性

我设法在python中使用google.cloud.datastore创建或修改数据存储实体,但是当我在浏览器中登录我的Cloud Platform项目并检查条目时,看起来它的所有属性都是加密的(它们看起来像"Rm9vIEJhcg=="等 - 如果我从浏览器创建它,我可以正常看到).

我正在使用服务帐户标识的json文件进行身份验证:

self.client = datastore.Client()
self.client = self.client.from_service_account_json(cert_file.json)
Run Code Online (Sandbox Code Playgroud)

服务帐户对整个项目具有"编辑"权限.将其更改为"所有者",这是我用于登录的Gmail帐户的设置,但不能解决问题.

我像这样创建实体:

with self.datastore.client.transaction():
    entity = Entity(Key("key", project="project"))
    entity["property"] = "data"
    self.datastore.client.put(entity)
Run Code Online (Sandbox Code Playgroud)

有什么方法可以使用python库修改的条目可以从浏览器站点读取吗?

python google-cloud-datastore gcloud-python google-cloud-python

1
推荐指数
1
解决办法
497
查看次数

Python:如何使用特定用户而不是 get_application_default() 创建 GoogleCredentials

我正在更新脚本以调用受 OAuth2 保护的 Google Cloud 端点。以前的版本假设一个用户以前通过身份验证gcloud auth login,因此能够使用默认值:

credentials = GoogleCredentials.get_application_default()
http = credentials.authorize(http)
Run Code Online (Sandbox Code Playgroud)

但是现在我必须以用户 A 和用户 B 的身份执行一些调用。我可以在 shell 中执行这些步骤来生成访问令牌,但我更愿意直接在程序中执行此操作:

gcloud auth login user_A@email.com
gcloud auth print-access-token user_A@email.com
Run Code Online (Sandbox Code Playgroud)

有没有办法Credentials为两封不同的电子邮件生成两个值而无需运行任何 shell 命令?

python gcloud gcloud-python google-cloud-python

1
推荐指数
1
解决办法
1217
查看次数