Ошибка аутентификации Google Cloud Pubsub из App Engine
У нас проблемы с публикацией сообщений в теме Google Cloud PubSub в Google AppEngine. Использование учетных данных приложения по умолчанию прекрасно работает локально. Но после развертывания в Google AppEngine выдает следующую ошибку:
<HttpError 403 when requesting https://pubsub.googleapis.com/v1/projects/our-project-id/topics/our-topic:publish?alt=json returned "The request cannot be identified with a project. Please pass a valid API key with the request.">
Я предполагаю, что он будет использовать служебную учетную запись ядра приложения для доступа к API PubSub. Вот код, который мы использовали для создания учетных данных.
credentials = GoogleCredentials.get_application_default()
if credentials.create_scoped_required():
credentials = credentials.create_scoped(['https://www.googleapis.com/auth/pubsub'])
http = httplib2.Http()
credentials.authorize(http)
pubsub_service = build('pubsub', 'v1', http=http)
Ошибка выдается при публикации фактического сообщения в PubSub.
pubsub_service.projects().topics().publish(topic="projects/out-project-id/topics/out-topic", body = { 'messages' : [ { 'data': base64.b64encode(request.get_data()) }]}).execute()
Не то чтобы тот же поток работал, выполняя вызов API для "BigQuery", так что это не общая проблема Google API. Кажется, она специфична для PubSub ...