Entrega modelos de aprendizaje automático mediante Apigee Edge y AI Platform

En este instructivo, aprenderás cómo configurar Apigee Edge con AI Platform Prediction.

Cuando se implementan modelos de aprendizaje automático, la preparación de datos y el entrenamiento de modelos son solo dos factores que se deben tener en cuenta. También necesitas considerar lo siguiente:

  • Entregar predicciones teniendo en cuenta la escalabilidad, el rendimiento y la disponibilidad
  • Restringir el acceso a la funcionalidad según quién sea el usuario, por ejemplo, un usuario interno de tu empresa o un usuario de una organización asociada externa
  • Aplicar cuotas y políticas de uso mediante claves de API
  • Gestionar el ciclo de vida de las claves de API, en particular la distribución y revocación
  • Otorgar acceso a tus API de AA a través de un proceso de aprobación manual o automatizado
  • Lanzar versiones de modelos nuevas a medida que se actualizan los modelos de aprendizaje automático

Google Cloud proporciona servicios administrados para el alojamiento de modelos y la administración de API a fin de acceder a las funciones de predicción de tus modelos alojados.

AI Platform es un servicio de aprendizaje automático administrado y escalable disponible en Google Cloud. Además de proporcionar entrenamiento mediante la infraestructura distribuida de Google, AI Platform ofrece alojamiento de modelos para entregar predicciones en línea y por lotes a gran escala. La infraestructura subyacente usa el balanceo de cargas global de Google para proporcionar predicciones de alto rendimiento a usuarios de todo el mundo.

En los casos prácticos de latencia baja, la predicción en línea de AI Platform permite generar predicciones para tus modelos alojados mediante la exposición de una API de REST que muestra predicciones directamente en la respuesta. La infraestructura de implementación para alojar tu modelo se escala de manera automática según la demanda, sin necesidad de mantener configuraciones complejas o administrar el aprovisionamiento de infraestructura. AI Platform también simplifica el proceso de actualización de modelos de predicción mediante características de control de versiones de modelos.

Si deseas habilitar características de administración de API más amplias para tu servicio, puedes usar la predicción en línea de AI Platform junto con Apigee Edge a fin de habilitar las siguientes características:

  • Seguridad detallada y políticas de control de acceso para tu API
  • Estadísticas de API para comprender el uso
  • Límite de frecuencia de API y aplicación de otras cuotas
  • Acceso de terceros a tu API a través de claves de desarrollador
  • Monetización de tu API de AI Platform alojada en la predicción en línea de AI Platform.
  • Cambios del modelo transparente por medio de la dirección de las solicitudes de predicción a través de una fachada de API

Objetivos

  • Implementar proxies de API mediante Apigee Edge para tus modelos alojados en AI Platform
  • Tener acceso seguro a tus modelos alojados con claves de API
  • Especificar procesos de aprobación manuales y automáticos para la distribución de claves de API
  • Crear productos de API para aplicar diferentes políticas de uso, como cuotas basadas en el tiempo, de acuerdo con un tipo de suscriptor

Costos

En este instructivo, se usan los siguientes componentes facturables de Google Cloud:

Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios. Es posible que los usuarios nuevos de Google Cloud sean aptos para obtener una prueba gratuita.

Además de los componentes facturables de Google Cloud, en este instructivo se usa Apigee Edge.

Antes de comenzar

Crea un proyecto de Google Cloud

  1. Accede a tu Cuenta de Google.

    Si todavía no tienes una cuenta, regístrate para obtener una nueva.

  2. En la página de selección de proyectos de Cloud Console, selecciona o crea un proyecto de Cloud.

    Ir a la página Selector de proyectos

  3. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud. Obtén información sobre cómo confirmar que tienes habilitada la facturación para tu proyecto.

  4. Habilita la API AI Platform.

    Habilita la API

Si no tienes el SDK de Cloud instalado, usa Cloud Shell para implementar la aplicación. Cloud Shell proporciona un entorno de shell con el SDK de Cloud preinstalado. En el resto del instructivo, se usa Cloud Shell.

