Короткий ответ: токен находится не в формате, который gsutil знает, как использовать, поэтому вы не можете его использовать.Вам понадобится файл ключей JSON, как упомянуто здесь в руководстве (за исключением того, что вы не сможете использовать переменную окружения GOOGLE_APPLICATION_CREDENTIALS
):
https://cloud.google.com/kubernetes-engine/docs/tutorials/authenticating-to-cloud-platform
Вместосчитывая из переменной окружения GOOGLE_APPLICATION_CREDENTIALS
, Gsutil использует файлы конфигурации Boto для загрузки учетных данных.Общие места для поиска этих файлов конфигурации Boto: /etc/boto.cfg
и $HOME/.boto
.Обратите внимание, что последнее значение изменяется в зависимости от пользователя, выполняющего команду ($HOME
расширяется до разных значений для разных пользователей);поскольку задания cron обычно запускаются от имени другого пользователя, а не от имени пользователя, настроившего файл конфигурации, я бы не рекомендовал использовать этот путь.
Итак, на вашем модуле сначала нужно создать Boto.Конфигурационный файл, который ссылается на ключевой файл:
# This option is only necessary if you're running an installation of
# gsutil that came bundled with gcloud. It tells gcloud that you'll be
# managing credentials manually via your own Boto config files.
$ gcloud config set pass_credentials_to_gsutil False
# Set up your boto file at /path/to/my/boto.cfg - the setup will prompt
# you to supply the /path/to/your/keyfile.json. Alternatively, to avoid
# interactive setup prompts, you could set up this config file beforehand
# and copy it to the pod.
$ gsutil config -e -o '/path/to/my/boto.cfg'
И, наконец, всякий раз, когда вы запускаете gsutil, вы должны указать ему, где найти тот конфигурационный файл Boto, который ссылается на ваш ключевой файл JSON (а также убедиться, что пользователь работаеткоманда имеет разрешение на чтение как файла конфигурации Boto, так и файла ключей JSON).Если вы записали свой файл конфигурации Boto по одному из известных путей, которые я упоминал выше, gsutil попытается найти его автоматически;если нет, вы можете указать gsutil, где искать файл конфигурации Boto, экспортировав переменную окружения BOTO_CONFIG
в команды, которые вы вводите для своего задания cron:
export BOTO_CONFIG=/path/to/my/boto.cfg; /path/to/gsutil cp <src> <dst>
Edit :
Обратите внимание, что образы виртуальных машин GCE поставляются с предварительно заполненным файлом по адресу /etc/boto.cfg.Этот файл конфигурации говорит gsutil загрузить плагин, который позволяет gsutil связываться с сервером метаданных GCE и получать токены аутентификации (соответствующие учетной записи службы робота default
для этой виртуальной машины) таким образом.Если ваш модуль может читать файл /etc/boto.cfg виртуальной машины, вы можете связаться с сервером метаданных GCE и у вас все в порядке с операциями, выполняемыми служебной учетной записью default
виртуальной машины, это решение должноработать "из коробки".