4

私は、Google Cloud API Gateway を使用してさまざまなエンドポイントをさまざまなサービスにルーティングする大規模な API を構築中です。サーバーレスの Cloud Functions もあれば、Kubernetes クラスタ内の Rails アプリによって提供されるものもあります。

クライアントからの認証されていないアクセスを必要とする情報エンドポイントの選択があります。ここでは、情報はめったに変更されません (数か月に 1 回程度)。私は、これらのエンドポイントの内容を Google Cloud Storage に (誰でも読めないバケットに) 書き込んでから、API Gateway 構成が特定のエンドポイントをそれらに向けられるようにしたいと考えていました (誰でも読めるバケットでは対応できません)。このプロジェクトのセキュリティ基準)。

API ゲートウェイ用のカスタム サービス アカウントを作成し、関連するバケットのStorage Object Viewerロールを付与しました。

しかし、そのサービス アカウントを使用して API 構成を作成し、Postman でエンドポイントを要求した後、期待した JSON 出力を取得する代わりに、Google サインイン ページの HTML が表示されます。

私の 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'

そして、これは郵便配達員の応答です:

Google ログイン HTML を示す Postman スクリーン グラブ

このセットアップを機能させる方法、またはここで何が起こっているかをデバッグする方法はありますか? Cloud Functions と JWT のaud価値に関して同様の問題を抱えている人を見てきましたが、彼らにとってうまくいった方法に従っても、Cloud Storage には何の影響もないようです。

どんな助けでも大歓迎です!(私は GCloud の世界の初心者なので、この種のほとんど静的なエンドポイントの代替実装があれば、それもクールです。)

4

1 に答える 1

1

正しい URL を使用していません。https://storage.googleapis.com/<BUCKET_NAME>/products.jsonの代わりに使用https://storage.cloud.google.com/<BUCKET_NAME>/products.json

于 2021-04-20T19:05:32.897 に答える