Instructivos de Hosted Targets

Estás consultando la documentación de Apigee Edge.
Consulta la documentación de Apigee X.
Información

En los siguientes instructivos, se explica cómo implementar aplicaciones de Node.js en Edge mediante destinos alojados, un entorno de ejecución nativo de Node.js que aloja Apigee.

En los instructivos, se explican las siguientes tareas:

Implementa una app de Node.js en destinos alojados con la IU de Edge

En este instructivo, implementarás una app simple de Node.js en destinos alojados mediante la IU de Edge. Cuando completes el instructivo, comprenderás la estructura y el contenido básicos de un proxy de Hosted Targets y cómo acceder a los archivos de registro de implementación y compilación.

Cómo acceder a tu cuenta

  1. Ve a apigee.com/edge.
  2. Ingresa tus credenciales de acceso a Apigee para acceder.

Crear un proxy nuevo

  1. En el menú de navegación lateral, selecciona Develop > API Proxies.
  2. Haz clic en + Proxy.
  3. En la página Crear proxy, selecciona Destino alojado.
  4. Presiona Siguiente.
  5. En el campo Nombre del proxy, ingresa hello-hosted-targets.
  6. Asegúrate de que esté seleccionada la opción Muestra"Hello World".
  7. Presiona Siguiente.
  8. En la página Seguridad, selecciona Transferencia (ninguna) para la autorización.
  9. Presiona Siguiente.
  10. Presiona Siguiente.
  11. En la página Compilación, asegúrate de que esté seleccionado el entorno de prueba. Ten en cuenta que el tipo de proxy es Hosted Targets.
  12. Haz clic en Build and Deploy. La implementación del proxy puede tardar unos minutos en completarse.
  13. Una vez que el proxy se haya implementado de forma correcta, haz clic en Ver proxy de hello-host-targets en la parte inferior de la página.
  14. Llama al proxy de API. La manera más fácil de hacerlo es ir a la pestaña Seguimiento, iniciar una sesión de seguimiento y hacer clic en Enviar. Deberías recibir un estado 200 con la siguiente respuesta:
    {"date":"2018-09-26T14:23:04.550Z","msg":"Hello, World!"}

Examina el proxy

  1. En la IU de Edge, haz clic en la pestaña Desarrollo.
  2. En el navegador, selecciona default en Target Endpoints.
  3. En el editor de código, observa que hay un elemento secundario <HostedTarget/> vacío debajo del elemento <TargetEndpoint>. Esta etiqueta vacía es obligatoria. Le indica a Edge que el destino del proxy es una aplicación que se implementa en el entorno de destinos alojados.

  4. En Navigator, observa el contenido que se encuentra en la sección Scripts. Los archivos de la app de Node.js se muestran en la etiqueta alojado.

  5. En la IU de Edge, examina los archivos que aparecen en Alojado en las Secuencias de comandos:
    • El archivo app.yaml contiene información sobre la configuración. Por ejemplo, puedes agregar variables de entorno que estarán disponibles para la aplicación de Node.js en el entorno de ejecución. No es necesario modificar este archivo para este ejemplo.
    • El archivo index.js es el archivo principal de la app de Node.js.
    • Si tu app tiene dependencias de módulo, deben aparecer en package.json.

Ver archivos de registro

Los archivos de registro de la aplicación pueden ser útiles para depurar problemas que ocurren durante la fase de compilación y también en el tiempo de ejecución.

  1. En la IU de Edge, haz clic en la pestaña Desarrollo.
  2. Para ver el registro de compilación, haz clic en Registros de compilación.
  3. Para ver el registro de implementación, haz clic en Registros de entorno de ejecución.

    Consulta también Cómo acceder a archivos de registro.

Resumen

  • Implementaste una aplicación simple de Node.js en el entorno de Destinos alojados y la probaste en la IU de Edge.
  • Aprendiste que un proxy de destinos alojados requiere una etiqueta especial vacía en el extremo de destino llamada <HostedTarget/>.
  • Aprendiste que Edge carga las dependencias de módulos por ti automáticamente y que las dependencias deben enumerarse en el archivo package.json.
  • También aprendiste a verificar los archivos de registro de compilación y de tiempo de ejecución.

Implementa Node.js en Edge desde tu sistema

En esta sección, se explica cómo implementar una aplicación de Node.js independiente desde tu sistema local en destinos alojados con apigeetool. La utilidad apigeetool agrupa la app de Node.js en un nuevo proxy de Hosted Targets y lo implementa en Edge.

