Попробовал использовать rclone для переноса файлов из on-prem хостинга в облако Google. В отличии от утилит gcloud или gsutil, rclone есть в репозитарии Debian/Ubuntu и его легко поставить через APT.
Для переноса я не стал создавать user-managed ключ для IAM сервис аккаунта, вместо этого взял токен от виртуальной машины которая запущена с нужными правами в GCP.
$ curl -H 'Metadata-Flavor:Google' 169.254.169.254/computeMetadata/v1/instance/service-accounts/default/token
{"access_token":"ya29.c.[redacted]_af","expires_in":3599,"token_type":"Bearer"}
Тут важно взять весь вывод целиком если задаётся параметр "token", либо только значение "access_token" для соответствующего параметра в rclone. В противном случае будет ошибка вида:
Failed to create file system for "gcs:example-files/": failed to configure Google Cloud Storage: google: could not find default credentials. See https://cloud.google.com/docs/authentication/external/set-up-adc for more information
Далее создание конфигурации для GCS (можно отвечать на вопросы в rclone config, но на всякий случай оставлю готовую конфигурацию для приватных бакетов с uniform access) и собственно сама миграция.
$ cat ~/.config/rclone/rclone.conf [gcs] type = google cloud storage project_number = 11111111111 bucket_policy_only = true access_token = ya29.c.[redacted]_af $ rclone sync --progress /mnt/files/ gcs:example-files/
Если не задать bucket_policy_only = true, то будет ошибка вида "Failed to set modification time: googleapi: Error 400: Cannot insert legacy ACL for an object when uniform bucket-level access is enabled. Read more at https://cloud.google.com/storage/docs/uniform-bucket-level-access, invalid".
Поправилась всеядность rclone, присутствие в репозитарии, скорость начальной и повторной синхронизации.
Комментариев нет:
Отправить комментарий