Función segura en la nube de Google "hola mundo"

Función segura en la nube de Google "hola mundo"

Necesito una función de nube muy segura, así que estoy intentando colocarla detrás de una puerta de enlace API. La función funciona bien cuando la llamo directamente pasando un token de portador en el encabezado:

https://us-central1-<my-project>.cloudfunctions.net/<my-hello-function>

Sin embargo, quiero permitir que se use con un token API a través de API Gateway (y luego hacer algo más útil que decir "hola"):

https://my-gateway-xxxxxxxx.uc.gateway.dev/v1/stats&key=<my-API-token>

Cuando intento llamarlo me sale:

{ "code": 404, "message": "La ruta no coincide con ninguna plantilla de URI de requisito". }

Mi archivo de configuración de API Gateway:

swagger: "2.0"
info:
  title: my-gateway
  version: "1.0.0"
basePath: "/v1"
schemes:
 - "https"
produces:
 - application/json
paths:
  /stats:
    get:
      tags:
      - "stats"
      summary: "get service stats"
      description: "Returns statistics"
      operationId: "hello_world"
      #produces:
      #- "application/json"
      parameters:
      - name: "since"
        in: "header"
        description: "Date to retrieve information"
        required: false
        type: "string"
        format: "date"
      x-google-backend:
          address: https://us-central1-<my-project>.cloudfunctions.net/<my-hello-function>
          path_translation: CONSTANT_ADDRESS
          protocol: h2
      responses:
        "200":
          description: "successful operation"
          schema:
            $ref: "#"
        "400":
          description: "Invalid datetime supplied"
        "404":
          description: "Unknown path"
      security:
      - api_key: []
securityDefinitions:
  api_key:
    type: "apiKey"
    name: "api_key"
    in: "query"
definitions:
  ApiResponse:
    type: "object"
    properties:
      code:
        type: "integer"
        format: "int32"
      type:
        type: "string"
      message:
        type: "string"

¿Qué falta? ¿Qué estoy haciendo mal?

Respuesta1

espero que estés bien.

No soy un experto, pero después de leer los documentos y revisar su fragmento nuevamente, ¿no debería estar el namein en lugar de si eso es lo que usa en la URL?securityDefinitionskeyapi_key

mi-gateway-xxxxxxxx.uc.gateway.dev/v1/stats&llave=<mi-token-API>

Respuesta2

Para utilizar una clave API pasándola a través de la URL, debe enviarla como parámetro de consulta; la forma en que la envía es como intentar ingresar a una ruta con nombre stats&key=en lugar de estadísticas.

Tu URL debe ser algo como:

https://my-gateway-xxxxxxxx.uc.gateway.dev/v1/stats?key=<my-API-token>

Reemplace la&en el parámetro clave con un?

información relacionada