我已使用 ClientSecretCredential 访问 Azure 存储队列方法,但在访问时 队列 receiveMessages、队列 peekMessages 和 deleteMessages 它给了我错误
RestError: This request is not authorized to perform this operation using this permission. RequestId:c92577923e-a603-0004-61c0-f70a19000
这是我的 Node.js 代码
const { QueueServiceClient } = require("@azure/storage-queue");
const { ClientSecretCredential } = require("@azure/identity");
async function getQueueMessages() {
try {
let myStorageAccount = "hellostorage";
const credential = new ClientSecretCredential(tenantId, app_id, SecretKey);
const queueServiceClient = new QueueServiceClient(
`https://${myStorageAccount}.queue.core.windows.net`,
credential
);
const queueName = "hello-queue";
const queueClient = queueServiceClient.getQueueClient(queueName);
const response = await queueClient.receiveMessages(10);
console.log("response: ", response);
} catch (error) {
console.log("error: ", error);
}
}
getQueueMessages();
最佳答案
您共享的屏幕截图本质上允许您的服务主体为您的存储帐户获取 token 。它不授予您对存储帐户执行操作的权限,这就是您收到此错误的原因。
您需要做的是向存储帐户上的服务主体授予适当的数据相关权限。请参阅此链接,了解必须分配给服务主体才能执行数据相关操作的相应 RBAC 角色:https://learn.microsoft.com/en-us/rest/api/storageservices/authorize-with-azure-active-directory#manage-access-rights-with-rbac .
您可以尝试使用 Storage Queue Data Message Processor
或Storage Queue Data Contributor
角色。
应用适当的角色后,您应该能够执行操作。
关于node.js - 由于授权权限不匹配,无法访问存储队列接收消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70458234/