我正在尝试使用一个简单的 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
处理Google云端存储的常规签名URL(查询字符串身份验证)令人沮丧.
Google云端存储签名网址示例 - >这是否是整个互联网中唯一可用于生成Google云端存储签名网址的代码?如果需要,我应该全部阅读并手动修改Pure Python GAE吗?
当你将它与已经包含在任何SDK中的AWS S3 getAuthenticatedURL()进行比较时,这很荒谬......
我错过了一些明显的东西,还是每个人都面临同样的问题?这是怎么回事?
python google-app-engine google-cloud-storage gcloud-python google-cloud-python
我已成功实现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) 每当我必须使用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
我打算编写一个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
我正在尝试使用文件上传文件到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
我在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
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
我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
我习惯使用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
有关使用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
我设法在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
我正在更新脚本以调用受 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 命令?