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

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

Cuando se entregan modelos de aprendizaje automático, la preparación de datos y la capacitación 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 administrado de aprendizaje automático 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.

Para 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 directo 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 en conjunto con Apigee a fin de habilitar lo siguiente:

  • 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 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.

Antes de comenzar

Crea un proyecto de Google Cloud

  1. Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. En la página del selector de proyectos de Google Cloud Console, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyecto

  3. Asegúrate de que la facturación esté habilitada para tu proyecto de Cloud. Descubre cómo confirmar que tienes habilitada la facturación en un 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

Sigue los pasos en Crea una cuenta de Apigee. 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 la solución

En este instructivo, implementarás modelos de TensorFlow para AI Platform y usarás predicciones en línea a fin de que estén disponibles para entrega. Para cada modelo alojado, implementarás un proxy de API para Apigee que use una cuenta de servicio para autenticar solicitudes desde aplicaciones cliente. Luego, Apigee reenviará las solicitudes a la predicción en línea de AI Platform. Apigee 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. La solicitud HTTP se realiza en un extremo que administra un proxy de API. El proxy de la API en Apigee 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 proxy (expuesto a las aplicaciones cliente) a un extremo objetivo, 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 implementado 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 para permitir que los usuarios externos llamen a los modelos alojados por medio de un proxy de API. Las solicitudes de proxy mediante Apigee 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 a fin de crear dos productos de API de ejemplo para un modelo alojado simple (predicción entrante de datos de 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 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 bucket 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

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 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 y respuesta de API. 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. Apigee 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 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] con 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 función 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:

    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 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 Identity and Access Management (IAM) para permitir que tu cuenta de servicio solicite predicciones sobre 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 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 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 previo, 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.

A fin de aprobar el producto de API para su uso con la clave de API de BarApp, puedes usar la API de Management de Apigee. Como alternativa, puedes usar la interfaz web de Apigee 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 Management de Apigee.

  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 Management Apigee 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.

Es posible que desees habilitar el registro de autoservicio para 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 requiera la aprobación manual.

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

Realice una limpieza

Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos usados en este instructivo, borra el proyecto que contiene los recursos o conserva el proyecto y borra los recursos individuales.

  • Borra el proyecto.
  • Cierra tu cuenta de prueba de Apigee.
  • 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 Administrar recursos

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

Cierra tu cuenta de prueba de Apigee

Tu cuenta de prueba de Apigee 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 del proxy de API

Para dejar de entregar las solicitudes del proxy de la API, anula la implementación o borra el proxy de la 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 = /
    

¿Qué sigue?