我正在尝试使用 python 在 Google Cloud 上创建一个存储桶,以自学 Python 和云计算。
我创建了下面的脚本并且运行良好:
"""Creates a new bucket."""
import gcloud
from gcloud import storage
client = storage.Client(project='boot-script-test')
bucket_name = 'test-bucket-7283428'
bucket = client.create_bucket(bucket_name)
Run Code Online (Sandbox Code Playgroud)
我的问题是存储桶是作为我不喜欢的存储类创建的,并且位于错误的“位置”。我询问如何在 Google 网上论坛上指定存储类别和位置,并收到了回复说无法直接使用 Python(?):
https://groups.google.com/forum/#!topic/gce-discussion/s-TJZrYihw0
我的理解是,如果我想要更多地控制云和创建存储桶的命令,我需要使用 JSON 或 XML Api 并以某种方式将它们“适合”我的 python 代码。它是否正确?
使用其中之一与 Google Storage 连接有什么优势吗?
使用 JSON API(例如)是否意味着每次我想做任何涉及与云交互的事情时都需要“编码”请求/帖子并解码响应?
如果我的查询没有多大意义,我很抱歉 - 我对云和 Python 都很陌生!
感谢您的任何帮助!
保罗
请有人帮我进行有关Google云平台权限的查询吗?我意识到这只是与编程松散相关,所以如果这是错误的论坛,我深表歉意!
我有一个用Python编写的项目(“ ProjectA”),该项目使用Google的云存储和计算引擎。该项目具有各种存储桶,可使用python代码从计算实例和我的家用计算机访问这些存储桶。这个专案使用的服务帐户是专案的「拥有者」,我相信它已启用所有API,而且专案运作得很好。服务帐户名称是“ master@projectA.iam.gserviceaccount.com”。
最近,我开始了一个需要类似资源(存储,计算)等的新项目,但我想将其分开。新项目称为“ ProjectB”,我建立了一个新的主服务帐户,称为master@projectB.iam.gserviceaccount.com。我在ProjectB中的代码生成与访问权限相关的错误,即使我将代码简化为以下几行,该代码也得到了演示:
来自ProjectA的代码如下所示:
from google.cloud import storage
client = storage.Client(project='projectA')
mybucket = storage.bucket.Bucket(client=client, name='projectA-bucket-name')
currentblob = mybucket.get_blob('somefile.txt')
Run Code Online (Sandbox Code Playgroud)
来自ProjectB的代码如下所示:
from google.cloud import storage
client = storage.Client(project='projectB')
mybucket = storage.bucket.Bucket(client=client, name='projectB-bucket-name')
currentblob = mybucket.get_blob('somefile.txt')
Run Code Online (Sandbox Code Playgroud)
这两个存储桶都确实存在,并且显然如果“ somefile.text”不存在,那么currentblob为None,这很好,但是当我执行此代码时,我收到以下错误:
Traceback (most recent call last):
File .... .py", line 6, in <module>
currentblob = mybucket.get_blob('somefile.txt')
File "C:\Python27\lib\site-packages\google\cloud\storage\bucket.py", line 599, in get_blob
_target_object=blob,
File "C:\Python27\lib\site-packages\google\cloud\_http.py", line 319, in api_request
raise exceptions.from_http_response(response)
google.api_core.exceptions.Forbidden: 403 GET https://www.googleapis.com/storage/v1/b/<ProjectB-bucket>/o/somefile.txt: master@ProjectA.iam.gserviceaccount.com does not have storage.objects.get access to projectB/somefile.txt. …
Run Code Online (Sandbox Code Playgroud)