Crea una cuenta de Apigee Edge

Sigue los pasos en Crea una cuenta de Apigee Edge. Apigee proporciona una cuenta de evaluación sin costo para probar la solución que puedes usar si realizas los pasos de este instructivo.

Arquitectura de soluciones

En este instructivo, implementarás modelos de TensorFlow en AI Platform y usarás predicciones en línea a fin de que esos modelos estén disponibles para la entrega. Para cada modelo alojado, implementarás un proxy de API para Apigee Edge que use una cuenta de servicio para autenticar solicitudes desde aplicaciones cliente. Luego, Apigee Edge reenviará las solicitudes a la predicción en línea de AI Platform. Apigee Edge aplica políticas de API como las cuotas de uso, el límite de frecuencia y la verificación de la clave de API, y puede imponer aún más las variaciones de la política, como las variaciones de cuota por la clave de API, mediante el uso de los productos de API que configures. En el siguiente diagrama, se ilustra esta arquitectura.

Implementación de modelos de TensorFlow en AI Platform y uso de la predicción en línea a fin de que esos modelos estén disponibles para la entrega

En la siguiente tabla, se explican los conceptos del diagrama con más detalle:

Concepto Descripción
Aplicación Una aplicación llama a las predicciones en tu modelo de aprendizaje automático a través de una API alojada en Apigee Edge. La solicitud HTTP se realiza en un extremo que administra un proxy de API. El proxy de la API en Apigee Edge realiza una verificación de clave de API para autenticación y aplica niveles específicos de acceso y funcionalidad, según lo define el producto de API asociado con la clave de API.
Proxy de API Un proxy de API reenvía solicitudes desde un extremo de proxy (expuesto a las aplicaciones cliente) hacia un extremo de destino. que es el extremo de tu modelo alojado para solicitar predicciones en línea de AI Platform.
Producto de API Un producto de API agrupa los recursos de Apigee (como los proxies de API) para proporcionar un nivel específico de acceso y funcionalidad a los desarrolladores de apps cliente. Por ejemplo, el producto de API puede aplicar límites de acceso, métodos de aprobación de claves de API y otras configuraciones para los proxies de API que se usan a fin de acceder a predicciones en línea en modelos alojados.
Modelo alojado Un modelo alojado es un modelo de AA entrenado que se implementó en AI Platform. Para solicitar predicciones de tus modelos alojados, usa la predicción en línea y la predicción por lotes de AI Platform.

En lugar de exponer el modelo alojado en AI Platform directamente a los usuarios, la arquitectura de esta solución usa Apigee Edge para permitir que los usuarios externos llamen a los modelos alojados por medio de un proxy de API. Las solicitudes de proxy mediante Apigee Edge permiten aplicar diferentes políticas de uso.
Elementos del modelo En este instructivo, a fin de implementar un modelo alojado de TensorFlow en AI Platform, deberás exportar tu modelo en el formato de modelo guardado de TensowFlow y almacenar los elementos del modelo resultante en un depósito de Cloud Storage. Luego, las predicciones en línea o por lotes de AI Platform podrán hacer predicciones con base en el modelo.

Situación de ejemplo

En este instructivo, usarás Apigee Edge a fin de crear dos productos de API de ejemplo para un modelo alojado simple (predicción de ingresos a partir de datos del censo) implementado en AI Platform.

En el siguiente diagrama, se explican los dos productos API de ejemplo: un producto de prueba de predicción de ingresos con cuotas de uso bajas y un producto Premium de predicción de ingresos con cuotas elevadas. En la situación de ejemplo, debes registrar dos desarrolladores y aplicaciones para probar la API con diferentes restricciones que imponen los dos productos de API.

Dos productos de API de ejemplo para un modelo alojado simple implementado en AI Platform

Crea una cuenta de servicio de Google Cloud

Apigee Edge necesita una cuenta de servicio de Google Cloud para autenticar sus solicitudes de predicción en línea de AI Platform.

