Я пытаюсь установить проект Node в Google Cloud Run с облачным хранилищем. Я столкнулся с проблемой аутентификации при использовании созданной учетной записи службы.
При создании учетной записи службы я успешно загрузил токен JSON и все заработало правильно в моей локальной среде разработки.
Проблема в том, что когда я успешно развернул приложение в Cloud Run, я получаю следующую ошибку: Error: The caller does not have permission
Это происходит, когда я пытаюсь получить подписанный URL-адрес для загрузки файлов в хранилище.
Я создаю клиент хранилища следующим образом:
const { Storage } = require("@google-cloud/storage");
const storage = new Storage();
... и далее в моем скрипте вызов выглядит следующим образом:
const [url] = await storage
.bucket(bucketName)
.file(filename)
.getSignedUrl(options);
Я настроил следующие разрешения для учетной записи службы IAM:
- Cloud SQL Client - Может быть, актуально? У меня Cloud SQL успешно работает в развернутой среде.
- Пользователь учетной записи службы - необходимо использовать ее в качестве учетной записи службы?
- Создатель объекта хранилища - Мне нужна только возможность создавать подписанные URL-адреса загрузки из этого проекта.
Я также назначил упомянутую учетную запись службы экземпляру Cloud Run через консоль.
Просто Для подтверждения, приложение работает на 100% правильно локально с использованием ключа учетной записи службы JSON, оно просто не работает при работе в облаке Google.