我目前使用gsutil cp从我的存储桶下载文件,但这需要您安装一堆东西。从api下载谷歌云存储文件
我只是想使用像一个简单的API请求下载:
http://storage.googleapis.com/mybucket/pulltest/pulltest.csv
这让我访问被拒绝。 auth参数如何格式化以绕过此?
我目前使用gsutil cp从我的存储桶下载文件,但这需要您安装一堆东西。从api下载谷歌云存储文件
我只是想使用像一个简单的API请求下载:
http://storage.googleapis.com/mybucket/pulltest/pulltest.csv
这让我访问被拒绝。 auth参数如何格式化以绕过此?
想出如何做我想要的东西:
from google.cloud.storage.client import Client
from google.cloud.storage.bucket import Bucket
from google.cloud.storage.blob import Blob
from google.oauth2.service_account import Credentials
credentials = Credentials.from_service_account_file('key.json')
client = Client(project='project', credentials=credentials)
bucket = Bucket(client=client, name='bucket')
blob = Blob(name='pulltest/pulltest.csv', bucket=bucket)
print blob.exists()
如果您的对象可以由匿名用户下载,您可以下载完全一样的对象。
尽管手工操作OAuth非常棘手。您需要向Google展示的东西是访问令牌。 auth头文件如下所示:
# This has gotta be in an HTTPS request. No sending credentials over HTTP, please.
Authorization: Bearer something.abcdabcdabcdabcdabcdabcdabcdabcd
获取访问令牌需要进行OAuth交换,这有点棘手。有一个在线的操场,将照顾它给你:https://developers.google.com/oauthplayground/
还有一堆的具体细节文档的,虽然你可能不会想要做手工:https://developers.google.com/identity/protocols/OAuth2
访问令牌只有好几分钟。他们不是要坚持。如果你打算做很多事情,你可能需要安装gcloud SDK,它有一个非常有用的“print-access-token”命令。
是有办法gcloud身份验证登录,而无需使用终端?即通过蟒蛇,因为我想部署我的脚本使用亚马逊lambda –
当然。您想创建一个代表您的应用的服务帐户。部署您的脚本以及该服务帐户的私钥并将其用于身份验证。 –