我编写了以下 Python 代码,为放置在 Azure 文件共享目录中的文件生成 SAS 令牌:
def getParcelFilePath(webcountyval):
filePath = rf"/plan/IN/{webcountyval}%20parcels.dbf"
file_sas_token = generate_file_sas(
account_name=os.environ["AZURE_STORAGE_ACCOUNT_NAME"],
account_key=os.environ["AZURE_STORAGE_ACCOUNT_KEY"],
share_name="dev",
file_path=filePath,
permission=AccountSasPermissions(read=True),
expiry=datetime.datetime.now() + datetime.timedelta(hours=8),
start=datetime.datetime.now()
)
filePathWithToken = os.environ["AZURE_STORAGE_SHARE_URL"] + filePath + "?" + file_sas_token
return(filePathWithToken)
我住在中部时区。为了保证认证不失败,可以看到我给timedelta()函数传递了8个小时。
当我将此 URL 粘贴到浏览器中时,它显示以下错误: 签名不匹配。使用的签名字符串为 r 2024-11-11T23:14:30Z 2024-11-12T07:14:30Z /file/crestlinecapitalstorage/dev/plan/IN/elkhart Parcels.dbf 2024-11-04
错误的原因可能是什么?
file_path 值“/plan/in/{webcountyval}%20parcels.dbf”很可能不正确。开头的额外“/”可能不需要。不管怎样,我没有再花费噩梦般的时间尝试让带有 SAS 令牌的 URL 正常工作,而是找到了一个解决方法,它更容易使用和维护(请参阅 Google 搜索提供的 AI 概述)。