Azure Blob 存储是否支持用于引用位置或文件的别名?
我有 Azure 订阅,想知道 Blob 存储在引用位置或文件时是否支持别名
如果文件像这样可用 - /storage/container/folderA/fileA
我想做这样的事情 -/foo/pointertofileA
如果我访问上面的网址,这仍然允许我检索文件
我有一种将文件添加到 Azure Blob 存储的方法,问题是我试图指定一个条件,在该条件下它不会覆盖 blob,而只是添加到其中。我正在尝试使用参数访问条件,但是 VS 说此方法不能采用两个参数 - async void archiveNewImportedImages(List imageFiles) {
// Saving the images
// Retrieve reference to a blob named "myblob".
// Create or overwrite the "myblob" blob with contents from a local file.
using (var fileStream = System.IO.File.OpenRead(@"C:\Users\rahulchawla\Desktop\FilezilleIMGS\FilezilleIMGS\MTO_Image\CR01-1-20170623-1327.jpg"))
{
await blockBlob.UploadFromStreamAsync(fileStream, accessCondition: AccessCondition.GenerateIfNoneMatchCondition("*"));
}
// save url of the image into a variable and later to the database
/// fileURL = blockBlob.Uri.ToString();
}
Run Code Online (Sandbox Code Playgroud)
有什么建议么?
最终目标:不要覆盖容器 - 继续添加不同的文件,例如。img1.jpg、img2.jpg 转为 blob
其他详细信息:想要将图像附加到容器中(换句话说,继续将图像添加到容器中)。如果文件存在,则不想覆盖现有文件)
S3 有自己定义的重定向元数据:( x-amz-website-redirect-locationWebsiteRedirectLocation )。但我没有看到任何与Azure blob 存储等效的东西。对此是否有任何一流的支持,或者我应该在 blob 元数据中使用自定义键?
(我引用了 golang api,但这只是为了展示一种 API 实现。)
我正在尝试查找 Azure 存储 blob 的 IP 范围。我有一个存储块。我无法将域名列入白名单,因此我正在为此寻找 IP 范围。我的斑点位于 USWEST 地区。
有人可以建议吗?
我们在 WebAPI 中有要求,以 JSON 的形式从外部 API 提取有效负载,清理并将其发布到 Azure Sql 中。对于此要求,我们目前依赖于 blob 存储,将 json 有效负载存储到 azure blob 中,并将其检索到 UI 中以进行数据清理活动。用户可以花费大量时间来验证数据并根据需要进行修改。用户可能会起草几天,并在完成所有清理后单击“导入”按钮。现在,我观察到,在这些草稿期间,blob 只是被检索并反序列化到对象列表中,以找到要更新的相应属性。一旦更新完成,当用户单击“草稿”时,同一列表将被序列化为 json 并存储回 blob。序列化/反序列化的过程似乎很昂贵。相反,我正在考虑用 Cosmos DB 替换 blob。这真的会即兴表演吗?建议 Azure Sql Json 支持是否比所有这些选项更可行?我什至想到了 Redis 缓存?决策的主要因素也是成本效益。
json azure azure-redis-cache azure-blob-storage azure-cosmosdb
使用 Azure 搜索服务,我需要能够按查询中的字段进行分组或使用不同的字段。
用例: 我的业务模型有“资源”的概念,它有 >=1 次修订。1 个修订版是 Azure 索引中的 1 个文档。我需要模拟“从索引中选择最近更改的资源,同时还允许分页”之类的东西,因此我需要能够将索引中的文档分组到资源中并通过它们进行搜索
odata azure-sdk-.net azure-cognitive-search azure-blob-storage
我已启用 API 管理服务的日志记录,并且日志存储在存储帐户中。现在,我尝试在 Azure Databricks 工作区中处理它们,但在访问这些文件时遇到困难。
问题似乎是自动生成的虚拟文件夹结构如下所示:
/insights-logs-gatewaylogs/resourceId=/SUBSCRIPTIONS/<subscription>/RESOURCEGROUPS/<resource group>/PROVIDERS/MICROSOFT.APIMANAGEMENT/SERVICE/<api service>/y=*/m=*/d=*/h=*/m=00/PT1H.json
Run Code Online (Sandbox Code Playgroud)
我已将insights-logs-gatewaylogs容器安装在下面/mnt/diags,并dbutils.fs.ls('/mnt/diags')正确列出了该resourceId=文件夹,但未dbutils.fs.ls('/mnt/diags/resourceId=')找到声明文件
如果我沿着虚拟文件夹结构创建空标记 blob,我可以列出每个后续级别,但该策略显然会失败,因为路径的最后部分是按年/月/日/小时动态组织的。
例如一个
spark.read.format('json').load("dbfs:/mnt/diags/logs/resourceId=/SUBSCRIPTIONS/<subscription>/RESOURCEGROUPS/<resource group>/PROVIDERS/MICROSOFT.APIMANAGEMENT/SERVICE/<api service>/y=*/m=*/d=*/h=*/m=00/PT1H.json")
Run Code Online (Sandbox Code Playgroud)
此错误的产量:
java.io.FileNotFoundException: File/resourceId=/SUBSCRIPTIONS/<subscription>/RESOURCEGROUPS/<resource group>/PROVIDERS/MICROSOFT.APIMANAGEMENT/SERVICE/<api service>/y=2019 does not exist.
Run Code Online (Sandbox Code Playgroud)
很明显,通配符已经找到了第一年文件夹,但拒绝进一步向下。
我在 Azure 数据工厂中设置了一个复制作业,该作业成功复制同一 Blob 存储帐户中的所有 json Blob 并删除前缀resourceId=/SUBSCRIPTIONS/<subscription>/RESOURCEGROUPS/<resource group>/PROVIDERS/MICROSOFT.APIMANAGEMENT/SERVICE/<api service>(因此根文件夹以年份组件开头),并且可以一路成功访问,而无需创建空标记斑点。
因此,问题似乎与长虚拟文件夹结构有关,该结构大部分为空。
是否有另一种方法可以在 databricks 中处理此类文件夹结构?
更新:我也尝试在安装时提供路径作为安装的一部分source,但这也没有帮助
我想通过使用来自活动目录服务主体的凭据从 python 访问私有 blob 存储。
我知道这个相关问题How do I authenticate a user against an Azure storage blob in python? 这帮助我走到了这一步,但现在我陷入了困境。
我可以进行身份验证并获取令牌,该令牌允许我列出容器、创建新容器,但不允许我列出或访问任何 blob。
我希望通过 cli 进行设置az。
服务主体的设置如下:
az ad sp create-for-rbac -n "http://$NAME" --role Contributor \
--scopes "/subscriptions/$SUB_ID/resourceGroups/$RESOURCE_GROUP"
Run Code Online (Sandbox Code Playgroud)
我认为应该提供完全访问权限,但我还添加了以下内容以确保:
az role assignment create \
--role "Storage Blob Data Contributor" \
--assignee-object-id "$OBJECT_ID" \
--assignee-principal-type "ServicePrincipal" \
--scope "/subscriptions/$SUB_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.Storage/storageAccounts/$STORAGE_ACCOUNT/blobServices/default/containers/$CONTAINER"
Run Code Online (Sandbox Code Playgroud)
然后我像这样进行身份验证:
from azure.common.credentials import ServicePrincipalCredentials
import adal
from azure.storage.blob import (
BlockBlobService,
ContainerPermissions,
)
from azure.storage.common import (
TokenCredential
)
# …Run Code Online (Sandbox Code Playgroud) 我正在编写代码从 Azure 下载 Blob,但无法导入BlobClient.
from azure.storage.blob import BlobClient
cs = "CONNECTION_STRING"
blob = BlobClient.from_connection_string(cs, container="mycontainer", blob="config.ini")
with open("./config.ini", "wb") as my_blob:
blob_data = blob.download_blob()
my_blob.writelines(blob_data.content_as_bytes())
Run Code Online (Sandbox Code Playgroud)
我不断收到以下错误:
$ python3 download.py
Traceback (most recent call last):
File "download.py", line 1, in <module>
from azure.storage.blob import BlobClient
ImportError: cannot import name 'BlobClient'
Run Code Online (Sandbox Code Playgroud)
我正在使用虚拟环境:
pip3 install pylint
python3 -m venv env
pip3 install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)
我的requirements.txt文件如下所示:
Flask
azure-storage-blob
Run Code Online (Sandbox Code Playgroud)
我的Python版本是:
Flask
azure-storage-blob
Run Code Online (Sandbox Code Playgroud) 我想将存储在 Azure blob 存储中的 Excel 文件读取到 python 数据框。我会使用什么方法?
python azure-blob-storage azure-functions azure-blob-trigger