你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
适用于 JavaScript 的 Azure 事件网格命名空间客户端库 - 版本 1.0.0
Azure 事件网格 是一项基于云的服务,可提供大规模可靠的事件传送。
使用客户端库将事件发送到事件网格命名空间
关键链接:
入门
目前支持的环境
- LTS 版本的 Node.js
- 最新版本的 Safari、Chrome、Edge 和 Firefox。
有关更多详细信息,请参阅我们的支持政策。
先决条件
如果使用 Azure CLI,请将 和 <your-resource-name>
替换为<your-resource-group-name>
自己的唯一名称:
创建事件网格主题
az eventgrid topic create --location <location> --resource-group <your-resource-group-name> --name <your-resource-name>
创建事件网格域
az eventgrid domain create --location <location> --resource-group <your-resource-group-name> --name <your-resource-name>
安装 @azure/eventgrid-namespaces
包
使用 npm
安装适用于 JavaScript 的 Azure 事件网格命名空间客户端库:
npm install @azure/eventgrid-namespaces
创建命名空间客户端并对其进行身份验证
若要创建用于访问事件网格命名空间 API 的客户端对象,需要 endpoint
事件网格主题的 和 credential
。 事件网格命名空间客户端可以使用访问密钥。
可以在 Azure 门户 或使用以下 Azure CLI 代码片段中找到事件网格主题的终结点:
az eventgrid topic show --name <your-resource-name> --resource-group <your-resource-group-name> --query "endpoint"
使用访问密钥
使用 Azure 门户 浏览到事件网格资源并检索访问密钥,或者使用以下 Azure CLI 代码片段:
az eventgrid topic key list --resource-group <your-resource-group-name> --name <your-event-grid-topic-name>
拥有 API 密钥和终结点后,可以使用 AzureKeyCredential
类对客户端进行身份验证,如下所示:
const { EventGridSenderClient, EventGridReceiverClient, AzureKeyCredential } = require("@azure/eventgrid-namespaces");
const eventGridSenderClient = new EventGridSenderClient(
"<endpoint>",
new AzureKeyCredential("<Access Key>")
);
const eventGridReceiverClient = new EventGridReceiverClient(
"<endpoint>",
new AzureKeyCredential("<Access Key>")
);
Azure EventGrid 提供与 Azure Active Directory (Azure AD) 的集成,用于对请求进行基于标识的身份验证。 借助 Azure AD,可以使用基于角色的访问控制 (RBAC) 向用户、组或应用程序授予对 Azure 事件网格资源的访问权限。
若要使用 将事件发送到主题 TokenCredential
或域,应为经过身份验证的标识分配“EventGrid 数据发送者”角色。
@azure/identity
使用 包,可以在开发和生产环境中无缝授权请求。 若要详细了解 Azure Active Directory,请参阅 @azure/identity
自述文件。
例如,可以使用 DefaultAzureCredential
来构造将使用 Azure Active Directory 进行身份验证的客户端:
const { EventGridSenderClient, EventGridReceiverClient } = require("@azure/eventgrid-namespaces");
const { DefaultAzureCredential } = require("@azure/identity");
const eventGridSenderClient = new EventGridSenderClient(
"<endpoint>",
new DefaultAzureCredential(),
"<topicName>"
);
const eventGridReceiverClient = new EventGridReceiverClient(
"<endpoint>",
new DefaultAzureCredential(),
"<topicName>",
"<subscriptionName>"
);
关键概念
发送和接收事件
EventGridSenderClient
可用于将事件发送到事件网格。 可将其初始化为:
const eventGridSenderClient = new EventGridSenderClient(
"<endpoint>",
new AzureKeyCredential("<API Key>"),
"<topicName>"
);
EventGridReceiverClient
可用于从事件网格接收事件。 可将其初始化为:
const eventGridReceiverClient = new EventGridReceiverClient(
"<endpoint>",
new AzureKeyCredential("<API Key>"),
"<topicName>",
"<subscriptionName>"
);
分布式跟踪和云事件
此库支持使用 @azure/core-tracing
的分布式跟踪。 使用分布式跟踪时,此库将在操作期间创建一个 send
范围。 此外,使用 Cloud Events 1.0 架构发送事件时,SDK 将使用分布式跟踪 扩展将分布式跟踪元数据添加到事件中。 和 tracestate
扩展属性的值traceparent
对应于traceparent
发送事件的 HTTP 请求中的 和 tracestate
标头。 如果事件已有 traceparent
扩展属性,则不会更新该事件。
Kubernetes 上的事件网格
此库已在 Kubernetes 上使用 Azure Arc 进行测试和验证。
示例
将事件发布到事件网格主题
const { EventGridSenderClient, AzureKeyCredential } = require("@azure/eventgrid-namespaces");
const client = new EventGridSenderClient(
"<endpoint>",
new AzureKeyCredential("<API key>"),
"<topicName>"
);
const cloudEvent: CloudEvent = {
type: "example",
source: "https://example.com",
id: `singleEventIdV210001`,
time: new Date(),
data: {
resourceUri: "https://dummyurl.com",
},
specversion: "1.0",
};
// Publish the Cloud Event
await client.sendEvents(cloudEvent);
疑难解答
日志记录
启用日志记录可能有助于发现有关故障的有用信息。 若要查看 HTTP 请求和响应的日志,请将 AZURE_LOG_LEVEL
环境变量设置为 info
。 或者,可以在运行时通过调用 @azure/logger
中的 setLogLevel
来启用日志记录:
const { setLogLevel } = require("@azure/logger");
setLogLevel("info");
有关如何启用日志的更详细说明,请查看 @azure/logger 包文档。
后续步骤
有关如何使用此库的详细示例,请查看 示例 目录。
贡献
若要为此库做出贡献,请阅读贡献指南,详细了解如何生成和测试代码。