我有一个触发管道的Azure功能,我可以轮询管道状态以检查它何时完成使用:Pipeline.Properties.RuntimeInfo.PipelineState
我的管道使用了几个并行的复制活动,我希望能够在失败的情况下访问这些活动的状态。 Azure文档描述了如何访问管道活动,但是您只能获取名称和描述等静态属性,而不能获取状态等动态属性(就像通过其RuntimeInfo属性可以获得管道一样)。
为了完整起见,我使用以下方式访问了活动列表:
IList<Microsoft.Azure.Management.DataFactories.Models.Activity> activityList = plHandle.Pipeline.Properties.Activities;
是否可以通过编程方式检查个人活动状态?
答案 0 :(得分:1)
当然可能。
我使用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
这将为您提供活动级别详细信息,包括状态。为:
...我列出它们是因为它们与您在门户网站刀片中看到的略有不同。
如果您有特定活动的多个输入和输出,则数据集也是数组。
此处提供了更多ADF cmdlet:https://docs.microsoft.com/en-gb/powershell/module/azurerm.datafactories/?view=azurermps-3.8.0
希望这有帮助
答案 1 :(得分: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...
}
}