设置和配置 Edge Microgate

您正在查看 Apigee Edge 文档。
前往 Apigee X 文档
信息

Edge Microgateway v. 3.3.x

概览

完成本设置指南中的步骤后,您将拥有一个完全配置且可正常运行的 Edge Microgateway 安装,能够处理 API 请求。您将通过 Edge Microgateway 向后端目标发出安全的 API 调用来测试设置。您还将学习如何向 Microgateway 添加突发流量抑制插件。

本指南分为以下几个部分:

前提条件:安装 Edge Microgateway

按照安装 Edge Microgateway 中的说明操作。完成安装后,您就可以按照本教程中的步骤操作了。

第 1 部分:配置 Edge Microgateway

在此部分中,您将使用命令行界面 (CLI) 命令来配置 Edge Microgateway,使其能够 与 Apigee Edge 通信

Apigee Edge Cloud 配置步骤

如需将 Edge Microgateway 与 Apigee Edge Cloud 搭配使用,请按以下步骤操作:

  1. 初始化 Edge Microgateway(此步骤只需执行一次):
    edgemicro init
  2. 一个名为 default.yaml 的配置文件已放置在主目录中名为 .edgemicro 的子目录中。立即检查以确保此文件存在:
    ls ~/.edgemicro
    default.yaml

    注意: 在 Edge Microgateway 文档中,我们使用波浪号 (~) 指代主目录,这是 UNIX 快捷方式。如果您使用的是 Windows,并且运行的 shell 不支持波浪号,则需要在引用主目录的命令中使用相应的环境变量来替换波浪号。例如:%USERPROFILE%/.edgemicro

  3. 所有 CLI 命令都有帮助功能。输出 edgemicro configure 命令的帮助:
    edgemicro configure -h
  4. 执行以下命令以配置 Edge Microgateway:
    edgemicro configure -o [org] -e [env] -u [username] 

    其中:

    • org: 您的 Edge 组织名称(您必须是组织管理员)。
    • env: 您组织中的环境(例如测试环境或生产环境)。
    • username: 与您的 Apigee 账号关联的电子邮件地址。

      注意:配置命令允许使用其他参数。如需查看完整列表,请参阅为 Apigee Edge Cloud 配置 Edge Microgateway

示例

edgemicro configure -o docs -e test -u jdoe@example.com

输出

./edgemicro configure -o docs -e test -u jdoe@apigee.com
password:
current nodejs version is v12.5.0
current edgemicro version is 3.1.0
password:
file doesn't exist, setting up
Give me a minute or two... this can take a while...
App edgemicro-auth deployed.
checking org for existing KVM
error checking for cert. Installing new cert.
creating KVM
adding private_key
adding public_key
configuring host edgemicroservices-us-east-1.apigee.net for region us-east-1

saving configuration information to: $HOME/.edgemicro/docs-test-config.yaml

vault info:
 -----BEGIN CERTIFICATE-----
MIICpDCCAYwCCQCQ2mJZJGbPPTANBgkqhkiG9w0BAQsFADAUMRIwEAYDVQQDEwls
b2NhbGhvc3QwHhcNMTcwOTA3MjA0ODA4WhcNMTcwOTA4MjA0ODA4WjAUMRIwEAYD
VQQDEwlsb2NhbGhvc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDw
yzmqi5CelqqtTr6IaFe1ssrMXEDnNtkBh95U6F5zHLsNQhJcyNUAO9um6FLMSqSd
fTztXfWUZzDgmbb6sfbx/9cqpvQ8TIjxyIz8xGM9H4legRQmsCQoYGkLjpPE5ZOa
wZrI5IaVm8LY6vbopPFwxgKOQ9bphx6k9Na055DmNyZAOTMD+4I0m/RdsrnZnYih
3DaFj1tXHKZI1jfAt/QOif5Nmk4+JckYwF+9HBysWUbbvj/gnBjVYF2Isb7q7oFD
lPGhwFoIebMqHMWD8lG7+9RJDO9dDV6f1g1/9waIrq1D+MoVXos9VMstNrPp0cKF
Ue+lAkct8tylH+2MosF7AgMBAAEwDQYJKoZIhvcNAQELBQADggEBAJMRdcQh3ayy
csVVT4TYwxV7MKWRfhDRz6X+MM9frB+Z7sI4+ZoZbXKOoZI2hSjmbdLpkNR/m9eJ
+1Uk0JKmpSY7Q+1rRrvcHsWNysGf4z+zDJXYECTrtSnXKBXtb9SJ8JAfoZOQD0lA
zmKuJjQMLTdiYMHOBR6ZWnaKaRvrQwGHcQrheJm4a90XgZF6jcRR8CPrBzkmsbCp
IU/Ux3E17wDGYPxjJs5otyQG8rN/88RGyaSeXK8rjKr9D4KFGJeasXBKmTG2afAr
yfBvS4h6s42FCOR/eLpmMllVoO9up71Fa3EtV+aK+FNNY9uMbgUHeLQE7z9nn06q
PTmvExZLkLQ=
-----END CERTIFICATE-----