Instala apigeetool

Se recomienda que los desarrolladores usen apigeetool para implementar código proxy en Edge. Para instalar apigeetool, ejecuta el siguiente comando de NPM:

npm install -g apigeetool

Crea la app de Node.js

Para facilitar el proceso, te proporcionamos el código de una app simple de Node.js.

  1. Crea un directorio para la app de Node.js. Llama al directorio node-generated-express.
  2. cd al directorio nuevo.
  3. Crea un archivo llamado index.js y copia el código allí.
  4. var express = require('express')
    var app = express()
    
    app.get('/', function(req, res) {
        res.json({
            hello: "Hello World!"
        })
    })
    
    app.get('/hello/:name', function(req, res) {
        var name = req.params.name
        res.json({
            hello: "hello " + name
        })
    })
    
    var server = app.listen(process.env.PORT || 9000, function() {
        console.log('Listening on port %d', server.address().port)
    })
    
  5. Crea un archivo llamado package.json y copia el código en él. Ten en cuenta que el módulo exprés se muestra como una dependencia.
  6. {
        "name": "hello-world",
        "version": "1.0.0",
        "main": "index.js",
        "scripts": {
            "start": "node index.js --use_strict"
        },
        "author": "",
        "license": "",
        "dependencies": {
            "express": "^4.16.0"
        }
    }
    
  7. Crea un archivo llamado app.yaml y copia este código en él:
  8. runtime: node
    runtimeVersion: 8
    application: my-express-app
    env:
      - name: NODE_ENV
        value: production
      - name: LOG_LEVEL
        value: 3
    
  9. Asegúrate de que tu directorio se vea de la siguiente manera:
    ls
    app.yaml index.js package.json
    

Revisión de la estructura de directorio requerida para el código de la app

Tu app de Node.js debe tener la misma estructura que una app de Node.js estándar. Sin embargo, asegúrate de cumplir con estos requisitos antes de implementar con apigeetool en Edge:

  • El archivo de manifiesto app.yaml es obligatorio y debe existir en el directorio raíz de tu app. Para obtener más información sobre este archivo, consulta archivo de manifiesto.
  • El archivo package.json es obligatorio. Debe enumerar todas las dependencias que requiere tu app.
  • No se requiere una carpeta node_modules. Edge ejecuta npm install cuando se implementa la app de Node.js. Obtiene las dependencias desde package.json. En el único momento en el que deberías proporcionar explícitamente node_modules es si tienes módulos personalizados que no están disponibles a través de npm.

Implementa el proxy

  1. En una terminal, usa cd para ir al directorio raíz de tu aplicación de Node.js.
  2. Ejecuta apigeetool con el comando deployorganizationtarget:
  3. apigeetool deployhostedtarget -o org -e env -n proxy-name -b /node-hosted-express -u username

    En el ejemplo anterior, -n es el nombre que deseas darle al proxy nuevo. Debe ser único dentro de la organización. Los caracteres que puedes utilizar en el nombre están restringidos a lo siguiente: a-z0-9._\-$%

    Por ejemplo:

    apigeetool deployhostedtarget -o myorg -e test -n node-hosted-express -b /node-hosted-express -u jdoe@apigee.com

    Para obtener más información sobre el uso de apigeetool, consulta https://github.com/apigee/apigeetool-node.

Prueba el proxy

Puedes probar el proxy con un comando cURL, con un cliente de REST como Postman o en la IU de Edge de la herramienta Trace. Este es un ejemplo de comando cURL.

curl http://myorg-test.apigee.net/node-hosted-express
     {"date":1506992197427,"msg":"hello-world"}

Obtén los registros de compilación

Los registros de compilación muestran resultados relacionados con la implementación y la compilación de la app de Node.js. Consulta también los archivos de registro.

apigeetool getlogs -u username -o org -e env --hosted-build -n proxy-name

Por ejemplo:

apigeetool getlogs -u jdoe@apigee.com -o myorg -e test --hosted-build -n node-hosted-express

Obtén los registros del entorno de ejecución

Los registros del entorno de ejecución muestran el resultado relacionado con la app en ejecución. Los registros del entorno de ejecución se definen en el entorno y muestran los registros de la revisión del proxy implementada actualmente. Consulta también los archivos de registro.

apigeetool getlogs -u username -o org -e env --hosted-runtime -n proxy-name

Por ejemplo:

