当前位置: 首页 > 知识库问答 >
问题:

Azure 事件网格正在创建订阅:“无权执行操作”

秦俊
2023-03-14

我目前正在使用节点js将主题发布到事件网格,并通过事件网格订阅主题。在https://docs.microsoft.com/en-us/rest/api/eventgrid/使用事件网格API时,我收到一个错误,其中我在创建订阅时无权执行操作。我创建了一个主题并具有访问我的Azure帐户的门禁权限,因此我不明白为什么会出现这个Rest错误。

我的代码:

const { ClientSecretCredential } = require("@azure/identity");
const { SystemTopicEventSubscriptions, EventGridManagementClientContext, DomainTopics, EventSubscriptions  } = require("@azure/arm-eventgrid");
const subscriptionId = "idea number";

const resourceGroupName = "eventgrid-dev";
const domainName = "test-domain";
let tenantId = "idea number";
let clientSecret = "idea number";
let clientId = "idea number";
const firstCredential = new ClientSecretCredential(tenantId, clientId, clientSecret);
//const client = new EventGridManagementClient(firstCredential, subscriptionId); 

const clientContext = new EventGridManagementClientContext(firstCredential, subscriptionId);

// Topics
let domainTopics = new DomainTopics(clientContext);

domainTopics.beginCreateOrUpdate(resourceGroupName, domainName, "test-topic")
.then(result => {
    console.log("result");
    console.log(result);
})
.catch(error => {
    console.log("Error");
    console.log(error);
}) 

let subscription = new EventSubscriptions(clientContext);
subscription.beginCreateOrUpdate("/subscriptions/subscriptionId/resourceGroups/eventgrid-dev", "test-subscription",{topic: "test-topic"})
.then(result => {
  console.log("result");
  console.log(result);
})
.catch(error => {
  console.log("Error");
  console.log(error);
}) 

输出:

Error
RestError: The client 'subscriptionID' with object id 'subscriptionID' does not have authorization to perform action 'Microsoft.EventGrid/eventSubscriptions/Microsoft.EventGrid/test-subscription/write' over scope '/subscriptions/subscriptionID/resourceGroups/eventgrid-dev/providers/Microsoft.EventGrid/eventSubscriptions/providers/Microsoft.EventGrid/eventSubscriptions' or the scope is invalid. If access was recently granted, please refresh your credentials.

感谢您的帮助!

共有1个答案

夹谷苗宣
2023-03-14

如果存在事件网格域,请使用以下代码在请求的主题上创建事件网格订阅。请注意,主题是在其第一次订阅期间自动创建的:

let subscription = new EventSubscriptions(clientContext);
const scope = '/subscriptions/' + subscriptionId + '/resourceGroups/' + resourceGroupName + '/providers/Microsoft.EventGrid/domains/' + domainName + '/topics/test-topic';
const test_webhookEndpointUrl = ' ... ';
subscription.beginCreateOrUpdate(scope, "test-subscription",
    {
        destination: {
            endpointType: "WebHook",
            endpointUrl: test_webhookEndpointUrl
        }      
    }
).then(result => {
        console.log("result");
        console.log(result);
    })
    .catch(error => {
        console.log("Error");
        console.log(error);
    })
 类似资料:
  • 因此,使用VS2019,我创建了一个Blob触发函数(v2),并针对Blob存储(v2)将其部署到Azure。如果我上传一个文件,该函数将被执行,blob存储中的文件将被成功处理。这里一切都好。 我现在希望创建一个Azure事件网格订阅(通过Azure门户)来附加到触发器和存储,但是,我看不到函数名称。 选择订阅后,请选择资源组 以前有人面对过吗?我希望在这个问题上有任何见解。 谢啦

  • 基本上,我试图使用ARM部署一个事件网格订阅来收集订阅中的特定事件(主题类型= Azure订阅)。我已经有一个创建了事件网格触发功能的功能应用程序,只需要将该功能与事件网格订阅绑定为webhook。 我正在使用Azure DevOps中的发布管道来自动化整个工作流。 以下是我使用的一个示例: 这最终部署了事件网格主题,而不是事件网格订阅。 然后,有人建议我尝试以下操作: 但是这最终以这个错误而失败

  • 我无法在Azure事件网格中添加新的WebHook订阅。有人能帮忙吗?当我添加webhookendpoint时,出现以下错误。

  • 我正试图开发一个Azure函数来处理由事件中心的捕获功能创建的blob。然而,尽管捕获blobs被正确地存储在容器中,但似乎没有< code>Microsoft。EventHub . capturefile created 事件发布到函数订阅。功能endpoint的事件订阅已创建,没有错误,Azure CLI的输出为 该函数的主体是一个标准的Http触发器,其中包含事件网格endpoint订阅所需

  • 好的,非常基本-我似乎无法在Azure门户中创建对Azure事件网格主题的订阅。遵循指南,表单中没有红墨水(表示任何错误或我遗漏的任何内容),但“创建”按钮始终保持灰色,对我日益绝望的按下操作没有反应! 因此,在Azure门户上使用“创建活动订阅”表单并... < li >订阅名称的格式正确。 < li >当我从事件主题中选择“创建”选项时,主题已正确生成(实际上是预填充的)。主题处于活动状态。

  • 我在 中配置任何<code>传递属性(如授权或内容类型头),我将面临一个问题(无法订阅webhook),如下所示。请参阅下面的附件了解错误详细信息(如图右侧所示)。 具有 Webhook 传递属性的事件网格订阅失败 有人能帮我一下吗? 提前感谢, 阿育王