您正在查看 Apigee Edge 文档。
转到
Apigee X 文档。 info
以下教程介绍了如何使用 托管目标(由 Apigee 托管的原生 Node.js 运行时环境)将 Node.js 应用部署到 Edge。
这些教程将引导您完成以下任务:
- 使用 Edge 界面将 Node.js 应用部署到托管目标。
- 从本地开发机器将 Node.js 应用部署到托管目标。
- 将具有 传统 Edge Node.js 目标实现 的现有代理迁移到托管目标。
使用 Edge 界面将 Node.js 应用部署到托管目标
在本教程中,您将使用 Edge 界面将简单的 Node.js 应用部署到托管目标。完成本教程后,您将了解托管目标代理的基本结构和内容,以及如何访问部署和构建日志文件。
登录
- 前往:apigee.com/edge
- 输入您的 Apigee 登录凭据以登录。
创建新代理
- 在侧边导航菜单中,依次选择开发 > API 代理 。
- 点击添加代理。
- 在“创建代理”页面中,选择托管目标 。
- 点击下一步 。
- 在“代理名称”字段中,输入
hello-hosted-targets。 - 确保已选择 “Hello World”示例。
- 点击下一步 。
- 在“安全性”页面中,为“授权”选择通过(无) 。
- 点击下一步 。
- 点击下一步 。
- 在“构建”页面中,确保已选择 test 环境。请注意,代理类型为 Hosted Targets。
- 点击构建和部署 。代理部署可能需要几分钟才能完成。
- 成功部署代理后,点击页面底部的查看 hello-hosted-targets 代理 。
- 调用 API 代理。最简单的方法是转到跟踪
标签页,启动跟踪
会话,然后点击发送。您应该会收到 200 状态,并收到以下
响应:
{"date":"2018-09-26T14:23:04.550Z","msg":"Hello, World!"}
检查代理
- 在 Edge 界面中,点击开发 标签页。
- 在导航器中,选择“目标端点”下的 default 。
- 在代码编辑器中,请注意
<HostedTarget/>子 元素在<TargetEndpoint>元素下。此空标记是 必需的。它会告知 Edge,代理的目标是部署到 托管目标环境的应用。
- 在导航器中,请注意脚本 部分下的内容。Node.js 应用文件列在 hosted 标签下。

