You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Node.js创建Azure容器SAS令牌并列出容器?

解决方法

1. 修正SAS权限配置

要列出容器内的Blob,你的SAS令牌需要包含list权限,仅read权限只能读取Blob内容,无法获取容器内的Blob列表。修改权限代码:

const permissions = new BlobSASPermissions();
permissions.read = true;
permissions.list = true; // 新增list权限

2. 使用SAS URL初始化容器客户端并列出Blob

生成SAS URL后,需要借助Azure Blob Storage SDK的ContainerClient来完成Blob列表查询,直接访问SAS URL无法返回结构化的Blob列表数据。

完整示例代码:

const { BlobSASPermissions, generateBlobSASQueryParameters, SharedKeyCredential, ContainerClient } = require("@azure/storage-blob");

// 替换为你的存储账户信息
const accountName = "your-storage-account-name";
const accountKey = "your-storage-account-key";
const containerName = "your-container-name";

const sharedKeyCredential = new SharedKeyCredential(accountName, accountKey);

const startDate = new Date();
const expiryDate = new Date(startDate);
expiryDate.setMinutes(startDate.getMinutes() + 30);

const permissions = new BlobSASPermissions();
permissions.read = true;
permissions.list = true; // 必须添加list权限才能列出容器内的Blob

const sasToken = generateBlobSASQueryParameters({
    containerName: containerName,
    permissions: permissions,
    startsOn: startDate,
    expiresOn: expiryDate
}, sharedKeyCredential).toString();

console.log(`SAS token for container ${containerName}: ${sasToken}`);
const containerSasUrl = `https://${accountName}.blob.core.windows.net/${containerName}?${sasToken}`;

// 使用SAS URL创建容器客户端并列出Blob
async function listBlobsInContainer() {
    const containerClient = new ContainerClient(containerSasUrl);
    
    for await (const blob of containerClient.listBlobsFlat()) {
        console.log(`Blob name: ${blob.name}`);
    }
}

// 执行列出操作
listBlobsInContainer().catch(err => {
    console.error("Error listing blobs:", err);
});

关键说明

  • list权限是获取容器内Blob列表的必要条件,缺少该权限会导致列表请求被拒绝。
  • SDK的ContainerClient会自动处理请求的签名校验和API逻辑,确保能正确获取Blob列表数据。

内容的提问来源于stack exchange,提问作者Jack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 23:39:59