The following credentials are required to start edge micro
  key: 27ee39567c75e4567a66236cbd4e86d1cc93df6481454301bd5fac4d3497fcbb
  secret: 4618b0008a6185d7327ebf53bee3c50282ccf45a3cceb1ed9828bfbcf1148b47
    

Apigee Private Cloud 配置步骤

如需将 Edge Microgateway 与 Apigee Private Cloud 搭配使用,请按以下步骤操作:

  1. 初始化 Edge Microgateway(此步骤只需执行一次):
    edgemicro init
  2. 输出 edgemicro private configure 命令的帮助信息。您可以采用这种方式输出任何 Edge Microgateway CLI 命令或命令选项的帮助信息。
    edgemicro private configure -h
  3. 执行以下命令: 它需要有关 Apigee Edge Private Cloud 账号的标准信息:组织名称、环境名称、用户名(电子邮件地址)、密码、管理服务器 IP 和路由器 IP。您必须是 Edge 组织管理员,才能使用此命令:
    edgemicro private configure -o [org] -e [env] -u [username] -r [runtime_url] -m [mgmt_url] -v [virtual_host]

    其中:

    • org 是您的 Edge 组织名称(您必须是组织管理员)。
    • env 是您组织中的环境(例如测试环境或生产环境)。
    • runtime_url 是私有云实例的运行时网址。
    • mgmt_url 是私有云实例的管理服务器的网址。
    • username 是与您的 Apigee 账号相关联的电子邮件地址。
    • virtual_host 是以英文逗号分隔的虚拟主机名列表。默认值为 default,secure

示例

edgemicro private configure -o docs -e test -u jdoe@example.com -r http://192.162.52.106:9001 -m http://192.162.52.106:8080 -v default

或者,如果您有 myorg-test.mycompany.com 的虚拟主机别名,则可以使用如下命令:

edgemicro private configure -o docs -e test -u jdoe@example.com -r myorg-test.mycompany.com -m http://192.162.52.106:8080 -v default

输出

delete cache config
checking for previously deployed proxies
configuring edgemicro internal proxy
deploying edgemicro internal proxy
deploying  edgemicro-auth  app
copy auth app into tmp dir
copy config into tmp deer
Give me a minute or two... this can take a while...
App edgemicro-auth added to your org. Now adding resources.

checking org for existing KVM
error checking for cert. Installing new cert.
creating KVM
adding private_key
adding public_key
configuring host http://192.168.52.106:9001 for region dc-1

saving configuration information to: $HOME/.edgemicro/jdoe-test-config.yaml
vault info: 
-----BEGIN CERTIFICATE----- 
MIICpDCCAYwCCQDpIvWlpaZJGDANBgkqhkiG9w0BAQFADAUMRIwEAYDVQQDEwls 
b2NhbGhvc3QwHhcNMTYwNDA3MTcxNTM5WhcNMTYwND4MTcxNTM5WjAUMRIwEAYD 
VQQDEwlsb2NhbGhvc3QwggEiMA0GCSqGSIb3DQEBAUAA4IBDwAwggEKAoIBAQD3 
OAQ+kf5FH0S0yuj05ITqUODuUJspBPberRMbqOZYHcFswhB0Yvg6JKWsKWBDP9o
Xl96dtgH7xPFRqIU0zI452jkMQ1fPz2mSaGwik245yfBku7olooXKRKTRKOUoXa 
q3Hld/RPxGSsWtiyyYtKex7tuFdq0Knm1EhowdTRGIgjNvudeYMka/XPRXuykhd 
xIDxWj4rdX+4GPx9qT2eTQC5nOAC7XHVL7ys4KqsAiv28vw10u400KstFFS8Qho 
7FaE0bOKLolKKadKyA60ha1XIw/uSTD6ZQFWQ+XM3OaRbXePWXnSZioSxXcZT7L 
hMUKbsRXw/TCvRB51LgNAgMBAAEwDQYJKoZIhvcNAQELBQADgEBAOuR1OmE/W6j 
gRAarJB5EQuTEpI/9Zpg5c5RAGjzLhkazsycn7pal+IymUjCV7D0oIxTVuTM8ZZ 
57kR5hF/C1ZypDN9i+KGP2ovX8WOCCXYtIQECgZPB/L/7/k7BDuKN4vFBvWUe3X 
s2oyjnVWy+ASqsW8gHfj8ekhe22bP240Oqkbyg9SZP9ol1tvJX6+M0thYwcTwAd 
ft929Icey/MOTQC0jB2qm0gnIx/7KInFXfS5KoFRJoGrWDeckr3RdBo2LhnPaeZ 
1gPYIqphZ3HfisF5KlBXoR8oT/Ilym/nq5COlv+3L4tMIk18F7BQZB60SRazifz 
pFkIxepyr/0= 
-----END CERTIFICATE----- 

