如何为带Event Grid输出绑定的Azure Function配置托管身份替代主题密钥
使用托管身份配置Azure函数的Event Grid输出绑定
要把你的Azure函数Event Grid输出绑定从主题密钥切换为托管身份,按以下步骤操作:
1. 给函数应用启用托管身份
打开Azure门户里的函数应用,左侧菜单找「身份」选项:
- 选「系统分配」标签,把状态设为「开启」,点击保存。系统会自动生成对应的服务主体。
- 如果用用户分配的托管身份,就选「用户分配」标签,添加已创建的身份到函数应用。
2. 给托管身份分配Event Grid发送权限
打开你的Event Grid主题资源,进入「访问控制(IAM)」页面:
- 点击「添加」→「添加角色分配」。
- 角色选「Event Grid 数据发送者」,这个角色刚好满足向主题发事件的权限。
- 成员类型选「托管身份」,然后搜索并选中函数应用的托管身份,完成添加。
3. 修改函数代码
直接移除EventGridOutput属性里的TopicKeySetting参数就行,托管身份认证不需要密钥:
[Function("TestEventGrid")] [EventGridOutput(TopicEndpointUri = "MyEventGridTopicUriSetting")] public async Task<MyEvent> Run([HttpTrigger(AuthorizationLevel.Anonymous, "post")] HttpRequestData req) { return await Task.FromResult(new MyEvent { Id = "123", Subject = "sub", EventType = "myevent", EventTime = DateTime.Now, Data = new TestData(), DataVersion = "1.0" }); }
4. 配置应用设置
确保函数应用的应用设置里,MyEventGridTopicUriSetting的值是Event Grid主题的完整端点URL,格式大概是:https://<你的主题名称>.<区域>.eventgrid.azure.net/api/events。
额外说明
- 如果用的是用户分配托管身份,还要给函数应用加一个应用设置
AzureWebJobsEventGridClientId,值填用户分配身份的客户端ID,这样绑定才会用指定的身份去认证。 - 权限分配后可能需要等几分钟才会生效,如果测试时遇到认证错误,先等一会儿再重试。
内容的提问来源于stack exchange,提问作者Gary
相关产品推荐
相关产品推荐

