В внешнем доступе к Google Cloud Datastore отказано в разрешении - PullRequest
0 голосов
/ 11 февраля 2019

Я хочу получить доступ к данным хранилища данных (и хранилища) проекта AppEngine через google-cloud-datastore и google-cloud-storage с программой Python на моем собственном сервере.

Это работает с моей подготовкой AppEngineсервер, создав учетную запись службы и предоставив владельцу доступ (к проекту).

При сбое выполнения производственного экземпляра AppEngine произойдет сбой с

google.api_core.exceptions.PermissionDenied: 403 Missing or insufficient permissions.

Часть проблемы может быть, что я могу использовать неправильный проект для создания учетной записи службы.В моей облачной консоли есть несколько проектов с одинаковыми именами.Как определить правильный?

Как получить более подробную информацию о проблеме?

1 Ответ

0 голосов
/ 11 февраля 2019

Во-первых, обратите внимание, что хранилище данных и облачное хранилище - это два разных продукта с двумя разными методами доступа.

хранилище данных тесно связано с проектом GAE - каждый проект имеет свое собственное хранилище данных.Процедура внешнего доступа в целом описана в Как использовать хранилище данных Google для моего веб-приложения, которое НЕ размещено в движке приложений Google? .

При переключении проекта (подготовка к производству вваш случай) необходимо помнить 2 вещи:

  • , как вы заметили, вам нужно изменить проект, к которому вы обращаетесь.

  • вам также необходимо изменить учетные данные, которые вы загружаете и используете для доступа, в соответствии с выбранным вами проектом, поскольку каждый проект имеет свой собственный ключ учетной записи службы, настроенный в вышеупомянутой процедуре

Дляв библиотеке google-cloud-datastore оба эти параметра одновременно настраиваются с помощью параметров вызова datastore.Client() (выделено мое):

, класс google.cloud.datastore.client.Client ( проект = нет , пространство имен = нет, учетные данные = нет , _http = нет, _use_grpc = нет)

  • проект (строка)- (Необязательно) Проект для передачи в прокси-методы API.
  • учетные данные (учетные данные) - (необязательно) учетные данные OAuth2 для использования с этим клиентом.Если не передано (и если объект _http не передан), возвращается к значению по умолчанию, выведенному из среды.

Облачное хранилище полностью не зависит от GAE, проект / учетные данные GAE выиспользование (если есть) не имеет никакого отношения к ограничениям доступа к корзине / объекту.С точки зрения библиотеки google-cloud-storage при переключении с одного проекта GAE на другой вам ничего не нужно делать

Чтобы избежать путаницы, создаваемой несколькими проектами с одинаковыми именами, просто перейдите в Настройки IAM & adminНа странице выберите соответствующие проекты в раскрывающемся списке на верхней синей панели и переименуйте их, используя значимые имена (нажмите на поле Project name, чтобы изменить имя, затем нажмите SAVE).Затем еще раз проверьте, используете ли вы нужные ключи для нужного проекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...