The following credentials are required to start edge micro 
   key: a3f8f3dfe39158fc3c50b274f0af2234246e0d5f6ea4ad09389b645147151ba3
   secret: 3e9904802fb3c0e8ca408128a11119cf13546d54dac10ace944c097a726a1263

edgemicro configuration complete!
    

验证安装

运行以下命令以验证安装。如果没有报告任何错误,则表明一切都已正确设置,您可以成功启动 Edge Microgateway。

edgemicro verify -o [org] -e [env] -k [key] -s [secret]

其中:

  • org 是您的 Edge 组织名称(您必须是组织管理员)。
  • env 是您组织中的环境(例如测试环境或生产环境)。
  • key 是之前由配置命令返回的密钥。
  • secret 是之前由配置命令返回的密钥。

示例

edgemicro verify -o docs -e test -k 93b01fd21d86331459ae52f624ae9aeb13eb94767ce40a4f621d172cdfb7e8e6 -s c8c755be97cf56c21f8b0156d7132afbd03625bbd85dc34ebfefae4f23fbcb3c

配置简介

到目前为止完成的所有配置都允许 Edge Microgateway 自启动到 Apigee Edge。引导成功后,Edge Microgateway 会从 Apigee Edge 检索包含其他配置信息的载荷。

此配置信息有何用处?正如我们将在本教程的下一部分中了解到的那样,Edge Microgateway 在启动时需要从 Apigee Edge 接收一个 Edge Microgateway 感知 API 代理的特殊列表。在本教程的下一部分中,您将创建一个支持 Microgateway 的代理。Edge Microgateway 会限制客户端只能调用由这些 Microgateway 感知 API 代理代理的 API,并且(默认情况下)客户端每次调用都需要提供有效的安全令牌。如需详细了解这些代理,请参阅 Edge Microgateway 概览中的“您需要了解的有关 Edge Microgateway 感知型代理的信息”。

作为 Edge 组织管理员,您可能想知道,与 Edge Microgateway 兼容的代理可以像任何其他代理一样添加到 Edge 产品中。通过使用产品和开发者应用,您可以生成特定于客户端的安全令牌,以控制对通过 Edge Microgateway 调用的 API 的访问权限。同样,所涉及的模式与在 Apigee Edge 上使用任何 API 代理、产品和开发者应用时完全相同。如果您想了解产品,请先阅读 Edge 文档中的什么是 API 产品?

接下来,我们将逐步介绍如何创建 Edge Microgateway 感知代理,然后启动 Edge Microgateway 并测试设置。

第 2 部分:在 Apigee Edge 上创建实体

在本部分中,您将在 Edge 上创建以下实体:

  • 可识别微网关的代理 - 这是一种特殊代理,Edge Microgateway 在启动时可以发现它。支持微网关的代理具有您必须遵循的命名惯例:名称必须以 edgemicro_ 开头。例如,edgemicro_helloedgemicro_userinfo。Edge Microgateway 启动时,会从 Edge 中检索您在启动 Edge Microgateway 时指定的同一 Edge 组织和环境中的感知微网关的代理列表。

    对于每个 Edge Microgateway 感知代理,Edge Microgateway 会检索该代理的目标网址及其基本路径。此外,感知微网关的代理还提供了一种便捷的方式,可将 Edge Microgateway 生成的分析数据与 Edge 平台上的代理相关联。当 Microgateway 处理 API 调用时,它会以异步方式将分析数据推送到 Edge。分析数据将显示在 Edge Analytics 界面中,位于支持微网关的代理名称下,就像任何其他代理一样。
  • 产品、开发者和开发者应用 - Edge Microgateway 使用产品、开发者和开发者应用来启用 OAuth2 访问令牌或 API 密钥安全性。Edge Microgateway 启动时,会从您的 Apigee Edge 组织下载所有产品配置。它会使用此信息来验证通过 Edge Microgateway 使用 API 密钥或 OAuth2 访问令牌进行的 API 调用。

