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

生成上传SAS URL时如何指定BlobAccessTier为Cold?

能否通过SAS URL指定Blob访问层级为Cold?

可以直接在生成SAS URL时指定Blob的访问层级为Cold。你需要在构建SAS签名参数时,显式设置accessTier属性为AccessTier.COLD,同时确保SAS具备写入权限。

实现步骤(Kotlin + Spring Boot)

  1. 引入Azure Storage Blob SDK依赖(若未添加):
    在build.gradle.kts中添加依赖:
implementation("com.azure:azure-storage-blob:12.25.0")
  1. 生成带访问层级指定的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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 18:02:35