GCLOUD

  1. Abre Cloud Shell:

    Ir a Cloud Shell

    Debes usar Cloud Shell a lo largo de este instructivo, a menos que se indique lo contrario.

  2. Configura una variable de entorno para el nombre de tu cuenta de servicio:

    SERVICE_ACCOUNT=income-prediction-api@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com
    
  3. Crea una cuenta de servicio:

    gcloud iam service-accounts create \
        income-prediction-api \
        --display-name "Apigee service account"
    
  4. Crea una clave privada para la cuenta de servicio:

    gcloud iam service-accounts keys create \
        --iam-account ${SERVICE_ACCOUNT} \
        ~/key.json
    

    Mediante este comando, se guarda un archivo de claves privadas en ${HOME}/key.json. Mantén este archivo seguro; lo necesitarás para los pasos posteriores.

Console

  1. En Cloud Console, ve a la página IAM y administración > Cuentas de servicio de tu proyecto:

    IR A LA PÁGINA CUENTAS DE SERVICIO

  2. Haz clic en Crear cuenta de servicio y, luego, ingresa los detalles para la cuenta de servicio:

    1. Proporciona un nombre de cuenta de servicio, como Income Prediction API.
    2. Proporciona un ID de cuenta de servicio, como income-prediction-api.
    3. Haz clic en Crear.
  3. En la página Otorga a esta cuenta de servicio acceso al proyecto (opcional), deja en blanco la lista desplegable Función y haz clic en Continuar.

  4. En la página Otorgar a los usuarios acceso a esta cuenta de servicio (opcional), desplázate hacia abajo y haz clic en Crear clave:

    1. Selecciona el tipo de clave JSON, que es la opción predeterminada.
    2. Haz clic en Crear. El navegador inicia la descarga de tu archivo de claves privadas. Mantén este archivo en un lugar seguro; lo necesitarás más tarde.
    3. Haz clic en Listo.

Implementa el modelo de predicción de ingresos en AI Platform

En este instructivo, se usa una muestra de código existente para entrenar un modelo de predicción de ingresos con datos del censo. Para mayor comodidad, se incluye un modelo entrenado en este repositorio de códigos de instructivo en GitHub.

Completa los pasos siguientes para implementar el modelo de predicción de ingresos previamente entrenado en AI Platform:

  1. Abre Cloud Shell:

    Ir a Cloud Shell

  2. En Cloud Shell, define tus variables de entorno, las que usarás en comandos posteriores:

    GCS_MODEL_BUCKET=${GOOGLE_CLOUD_PROJECT}-ml-models
    MODEL_NAME=census
    MODEL_VERSION=v1
    MODEL_REGION=us-central1
    
  3. Clona los archivos del instructivo desde GitHub:

    cd ${HOME}
    
    git clone https://github.com/GoogleCloudPlatform/cloudml-apigee-serving.git
    
  4. Crea un depósito de almacenamiento regional en Cloud Storage para almacenar el modelo de predicción:

    gsutil mb -c regional -l ${MODEL_REGION} \
        -p ${GOOGLE_CLOUD_PROJECT} gs://${GCS_MODEL_BUCKET}
    
  5. Extrae y copia el modelo a Cloud Storage:

    cd ${HOME}/cloudml-apigee-serving/model
    
    tar zxvf census.tar.gz
    
    gsutil -m cp -rv census gs://${GCS_MODEL_BUCKET}
    
  6. Crea el modelo de predicción en AI Platform:

    gcloud ml-engine models create ${MODEL_NAME} \
         --regions ${MODEL_REGION}
    
  7. Crea una versión nueva del modelo de predicción:

    gcloud ml-engine versions create ${MODEL_VERSION} \
        --model ${MODEL_NAME} \
        --origin gs://${GCS_MODEL_BUCKET}/census \
        --runtime-version 1.6
    
  8. Obtén información sobre tu versión nueva:

    gcloud ml-engine versions describe ${MODEL_VERSION} \
        --model ${MODEL_NAME}
    

    El resultado es similar al siguiente:

    deploymentUri: your_bucket_path
    framework: TENSORFLOW
    isDefault: true
    lastUseTime: '2018-05-07T04:41:22Z'
    name: projects/your_project/models/census/versions/v1
    pythonVersion: '2.7'
    runtimeVersion: '1.6'
    state: READY
    
  9. Antes de continuar, asegúrate de poder ejecutar predicciones con éxito:

    gcloud ml-engine predict \
        --model ${MODEL_NAME} \
        --version ${MODEL_VERSION} \
        --json-instances ${HOME}/cmle-op-apigee-tutorial/model/test.json
    

    El resultado es similar al siguiente. Este verifica que tu modelo alojado se implementa de manera correcta en AI Platform y que se puede llamar a través de la predicción en línea de AI Platform.

    CLASS_IDS  CLASSES  LOGISTIC               LOGITS                PROBABILITIES
    [0]        [u'0']   [0.23072466254234314]  [-1.204223871231079]  [0.7692753076553345, 0.23072466254234314]
    