1. 在 Edge 上创建 Edge Microgateway 感知 API 代理

  1. 登录您在 Apigee Edge 中的组织。
  2. 在侧边导航菜单中,依次选择开发 > API 代理
  3. 点击 + 代理。系统会调用“构建代理”向导。
  4. 在向导的第一页中,选择反向代理(最常见)
  5. 点击下一步
  6. 在向导的“详情页面”中,按如下方式配置。请务必按照所示方式填写向导:
    • 代理名称:edgemicro_hello
    • 代理基本路径:/hello
    • 现有 API:http://mocktarget.apigee.net/
  7. 点击下一步
  8. 在向导的“安全性”页面中,选择直通(无)
  9. 点击下一步
  10. 在向导的“虚拟主机”页面中,接受默认设置。
  11. 点击下一步
  12. 在向导的“构建”页面中,查看您的代理设置。确保已选择测试环境。
  13. 点击 Build and Deploy

2. 创建 API 产品

  1. 在侧边导航菜单中选择发布 > API 产品
  2. 点击“+ API 产品”
  3. 输入下表中显示的产品详细信息:
    字段 说明
    名称 EdgeMicroTestProduct
    显示名称 Edge Microgatway 测试产品
    环境 测试
    访问 公开
    密钥审批类型 自动
  4. 在“API 资源”部分,添加您刚创建的 API 代理和 edgemicro-auth 代理:
    • edgemicro_hello
    • edgemicro-auth
  5. 点击保存

3. 创建开发者

在本教程中,您可以使用任何现有开发者来执行下一步,即创建开发者应用。不过,如果您愿意,也可以立即创建一个测试开发者:

  1. 在侧边导航菜单中选择发布 > 开发者
  2. 点击 + 开发者
  3. 填写对话框以创建测试开发者。

4. 创建开发者应用

您将使用此应用的客户端凭据通过 Edge Microgateway 进行安全的 API 调用:

  1. 在侧边导航菜单中选择发布 > 应用
  2. 点击 + 应用。系统随即会显示“开发者应用详情”页面。
  3. 根据下表填写开发者应用页面:
    1. 名称:EdgeMicroTestApp
    2. 显示名称:EdgeMicroTestApp
    3. 开发者:如果您创建了测试开发者,请选择该开发者。或者,您可以使用任何现有开发者来学习本教程。
    4. 凭据
      1. 选择“过期时间”:永不
      2. 点击 + 商品,然后选择 EdgeMicroTestProduct(您刚刚创建的商品)
  4. 点击保存
  5. 您会返回到“应用列表”页面。
  6. 选择您刚刚创建的应用 EdgeMicroTestApp
  7. 点击使用方密钥使用方密钥旁边的显示

第 3 部分:运行 Edge Microgateway

现在,您已在 Edge 上配置 Edge Microgateway 并至少有一个 Edge Microgateway 感知代理,接下来可以启动 Edge Microgateway 了。Edge Microgateway HTTP 服务器将在本地机器上运行,您将直接向该服务器发出 API 调用。

1. 启动 Edge Microgateway

使用 edgemicro start 命令启动 Edge Microgateway。

  1. 请确保您拥有之前运行 edgemicro configure 命令时返回的密钥。该输出结果如下所示:
    You need key and secret while starting edgemicro instance
    
    key: da4778e7c240a5d4585fc559eaba5083328828bc9f3a7f583e8b73e
    secret: 3aad7439708b4aeb38ee08e82189921ad00e6fc1ba8a8ae9f929ee2
  2. (可选)打印 edgemicro start 命令的帮助信息。
    edgemicro start -h
  3. 如需启动 Edge Microgateway,请执行以下命令:
    edgemicro start -o [org] -e [env] -k [key] -s [secret]

    其中:

    • org 是您的 Edge 组织名称(您必须是组织管理员)。
    • env 是您组织中的环境(例如测试环境或生产环境)。
    • key 是之前由配置命令返回的密钥。
    • secret 是之前由配置命令返回的密钥。

    示例

    edgemicro start -o docs -e test -k 701e70e718ce6dc1880616b3c39177d64a88754d615c7a4e1f78b6181d000723 -s 05c14356e42d136b83dd135cf8a18531ff52d7299134677e30ef4e34ab0cc824

    输出

    启动命令会从 Apigee Edge 检索大量配置信息(这些信息会滚动显示在终端窗口中)。在输出中,您会看到已发现的微网关感知代理和产品列表。在输出的末尾,您应该会看到如下内容:

    ...
    
    current nodejs version is v12.5.0
    current edgemicro version is 3.1.0
    info: jwk_public_keys download from null returned 200 undefined
    info: jwt_public_key download from https://docs-test.apigee.net/edgemicro-auth/publicKey returned 200 OK
    info: products download from https://docs-test.apigee.net/edgemicro-auth/products returned 200 OK
    info: config download from https://edgemicroservices-us-east-1.apigee.net/edgemicro/bootstrap/organization/docs/environment/test returned 200 OK
    PROCESS PID : 17991
  4. 检查微网关状态。在另一个终端窗口中,cd 到启动 Edge Micro 的同一目录,然后输入以下命令:
    edgemicro status
    current nodejs version is v12.5.0
    current edgemicro version is 3.1.0
    edgemicro is running with 8 workers

