从 Azure 函数访问管道 activity 状态
Accessing pipeline activity status from an Azure Function
我有一个触发管道的 Azure 函数,我能够轮询管道状态以检查它何时完成使用:Pipeline.Properties.RuntimeInfo.PipelineState
我的管道使用多个并行复制活动,我希望能够访问这些活动的状态以防它们失败。 Azure 文档描述了如何访问管道活动,但您只能获取名称和描述等静态属性,而不能获取 Status 等动态属性(就像您可以通过其 RuntimeInfo 属性 访问管道)。
为了完整起见,我使用以下方法访问了 activity 列表:
IList<Microsoft.Azure.Management.DataFactories.Models.Activity> activityList = plHandle.Pipeline.Properties.Activities;
是否可以通过编程方式检查个人 activity 状态?
当然有可能。
我使用 Azure 模块中的 ADF PowerShell cmdlet 来监控我们的数据工厂。
也许可以使用 Get-AzureRmDataFactoryActivityWindow 命令执行类似下面的操作。
例如:
$ActivityWindows = Get-AzureRmDataFactoryActivityWindow `
-DataFactoryName $ADFName.DataFactoryName `
-ResourceGroupName $ResourceGroup `
| ? {$_.WindowStart -ge $Now} `
| SELECT ActivityName, ActivityType, WindowState, RunStart, InputDatasets, OutputDatasets `
| Sort-Object ActivityName
这会为您提供 activity 级别的详细信息,包括状态。存在:
- 就绪
- 进行中
- 正在等待
- 失败
...我列出它们是因为它们与您在门户网站刀片中看到的略有不同。
如果特定活动有多个输入和输出,则数据集也是数组。
此处提供更多 ADF cmdlet:https://docs.microsoft.com/en-gb/powershell/module/azurerm.datafactories/?view=azurermps-3.8.0
希望对您有所帮助
我已经通过访问管道的 DataSliceRuns(即活动)解决了这个问题,如下所示:
var datasets = client.Datasets.ListAsync(<resourceGroupName>, <DataFactoryName>).Result;
foreach (var dataset in datasets.Datasets)
{
// Check the activity statuses for the pipelines activities.
var datasliceRunlistResponse = client.DataSliceRuns.List(<resourceGroupName>, <dataFactoryName>,<DataSetName>, new DataSliceRunListParameters()
{
DataSliceStartTime = PipelineStartTime.ConvertToISO8601DateTimeString()
});
foreach (DataSliceRun run in datasliceRunlistResponse.DataSliceRuns)
{
// Do stuff...
}
}
我有一个触发管道的 Azure 函数,我能够轮询管道状态以检查它何时完成使用:Pipeline.Properties.RuntimeInfo.PipelineState
我的管道使用多个并行复制活动,我希望能够访问这些活动的状态以防它们失败。 Azure 文档描述了如何访问管道活动,但您只能获取名称和描述等静态属性,而不能获取 Status 等动态属性(就像您可以通过其 RuntimeInfo 属性 访问管道)。
为了完整起见,我使用以下方法访问了 activity 列表:
IList<Microsoft.Azure.Management.DataFactories.Models.Activity> activityList = plHandle.Pipeline.Properties.Activities;
是否可以通过编程方式检查个人 activity 状态?
当然有可能。
我使用 Azure 模块中的 ADF PowerShell cmdlet 来监控我们的数据工厂。
也许可以使用 Get-AzureRmDataFactoryActivityWindow 命令执行类似下面的操作。
例如:
$ActivityWindows = Get-AzureRmDataFactoryActivityWindow `
-DataFactoryName $ADFName.DataFactoryName `
-ResourceGroupName $ResourceGroup `
| ? {$_.WindowStart -ge $Now} `
| SELECT ActivityName, ActivityType, WindowState, RunStart, InputDatasets, OutputDatasets `
| Sort-Object ActivityName
这会为您提供 activity 级别的详细信息,包括状态。存在:
- 就绪
- 进行中
- 正在等待
- 失败
...我列出它们是因为它们与您在门户网站刀片中看到的略有不同。
如果特定活动有多个输入和输出,则数据集也是数组。
此处提供更多 ADF cmdlet:https://docs.microsoft.com/en-gb/powershell/module/azurerm.datafactories/?view=azurermps-3.8.0
希望对您有所帮助
我已经通过访问管道的 DataSliceRuns(即活动)解决了这个问题,如下所示:
var datasets = client.Datasets.ListAsync(<resourceGroupName>, <DataFactoryName>).Result;
foreach (var dataset in datasets.Datasets)
{
// Check the activity statuses for the pipelines activities.
var datasliceRunlistResponse = client.DataSliceRuns.List(<resourceGroupName>, <dataFactoryName>,<DataSetName>, new DataSliceRunListParameters()
{
DataSliceStartTime = PipelineStartTime.ConvertToISO8601DateTimeString()
});
foreach (DataSliceRun run in datasliceRunlistResponse.DataSliceRuns)
{
// Do stuff...
}
}