Служебная учетная запись — это учетная запись, связанная с приложением, а не с конечным пользователем. Вам может потребоваться использовать служебную учетную запись для аутентификации в Earth Engine, если вы разрабатываете приложение или используете REST API. Узнайте больше об аутентификации с помощью служебных учетных записей.
Создайте учетную запись службы
Для начала создайте проект в Google Cloud, если вы еще этого не сделали.
Вы можете управлять учетными записями служб для своего облачного проекта, перейдя в меню консоли облака ( ) и выбрав IAM и администрирование > Учетные записи служб . (При появлении запроса выберите проект.)
Для создания новой учетной записи службы нажмите ссылку + СОЗДАТЬ УЧЕТНУЮ ЗАПИСЬ СЛУЖБЫ .
Если вы создали проект App Engine, у вас, возможно, уже есть учетная запись службы по умолчанию ( учетная запись службы App Engine по умолчанию ) для этого проекта. Если вы настраиваете проект App Engine, для роли учетной записи службы выберите Проект > Редактор .
Настройте учетную запись службы для использования Earth Engine.
Все учетные записи служб создаются в рамках облачного проекта, который может совпадать с проектом вашего приложения App Engine или виртуальной машины Cloud. Убедитесь, что облачный проект зарегистрирован для доступа к Earth Engine и что API Earth Engine включен в проекте. Все учетные записи служб в проекте с соответствующими разрешениями будут иметь доступ к Earth Engine.
Аутентификация в Earth Engine с использованием учетных данных приложения по умолчанию.
Использование учетных данных по умолчанию для приложений (ADC) — это рекомендуемый способ аутентификации в средах, работающих в автоматическом режиме (например, Cloud Run или Compute Engine), без необходимости ручного управления закрытыми ключами.
import google.auth import ee credentials, project_id = google.auth.default() ee.Initialize(credentials, project='my-ee-project')
Аутентификация с помощью закрытого ключа.
Если вашему приложению требуется аутентификация с использованием закрытого ключа учетной записи службы (не рекомендуется для производственных сред, где можно использовать ADC):
- Создайте закрытый ключ для учетной записи службы:
- Перейдите на страницу «Учетные записи служб» в консоли Cloud.
- Щелкните меню для учетной записи ( ), затем «Создать ключ» > «JSON» .
- Загрузите JSON-файл с ключами.
- Храните файл ключа в безопасном месте. Файл ключа — это специальный файл, который позволяет программам получать доступ к API Google от имени вашей учетной записи службы. Никогда не храните свой закрытый ключ в общедоступном месте. Если вы потеряете свой закрытый ключ, вы можете отозвать доступ к учетной записи службы и создать новую с помощью консоли Cloud Console. Подробнее см. раздел «Создание и удаление ключей учетных записей служб» .
- Протестируйте следующий код на Python, используя файл
.private-key.json, в том месте, где он находится:import ee service_account = 'my-service-account@...gserviceaccount.com' credentials = ee.ServiceAccountCredentials(service_account, '.private-key.json') ee.Initialize(credentials)
Если инициализация прошла без ошибок, значит, ваша учетная запись службы готова к использованию.
Используйте учетную запись службы по умолчанию в Compute Engine.
Если вы используете учетную запись службы по умолчанию , сначала необходимо изменить области доступа виртуальной машины для учетной записи службы Compute Engine, установив параметр «Разрешить полный доступ ко всем облачным API» . (Если вы используете учетные записи служб по умолчанию в Dataflow или App Engine, этот шаг не требуется.)Для аутентификации в Earth Engine с использованием учетной записи службы по умолчанию используйте следующий код:
from google.auth import compute_engine import ee credentials = compute_engine.Credentials(scopes=['https://www.googleapis.com/auth/earthengine']) ee.Initialize(credentials)
Настройте доступ к REST API.
Если учетная запись службы должна выполнять вычисления с использованием REST API, ей необходимо предоставить разрешения на уровне проекта , а именно роль «Просмотрщик ресурсов Earth Engine» . В зависимости от конфигурации проекта, учетной записи службы также может потребоваться роль «Потребитель использования сервиса» . Дополнительную информацию о разрешениях проекта, необходимых для использования Earth Engine, см. на странице «Контроль доступа» .
Поиск неисправностей
Ошибка: invalid_grant
OAuth2 может быть очень чувствителен к расхождению во времени. Если вы уверены, что все настроили правильно, проверьте, синхронизированы ли часы вашего компьютера с сетевым временем.
Ошибка: "Указанные области действия не авторизованы" при экспорте в облачное хранилище.
Если вы видите эту ошибку при выполнении задачи в Cloud Run, не указывайте аргумент scopes при создании учетных данных (например, в google.auth.default(scopes=...) ). Указание scopes может повлиять на стандартные разрешения в этой среде.