Google Speech API возвращает 403 PERMISSION_DENIED

Я использую Google Speech API для преобразования звука в текст из моего PHP-приложения (с использованием PHP-клиента Google Cloud) в течение нескольких месяцев без каких-либо проблем. Но теперь мои звонки начали возвращать 403 ошибки со статусом «PERMISSION_DENIED» и сообщением «У вызывающего абонента нет разрешения».

Я использую Speech API вместе с Google Storage. Я проверяю подлинность с помощью учетной записи службы и отправляю свои аудиоданные в хранилище. Все работает, файл загружается. Я понимаю - но может я ошибаюсь? - что «вызывающий абонент» не имеет разрешения на чтение аудиоданных из хранилища.

Я безуспешно играл с разрешениями через консоль Google. Я читал документы, но меня очень смущает. У учетной записи службы, которую я использую (я полагаю, это «вызывающий»?), Есть разрешения владельца на проект. И раньше все нормально работало, ничего не менял.

Я не публикую код, потому что, если я правильно понимаю, проблема не в коде моего приложения, а в моих настройках Google Cloud. Буду благодарен за любую идею или разъяснение концепций!

Спасибо.


person Ben    schedule 12.05.2017    source источник
comment
Владение проектом не обязательно означает, что учетная запись службы имеет разрешение на чтение объекта. Возможно, объект был загружен другой учетной записью, которая указала частный ACL или аналогичный. Может быть, попробовать явно добавить учетную запись службы в качестве читателя для этого конкретного объекта?   -  person Brandon Yarbrough    schedule 12.05.2017
comment
Ха, да. Фиксированный. Большое спасибо!   -  person Ben    schedule 12.05.2017
comment
Предложите преобразовать комментарий в ответ и решить вопрос.   -  person blambert    schedule 15.05.2017
comment
@BrandonYarbrough Как вы, возможно, попытаетесь явно добавить учетную запись службы в качестве читателя для этого конкретного объекта?   -  person Ted Taylor of Life    schedule 27.07.2017
comment
@TedTaylorofLife Либо через консоль, либо с помощью команды типа gsutil acl ch -u [email protected]:R gs://bucket/object   -  person Brandon Yarbrough    schedule 27.07.2017
comment
@BrandonYarbrough, так что сначала запустите gsutil acl ch -u [email protected]:R gs://mypath/nameoffile.flac, а затем python transcribe_async.py gs://mypath/nameoffile.flac, правильно?   -  person Ted Taylor of Life    schedule 27.07.2017


Ответы (2)


Владение проектом не обязательно означает, что учетная запись службы имеет разрешение на чтение объекта. Возможно, объект был загружен другой учетной записью, которая указала частный ACL или аналогичный.

Убедитесь, что учетная запись службы имеет доступ к объекту, предоставив ей необходимые разрешения для всей корзины или для самого конкретного объекта.

Это можно сделать с помощью gsutil acl. Дополнительную информацию и дополнительные методы можно найти в официальной документации .

Например, следующая команда дает вашей учетной записи службы разрешение READ для объекта:

gsutil acl -r ch -u [email protected]:R gs://bucket/object

И эта команда дает вашей учетной записи службы разрешение READ для всего сегмента:

gsutil acl -r ch -u [email protected]:R gs://bucket
person Community    schedule 11.08.2017

В облачном видении Google, когда вы создаете учетные данные с помощью ключа учетной записи службы, вы должны создать роль и установить ее владельца и получить доступ ко всем разрешениям.

person Bhanu chander sheeram    schedule 28.01.2019