- 在 Edge 界面中,检查 脚本 中 hosted 下列出的文件:
- app.yaml 文件包含配置信息。例如,您可以添加在运行时可供 Node.js 应用使用的环境变量。对于此示例,您无需修改此文件。
- index.js 文件是 Node.js 应用的主文件。
- 如果您的应用有任何模块 依赖项,则必须在 package.json 中列出这些依赖项。
查看日志文件
应用日志文件对于调试构建阶段 和运行时发生的问题非常有用。
- 在 Edge 界面中,点击开发 标签页。
- 如需查看构建日志,请点击构建日志 。
- 如需查看部署日志,请点击运行时日志 。
另请参阅 访问日志文件。
摘要
- 您已将简单的 Node.js 应用部署到托管目标环境,并在 Edge 界面中对其进行了测试。
- 您了解到,托管目标代理需要在目标
端点中使用一个名为
<HostedTarget/>的特殊空标记。 - 您了解到,Edge 会自动为您加载模块依赖项,并且依赖项
必须在
package.json文件中列出。 - 您还学习了如何检查构建和运行时日志文件。
将 Node.js 从系统部署到 Edge
本部分介绍了如何使用 apigeetool 将独立 Node.js 应用从本地系统部署到
托管目标。apigeetool
实用程序会将 Node.js 应用捆绑到新的托管目标代理中,并将其部署到 Edge。
安装 apigeetool
建议开发者使用 apigeetool 将代理 代码部署到 Edge。如需安装 apigeetool ,请运行以下 NPM 命令:
npm install -g apigeetool
创建 Node.js 应用
为了方便起见,我们为您提供了简单 Node.js 应用的代码。
- 为 Node.js 应用创建一个目录。将该目录命名为 node-hosted-express 。
- 使用 cd 命令转到新目录。
- 创建一个名为 index.js 的文件,并将以下代码复制到其中。 才需要明确提供 node_modules。
- 创建一个名为 package.json 的文件,并将以下代码复制到其中。请注意, express 模块被列为依赖项。
- 创建一个名为 app.yaml 的文件,并将以下代码复制到其中:
- 确保您的目录如下所示:
ls app.yaml index.js package.json
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) })
{
"name": "hello-world",
"version": "1.0.0",
"main": "index.js",
"scripts": {
"start": "node index.js --use_strict"
},
"author": "",
"license": "",
"dependencies": {
"express": "^4.16.0"
}
}runtime: node runtimeVersion: 8 application: my-express-app env: - name: NODE_ENV value: production - name: LOG_LEVEL value: 3
查看应用代码所需的目录结构
您的 Node.js 应用必须具有与标准 Node.js 应用相同的结构。不过,请确保在通过 apigeetool 部署到 Edge 之前满足以下要求:
- 必须提供 app.yaml 清单文件,并且该文件必须位于应用的根目录中。如需详细了解此文件,请参阅 清单文件。
- 必须提供 package.json 文件。该文件必须列出应用所需的任何 依赖项。
- 不需要 node_modules 文件夹。 部署 Node.js 应用时,Edge 会为您运行 npm install 。它会从 package.json 获取依赖项。只有当您有无法通过 获取的自定义模块时,才需要明确提供node_modules,这些模块无法通过 通过npm获取。
部署代理
- 在终端中,使用 cd 命令转到 Node.js 应用的根目录。
- 使用 deployhostedtarget 命令执行 apigeetool :
apigeetool deployhostedtarget -o org -e env -n proxy-name -b /node-hosted-express -u username
其中,-n 是您要为新代理指定的名称。该名称在组织内必须唯一
。允许在名称中使用的字符仅限于
以下字符:a-z0-9._\-$%
例如:
apigeetool deployhostedtarget -o myorg -e test -n node-hosted-express -b /node-hosted-express -u jdoe@apigee.com
如需详细了解如何使用 apigeetool,请参阅 https://github.com/apigee/apigeetool-node。
测试代理
您可以使用 c网址 命令、Postman 等 REST 客户端或 Edge 界面 中的 Trace 工具测试代理。下面是一个 c网址 命令示例。
curl http://myorg-test.apigee.net/node-hosted-express
{"date":1506992197427,"msg":"hello-world"}获取构建日志
构建日志会显示与部署和构建 Node.js 应用相关的输出。另请参阅日志文件。
apigeetool getlogs -u username -o org -e env --hosted-build -n proxy-name
例如:
apigeetool getlogs -u jdoe@apigee.com -o myorg -e test --hosted-build -n node-hosted-express
获取运行时日志
运行时日志会显示与运行应用相关的输出。运行时日志的作用域限定为环境 并返回当前部署的代理修订版本的日志。另请参阅日志文件。
apigeetool getlogs -u username -o org -e env --hosted-runtime -n proxy-name
例如:
apigeetool getlogs -u jdoe@apigee.com -o myorg -e test --hosted-runtime -n node-hosted-express
在 Edge 界面中查看代理
成功部署后,您可以在 Edge 界面的“API 代理”部分中查看和修改代理。
将现有 Node.js 代理迁移到托管目标代理
本部分介绍了如何手动将采用 传统 Node.js 目标实现的现有 Edge API 代理迁移到托管目标。此外,还介绍了在执行迁移步骤后如何部署代理。
迁移步骤会保留 API 代理结构、政策、流和其他配置元素。 您可以按照以下概述的 四个步骤 执行迁移,然后部署 迁移后的代理,并使用 apigeetool。
第 1 步:调整代理文件结构
如需调整文件结构,API 代理必须位于本地文件系统上。如果代理部署在 Edge 上,您必须先下载该代理,然后才能继续。在传统配置中,包含 Node.js 代码的 Edge 代理“软件包”遵循以下文件结构。
Node.js 应用代码位于 resources/node 目录中:
apiproxy/
policies/
proxies/
targets/
resources/
node/
Your application code
对于托管目标,您必须将 Node.js 应用的根目录放在名为
resources/hosted的目录下。只需创建一个名为
resources/hosted 的新目录,然后将 resources/node
的内容移到该目录中即可。然后,您可以删除 resources/node 目录。
apiproxy/
policies/
proxies/
targets/
resources/
hosted/
Your application code第 2 步:添加清单文件
创建一个名为 app.yaml 的清单文件,并将其放在
apiproxy/resources/hosted 目录中。
以下是一个 app.yaml 文件示例。它指定运行时为
Node.js(必需)。它还在执行环境中创建了一个环境变量
(Node.js 应用可以访问的变量)。环境变量是可选的
此处仅作为示例展示。如需了解详情和示例,请参阅清单文件。
runtime: node
env:
- name: NODE_ENV
value: production
以下示例展示了 Node.js 项目结构,该结构位于
代理中托管目标部署的正确位置:
apiproxy/
resources/
hosted/
index.js
node_modules/
app.yaml
package.json第 3 步:确保您有 package.json 文件
在传统的 Edge Node.js 代理中,package.json 是
可选的。不过,对于托管目标,您必须在 apiproxy/resources/hosted 目录中提供一个。请务必在此文件中指定应用所需的任何依赖项。
第 4 步:修改代理的目标端点
传统的 Node.js 代理要求目标端点文件(通常为 /apiproxy/targets/default.xml)中存在一个名为 <ScriptTarget>
的标记。对于托管目标,您需要添加一个名为 <HostedTarget/> 的空标记。如果文件中存在 ScriptTarget 标记,您可以直接将其移除。例如:
<?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>
部署代理
现在,您可以使用 apigeetool deployproxy 命令部署代理。
- 使用 cd 命令转到代理的根目录:/apiproxy
- 使用以下命令部署代理:
apigeetool deployproxy -u username -o org -e env -n proxy-name -d .
例如:
apigeetool deployproxy -u jdoe -o docs -e test -n hello-world -d .
如需详细了解如何使用 apigeetool,请参阅:
https://github.com/apigee/apigeetool-node/blob/master/README.md。
测试代理
您可以使用 c网址 命令、Postman 等 REST 客户端或 Edge 界面 中的 Trace 工具测试代理。下面是一个 c网址 命令示例:
curl http://myorg-test.apigee.net/hello-world Hello,World!