我正在尝试使用 python 使用计算 OAuth 令牌从 google 计算访问拉取队列
from oauth2client import gce
from apiclient.discovery import build
import httplib2
credentials = gce.AppAssertionCredentials('')
http = httplib2.Http()
http=credentials.authorize(http)
credentials.refresh(http)
service = build('taskqueue', 'v1beta2', http=http)
tq=service.taskqueues()
tq.get(project=MY_APPENGINE_PROJECT, taskqueue=PULL_QUEUE_NAME, getStats=True).execute()
我不断收到 HttpError 403“您不允许进行此 api 调用”
请帮忙,我缺少什么配置?
谢谢,
谢伊
UPDATE:感谢 @Shay 提出这个问题,他遇到的问题不再是问题,因为我们已经允许别名在任务队列 API 中工作(如果相关)。
为了方便后代,以下是原始答案:
我见过的两个最常见的错误是:
-
忘记包括s~
在您的 App Engine 项目中。例如,如果您的应用程序 ID 是my-awesome-app
,那么你正在打电话
tq.get(project='my-awesome-app', taskqueue=PULL_QUEUE_NAME...
当你应该打电话的时候
tq.get(project='s~my-awesome-app', taskqueue=PULL_QUEUE_NAME...
-
忘记将计算服务帐户添加到任务队列ACL in queue.yaml
。为此,您需要获取与您的项目关联的服务帐户并将其添加到acl
:
queue:
- name: pull-queue
mode: pull
acl:
- writer_email: [email protected] # can do all
当然这意味着PULL_QUEUE_NAME = 'pull-queue'
这里。另请注意,[email protected]
应替换为您的 Compute Engine 实例的服务帐号。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)