Авторизация очередей из вычислений

Я пытаюсь получить доступ к очереди извлечения из 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 очереди задач.

Для потомков вот оригинальный ответ ниже:


Две наиболее распространенные ошибки, которые я видел:

  1. Забыв включить 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...
    
  2. Забыв добавить учетную запись службы 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.

Другие вопросы по тегам