这是怎么回事?

从 Apigee Edge 下载 Edge Microgateway 配置信息的载荷,并将其缓存在本地。此类信息包括:

  • 我们之前创建并存储在加密的键值对映射 (KVM) 中的公钥。
  • 组织/环境中所有支持 Edge Microgateway 的代理的表示形式。这些都是以 edgemicro_ 为前缀命名的代理。
  • 组织/环境中存在的所有 API 产品的表示形式。

有了这些信息,Edge Microgateway 便知道允许处理哪些代理和代理路径。它会使用商品信息来强制执行安全性(与 Apigee Edge 上的任何 API 代理完全相同,其中开发者应用密钥与产品相关联)。我们稍后会介绍保护 Edge Microgateway 的步骤。

2. 测试 Edge Microgateway

在 Edge Microgateway 运行的情况下,您可以调用代理。启动 Edge Microgateway 时,系统会从 Edge 下载 edgemicro_hello 代理的配置。请注意,代理基本路径为 /hello

为了测试 Edge Microgateway,我们从基本路径开始,然后添加资源路径 /echo。请注意,基本路径之后的所有内容(包括任何查询参数)都只是传递到后端目标:

curl -i http://localhost:8000/hello/echo
{"error":"missing_authorization","error_description":"Missing Authorization header"}

出现此错误的原因是您未在请求中发送有效的 API 密钥或访问令牌。默认情况下,Edge Microgateway 要求每次 API 调用都必须提供 API 密钥或访问令牌。在本教程的下一步中,我们将妥善保护此 API,并向您展示如何获取有效的访问令牌并将其包含在请求中。

4. 停止 Edge Microgateway

  1. 在另一个终端窗口中,cd 到启动 Edge Microgateway 的同一目录
  2. 输入停止命令:
    edgemicro stop

第 4 部分:保护 Edge Microgateway

您可以使用 API 密钥或访问令牌来保护通过 Edge Microgateway 发出的 API 调用。

使用 OAuth2 访问令牌保护 API 调用

如果您想使用 OAuth2 访问令牌对 API 调用进行身份验证,请按以下步骤操作:

1. 获取所需密钥

  1. 在 Edge 界面中,前往您之前创建的开发者应用。相应应用的名称为 EdgeMicroTestApp。
  2. 在“开发者应用”页面中,显示使用方密钥和使用方密钥令牌,然后复制它们。 您需要这些值才能在下一步中获取访问令牌。

2. 获取访问令牌

获取访问令牌的方式有两种。下面我们将介绍这两种方法。

使用 CLI 获取访问令牌

