Я нахожусь в процессе создания большого API, который будет использовать Google Cloud API Gateway для маршрутизации различных конечных точек к различным службам - некоторые из них могут быть бессерверными облачными функциями, другие будут обслуживаться приложением Rails в наших кластерах Kubernetes и так далее.
У нас будет набор информационных конечных точек, для которых требуется неаутентифицированный доступ от клиента, при этом информация будет меняться редко - примерно раз в несколько месяцев. Я надеялся записать содержимое этих конечных точек в Google Cloud Storage (в сегменте, который не доступен для чтения всем), а затем разрешить конфигурации шлюза API указывать на них определенные конечные точки (сегмент, доступный для чтения во всем мире, не будет соответствовать критерии безопасности для этого проекта).
Я создал пользовательскую учетную запись службы для шлюза API и дал ей роль средства просмотра объектов хранилища для соответствующего сегмента.
Однако после создания конфигурации API с использованием этой учетной записи службы и запроса конечной точки в Postman вместо ожидаемого вывода JSON я вижу HTML-код страницы входа в Google.
Определение конечной точки в моей конфигурации OpenAPI:
paths:
/products:
get:
x-google-backend:
address: https://storage.cloud.google.com/<BUCKET_NAME>/products.json
summary: List of products in JSON format
operationId: listProductsJson
produces:
- application/json
responses:
"200":
description: a product list
schema:
type: array
items:
$ref: '#/definitions/Product'
И это ответ Почтальона:
Есть ли способы заставить эту настройку работать или даже отладить, что здесь происходит? Я видел, как у людей были похожие проблемы с облачными функциями и значением JWT aud
, но следование тому, что сработало для них, похоже, не оказывает никакого влияния на облачное хранилище.
Любая помощь приветствуется! (Я новичок в мире GCloud, поэтому, если у кого-то есть альтернативные реализации для таких в основном статических конечных точек, это тоже было бы круто.)