gpt4 book ai didi

azure - 在公共(public)容器上获取​​ "AuthorizationPermissionMismatch"

转载 作者:行者123 更新时间:2023-12-03 04:04:12 34 4
gpt4 key购买 nike

我们使用 NodeJS @azure/storage-blob SDK 来访问我们组织中的存储容器/blob。我们开发了一个系统,用户可以通过登录我们的服务器来访问私有(private)容器,并且通过我们的管理员将他们的帐户添加到某些 IAM 角色(授予他们对 blob 的读/写/删除访问权限).

现在,我们希望允许一些新用户默认访问公共(public)容器/blob。我们已经公开了一个容器,并且可以通过 URL 访问这些存储容器/blob 的公共(public)链接,但是当尝试通过 NodeJS API 访问它们时,我们会得到“AuthorizationPermissionMismatch” “错误。

我们使用的代码如下:

function getBlobDirectories(result) {
console.log(result);
}

function errorinlisting(err) {
console.log(err);
}

const containerClient = global.getBlobService(this.storageAccount,req.user).getContainerClient(this.containerName);
let blobDirIterator = containerClient.listBlobsByHierarchy('/');
blobDirIterator.next().then(getBlobDirectories).catch(errorinlisting);

函数 getBlobService 如下所示:

exports.getBlobService = (storageAcc, user)=> {
const account = storageAcc;
const accountKey = storageaccountkeys[storageAcc]

let blobServiceClient;

const simpleTokenCredential = new SimpleTokenCredential(user.azureToken);
blobServiceClient = new BlobServiceClient(
`https://${account}.blob.core.windows.net`,
simpleTokenCredential
);
return blobServiceClient;
}

调用 listBlobsByHierarchy,最终出现错误,最终调用上面的 errorinlisting 函数并出现“AuthorizationPermissionMismatch”错误。

可能是什么问题?这是 NodeJS API 中的错误吗?

任何帮助都是无价的。

最佳答案

如果您的容器可公开访问,您可能需要尝试创建一个没有凭据的 ContainerClient 实例:

const { ContainerClient } = require("@azure/storage-blob")

const url = "<url to container with anonymous access>";
const containerClient = new ContainerClient(url);

async function main() {
for await (const blob of containerClient.listBlobsFlat()) {
console.log(blob.name);
}
}

main().catch(error => {
console.error(error);
})

关于azure - 在公共(public)容器上获取​​ "AuthorizationPermissionMismatch",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60830598/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com