生成上传SAS URL时如何指定BlobAccessTier为Cold?
能否通过SAS URL指定Blob访问层级为Cold?
可以直接在生成SAS URL时指定Blob的访问层级为Cold。你需要在构建SAS签名参数时,显式设置accessTier属性为AccessTier.COLD,同时确保SAS具备写入权限。
实现步骤(Kotlin + Spring Boot)
- 引入Azure Storage Blob SDK依赖(若未添加):
在build.gradle.kts中添加依赖:
implementation("com.azure:azure-storage-blob:12.25.0")
- 生成带访问层级指定的SAS URL代码示例:
import com.azure.storage.blob.BlobClientBuilder import com.azure.storage.blob.models.AccessTier import com.azure.storage.blob.models.BlobServiceSasSignatureValues import com.azure.storage.blob.sas.BlobSasPermission import java.time.OffsetDateTime fun generateSasUrlWithColdTier( storageAccountName: String, containerName: String, blobName: String, accountKey: String, expiryTime: OffsetDateTime ): String { val blobClient = BlobClientBuilder() .endpoint("https://$storageAccountName.blob.core.windows.net") .containerName(containerName) .blobName(blobName) .accountKey(accountKey) .buildClient() // 配置SAS权限:上传Blob需要write和create权限 val sasPermission = BlobSasPermission() .setWritePermission(true) .setCreatePermission(true) // 构建SAS签名参数,指定访问层级为Cold val sasSignatureValues = BlobServiceSasSignatureValues(expiryTime, sasPermission) .setAccessTier(AccessTier.COLD) // 生成最终SAS URL return blobClient.generateSas(sasSignatureValues) }
关键说明
- 必须确保SAS包含
write和create权限(上传新Blob场景),否则无法设置访问层级。 - 使用该SAS URL上传Blob时,Azure会自动将目标Blob的访问层级设为Cold,覆盖存储账户默认的Hot层级。
- 若上传时通过HTTP请求头
x-ms-access-tier指定层级,其优先级会高于SAS中设置的层级;若SAS已指定层级,请求头可省略。
内容的提问来源于stack exchange,提问作者Janani Sampath Kumar
相关产品推荐
相关产品推荐

