您可以在存储任务的上下文中创建任务。 如果你是任务编写者,并且希望将任务应用于多个存储帐户,则可以使用此选项。 对于每个任务,您将指定要针对的存储帐户。
在 Azure 门户中导航到存储任务,然后在 “存储任务管理”下选择“ 分配”。
在 “分配 ”页中,选择“ + 添加分配 ”,并显示 “添加分配 ”窗格。
还可以在存储帐户的上下文中创建任务。 如果要使用现有任务来处理存储帐户中的对象,此选项可能很方便。 对于每个分配,你要标识要分配给帐户的存储帐户。
导航到 Azure 门户中的存储帐户,然后在 “数据管理”下选择 “存储任务”。
在 “存储任务 ”页中,选择“ 任务分配 ”选项卡,选择“ + 创建分配”,然后选择“ + 添加分配”。
此时会显示 “添加分配 ”窗格。
选择范围
在 “选择范围” 部分中,选择订阅并命名分配。 然后,选择目标存储帐户。
如果在存储帐户的上下文中打开 了“添加分配 ”窗格,则选择存储任务而不是存储帐户。
有关每个属性的说明,请参阅 分配设置。
添加角色分配
在 “角色分配 ”部分的“ 角色 ”下拉列表中,选择要分配给存储任务的托管标识的角色。 若要确保任务分配成功,请使用具有 Blob 数据所有者权限的角色。 若要了解详细信息,请参阅 分配任务所需的 Azure 角色。
注释
选择托管标识类型(系统分配或用户分配)作为创建存储任务的一部分。
有关每个属性的说明,请参阅 分配设置。
添加筛选器
在 “筛选器对象 ”部分中,选择是否要基于筛选器定位 Blob 的子集。 筛选器有助于缩小执行范围。 如果希望任务评估帐户中的所有容器和 blob,则可以选择“不筛选”选项。 以下示例使用筛选器仅以存在于名为 mycontainer
的容器中的 Blob 作为目标。
有关每个属性的说明,请参阅 分配设置。
定义触发器
在 “触发器详细信息 ”部分中,选择要运行此任务的频率。 可以选择仅运行一次此任务,或运行任务定期。 如果决定定期运行此任务,请选择开始和结束时间,并指定每次运行之间的天数。 还可以指定要存储执行报表的位置。
有关每个属性的说明,请参阅 分配设置。
保存分配
选择 “添加 ”按钮以创建分配。
“添加分配”窗格将关闭。 部署完成后,分配将显示在 “分配” 页中。 如果未在该页面中看到分配,请选择“ 刷新 ”按钮。
启用分配
默认情况下任务被禁用。 若要启用分配以便计划其运行,请选中分配旁边的复选框,然后选择“ 启用”。
任务运行后,将生成一个执行报告,然后存储在创建分配时指定的容器中。 有关该报告以及如何查看捕获目标对象数、尝试操作的次数和成功的次数的指标的详细信息,请参阅 分析存储任务运行。
编辑作业
分配将成为目标存储帐户的子资源。 因此,创建分配后,只能编辑其运行频率。 分配的其他字段变为只读。 单次运行(仅一次)选项也变为只读。
首先,安装必要的 PowerShell 模块。 请参阅 安装 PowerShell 模块
指定希望任务运行的频率。 可以选择仅运行一次任务,或运行任务定期。 如果决定定期运行此任务,请指定开始和结束时间,并指定每次运行之间的天数。 还可以指定要存储执行报表的位置。 以下示例为触发器值创建变量。
$startTime = $startTime = (Get-Date).AddMinutes(10)
$reportPrefix = "my-storage-task-report"
$triggerType = RunOnce
$targetPrefix = "mycontainer/"
使用 Get-AzStorageActionTask 命令获取要包含在分配中的存储任务。
$task = Get-AzStorageActionTask -Name <"storage-task-name"> -ResourceGroupName "<resource-group>"
使用 New-AzStorageTaskAssignment
命令创建存储任务分配。 以下分配针对名为 mystorageaccount
的帐户的 mycontainer
容器。 此分配指定任务只运行一次,并将执行报告保存到名为 storage-tasks-report
的文件夹。 该任务计划从当前时间起运行 10
分钟。
New-AzStorageTaskAssignment `
-ResourceGroupName "<resource-group>" `
-AccountName "<storage-account-name>" `
-name "<storage-task-assignment-name>" `
-TaskId $task.ID `
-ReportPrefix $reportPrefix `
-TriggerType $triggerType `
-StartOn $startTime.ToUniversalTime() `
-Description "<description>" `
-Enabled:$true `
-TargetPrefix $targetPrefix `
-TargetExcludePrefix ""
通过向托管标识分配角色,授予存储任务在目标存储帐户中执行操作的权限。 创建存储任务时,可以选择托管标识类型(系统分配或用户分配)。
以下命令将 Storage Blob Data Owner
的角色分配给存储任务的系统分配托管标识。
New-AzRoleAssignment `
-ResourceGroupName "<resource-group>" `
-ResourceName "<storage-account-name>" `
-ResourceType "Microsoft.Storage/storageAccounts" `
-ObjectId $task.IdentityPrincipalId `
-RoleDefinitionName "Storage Blob Data Owner"
以下命令将角色 Storage Blob Data Owner
分配给一个用户指定的托管标识。
$managedIdentity = Get-AzUserAssignedIdentity -ResourceGroupName <resource-group> -Name <user-assigned-managed-identity-name>
New-AzRoleAssignment `
-ResourceGroupName "<resource-group>" `
-ResourceName "<storage-account-name>" `
-ResourceType "Microsoft.Storage/storageAccounts" `
-ObjectId $managedIdentity.Id `
-RoleDefinitionName "Storage Blob Data Owner"
使用 Azure CLI 创建分配
指定希望任务运行的频率。 可以选择仅运行一次任务,或运行任务定期。 如果决定定期运行此任务,请指定开始和结束时间,并指定每次运行之间的天数。 还可以指定要存储执行报表的位置。 下面创建一个 JSON 格式的字符串变量,该变量指定容器名称、任务运行频率(RunOnce
)和运行报表的时间。
current_datetime=$(date +"%Y-%m-%dT%H:%M:%S")
executioncontextvariable="{target:{prefix:[mycontainer/],excludePrefix:[]},trigger:{type:'RunOnce',parameters:{startOn:'"${current_datetime}"'}}}"
在 executioncontextvariable
中使用的字符串是通过速记语法表示的。 简写语法是 JSON 字符串的简化表示形式。 若要了解详细信息,请参阅 如何将速记语法与 Azure CLI 配合使用。
使用 az storage-actions 任务 show 命令获取要包含在分配中的存储任务的 ID,然后查询 id
属性。
id=$(az storage-actions task show -g "<resource-group>" -n "<storage-task-name>" --query "id")
使用 az storage account task-assignment create
命令创建存储任务分配。
az storage account task-assignment create \
-g '<resource-group>' \
-n '<storage-task-assignment-name>' \
--account-name '<storage-account-name>' \
--description '<description>' \
--enabled true \
--task-id $id \
--execution-context $executioncontextvariable \
--report "{prefix:storage-tasks-report}"
通过向托管标识分配角色,授予存储任务权限以对目标存储帐户执行操作。 创建存储任务时,可以选择托管标识类型(系统分配或用户分配)。
以下命令将 Storage Blob Data Owner
的角色分配给存储任务的系统分配托管标识。
$storageAccountID=az storage account show --name <storage-account-name> --resource-group <resource-group> --query "id"
$roleDefinitionId="b7e6dc6d-f1e8-4753-8033-0f276bb0955b" \
az role assignment create \
--assignee-object-id $principalID \
--scope $storageAccountID \
--role $roleDefinitionId \
--description "My role assignment"
以下命令为用户分配的托管标识分配 Storage Blob Data Owner
角色。
$storageAccountID=az storage account show --name <storage-account-name> --resource-group <resource-group> --query "id"
$roleDefinitionId="b7e6dc6d-f1e8-4753-8033-0f276bb0955b"
$identityId=az identity show --name <user-assigned-managed-identity-name> \
--resource-group <resource-group> --query "id"
az role assignment create \
--assignee-object-id $identityId
--role $roleDefinitionId \
--description "My role assignment"
在 Bicep 模板中包含类似于以下内容的代码片段。
resource storageAccount 'Microsoft.Storage/storageAccounts@2021-02-01' = {
name: 'mystorageaccount'
___location: 'westus'
kind: 'StorageV2'
sku: {
name: 'Standard_LRS'
}
}
resource storageAccountName_storageTaskAssignment 'Microsoft.Storage/storageAccounts/storageTaskAssignments@2023-05-01' = {
parent: storageAccount
name: 'mystoragetaskassignment'
properties: {
taskId: '/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myresourcegroup/providers/Microsoft.StorageActions/storageTasks/mystoragetask'
enabled: true
executionContext: {
target: {
prefix: [
'mycontainer/'
]
excludePrefix: []
}
trigger: {
type: 'RunOnce'
parameters: {
startOn: '2025-04-20T21:34:00'
}
}
}
report: {
prefix: 'storage-tasks-report'
}
description: 'mystoragetaskassignment'
}
}
在 Azure 资源管理器模板中包含类似于以下内容的 JSON 代码片段。
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-02-01",
"name": "mystorageaccount",
"___location": "westus",
"kind": "StorageV2",
"sku": {
"name": "Standard_LRS"
}
},
{
"type": "Microsoft.Storage/storageAccounts/storageTaskAssignments",
"apiVersion": "2023-05-01",
"name": "storagetaskassignmentname",
"properties": {
"taskId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myresourcegroup/providers/Microsoft.StorageActions/storageTasks/mystoragetask",
"enabled": true,
"executionContext": {
"target": {
"prefix": [
"mycontainer/"
],
"excludePrefix": []
},
"trigger": {
"type": "RunOnce",
"parameters": {
"startOn": "2025-04-20T21:34:00"
}
}
},
"report": {
"prefix": "storage-tasks-report"
},
"description": "[parameters('storageTaskAssignmentDescription')]"
},
"dependsOn": [
"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myresourcegroup/providers/Microsoft.Storage/storageAccounts/mystorageaccount"
]
}
]