Implementa el proxy de API en Apigee Edge

Un proxy de API proporciona una forma para que los clientes llamen a tu modelo alojado a través de una API externa. El proxy de API realiza esta tarea mediante el envío de solicitudes de cliente por medio de un proxy desde una interfaz de API externa que aloja Apigee Edge hacia la API de predict de AI Platform para tu modelo alojado. La interfaz implementa un patrón de fachada de API, que protege a los usuarios de los cambios de extremos de destino a medida que se implementan nuevos modelos y versiones de modelos. Para obtener más información, visita la página sobre los proxies de API.

En una configuración de proxy de API, debes usar flujos para configurar los pasos de procesamiento ejecutados en tu solicitud a la API y su respuesta. Los pasos de procesamiento pueden incluir actividades como la generación y firmado de tokens web JSON (JWT), la adición de encabezados de solicitud y respuesta o el uso de características específicas de Apigee Edge. Apigee Edge proporciona una serie de políticas de API integradas para llevar a cabo estas actividades. Puedes agregar estas políticas a tus flujos de API.

Apigee Edge proporciona varias formas de implementar proxies de API, dentro de las que se incluyen una interfaz de administración web (se requiere inicio de sesión), la API de administración y las herramientas de línea de comandos.

En este instructivo, usarás apigeetool para crear los recursos de Apigee necesarios e implementar el proxy de API.

  1. Abre Cloud Shell:

    IR A Cloud Shell

  2. En Cloud Shell, configura las variables de entorno. Necesitarás estas variables más adelante. Reemplaza [YOUR_APIGEE_USER_EMAIL], [YOUR_APIGEE_ORGANIZATION], [YOUR_APIGEE_ENVIRONMENT] y [YOUR_APIGEE_USER_PASSWORD] por tus valores.

    • Tu cuenta de Apigee recibe de manera automática la función de administrador de la organización y tienes acceso de superusuario a todos los recursos dentro de la organización de Apigee. Obtén más información sobre la finalidad de las diferentes funciones de Apigee.
    • Tu organización de Apigee se crea de manera automática. Puedes encontrar el nombre de tu organización en la interfaz de administración web de Apigee en la esquina superior izquierda de la página donde se muestra el nombre de tu cuenta.
    • Se crearon de forma automática dos entornos de Apigee, llamados prueba y prod, para ti. Puedes usar cualquiera de los dos entornos en los pasos siguientes.

    1. Exporta las variables de entorno que requiere apigeetool:

      export APIGEE_USERNAME=[YOUR_APIGEE_USER_EMAIL]
      export APIGEE_ORGANIZATION=[YOUR_APIGEE_ORGANIZATION]
      
    2. Otra opción es exportar una variable de entorno para tu contraseña de Apigee:

      export APIGEE_PASSWORD=[YOUR_APIGEE_USER_PASSWORD]
      
    3. Configura otras variables de entorno necesarias para trabajar con tu entorno de Apigee:

      APIGEE_ENVIRONMENT=[YOUR_APIGEE_ENVIRONMENT]
      
    4. Mantén el nombre de caché de Apigee predeterminado como "google":

      APIGEE_CACHE=google
    5. Configura las variables de entorno para el nombre y la versión de tu modelo de AI Platform. Estas variables deben ser las mismas que los valores anteriores que usaste para implementar la versión del modelo:

      MODEL_NAME=census
      MODEL_VERSION=v1
      
    6. Configura una variable de entorno para la cuenta de servicio que usa Apigee a fin de llamar a la predicción en línea de AI Platform:

      SERVICE_ACCOUNT=income-prediction-api@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com
      
  3. Instala apigeetool, que debes usar para crear recursos de Apigee y con el fin de implementar el proxy de API:

    npm install -g apigeetool
    
    alias apigeetool=$(npm config get prefix)/bin/apigeetool
    
  4. Extrae la clave privada de tu cuenta de servicio del archivo de credenciales JSON que guardaste antes:

    PRIVATE_KEY=`sed -rne 's/^.*\"private_key\": \"(.*)\",$/\1/p' <  ${HOME}/key.json`
    
  5. Crea un mapa de clave-valor (KVM) encriptado para almacenar de forma segura el nombre de la cuenta de servicio y la clave privada en Apigee Edge:

    apigeetool createkvmmap \
        -e ${APIGEE_ENVIRONMENT} \
        --encrypted \
        --mapName "secrets"
    
  6. Agrega el nombre de la cuenta de servicio al KVM encriptado:

    apigeetool addEntryToKVM \
        -e ${APIGEE_ENVIRONMENT} \
        --mapName "secrets" \
        --entryName "service-account" \
        --entryValue "${SERVICE_ACCOUNT}"
    
  7. Agrega la clave privada al KVM encriptado:

    apigeetool addEntryToKVM \
        -e ${APIGEE_ENVIRONMENT} \
        --mapName "secrets" \
        --entryName "private-key" \
        --entryValue "`echo -e ${PRIVATE_KEY}`"
    
  8. Actualiza el extremo de proxy de la API al modelo implementado en AI Platform. El proxy de API reenvía las solicitudes al método projects.predict para tu modelo alojado en la predicción en línea de AI Platform.

    sed -i \
        -e "s/\[project\]/${GOOGLE_CLOUD_PROJECT}/" \
        -e "s/\[model-name\]/${MODEL_NAME}/" \
        -e "s/\[model-version\]/${MODEL_VERSION}/" \
        ${HOME}/cmle-op-apigee-tutorial/apiproxy/targets/default.xml
    
  9. Crea una caché de Apigee para el almacenamiento temporal de tokens OAuth2 de acceso que muestra el servidor de autorización de Google:

    apigeetool createcache \
        -e ${APIGEE_ENVIRONMENT} \
        -z ${APIGEE_CACHE}
    
  10. Otorga permisos de administración de identidades y accesos (IAM) para permitir que tu cuenta de servicio solicite predicciones en tu modelo. A fin de otorgar estos permisos, agrega la vinculación de política de IAM para el modelo census, de la siguiente manera:

    gcloud ml-engine models add-iam-policy-binding \
        ${MODEL_NAME} \
        --member=serviceAccount:${SERVICE_ACCOUNT} \
        --role=roles/ml.modelUser
    
  11. Implementa el proxy de API:

    apigeetool deployproxy  \
        -e ${APIGEE_ENVIRONMENT} \
        -n income_prediction -d ${HOME}/cmle-op-apigee-tutorial
    

