按照官方文档,我编写了这个脚本来尝试连接自定义域 azure 存储空间:
const { BlobServiceClient } = require("@azure/storage-blob");
const account = "validaccount";
const sas = "sv=xxxx&.......";
const blobServiceClient = new BlobServiceClient(`https://${account}.blob.core.customdomain.name${sas}`);
//===============
async function main() {
let i = 1;
let containers = blobServiceClient.listContainers();
for await (const container of containers) {
console.log(`Container ${i++}: ${container.name}`);
}
}
main();
我收到错误:Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.
我确定 SASURI 是有效的,我可以在azure blob storage explorer中使用它,但在我的代码中它不起作用。
我尝试了一些组合,例如:</p>
https://${account}.blob.core.customdomain.name?${sas}
//添加一个'?'https://${account}.blob.core.customdomain.name/abc?${sas}
//abc 是一个有效的容器名称https://${account}.blob.core.customdomain.name/abc${sas}
//消除 '?' 但保留容器名称https://${account}.blob.core.customdomain.name',sas
//尝试作为两个参数传递。
但都失败了。
我不确定还有其他方法。
我想这可能是因为 SAS 令牌仅授权给abc
容器,它无法读取域根目录。
但如果是这样,为什么第二个组合也失败了。
我使用@azure/storage-blob v12.3.0