[英]pull queues authorization from compute
我正在嘗試使用python從計算OAuth令牌訪問谷歌計算的拉取隊列
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調用”
請幫忙,我錯過了哪些配置?
謝謝,謝伊
更新 :感謝@Shay提出這個問題,他遇到的問題不再是問題,因為我們已經允許別名在任務隊列API中工作(相關時)。
對於后代,這里的原始答案如下:
我見過的兩個最常見的錯誤是:
忘記在您的App Engine項目中包含s~
。 例如,如果您的應用程序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...
忘記將Compute服務帳戶添加到queue.yaml
的任務隊列ACL 。 為此,您需要獲取與項目關聯的服務帳戶並將其添加到acl
:
queue: - name: pull-queue mode: pull acl: - writer_email: 123845678986@project.gserviceaccount.com # can do all
當然這意味着PULL_QUEUE_NAME = 'pull-queue'
。 另請注意, 123845678986@project.gserviceaccount.com
應替換為Compute Engine實例的服務帳戶。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.