Crea productos de API para distribuir tus API

Puedes usar un producto de API de Apigee para configurar niveles específicos de acceso y funcionalidad que se exponen a los desarrolladores. Por ejemplo, puedes crear dos productos de API a fin de reflejar los niveles de servicio "Prueba" y "Premium" para tus modelos alojados en AI Platform, en los que cada nivel se diferencia por cuota permitida, funcionalidad accesible y otras características.

En esta sección, crearás dos productos de API: Predicción de ingresos de prueba y Predicción de ingresos Premium. Configura ambos productos de API para usar el proxy de API que implementaste en el paso anterior, pero aplica políticas de uso diferentes, como se explica aquí:

  • El producto de API de Predicción de ingresos de prueba impone una cuota de uso diario baja, pero permite a los desarrolladores obtener claves de API a través de un proceso automático. Esta política puede reflejar un nivel de "prueba gratuita", en el que proporcionas acceso simple a tu API y límites de uso relativamente bajos.

  • El producto de API Predicción de ingresos Premium proporciona una cuota de uso diario más alta, pero requiere que los desarrolladores pasen por un proceso de aprobación manual. Esta política puede reflejar un nivel pago para tu API que proporciona acceso y límites de uso elevados.

Para crear los productos de API, sigue estos pasos.

  1. Crea el producto de API de Predicción de ingresos de prueba:

    apigeetool createProduct \
        --approvalType "auto" \
        --environments ${APIGEE_ENVIRONMENT} \
        --proxies income_prediction \
        --productName "income_prediction_trial" \
        --productDesc "Free trial API for income prediction." \
        --quota 10 \
        --quotaInterval 1 \
        --quotaTimeUnit "day"
    
  2. Crea el producto de API Predicción de ingresos Premium:

    apigeetool createProduct \
        --approvalType "manual" \
        --environments ${APIGEE_ENVIRONMENT} \
        --proxies income_prediction \
        --productName "income_prediction_premium" \
        --productDesc "Premium API for income prediction." \
        --quota 10000 \
        --quotaInterval 1 \
        --quotaTimeUnit "day"
    

