#python #authentication #google-cloud-platform #google-cloud-storage #tensorflow2.0
#python #аутентификация #google-cloud-platform #google-облачное хранилище #tensorflow2.0
Вопрос:
Я создал экземпляр виртуальной машины в Google Compute Engine. После загрузки моего проекта и создания моего образа я запустил свой контейнер и авторизовал доступ к облачной платформе Google с помощью своей учетной записи службы:
gcloud auth activate-service-account test@xxx.iam.gserviceaccount.com --key-file=mykey.json
чтобы я мог получить доступ к своему облачному хранилищу Google (я провел тест с gsutil cp
помощью своего корзины, и он работает). Теперь я пытаюсь выполнить скрипт tensorflow python следующим образом:
python object_detection/model_main_tf2.py
--pipeline_config_path=/raccoon/config.config
--model_dir=gs://my-bucket/
--num_train_steps=10
указывая в качестве model_dir мое ведро, чтобы там хранились контрольные точки и события (чтобы отслеживать ход обучения с помощью tensorboard с моего ноутбука).
Проблема в том, что я получаю следующую ошибку разрешения от tensorflow:
tensorflow.python.framework.errors_impl.PermissionDeniedError:
Error executing an HTTP request: HTTP response code
403 with body '{
"error": {
"code": 403,
"message": "Insufficient Permission",
"errors": [
{
"message": "Insufficient Permission",
"domain": "global",
"reason": "insufficientPermissions"
}
]
}
}
'
when initiating an upload to gs://my-bucket/train/events.out.tfevents.1601998426.266
1f74c3966.450.2928.v2
Failed to flush 1 events to gs://my-bucket/train/events.out.tfevents.1601998426.2661f
74c3966.450.2928.v2
Flushing first event.
Could not initialize events writer. [Op:CreateSummaryFileWriter]
train
Каталог существует в моей корзине, и, как я уже говорил, работает следующая команда:
gsutil cp test.txt gs://my-bucket/train/.
Я что-то упускаю?
Ответ №1:
Аутентификация gcloud
просто гарантирует, что будущие gcloud
команды будут аутентифицированы. Ваш скрипт (вероятно) не используется gcloud
и, следовательно, не проходит проверку подлинности.
Вместо этого, если у вас есть учетные данные учетной записи службы в файле JSON, вы можете указать его через переменную GOOGLE_APPLICATION_CREDENTIALS
среды, чтобы TensorFlow мог читать / записывать в GCS через gs://
URL-адреса.
Комментарии:
1. Спасибо Дастину за объяснения. После экспорта переменной (в моем контейнере) она работает.