我正在尝试使用deleteBlobIfExists()
npm包中的azure-storage
函数从私有Blob容器中删除Blob。但是,当函数执行时,result
总是以false
的形式返回,这意味着blob“不存在”。但是斑点确实存在。我只是假设它找不到该Blob,因为容器的访问权限设置为“私有”。帮助吗?
const blobService = azure.createBlobService();
blobService.deleteBlobIfExists("my-blob-container", "my-blob", (err, result) => {
if(err) {
console.log(err);
}
});
答案 0 :(得分:1)
如果容器的访问级别是私有的,则在使用azure.createBlobService()
创建Blob客户端时,需要提供存储连接字符串或帐户名和帐户密钥。
此外,SDK azure-storage
是Azure存储nodejs V2。这是旧版SDK。我建议您使用sdk @azure/storage-blob
。这是最新的SDK。关于使用方法,请参考以下步骤
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
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()
}
答案 1 :(得分:0)
我确认Jim Xu的意思-致电时添加您的连接字符串
azure.createBlobService()
并成功删除Blob。我尝试了快速入门示例代码,并能够成功删除私有容器中的Blob。
const CONNECT_STR = process.env.CONNECT_STR;
console.log('\nDeleting blob...');
// Delete blob
const blobService = azure.createBlobService(CONNECT_STR);
blobService.deleteBlobIfExists(containerName, blobName, (err, result) => {
if(err) {
console.log(err);
}
});
console.log("Blob was deleted successfully.");
答案 2 :(得分:0)
如果您在创建blob事件之后不久致电Azure,则听起来像与Azure发生竞争。