我习惯使用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
我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
我已经在谷歌云中部署了一个 python 3.7 函数。我需要通过代码获取 project-id 以找出它的部署位置。
我写了一个小的python 3.7脚本并通过google shell命令行对其进行测试
import urllib
import urllib.request
url="http://metadata.google.internal/computeMetadata/v1/project/project-id"
x=urllib.request.urlopen(url)
with x as response:
x.read()
Run Code Online (Sandbox Code Playgroud)
不幸的是,这只是b''作为回应。虽然我已经使用了它,但我没有得到项目 ID
gcloud config set project my-project
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮忙,因为我是谷歌云和 python 的新手吗?谢谢。
这是下面的附加问题: 问题 2:
在我的本地系统中,我已经安装了 gcloud,如果我从那里运行上面的 python3.7 脚本
x=urllib.request.urlopen(url) #this line
Run Code Online (Sandbox Code Playgroud)
我从上面的行中收到此异常:
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/urllib/request.py", line 1350, in do_open
h.request(req.get_method(), req.selector, req.data, headers,
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/http/client.py", line 1240, in request
self._send_request(method, url, body, headers, encode_chunked)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/http/client.py", line 1286, in _send_request
self.endheaders(body, encode_chunked=encode_chunked)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/http/client.py", line …Run Code Online (Sandbox Code Playgroud) python python-requests google-api-python-client google-cloud-python
我希望能够使用开发环境上的用户默认凭据以编程方式为Iap生成一个ID令牌(即,我自己的装有Google Cloud SDK并登录的笔记本电脑)。
遵循文档时,我设法使用服务帐户文件生成了授权令牌。
在google.auth.default个人计算机上使用时,我可以看到type的凭据google.oauth2.credentials.Credentials带有refresh_token。我想用它,因为它是在做卷曲生成令牌文档下
Authenticating from a desktop app -> Accessing the application,但我不能使它工作。有人知道是否可以通过这种方式进行身份验证吗?
是否可以在Google App Engine上仅使用webapp2和Python创建API?
例如,让我的路由/post/123由此RequestHandler处理:
class ShowPosts(webapp2.RequestHandler):
def get(self):
posts = Post.query().fetch()
# return the post as data (JSON) here as response
Run Code Online (Sandbox Code Playgroud)
当客户端发出一个restful请求时/post/123,可以返回数据对象(而不是呈现的html页面).
这是可能的还是推荐的?
python google-app-engine google-cloud-platform google-cloud-python
我想使用 python 客户端在欧洲的 GCS 中创建一个存储桶。
from google.cloud import storage
Run Code Online (Sandbox Code Playgroud)
storage_client = storage.Client()
Run Code Online (Sandbox Code Playgroud)
bucket_name = 'my-new-bucket'
Run Code Online (Sandbox Code Playgroud)
bucket = storage_client.create_bucket(bucket_name)
print('Bucket {} created.'.format(bucket.name))
Run Code Online (Sandbox Code Playgroud)
这将在美国创建多区域存储桶。我怎样才能将其更改为欧洲?
如何获取当前正在运行的instanceId,以及它在正在运行的Python应用程序中的区域。
在 Go 和 Java 中,它是通过以下方式完成的,那么在 Python 中等效的是什么?
去,
import metadata "cloud.google.com/go/compute/metadata"
func main(){
println(metadata.InstanceID))
}
Run Code Online (Sandbox Code Playgroud)
爪哇
String instanceId = com.google.cloud.MetadataConfig.getInstanceId()
Run Code Online (Sandbox Code Playgroud) 我创建了一个服务帐户并仅授予它该Storage Object Viewer角色。我想使用此服务帐户通过 python API 从存储桶下载对象。
我已经GOOGLE_APPLICATION_CREDENTIALS相应地设置了环境变量,并且可以看到相关的服务帐户显示在存储桶的权限页面上。
我使用以下代码尝试下载对象
from google.cloud import storage
storage_client = storage.Client()
bucket = storage_client.get_bucket(BUCKET_NAME)
Run Code Online (Sandbox Code Playgroud)
但调用时出现以下错误get_bucket
google.api_core.exceptions.Forbidden:
403 GET https://storage.googleapis.com/storage/v1/b/samplereadbucket?projection=noAcl:
sample-service-account@project.iam.gserviceaccount.com does not have storage.buckets.get
access to samplereadbucket.
Run Code Online (Sandbox Code Playgroud)
storage.buckets.get如果没有,我需要设置的最小角色集是什么,以便服务帐户具有访问权限Storage Object Viewer?
python google-cloud-storage google-cloud-platform google-cloud-python google-cloud-iam
我有一个 Python 生成器,可以生成yield大量未知的字节数据。我想将输出流式传输到 GCS,而不先缓冲到磁盘上的文件。
虽然我确信这是可能的(例如,我可以创建一个子进程gsutil cp - <...>并将字节写入其标准输入),但我不确定推荐/支持的方式是什么,并且文档给出了上传本地文件的示例。
我应该如何正确地做到这一点?
python google-cloud-storage google-cloud-sdk google-cloud-python