Instructivos de Hosted Targets

Estás viendo la documentación de Apigee Edge.
Ir a la documentación de Apigee X.
info

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

En los instructivos, se explican las siguientes tareas:

  • Implementar una app de Node.js en destinos alojados con la IU de Edge
  • Implementar una app de Node.js en destinos alojados desde tu máquina de desarrollo local
  • Migrar un proxy existente con una implementación de destino de Node.js de Edge tradicional a destinos alojados

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 con la IU de Edge. Cuando completes el instructivo, comprenderás la estructura y el contenido básicos de un proxy de destinos alojados, y cómo acceder a los archivos de registro de compilación y de implementación.

Acceder

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

Crea un proxy nuevo

  1. En el menú de navegación lateral, selecciona Desarrollar > Proxies de API.
  2. Haz clic en + Proxy.
  3. En la página Crear proxy, selecciona Destino alojado.
  4. Haz clic en Siguiente.
  5. En el campo Nombre del proxy, ingresa hello-hosted-targets.
  6. Asegúrate de que esté seleccionada la opción "Hello World" Sample.
  7. Haz clic en Siguiente.
  8. En la página Seguridad, selecciona Pasar (ninguno) para la autorización.
  9. Haz clic en Siguiente.
  10. Haz clic en Siguiente.
  11. En la página Compilar, asegúrate de que el entorno prueba esté seleccionado. Observa que el tipo de proxy es Destinos alojados.
  12. Haz clic en Compilar e implementar. Es posible que la implementación del proxy tarde unos minutos en completarse.
  13. Después de que el proxy se implemente correctamente, haz clic en Ver proxy hello-hosted-targets en la parte inferior de la página.
  14. Llama al proxy de API. La forma más sencilla de hacerlo es ir a la pestaña Trace , iniciar una sesión de Trace y hacer clic en Send. 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 Desarrollar.
  2. En el navegador, selecciona predeterminado en Extremos de destino.
  3. En el editor de código, observa que hay un elemento secundario vacío <HostedTarget/> en el 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 el navegador, observa el contenido de la sección Secuencias de comandos. Los archivos de la app de Node.js se enumeran con la etiqueta alojado.

  5. En la IU de Edge, examina los archivos que se enumeran en alojado en las secuencias de comandos:
    • El archivo app.yaml contiene información de 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ódulos, deben aparecer en package.json.

Visualiza los 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 entorno de ejecución.

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

    Consulta también Accede 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 vacía especial en el extremo de destino llamada <HostedTarget/>.
  • Aprendiste que Edge carga las dependencias de módulos automáticamente y que las dependencias deben aparecer en el archivo package.json.
  • También aprendiste a verificar los archivos de registro de compilación y del entorno de ejecución.

Implementa Node.js desde tu sistema en Edge

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

Instala apigeetool

El uso de apigeetool es la forma recomendada para que los desarrolladores implementen código de proxy en Edge. Para instalar apigeetool ejecuta el siguiente comando de NPM:

npm install -g apigeetool

Crea la app de Node.js

Para facilitar las cosas, se te proporciona el código de una app simple de Node.js.

  1. Crea un directorio para la app de Node.js. Llama al directorio node-hosted-express.
  2. cd al directorio nuevo.
  3. Crea un archivo llamado index.js y copia este código en él.
  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 este código en él. Observa que el módulo express aparece 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 directorios requerida para el código de la app

Tu app de Node.js debe tener la misma estructura que una app estándar de Node.js. Sin embargo, asegúrate de haber seguido 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.
  • Se requiere un archivo package.json. Debe enumerar las dependencias que requiere tu app.
  • No se requiere una carpeta node_modules. Edge ejecuta npm install por ti cuando se implementa la app de Node.js. Obtiene las dependencias de package.json. La única vez que necesitarías proporcionar node_modules de forma explícita es si tienes módulos personalizados que no están disponibles a través de npm.

Implementa el proxy

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

    en el que -n es el nombre que deseas asignar al proxy nuevo. Debe ser único dentro de la organización. Los caracteres que puedes usar en el nombre están restringidos a los siguientes: 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 REST como Postman o en la IU de Edge en la herramienta Trace. Este es un ejemplo de un 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 el resultado relacionado con la implementación y la compilación de la app de Node.js. Consulta también 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 limitan al entorno y muestran registros de la revisión del proxy implementada actualmente. Consulta también 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 correcta, puedes ver y editar tu proxy en la parte Proxies de API de la Edge UI.

Migra un proxy de Node.js existente a un proxy de destinos alojados

En esta sección, se explica cómo migrar manualmente un proxy de API de Edge existente que emplea la implementación tradicional de destino de Node.js a destinos 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, las políticas, los flujos y otros elementos de configuración del proxy de API. 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 tu sistema de archivos local. Si el proxy se implementa en Edge, debes descargarlo antes de continuar. En la configuración tradicional, un "paquete" de proxy de Edge que incluye 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


Para los destinos alojados, debes colocar el directorio raíz de tu app de Node.js en un directorio llamado resources/hosted. Simplemente crea un directorio nuevo llamado resources/hosted y mueve 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 apiproxy/resources/hosted directorio.

A continuación, se muestra un ejemplo de un archivo app.yaml. 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 podría acceder la app de Node.js). 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 en el 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 Node.js de Edge, el 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 tradicional de Node.js requiere que una etiqueta llamada <ScriptTarget> esté presente en el archivo de extremo de destino (por lo general, /apiproxy/targets/default.xml). Para 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 al 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 REST como Postman o en la IU de Edge en la herramienta Trace. Este es un ejemplo de un comando cURL:

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