Crea perfiles de desarrollador

Un administrador de Apigee Edge o los individuos que usan un flujo de registro de autoservicio pueden crear los perfiles de desarrollador.

  1. Crea un perfil de desarrollador para John:

    apigeetool createDeveloper \
        --email john@example.com \
        --firstName John \
        --lastName Citizen \
        --userName john@example.com
    
  2. Crea un segundo perfil de desarrollador para Sally:

    apigeetool createDeveloper \
        --email sally@example.com \
        --firstName Sally \
        --lastName Resident \
        --userName sally@example.com
    

Registra aplicaciones de desarrollador

En esta sección, registra de manera manual las aplicaciones de desarrollador para los dos perfiles de desarrollador.

Cuando completas con éxito cada uno de los siguientes comandos, verás una respuesta JSON impresa en la terminal. En cada comando, ten en cuenta el valor de la propiedad consumerKey, que es la clave de API generada para la aplicación de desarrollador.

  1. Registra la aplicación de desarrollador FooApp y asóciala con John, para usarla con el producto de API de Prueba de predicción de ingresos. Este comando usa jq para extraer el valor de la propiedad consumerKey de la respuesta. Ten en cuenta ese valor.

    FOOAPP_API_KEY="$(apigeetool createApp \
        --apiProducts "income_prediction_trial" \
        --name "FooApp" \
        --email john@example.com \
        | jq -r '.credentials[0].consumerKey')"
    
  2. Registra la aplicación de desarrollador BarApp y asóciala con Sally para usarla con el producto de API Predicción de ingresos premium. Ten en cuenta el valor de consumerKey en el resultado.

    BARAPP_API_KEY="$(apigeetool createApp \
        --apiProducts "income_prediction_premium" \
        --name "BarApp" \
        --email sally@example.com \
        | jq -r '.credentials[0].consumerKey')"
    

Prueba el proxy de API

