我正在使用以下JSON模板
{
"properties": {
"type": "AzureStorage",
"typeProperties": {
"connectionString": {
"type": "SecureString",
"value": "DefaultEndpointsProtocol=https;AccountName=<accountname>;AccountKey=<accountkey>;EndpointSuffix=core.windows.net"
}
}
},
"name": "AzureStorageLinkedService"
}
来自URL https://docs.microsoft.com/en-us/azure/data-factory/tutorial-hybrid-copy-powershell#get-storage-account-name-and-account-key 创建一个Azure存储链接服务。 与其对帐户名和密钥进行硬编码,不如将其作为参数传递给PowerShell cmdlet
Set-AzureRmDataFactoryV2LinkedService
我正在尝试构建PowerShell脚本以自动化部署
谢谢
答案 0 :(得分:0)
我不确定这是否是您想要的,但是您是否要动态提取Azure帐户名称和帐户密钥?
您是否在许多环境中都自动执行此操作?由于我的原因,我正在使用azure DevOps和Azure Key Vault传递每个环境(开发,测试和生产)所需的参数,因此有一个很好的分步指南可以在此处自动实现ADF的部署
https://docs.microsoft.com/en-us/azure/data-factory/continuous-integration-deployment
您不必对密钥,密码等进行硬编码,但必须在Azure Key Vault中指定它们并将其链接到ADF
例如,对于Azure Data Lake Store,您可以指定类似的内容
{
"name": "linked_service_adls",
"properties": {
"type": "AzureDataLakeStore",
"typeProperties": {
"dataLakeStoreUri": "https://YOURADLSNAME.azuredatalakestore.net/webhdfs/v1",
"servicePrincipalId": "xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx",
"servicePrincipalKey": {
"type": "AzureKeyVaultSecret",
"store": {
"referenceName": "linked_service_kv_general",
"type": "LinkedServiceReference"
},
"secretName": "adls-webapi-principalKey"
},
"tenant": "xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx",
"subscriptionId": "xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"resourceGroupName": "rg-whatever"
}
}
}
其中无需对servicePrincipalKey进行硬编码,并且可以从您的Azure Key Vault动态提取(使用“ type”:“ AzureKeyVaultSecret”和秘密名称“ adls-webapi-principalKey”),并且可以在Azure DevOps中为每个目标环境指定服务PRincipal ID,承租人,subscriptionID等的参数值,同时您也可以从AKV(Azure Key Vault)中提取这些参数值,我知道您的用例是面向Powershell的,但是如果是这样的话您仍然需要某种配置文件来提取这些值,当然,对版本控制配置文件进行版本控制不是一个好主意,因此它们必须位于某个地方,我强烈建议使用AKV / Azure Devops方法。希望这会有所帮助