Я пытаюсь получить пользовательские загрузки напрямую в Google Cloud Storage из моего приложения в AppEngine Flex (PHP 7.2).Код работает локально (не используя локальный сервер разработки GCP), но когда я загружаю код в AppEngine и открываю страницу / представление, я получаю ошибку 500.Хотите знать, если кто-то с большим опытом работы с GCP и GCS может указать, что я делаю неправильно?
Я вставил отладочные операторы (удалено для краткости) в код действующего сервера, и я могу увидеть их остановку непосредственно перед вызовом$ object-> beginSignedUploadSession () (см. код ниже).
$config = [
'projectId' => 'my-project-id'
];
$storage = new StorageClient($config);
$bucket = $storage->bucket('my-project-id.appspot.com');
$object = $bucket->object('csv_data/tmpcsvdata-' . $model->file_hash . '.csv');
$upload_url = $object->beginSignedUploadSession();
Локально это правильно генерирует подписанный URL для загрузки, поэтому я могу вставить его в представление, и после этого AJAX позаботится о загрузке файла пользователя в GCS.В режиме реального времени обработчик ошибок приложения (Yii2) возвращает ошибку (# 403), но никаких других подробностей он не представляет.Журналы AppEngine не показывают никакой информации, кроме ошибки 500.
Предполагая, что # 403 может означать Запрещено и что проблема была с учетными данными, я перепроверил это, но, кажется, хорошо, так как я предполагаюМне не нужно предоставлять keyFile или keyFilePath, потому что он находится в AppEngine (в отличие от того, когда я делаю это локально).
Я провел несколько довольно обширных поисков, но не могу найти ничего, что, по-видимому, связано.
Будем весьма благодарны за любые предложения.
Обновление
Удалось получить более подробную информацию об ошибке.Сообщение об ошибке «API учетных данных службы IAM не использовался в проекте XXXX», а исключение - «GuzzleHttp \ Exception \ ClientException».Похоже, это 403 Forbidden, и я думаю, это должно быть связано с учетными данными, но я все еще не уверен, как мне это исправить.