第一种方法很方便,并且遵循了我们在整个教程中使用的模式。第二种方法通常更适合需要请求令牌的客户端应用开发者。实际的令牌端点是在配置 Edge Microgateway 时部署的 edgemicro-auth 代理中实现的。

  1. (可选)查看 token get 命令的相关帮助:
    edgemicro token get -h
  2. 生成令牌,将您在 Apigee Edge 上创建的开发者应用中的使用方密钥和使用方 Secret 值替换为 -i-s 参数:
    edgemicro token get -o [org] -e [env] -i [consumer_key] -s [consumer_secret]

    其中:

    • org 是您的 Edge 组织名称(您必须是组织管理员)。
    • env 是您组织中的环境(例如测试环境或生产环境)。
    • consumer_id 是您之前创建的开发者应用中的消费者 ID。
    • consumer_secret 是您之前创建的开发者应用中的 Consumer Secret。

    示例

    edgemicro token get -o docs -e test -i G0IAeU864EtBo99NvUbn6Z4CBwVcS2 -s uzHTbwNWvoSmOy

    输出(示例)

    current nodejs version is v12.5.0
    { token: 'eyJ0eXAiOiJKV1QiLCJhbGciSUzI1NiJ9.eyJhcHBsaWNhdGl
    vbl9uYW1lIjoiNWNiMGY0tOWMzOC00YmJjLWIzNzEtZGMxZTQzOGYxZGMxI
    iwiY2xpZW50X2lkIjoiNVVdBWEdvSU9lbzYwYWV3OTRQN0c1TUFaRTNhSnA
    iLCJzY29wZXMiOltdLCJhcGlfcHJvjdF9saXN0IjpbIsVkZ2VNaWNyb1Rlc
    3RQcm9kdWN0IlmlhdCI6MTQ3ODIwODMzMiwiZXhwIjoxNDc4MjEwMTMxfQ.
    v3Q8Rs0W9FO_XpERwIAMMXhjGamRmmmWgrAy1wJv0-99oajx5ASI5qjNubM
    nCF14xxwlVXHcz1VfedA8Nx7Ih145zhWWuPKL9muzhXXnVBRFeBMeeLqJk4
    QQ7Bhst7xH_68nJSTE20Egu95DHOCUemfrepDFH0VggY4BmzvwLkBNfz_te
    E_YqwKZbpGOLMdKK1vMk0fk0x19SieIMS_aJYeOAklrzUhnFxWJFrsAWsax
    NLx_BbQcZzYfK1JSDUrhRNVBuPHMnGjNA_oHw2J4qa6Hsp62PfchG-DIW_t
    -0BFnYf3rYXmqyNORqFrOMdl4VxqQ' }

(可选)使用 API 获取令牌

如果您习惯使用 curl 或其他 HTTP 客户端调用 Edge 代理,那么您会很高兴知道,您可以直接调用令牌端点,而无需使用 edgemicro token 命令。以下是一个 curl 示例。只需将网址中的组织名称和环境名称替换为您的名称,然后在基本身份验证标头中传递以英文冒号分隔的使用方密钥:使用方密码值:

curl -i -X POST "http://[org]-[env].apigee.net/edgemicro-auth/token" -d '{ "client_id": "your consumer key", "client_secret": "your consumer secret", "grant_type": "client_credentials" }' -H "Content-Type: application/json"

其中:

  • org 是您的 Edge 组织名称(您必须是组织管理员)。
  • env 是您组织中的环境(例如测试环境或生产环境)。
  • client_id 是您之前创建的开发者应用中的消费者 ID。
  • client_secret 是您之前创建的开发者应用中的 Consumer Secret。

输出 (示例)

无论您是使用 edgemicro token CLI 命令还是使用 curl 调用端点,该命令都会返回一个签名访问令牌,可用于进行客户端调用。 如下所示:

MIICpDCCAYwCCQDpIvWlpaZJGDANBgkqhkiG9w0BAQFADAUMRIwEAYDVQQDEwls 
b2NhbGhvc3QwHhcNMTYwNDA3MTcxNTM5WhcNMTYwND4MTcxNTM5WjAUMRIwEAYD 
VQQDEwlsb2NhbGhvc3QwggEiMA0GCSqGSIb3DQEBAUAA4IBDwAwggEKAoIBAQD3 
OAQ+kf5FH0S0yuj05ITqUODuUJspBPberRMbqOZYHcFsnhB0Yvg6JKWxKWBDP9o
Xl96dtgH7xPFRqIU0zI452jkMQ1fPz2mSaGwik241yfBku7olooXKRKTRKOUoXa
q3Hld/RPxGSsWtiyyYtKex7tuFdq0Knm1EhowdTRGIgjNvudeYMka/XPRXuykhd 
xIDxWj4rdX+4GPx9qT2eTQC5nOAC7XHVL7ys4KqsAiv28vw10u400KstFFS8Qho 
7FaE0bOKLolKKadKyA60ha1XIw/uSTD6ZQFWQ+XM3OaRbXePWXnSZioSxXcZT7L 
hMUKbsRXw/TCvRB51LgNAgMBAAEwDQYJKoZIhvcNAQELBQADgEBAOuR1OmE/W6j 
gRAarJB5EQuTEpI/9Zpg5c5RAGjzLhkazsycn7pal+IymUjCV7D0oIxTVuTM8ZZ 
57kR5hF/C1ZypDN9i+KGP2ovX8WOCCXYtIQECgZPB/L/7/k7BDuKN4vFBvWUe3X 
s2oyjnVWy+ASqsW8gHfj8ekhe22bP240Oqkbyg9SZP9ol1tvJX6+M0thYwcTwAd 
ft929Icey/MOTQC0jB2qm0gnIx/7KInFXfS5KoFRJoGrWDeckr3RdBo2LhnPaeZ 
1gPYIqphZ3HfisF5KlBXoR8oT/Ilym/nq5COlv+3L4tMIk18F7BQZB60SRazifz 
pFkIxepyr/0=
      

3. 检查 Edge Microgateway 中的配置

  1. 打开文件 $HOME/.edgemicro/org-env-config.yaml。如果您找不到此文件,请参阅 Edge Microgateway 安装位置
  2. 确保这些 OAuth 插件属性设置为 false。它们默认值为 false,但最好仔细检查一下:
    oauth:
       allowNoAuthorization: false
       allowInvalidAuthorization: false
  3. 同样在 org-env-config.yaml 文件中,确保已将 oauth 插件添加到 plugins:sequence 元素,如下所示:
    plugins:
       dir: ../plugins
       sequence:
       - oauth
  4. 如果您对文件进行了任何更改,请将这些更改重新加载到正在运行的 Edge Microgateway 实例中。此命令会重新配置 Edge Microgateway,且不会造成停机:
    edgemicro reload -o [org] -e [env] -k [key] -s [secret]

    其中:

    • org 是您的 Edge 组织名称(您必须是组织管理员)。
    • env 是您组织中的环境(例如测试环境或生产环境)。
    • key 是之前由配置命令返回的密钥。
    • secret 是之前由配置命令返回的密钥。

    示例

    edgemicro reload -o docs -e test -k 701e70ee718ce6dc188016b3c39177d64a88754d615c74e1f78b6181d

4. 安全地调用 API

获得访问令牌后,您现在可以安全地进行 API 调用了。例如:

  curl -i -H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhcHBsaWNhdGlvbl
9uYW1lIjoiYmU2YmZjYjAtMWQ0Ni00Y2IxLWFiNGQtZTMxNzRlNTAyMDZkIiwiY2xpZW50X2lkIjoiOGxTTTVIRHdyM
VhIT1ZwbmhURExhYW9FVG5STVpwWk0iLCJzY29wZXMiOltdLCJhcGlfcHJvZHVjdF9saXN0IjpbIk1pY3JvZ2F0ZXdh
eVRlQcm9kdWN0Il0sImCI6MTQzNTM0NzY5MiwiZXhwIjoxNDM1MzQ5NDkxfQ.PL30Y6uK1W1f2ONPEsBDB_BT31c6
IsjWGfwpz-p6Vak8r767tAT4mQAjuBpQYv7_IU4DxSrnxXQ_q536QYCP4p4YKfBvyqbnW0Rb2CsPFziy_n8HIczsWO
s0p4czcK63SjONaUpxV9DbfGVJ_-WrSdqrqJB5syorD2YYJPSfrCcgKm-LpJc6HCylElFDW8dHuwApaWcGRSV3l5Wx
4A8Rr-WhTIxDTX7TxkrfI4THgXAo37p3au3_7DPB_Gla5dWTzV4j93xLbXPUbwTHzpaUCFzmPnVuYM44FW5KgvBrV0
64RgPmIFUxSqBWGQU7Z1w2qFmWuaDljrMDoLEreI2g" http://localhost:8000/hello/echo

该 API 会返回模拟服务器中的标头和其他信息。

使用 API 密钥保护 API

如果您希望使用 API 密钥进行授权,请按以下步骤操作:

1. 获取 API 密钥

  1. 在 Edge 界面中,前往您之前创建的开发者应用。相应应用的名称为 EdgeMicroTestApp。
  2. 在“开发者应用”页面中,显示使用方密钥并复制该密钥。此值是 API 密钥。您将使用此密钥进行经过身份验证的 API 调用。

2. 检查 Edge Microgateway 中的配置

  1. 打开文件 $HOME/.edgemicro/org-env-config.yaml. 。如果您找不到此文件,请参阅 Edge Microgateway 安装在何处
  2. 确保这些 OAuth 插件属性设置为 false。它们默认值为 false,但您可以根据需要进行仔细检查:
    oauth:
       allowNoAuthorization: false
       allowInvalidAuthorization: false
  3. 同样在 org-env-config.yaml 文件中,确保已将 oauth 插件添加到 plugins:sequence 元素,如下所示:
    plugins:
       dir: ../plugins
       sequence:
       - oauth
        
  4. 如果您对文件进行了任何更改,请将这些更改重新加载到正在运行的 Edge Microgateway 实例中。此命令会重新配置 Edge Microgateway,且不会造成停机:
    edgemicro reload -o [org] -e [env] -k [key] -s [secret]

    其中:

    • org 是您的 Edge 组织名称(您必须是组织管理员)。
    • env 是您组织中的环境(例如测试环境或生产环境)。
    • key 是之前由配置命令返回的密钥。
    • secret 是之前由配置命令返回的密钥。

    示例

    edgemicro reload -o docs -e test -k 701e70ee718ce6dc188016b3c30177d64a88754d615c74e1f78b6181d

3. 使用 API 密钥安全地调用 API

使用 x-api-key 标头调用 API,如下所示。您从开发者应用复制的使用方密钥值就是 API 密钥。默认情况下,Edge Microgateway 要求您在名为 x-api-key 的标头中传递密钥,如下所示:

curl -i http://localhost:8000/hello/echo -H "x-api-key: [apikey]"

其中:

  • apikey 是从 EdgeMicroTestApp 中提取的使用方密钥值。

例如:


curl -i http://localhost:8000/hello/echo -H 'x-api-key: XsU1R4zGXz2ERxd0ilYQ5szwuljr5bB'

现在,您已拥有一个功能齐全且安全的 Edge Microgateway。在本教程的下一部分中,我们将介绍可为 Edge Microgateway 添加功能的插件。

第 5 部分:添加 Spike Arrest 插件

在此部分中,我们将向 Edge Microgateway 实例添加一项名为“突峰抑制”的速率限制功能。

什么是插件?

插件是一种 Node.js 模块,可为 Edge Microgateway 添加功能。插件模块遵循一致的模式,并存储在 Edge Microgateway 已知的位置,从而使微网关能够自动发现并加载它们。如需详细了解插件,请参阅使用插件

添加 Spike Arrest 插件

流量高峰抑制插件可防止流量激增。它会限制 Edge Microgateway 实例处理的请求数。

在 Edge Microgateway 中,突发流量拦截功能以插件模块的形式实现。如需启用此功能,您需要将其添加到 Edge Microgateway 配置文件中。

  1. 如果您找不到此文件,请打开文件 $HOME/.edgemicro/org-env-config.yaml.Edge Microgateway 安装位置
  2. 添加以下元素。您可以将其添加到文件的任意位置。
       spikearrest:
          timeUnit: minute   
          allow: 10   
          buffersize: 0   
  3. spikearrest 添加到 edgemicro:sequence 元素,如下所示。序列配置属性用于告知 Edge Microgateway 插件模块的执行顺序。
    edgemicro:
      home: ../gateway
      port: 8000
      max_connections: -1
      max_connections_hard: -1
      logging:
        level: info
        dir: /var/tmp
        stats_log_interval: 60
      plugins:
        dir: ../plugins
      sequence:
        - oauth
        - spikearrest
  4. 保存配置文件。
  5. 使用 reload 命令重新加载 Edge Microgateway。您必须从启动 Edge Microgateway 的目录运行此命令。
    edgemicro reload -o [org] -e [env] -k [key] -s [secret]

    其中:

    • org 是您的 Edge 组织名称(您必须是组织管理员)。
    • env 是您组织中的环境(例如测试环境或生产环境)。
    • key 是之前由配置命令返回的密钥。
    • secret 是之前由配置命令返回的密钥。

    示例

    edgemicro reload -o docs -e test -k 701e70ee718ce6dc188016b3c39177d64a88754d615c74e1f78b6181d
  6. 尝试快速连续多次调用 API。在第二次调用后,Edge Microgateway 会返回以下错误:
    {"message":"SpikeArrest engaged","status":503}

原因是,峰值抑制功能可平滑指定时间单位内可进行的调用次数。因此,在这种情况下,您可以在 1 分钟内拨打 10 次电话,即每 6 秒拨打一次。

加分题:添加配额插件

按照用于配置峰值抑制的相同模式,您可以添加其他插件,例如配额插件。 与突峰流量限制一样,配额插件包含在每个 Edge Microgateway 安装中。配额指定应用在指定时间间隔(分钟或小时)内允许向 API 提交的请求消息的数量。

第 6 部分:在 Apigee Edge 上查看分析

我们现在有了一个功能齐全的 Edge Microgateway 实例,让我们看看它在做什么! 默认情况下,分析插件模块会添加到 Edge Micro。此模块会以静默方式将分析数据从 Edge Micro 推送到 Apigee Edge,供 Edge Analytics 系统使用。 我们来看看:

  1. 登录您在 Apigee Edge 中的组织。
  2. 依次选择分析 > 代理性能
  3. 在“代理性能”信息中心内,选择 edgemicro_hello 代理
  4. 该图表会显示代理的流量模式相关信息,例如总流量、平均响应时间、平均目标响应时间等。

如需详细了解 Edge Analytics 信息中心,请参阅 Edge 文档中的“Analytics 信息中心”首页。如需详细了解插件,请参阅使用插件