apigeetool getlogs -u jdoe@apigee.com -o myorg -e test --hosted-runtime -n node-hosted-express

Visualiza el proxy en la IU de Edge

Después de una implementación exitosa, puedes ver y editar tu proxy en la sección Proxies de API de la IU de Edge.

Migra un proxy de Node.js existente a un proxy de Hosted Targets

En esta sección, se explica cómo migrar de forma manual un proxy de API de Edge existente que emplea la implementación de destino de Node.js tradicional para hosts alojados. También se explica cómo implementar el proxy después de realizar los pasos de migración.

Los pasos de migración conservan la estructura del proxy de API, las políticas, los flujos y otros elementos de configuración. Puedes realizar la migración en cuatro pasos, como se describe a continuación, y, luego, implementar el proxy migrado con apigeetool.

Paso 1: Ajusta la estructura de archivos del proxy

Para ajustar la estructura de archivos, el proxy de API debe estar en el sistema de archivos local. Si el proxy está implementado en Edge, debes descargarlo antes de continuar. En la configuración tradicional, el “paquete” del proxy de Edge que incluye el código de Node.js sigue esta estructura de archivos. El código de la aplicación de Node.js se coloca en el directorio resources/node:

apiproxy/
    policies/
    proxies/
    targets/
    resources/
      node/
        Your application code


En el caso de los destinos alojados, debes colocar el directorio raíz de la app de Node.js en un directorio llamado resources/hosted. Solo tienes que crear un directorio nuevo llamado resources/host y mover el contenido de resources/node a él. Luego, puedes borrar el directorio resources/node.

apiproxy/
     policies/
     proxies/
     targets/
     resources/
       hosted/
         Your application code

Paso 2: Agrega el archivo de manifiesto

Crea un archivo de manifiesto llamado app.yaml y colócalo en el directorio apiproxy/resources/hosted.

A continuación, se muestra un archivo app.yaml de ejemplo. Especifica que el entorno de ejecución es Node.js (obligatorio). También crea una variable de entorno en el entorno de ejecución (una variable a la que la app de Node.js puede acceder). La variable de entorno es opcional y solo se muestra aquí como ejemplo. Para obtener más detalles y ejemplos, consulta El archivo de manifiesto.

runtime: node
  env:
    - name: NODE_ENV
      value: production


En el siguiente ejemplo, se muestra una estructura de proyecto de Node.js que se encuentra en la ubicación correcta del proxy para la implementación de Destinos alojados:

apiproxy/
   resources/
      hosted/
        index.js
        node_modules/
        app.yaml
        package.json

Paso 3: Asegúrate de tener un archivo package.json

En los proxies tradicionales de Edge para Node.js, el uso de package.json era opcional. Sin embargo, para los destinos alojados, debes proporcionar uno en el directorio apiproxy/resources/hosted. Asegúrate de especificar las dependencias necesarias para tu app en este archivo.

Paso 4: Modifica el extremo de destino del proxy

Un proxy de Node.js tradicional requiere que haya una etiqueta llamada <ScriptTarget> en el archivo del extremo de destino (por lo general, /apiproxy/targets/default.xml). En el caso de los destinos alojados, debes agregar una etiqueta vacía llamada <HostedTarget/>. Si hay una etiqueta ScriptTarget en el archivo, puedes quitarla. Por ejemplo:

    <?xml version="1.0" encoding="UTF-8"?>
    <TargetEndpoint name="default">
       <Description />
       <FaultRules />
       <PreFlow name="PreFlow">
          <Request />
          <Response />
       </PreFlow>
       <PostFlow name="PostFlow">
          <Request />
          <Response />
       </PostFlow>
       <Flows />
       <HostedTarget />
    </TargetEndpoint>
    

Implementa el proxy

Ahora puedes implementar el proxy con el comando apigeetool deployproxy.

  1. cd para el directorio raíz de tu proxy: /apiproxy
  2. Usa este comando para implementar el proxy:
  3. apigeetool deployproxy -u username -o org -e env -n proxy-name -d .

    Por ejemplo:

    apigeetool deployproxy -u jdoe -o docs -e test -n hello-world -d .

Para obtener más información sobre el uso de apigeetool, consulta https://github.com/apigee/apigeetool-node/blob/master/README.md.

Prueba el proxy

Puedes probar el proxy con un comando cURL, con un cliente de REST como Postman o en la IU de Edge de la herramienta Trace. Este es un ejemplo del comando cURL:

curl http://myorg-test.apigee.net/hello-world
Hello,World!