A fin de probar el proxy de API, ahora puedes usar la clave de API para llamar a la API de Predicción de ingresos.

  1. Prueba la clave de API (el valor de la propiedad consumerKey) en el caso de la aplicación FooApp, que está registrada para el desarrollador John.

    curl -s -X POST \
        -H "Content-Type: application/json" \
        -H "X-APIKEY: ${FOOAPP_API_KEY}" \
        -d '{
            "instances": [{
                "age": 25,
                "workclass": "Private",
                "education": "Some-college",
                "education_num": 1,
                "marital_status": "Never-married",
                "occupation": "Other-service",
                "relationship": "Other-relative",
                "race": "Other",
                "gender": "Female",
                "capital_gain": 0,
                "capital_loss": 0,
                "hours_per_week": 40,
                "native_country": "United-States"}]
        }' \
        https://${APIGEE_ORGANIZATION}-${APIGEE_ENVIRONMENT}.apigee.net/ml/census/v1/predict
    

    Si la prueba tiene éxito, la respuesta será similar a la siguiente:

    {
        "predictions":[
            {
                "probabilities":[
                    0.7692753076553345,
                    0.23072466254234314
                ],
                "class_ids":[
                    0
                ],
                "classes":[
                    "0"
                ],
                "logits":[
                    -1.204223871231079
                ],
                "logistic":[
                    0.23072466254234314
                ]
            }
        ]
    }
    

    Repite la solicitud diez veces más para agotar la cuota:

    for i in `seq 10`; do !! | jq '.' ; done
    

    Cuando se excede la cuota, Apigee Edge muestra un error:

    {
        "fault":{
            "detail":{
                "errorcode": "policies.ratelimit.QuotaViolation"
            },
            "faultstring": "Rate limit quota violation. Quota limit exceeded. Identifier : \_default"
        }
    }
    

    La solicitud se rechaza si la clave de API se quita del encabezado de la solicitud:

    {
        "fault":{
            "faultstring": "Failed to resolve API Key variable request.header.X-APIKEY",
            "detail":{
               "errorcode": "steps.oauth.v2.FailedToResolveAPIKey"
            }
        }
    }
    
  2. Prueba la clave de API (el valor de la propiedad consumerKey) en el caso de la aplicación BarApp, que está registrada para la desarrolladora Sally.

    curl -s -X POST \
        -H "Content-Type: application/json" \
        -H "X-APIKEY: ${BARAPP_API_KEY}" \
        -d '{
            "instances": [{
                "age": 25,
                "workclass": "Private",
                "education": "Some-college",
                "education_num": 1,
                "marital_status": "Never-married",
                "occupation": "Other-service",
                "relationship": "Other-relative",
                "race": "Other",
                "gender": "Female",
                "capital_gain": 0,
                "capital_loss": 0,
                "hours_per_week": 40,
                "native_country": "United-States"}]
        }' \
        https://${APIGEE_ORGANIZATION}-${APIGEE_ENVIRONMENT}.apigee.net/ml/census/v1/predict | jq '.'
    

    El resultado es similar al siguiente, porque el producto de API para la clave de API aún no se aprobó:

    {
        "fault": {
            "faultstring": "Invalid ApiKey for given resource",
            "detail": {
                "errorcode": "oauth.v2.InvalidApiKeyForGivenResource"
            }
        }
    }
    

Aprueba y revoca productos de API

En el paso anterior, el proxy de API mostró un error cuando se usó la clave de API para la aplicación BarApp porque el producto de API no estaba aprobado a fin de usarse con la clave de API.

Para aprobar el producto de API y usarlo con la clave de API de BarApp, puedes usar la API de Management de Apigee Edge. Como alternativa, puedes usar la interfaz web de Apigee Edge para aprobar el producto de API. Obtén más información sobre cómo aprobar o revocar de manera manual las claves de API mediante la interfaz web.

