如何通过Java API禁用Azure存储账户的Blob版本控制功能
通过Java API禁用Azure存储账户Blob版本控制的实现方法
Blob版本控制是存储账户Blob服务层级的配置,你可以通过Azure官方的Resource Manager Storage Java SDK完成配置修改,具体操作如下:
- 首先引入SDK依赖,如果你用Maven管理项目,在pom.xml中添加以下依赖:
<!-- Azure Storage管理SDK --> <dependency> <groupId>com.azure.resourcemanager</groupId> <artifactId>azure-resourcemanager-storage</artifactId> <version>2.30.0</version> </dependency> <!-- Azure身份认证SDK --> <dependency> <groupId>com.azure</groupId> <artifactId>azure-identity</artifactId> <version>1.8.2</version> </dependency>
- 初始化存储管理客户端,推荐使用
DefaultAzureCredential完成认证,该方式支持本地开发环境的Visual Studio/CLI凭据认证,也支持生产环境的托管身份认证,无需硬编码密钥:
import com.azure.core.management.AzureEnvironment; import com.azure.identity.DefaultAzureCredentialBuilder; import com.azure.resourcemanager.storage.StorageManager; import com.azure.resourcemanager.storage.models.BlobServiceProperties; public class DisableBlobVersioning { public static void main(String[] args) { // 替换为你自己的订阅ID String subscriptionId = "你的Azure订阅ID"; StorageManager storageManager = StorageManager.authenticate( new DefaultAzureCredentialBuilder() .environment(AzureEnvironment.AZURE) .build(), subscriptionId ); // 替换为存储账户所在资源组名称、存储账户名称 String resourceGroupName = "你的资源组名"; String storageAccountName = "你的存储账户名"; // 拉取当前Blob服务配置 BlobServiceProperties serviceProperties = storageManager.blobServices() .getServiceProperties(resourceGroupName, storageAccountName); // 关闭版本控制开关 serviceProperties.innerModel().withIsVersioningEnabled(false); // 提交配置更新 serviceProperties.update(); } }
注意事项:
- 执行该操作的身份需要拥有存储账户的
Microsoft.Storage/storageAccounts/blobServices/write操作权限,否则会抛出授权异常- 禁用版本控制不会自动清理操作前已经生成的Blob历史版本,这些版本会持续占用存储并产生费用,如需清理需要单独执行批量删除历史版本的操作
- 配置提交后通常需要10~30秒的生效延迟,不会立刻在所有存储节点同步
- 请不要使用已淘汰的旧版8.x系列Storage管理SDK,上述代码基于Azure Track 2新版SDK编写,接口稳定性更好
内容的提问来源于stack exchange,提问作者Gajendra Jangid
相关产品推荐
相关产品推荐

