У меня есть приложение Node.js в контейнере Docker, которое я пытаюсь развернуть в Google Cloud Run.
Я хочу, чтобы мое приложение могло читать / записывать файлы из мои корзины GCS, которые живут в одном проекте , и я не смог найти много информации вокруг него.
Это то, что я пробовал до сих пор:
1 , Надеюсь, что это работает из коробки
Ака инициализация без учетных данных, как в App Engine.
const { Storage } = require('@google-cloud/storage');
// ...later in an async function
const storage = new Storage();
// This line throws the exception below
const [file] = await storage.bucket('mybucket')
.file('myfile.txt')
.download()
Последняя строка выдает это исключение
{ Error: Could not refresh access token: Unsuccessful response status code. Request failed with status code 500"
at Gaxios._request (/server/node_modules/gaxios/build/src/gaxios.js:85:23)
2. Надеюсь, что это работает сразу после установки роли IAM администратора хранилища для моих учетных записей службы Cloud Run.
Нет. Без разницы с предыдущим.
3. Копирование файла моих учетных данных в виде шага cloudbuild.yaml
:
...
- name: 'gcr.io/cloud-builders/gsutil'
args: ['cp', 'gs://top-secret-bucket/gcloud-prod-credentials.json', '/www/gcloud-prod-credentials.json']
...
Копирует файл просто отлично, но затем файл не виден из моего приложения. Я до сих пор не уверен, куда именно он был скопирован, но перечисление каталога /www
из моего приложения не показывает его след.
4. Скопируйте мой файл учетных данных как Docker step
Подождите, но для этого мне нужно аутентифицировать gsutil
, и для этого мне нужны учетные данные.
Итак ...
Какие опции у меня есть без загрузки файла учетных данных в систему управления версиями?