Авторизация очередей из вычислений
Я пытаюсь получить доступ к очереди извлечения из Google Compute с помощью токена OAuth с помощью Python
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"
помогите, пожалуйста, какие настройки я пропустил?
спасибо шей
1 ответ
ОБНОВЛЕНИЕ: Спасибо @Shay за то, что он задал этот вопрос, проблема, с которой он столкнулся, больше не является проблемой, так как мы позволили псевдонимам работать (когда это уместно) в API очереди задач.
Для потомков вот оригинальный ответ ниже:
Две наиболее распространенные ошибки, которые я видел:
Забыв включить
s~
в вашем проекте App Engine. Например, если идентификатор вашего приложения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 в ACL очереди задач в
queue.yaml
, Для этого вам необходимо получить учетную запись службы, связанную с вашим проектом, и добавить ее в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.