Publique una tabla de datos de MaxCompute como una API REST de acceso público mediante Cloud-native API Gateway y DataWorks.
Objetivo del ejemplo: crear una API para la tabla
user_infoen MaxCompute. Esta API permite a los solicitantes consultar información de usuarios al proporcionar unuser_id.Resultado final: una API autenticada y de acceso público disponible en una URL como
https://api.example.com/v1/user/info?user_id=10001.
Si utiliza legacy API Gateway, consulte Generate an API from a data source (API Gateway).
Este tema toma MaxCompute como ejemplo. Para obtener una lista de orígenes de datos compatibles, consulte Configure data sources.
Funcionamiento
El siguiente diagrama muestra la ruta de la solicitud desde el solicitante hasta el origen de datos, así como la función de cada componente.
Requisitos previos
|
Categoría |
Requisito |
Descripción |
|
Cuenta y permisos |
Cuenta de Alibaba Cloud y permisos |
Su cuenta debe tener permisos para usar Cloud-native API Gateway, DataWorks y MaxCompute. Debe contar con el rol Development para el espacio de trabajo correspondiente en DataWorks. |
|
Activación de servicios |
Active los servicios en la nube obligatorios |
Activate Cloud-native API Gateway. Nota
|
|
Preparación de recursos |
Resource group serverless |
En la configuración de red del resource group serverless, asocie la VPC y el vSwitch para Data Service. Importante
Tome nota de la VPC de este resource group. Se recomienda que la instancia de gateway y el resource group de Data Service compartan la misma VPC para simplificar la conectividad de red. |
|
Datos de prueba de MaxCompute |
En su proyecto de MaxCompute, ejecute la siguiente instrucción DDL para crear la tabla Ejecute la siguiente instrucción DML para insertar datos de prueba: |
|
|
Origen de datos de DataWorks |
En la sección de workspace management de DataWorks, configure un origen de datos que apunte al proyecto de MaxCompute descrito anteriormente. |
Paso 1: Preparar recursos básicos en la consola de Cloud-native API Gateway
Cree la instancia de gateway, el nombre de dominio público y el recurso de API REST que alojarán su servicio de API.
1. Crear una instancia de gateway
Una instancia de gateway es el motor que procesa las solicitudes de API.
Inicie sesión en la consola de Cloud-native API Gateway. En el panel de navegación izquierdo, haga clic en Instance.
-
Seleccione una región en la barra de navegación superior.
ImportanteLa región debe ser la misma que la de su espacio de trabajo de DataWorks.
En la página Instance, haga clic en Create Instance.
-
En la página de compra, configure los siguientes parámetros:
Commodity Type: se admiten Pay-as-you-go y Subscription. Para fines de prueba, puede seleccionar pay-as-you-go.
Gateway Name: introduzca un nombre personalizado fácil de identificar, como
dataservice-prod.Gateway Specification: seleccione nodo único para pruebas o multinodo para cumplir con el SLA de producción.
Network Access Type: seleccione Public o Public + Private para habilitar el acceso a Internet. El uso de acceso público genera cargos por tráfico.
-
VPC: seleccione una VPC.
ImportanteSe recomienda encarecidamente utilizar la misma VPC que el resource group serverless mencionado en los requisitos previos. Si las VPC son diferentes, deberá crear manualmente un servicio backend más adelante.
Zone Selection: puede seleccionar Auto Assign o asignar manualmente instancias en distintas zonas y vSwitches.
Resource Group: seleccione un resource group según su política de gestión de recursos.
Haga clic en Buy Now y complete el pago. La creación de la instancia tarda entre 1 y 5 minutos aproximadamente. La instancia estará lista cuando su estado cambie a Running.
Create a gateway instance .
2. Agregar un nombre de dominio
Si solo necesita acceder a la API dentro de una VPC, no es necesario solicitar un nombre de dominio.
Un nombre de dominio funciona como punto de entrada de acceso público para la API.
En el panel de navegación izquierdo de la consola de Cloud-native API Gateway, haga clic en Domain Name. Asegúrese de que la región en la parte superior coincida con la de la instancia de gateway.
-
Haga clic en Add Domain Name y configure la siguiente información:
Domain Name: introduzca su propio nombre de dominio, como
api.example.com. Los nombres de dominio independientes utilizados en regiones de China deben completar ICP filing.Protocol: seleccione HTTPS para garantizar una transmisión segura de datos. También debe seleccionar un certificado SSL existente.
Other Settings: habilite Force HTTPS y Enable HTTP/2, y seleccione una TLS Version según sus requisitos de seguridad.
Add a domain name .
3. Crear una API REST
Una API REST agrupa APIs bajo una Base Path compartida. Un flujo de trabajo de DataWorks se vincula a una API REST.
En comparación con la versión anterior de API Gateway, una API REST equivale a un grupo de API.
En el panel de navegación izquierdo de la consola de Cloud-native API Gateway, haga clic en API. Verifique que la región en la parte superior sea la correcta.
Haga clic en Create API. En la página Create API, seleccione Create en la tarjeta REST API.
-
En el panel Create REST API, configure los siguientes ajustes:
API Name: asigne un nombre a su colección de APIs. El nombre debe ser único a nivel global dentro de la región actual, por ejemplo,
dataservice-user-api.Base Path: la ruta base de la API, que forma parte de la URL. Por ejemplo, establézcala en
/v1. La ruta de acceso final seráProtocol://DomainName/BasePath/APIPath.Version Management: habilítelo según sea necesario.
Create a REST API .
Paso 2: Crear y configurar una API en DataWorks
Defina la lógica de la API, conéctese al origen de datos y configure los parámetros en DataWorks.
1. Crear un flujo de trabajo
Un flujo de trabajo organiza APIs relacionadas y las asocia con una API REST en API Gateway.
Vaya a la consola de DataWorks. En el panel de navegación izquierdo, diríjase a Data Services > Service Development.
Haga clic en el icono de creación en la esquina superior izquierda y seleccione Create Workflow.
-
En el cuadro de diálogo Create Workflow, configure los siguientes ajustes:
Workflow Name: introduzca un nombre personalizado que sea único dentro del espacio de trabajo, como
User Query Workflow. El nombre debe tener entre 4 y 50 caracteres.Gateway Type: seleccione Cloud-native API Gateway.
-
REST API: en la lista desplegable, seleccione la API REST que creó en el Paso 1 (por ejemplo,
dataservice-user-api). Si no aparece, haga clic en el botón Refresh.ImportanteUna vez que un flujo de trabajo se asocia con una API REST, el vínculo no se puede modificar. Proceda con precaución.
2. Generar una API en modo asistente
En la página Service Development, pase el cursor sobre el icono de creación en la esquina superior izquierda y haga clic en Create API > Generate API.
-
En el cuadro de diálogo Generate API, seleccione Wizard Mode y configure la información básica de la API:
Location: seleccione el Workflow creado en el paso anterior (
User Query Workflow).API Name: introduzca un nombre para la API específica, como
Query User by User ID.APIPath: la ruta específica de la API, por ejemplo,
/user/info. Se concatena con laBase Pathpara formar la ruta URL completa. La ruta de la API debe comenzar con/y no puede exceder los 200 caracteres.Request Method: seleccione GET o POST. Al seleccionar GET, los parámetros de solicitud solo se pueden colocar en la cadena QUERY.
Response Type: seleccione JSON.
-
Haga clic en Create para ir a la página gráfica de edición de API.
NotaPara crear una API en modo script, consulte Create an API in script mode.
3. Configurar la API
En la página de edición de API, siga el flujo Select Table > Select Parameters > Configure Parameters para definir su API.
-
Seleccionar una tabla (origen de datos y tabla)
En la sección Select Table del lado izquierdo de la página, configure los siguientes ajustes:
Data Source Type: seleccione MaxCompute(ODPS).
Data Source Name: seleccione el origen de datos que configuró en los requisitos previos.
Data Table Name: seleccione la tabla
user_info.Si utiliza un origen de datos de MaxCompute, debe configurar el Acceleration Method para mejorar el rendimiento.
-
Seleccionar parámetros (solicitud y respuesta)
Después de seleccionar una tabla, la sección Select Parameters que se encuentra debajo enumera todas las columnas de la tabla.
Configurar parámetros de solicitud: seleccione la columna
user_idy haga clic en Set as Req Param.Configurar parámetros de respuesta: seleccione las columnas
user_idyuser_name, y haga clic en Set as Resp Param.
-
Configurar detalles de parámetros de solicitud: en la pestaña Request Parameters del lado derecho de la página, establezca el Sample Value para el parámetro
user_id(por ejemplo,10001). Esto facilita las pruebas posteriores.Mejor práctica : Establezca columnas indexadas como parámetros de solicitud para optimizar el rendimiento de las consultas.
-
Configurar resource group de servicio y entorno
En la sección Service Resource Group del lado derecho de la página, configure los siguientes ajustes:
Resource Group Type: debe seleccionar Exclusive Resource Group for Data Service y elegir un resource group asociado al espacio de trabajo actual en la lista desplegable.
-
Environment Configuration:
Timeout: tiempo máximo que Cloud-native API Gateway espera una respuesta de DataWorks, por ejemplo,
3segundos.Maximum Number of Data Records for a Single Request: número máximo de registros devueltos por una sola llamada a la API, por ejemplo,
2000.
-
Configurar autenticación de seguridad
En la sección de autenticación de seguridad de la derecha, habilite la autenticación de consumidor y seleccione un tipo de autenticación.
NotaDataWorks crea automáticamente un consumidor con el mismo nombre que el espacio de trabajo en Cloud-native API Gateway. No es necesario crear uno manualmente.
Método de autenticación
Descripción
Escenario aplicable
API Key
El cliente incluye credenciales en cada solicitud, y el gateway verifica su validez y permisos. Adecuado para operaciones no sensibles. Es menos seguro que JWT y HMAC; proteja las credenciales con cuidado.
Adecuado para escenarios de integración ligera y rápida con requisitos de seguridad moderados.
JWT
JSON Web Token (JWT) utiliza firmas HMAC, RSA o ECDSA para transmitir afirmaciones verificables entre cliente y servidor, lo que permite la verificación de identidad y el control de acceso en el gateway.
Adecuado para sistemas distribuidos y escenarios de inicio de sesión único (SSO).
HMAC
El cliente firma el contenido de la solicitud con una clave de firma y envía la firma junto con la solicitud para su verificación en el servidor.
Adecuado para escenarios con altos requisitos de integridad de datos y prevención de manipulación.
Guardar la API: después de completar todas las configuraciones, haga clic en el icono Save en la barra de herramientas superior.
Paso 3: Probar, enviar y desplegar la API
1. Probar la API
Una API debe pasar las pruebas antes de poder enviarse.
En la página de edición de API, haga clic en el botón Test APIs de la barra de herramientas.
En el cuadro de diálogo Test APIs, introduzca un valor de muestra existente para el parámetro de solicitud
user_id(por ejemplo,10001) y luego haga clic en Start Test.Consulte los Response Details del lado derecho para verificar si los datos cumplen con lo esperado. La Response Duration sirve para evaluar el rendimiento.
Si la prueba falla, revise las configuraciones del origen de datos, la tabla, los parámetros o el resource group según el mensaje de error.
2. Enviar la API
Después de una prueba exitosa, envíe la API para generar una versión desplegable.
En la página de edición de API, haga clic en el botón Submission de la barra de herramientas.
Tras el envío, el sistema genera una versión de la API, visible en la pestaña Version Management del lado derecho.
-
Si hay un proceso de aprobación configurado para su espacio de trabajo, el estado de la versión de la API será To Be Requested. Deberá hacer clic en Request to Publish para iniciar una solicitud. Una vez que el aprobador autorice la solicitud, el estado cambiará a Can Be Published.
Si no hay ningún proceso de aprobación configurado, el estado de la versión suele ser Can Be Published directamente.
3. Desplegar la API en Cloud-native API Gateway
Despliegue la API en el entorno de producción.
En la pestaña Version del lado derecho de la página de edición de API, busque la versión con estado Can Be Published y haga clic en Publish en la columna Actions.
-
En el cuadro de diálogo Publish API to Cloud-native API Gateway, configure los siguientes tres ajustes obligatorios:
-
Domain Name: seleccione el nombre de dominio que agregó en el Paso 1.
ImportanteTodas las APIs bajo la misma API REST comparten el mismo nombre de dominio. Cambiar el nombre de dominio durante el despliegue afectará al nombre de dominio utilizado para invocar todas las APIs bajo la misma API REST.
Gateway Instance: seleccione la instancia de gateway que creó en el Paso 1.
-
Backend Service:
Si la VPC de la instancia de gateway es la misma que la VPC del resource group de DataWorks, seleccione Default.
-
Si las VPC son diferentes, debe seleccionar un servicio backend creado en Cloud-native API Gateway.
-
Después del despliegue, la API estará activa y podrá invocarse mediante la URL de acceso.
Paso 4: Invocar y verificar la API
Según el método de autenticación configurado en el Paso 2, utilice credenciales para acceder a la API.
En la pestaña Version de la API desplegada, busque la versión que acaba de desplegar y haga clic en Service Management a la derecha para ir a la página de gestión de API y consultar los detalles de la API.
En la página de gestión de API, haga clic en la dirección bajo API Name/Path para consultar los detalles de la API.
-
Construir y ejecutar una llamada
URL de muestra: copie la URL de acceso desde los detalles de la API.
Información de autenticación: vaya a Service Management > Call APIs > Cloud-native API Gateway para consultar los detalles de autenticación de los distintos métodos.
-
Método de llamada: utilice
curlu otro cliente HTTP, e incluya laAppKeyy elAppSecreten el encabezado de la solicitud para realizar la llamada.Call an API .
Ejemplos de llamada con Curl:
Autenticación API Key
Replace api.example.com with your actual domain name curl "https://api.example.com/v1/user/info?user_id=10001" \ -X GET \ -H "Content-Type: application/json; charset=utf-8" \ -H "Authorization: Bearer <API_KEY>"
Autenticación HMAC
For the detailed calling process, see Use HMAC authentication to call an API.
Replace api.example.com with your actual domain name curl "https://api.example.com/v1/user/info?user_id=10001" \ -X GET \ -H "x-ca-key: Access Key" \ -H "x-ca-signature: <Base64EncodedSignature>" \ -H "x-ca-signature-method: HmacSHA256" \ -H "Date: Wed, 01 Jan 2025 00:00:00 GMT" \ -H "Accept: application/json" \
-
Ver la respuesta esperada: si todo funciona correctamente, recibirá una respuesta JSON similar a la siguiente:
{ "data": { "user_id": 10001, "user_name": "Alice" }, "success": true }
Compatibilidad con múltiples versiones para APIs
Cloud-native API Gateway admite el despliegue de la misma API en varias instancias de gateway, lo que le permite dirigirse a diferentes entornos (pruebas frente a producción) o atender distintas necesidades empresariales.
Desplegar una API en varias instancias de gateway
En el panel Version, haga clic en Publish para la versión con estado Can Be Published. En el cuadro de diálogo Publish API to Cloud-native API Gateway, seleccione una Gateway Instance diferente para desplegar la API en la instancia de gateway correspondiente. Puede repetir este proceso para desplegar la misma API en varias instancias.
Dentro de la misma instancia de gateway, desplegar una nueva versión anula automáticamente el despliegue de la anterior. Las versiones en diferentes instancias de gateway son independientes y pueden coexistir en estado deployed.
Visualización de múltiples versiones en la gestión de servicios
Después de desplegar una API en varias instancias de gateway, la visualización en la página Service Management cambia de la siguiente manera.
Lista de gestión de APIs
En la pestaña Published APIs de Service Management, el mismo ID de API aparece en varios registros, uno por cada instancia de gateway desplegada. La columna Gateway Instance muestra el nombre de la instancia y el ID del gateway para cada registro.
Página de detalles de la API
Haga clic en el nombre de una API para abrir su página de detalles. Un selector de Gateway Instance en la parte superior le permite alternar entre instancias para consultar la URL de acceso, los parámetros de solicitud y los parámetros de respuesta de cada despliegue.