09_创建和使用ADF-04_使用程序启动Pipeline

1、新建一个Powershell的脚本(代码会在最后给出),脚本中包含:
①登录Azure
②设置参数的值
③调用Pipeline并且将参数值传给Pipeline

2、执行这个Powershell的脚本

3、弹出登录Azure的窗口(必须要登录Azure才有资格去调用Pipeline)

4、登录后选择只在此程序中使用

5、这时就会执行Powershell脚本,调用Pipeline,并且在窗口中有信息输出

6、到Data Factory的监视界面,可以看到有Pipeline执行的记录,这就是通过Powershell启动的Pipeline,并且参数是通过Powershell传递的
★注意:只有发行出来的Pipeline才能使用代码启动,即Trigger启动,修改中,还没有发行的Pipeline或其修改内容不会提现到Trigger启动执行的结果里

7、如图所示,点击这里可以查看传入的参数值

8、刚刚我们在执行Powershell脚本时,还是弹出了登录界面,还是需要人为登录。接下来,我们实现真正的自动运行。
到Azure的Microsoft Entra ID中(没有显示可以在搜索栏里搜索)

9、找到注册应用程序,新建一个注册应用程序,日文叫做サービスプリンシパル

10、取名(任意)

11、应用程序的ID和Tenant ID后面要用到,可以复制留好

12、给应用程序创建一个密钥,浏览器中创建密钥的话,最长有效期是730天,即两年

13、复制好密钥,密钥只在创建时会显示,后面将不会显示,所以创建好复制走后要妥善保管。但如果忘记了密钥,再创建一个即可,可以创建多个密钥,使用其中任何一个都可以

14、将应用程序的ID、密钥、Tenant ID,放到代码中(代码会在最后给出)

15、转到Data Factory的权限设置

16、添加Data Factory的共同作成者

17、搜索刚刚新建的应用程序,选择它

18、将应用程序设置为Data Factory的共同作成者,这样应用程序就有权限去调用Data Factory中的Pipeline了

19、权限设置好之后的样子

20、再次执行Powershell脚本,这次不需要登录,直接即可启动Pipeline

21、Pipeline的执行记录

22、可以在Powershell脚本中将参数也参数化

23、执行Powershell脚本时动态传入参数

24、查看调用的Pipeline的执行参数,发现是生效的,没问题

25、换一个参数执行试试

26、这个ID是执行ID,可以通过他去查找被调用的Pipeline

27、可以看到参数是生效的,没问题

28、Powershell脚本的代码
param(
    [string]$Param1Value = "C##TMT",
    [string]$Param2Value = "USERDETAIL"
)

if (-not (Get-Module -ListAvailable -Name Az.DataFactory)) {
    Write-Host "Az.DataFactory 模块未安装,正在安装..."
    try {
        Install-Module -Name Az.DataFactory -Force -AllowClobber -Scope CurrentUser
        Write-Host "Az.DataFactory 模块安装成功" -ForegroundColor Green
    }
    catch {
        Write-Error "模块安装失败: $_"
        exit 1
    }
}

Import-Module Az.DataFactory

$clientId = "c8bfe09a-1c43-4c41-a224-be10cc95e8e4"
$clientSecret = "_sk8Q~-P39lJfiOvELqrPfSsghiswh~efiN8Qanl" | ConvertTo-SecureString -AsPlainText -Force
$tenantId = "e3db9350-94d6-4e81-a7fa-1e3c21ae681d"

$credential = New-Object System.Management.Automation.PSCredential($clientId, $clientSecret)
$null = Connect-AzAccount -ServicePrincipal -Credential $credential -TenantId $tenantId

# 设置参数
$params = @{
    "FromSchemaName" = $Param1Value
    "FromTableName" = $Param2Value
}

# 启动 pipeline
Invoke-AzDataFactoryV2Pipeline -ResourceGroupName "TomoriETLDev" -DataFactoryName "TomoriDataFactoryV2Dev" -PipelineName "CopyDataOracleToCsv" -Parameter $params
29、给应用程序创建有效期超过两年的长期密钥的AzureCLI脚本
az login

az ad app credential reset --id c8bfe09a-1c43-4c41-a224-be10cc95e8e4 --append --display-name 'LongTimePassword' --end-date '2099-12-31'