node.js - 如何从私有(private) Azure Blob 存储容器中删除 Blob

标签 node.js azure azure-blob-storage

我正在尝试使用 azure-storage npm 包中的 deleteBlobIfExists() 函数从私有(private) Blob 容器中删除 Blob。但是,当执行该函数时,结果始终返回为false,这意味着该 blob“不存在”。但 Blob 确实存在。我只是假设它找不到 blob,因为容器的访问权限设置为“私有(private)”。帮忙?

const blobService = azure.createBlobService();
blobService.deleteBlobIfExists("my-blob-container", "my-blob", (err, result) => {
   if(err) {
      console.log(err);
   }
});

最佳答案

如果容器的访问级别是私有(private)的,则在使用 azure.createBlobService() 创建 Blob 客户端时需要提供存储连接字符串或帐户名称和帐户 key 。

此外,sdk azure-storage 是 Azure Storage Nodejs V2。它是一个遗留的 SDK。我建议你使用sdk @azure/storage-blob 。这是最新的SDK。关于如何使用,请引用以下步骤

  1. 创建 sp
az ad sp create-for-rbac -n <your-application-name> --skip-assignment
az keyvault set-policy --name <your-key-vault-name> --spn $AZURE_CLIENT_ID --secret-permissions backup delete get list purge recover restore set

  • 创建 .env 文件
  • AZURE_TENANT_ID=<tenant id>
    AZURE_CLIENT_ID=<app id>
    AZURE_CLIENT_SECRET=<password>
    
  • 安装包
  • npm install @azure/identity
    npm install @azure/storage-blob
    
  • 代码
  • var storage = require("@azure/storage-blob")
    const { DefaultAzureCredential } = require("@azure/identity");
    
    const defaultAzureCredential = new DefaultAzureCredential();
      const blobclient = new storage.BlobServiceClient("<blob url>",defaultAzureCredential)
      if(blobClient.exists()){
    
        blobClient.delete()
    
      }
    
    
    

    关于node.js - 如何从私有(private) Azure Blob 存储容器中删除 Blob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59364798/

    相关文章:

    c# - 需要通过oledb连接从azure存储blob容器读取excel文件

    javascript - 如何在浏览器中显示控制台内容?

    azure - stackexchange redis,读取大文件=超时

    Azure AD 错误代码 90094

    amazon-web-services - 如何在 GCP/Azure/AWS 中创建可通过浏览器访问的 Linux 虚拟机

    azure - 仅用于 Windows Azure 上的 Blob 存储的小型库?

    azure - 如何处理附加 blob 异常?

    javascript - 服务器端连接到 socket.io 服务器

    javascript - 如何使用 Express 4 和 Multer 保存文件?

    node.js - 尝试在处于 root.deleted.inFlight 状态时处理 <appname@model:post::ember622:17> 上的事件 `pushedData`