Completa los pasos siguientes en Cloud Shell para aprobar el producto de API con la API de administración de Apigee Edge.

  1. Configura las variables de entorno que necesitarás en comandos posteriores:

    DEVELOPER_EMAIL=sally@example.com
    APP_NAME=BarApp
    API_PRODUCT=income_prediction_premium
    
  2. Llama a la API de administración de Apigee Edge a fin de aprobar el producto de API para su uso con la clave de API:

    curl -s -X POST \
        -u "${APIGEE_USERNAME}" \
        --header "Content-Type: application/octet-stream" \
        "https://api.enterprise.apigee.com/v1/organizations/${APIGEE_ORGANIZATION}/developers/${DEVELOPER_EMAIL}/apps/${APP_NAME}/keys/${BARAPP_API_KEY}/apiproducts/${API_PRODUCT}?action=approve"
    
  3. Vuelve a intentar enviar la solicitud de API mediante la clave de API:

    curl -s -X POST \
        -H "Content-Type: application/json" \
        -H "X-APIKEY: ${BARAPP_API_KEY}" \
        -d '{
            "instances": [{
                "age": 25,
                "workclass": "Private",
                "education": "Some-college",
                "education_num": 1,
                "marital_status": "Never-married",
                "occupation": "Other-service",
                "relationship": "Other-relative",
                "race": "Other",
                "gender": "Female",
                "capital_gain": 0,
                "capital_loss": 0,
                "hours_per_week": 40,
                "native_country": "United-States"}]
        }' \
        https://${APIGEE_ORGANIZATION}-${APIGEE_ENVIRONMENT}.apigee.net/ml/census/v1/predict | jq '.'
    

    El resultado es similar al siguiente porque el producto de API para la clave de API está aprobado:

    {
        "predictions":[
            {
                "probabilities":[
                    0.7692753076553345,
                    0.23072466254234314
                ],
                "class_ids":[
                    0
                ],
                "classes":[
                    "0"
                ],
                "logits":[
                    -1.204223871231079
                ],
                "logistic":[
                    0.23072466254234314
                ]
            }
        ]
    }
    

Habilita el registro de autoservicio con el portal para desarrolladores

En este instructivo, usaste una cuenta de administrador de Apigee para crear perfiles de desarrollador, aplicaciones y claves de API.

Se recomienda que habilites el registro de autoservicio en tu producto de API mediante el uso de un portal de servicios para desarrolladores. Este portal permite a los usuarios registrar perfiles y aplicaciones de desarrollador, y generar claves de API a través de un flujo de autoservicio. Si habilitas un portal de autoservicio, los usuarios individuales pueden obtener acceso a tu API a través de un flujo automatizado. Según tus necesidades, la aprobación de la clave de API a través del flujo automatizado puede ocurrir de manera automática o puede que aún se requiera la aprobación manual.

Apigee Edge proporciona una herramienta gráfica basada en la Web a fin de compilar tu portal para desarrolladores. Obtén más información sobre cómo crear un portal para desarrolladores para tus productos de API.

Limpieza

Sigue estos pasos para evitar que se apliquen cargos a tu cuenta de Google Cloud Platform por los recursos que usaste en este instructivo:

  • Borra el proyecto.
  • Cierra tu cuenta de prueba de Apigee Edge.
  • Deja de entregar las solicitudes de proxy de API.

Borra el proyecto

  1. En Cloud Console, ve a la página Administrar recursos.

    Ir a la página Administrar recursos

  2. En la lista de proyectos, selecciona el proyecto que deseas borrar y haz clic en Borrar .
  3. En el cuadro de diálogo, escribe el ID del proyecto y haz clic en Cerrar para borrar el proyecto.

Cierra tu cuenta de prueba de Apigee Edge

Tu cuenta de prueba de Apigee Edge se cierra de forma automática cuando expira el período de prueba. No necesitas realizar ninguna acción específica para borrar tu cuenta de prueba.

Deja de entregar solicitudes de proxy de API

Para dejar de entregar las solicitudes de proxy de API, anula la implementación o borra el proxy de API. Además, a fin de evitar registros nuevos, borra los portales para desarrolladores.

  1. En Cloud Shell, anula la implementación del proxy de API con apigeetool:

    apigeetool undeploy \
        -u ${APIGEE_USERNAME} \
        -o ${APIGEE_ORGANIZATION} \
        -n income_prediction
        -e ${APIGEE_ENVIRONMENT} \
        -r 1 \
        -n income_prediction
    

    El resultado es similar al siguiente:

    "income_prediction" Revision 1
      undeployed
      environment = test
      base path = /
    

Próximos pasos