gpt4 book ai didi

每个环境的 Azure 数据工厂动态内容默认值

转载 作者:行者123 更新时间:2023-12-03 00:54:18 25 4
gpt4 key购买 nike

我希望有人能帮助我了解如何解决这个问题。

在 azure 中我有3个独立的环境:

  • 开发
  • 分期
  • 生产

每个环境我都有一个数据工厂。由于数据集很大,我决定构建一个 CI CD 管道,以便每次发布到 adf_publish 时将开发环境的所有内容复制到暂存和生产。这个过程就像一个魅力,我拥有所有数据集和链接的服务。

这是我开始发现问题的地方,但我无法忽略它们。

所有 3 个环境都有结构完全相同的 Cosmos 数据库,但当然 Cosmos 的 URL 和访问 key 是不同的。

阅读 Microsoft 文档,我发现我可以使用动态内容,这绝对是完美的。我创建了参数:

enter image description here

当我在开发环境中尝试连接时,参数 Blade 打开,我可以设置我想要的默认值并且连接成功。

我在暂存中做了相同的配置,在发布管道之后,我可以看到参数,

enter image description here

但是正如您从屏幕截图中看到的那样,没有任何其他配置。我的第一个想法是,也许我需要配置默认值并应用更改,但即使在那之后,每次发布后值都会重置。谁能帮助我了解如何为每个环境设置默认值?

如果有任何问题或我没有解释清楚的地方,请问我,我会重新表述。

非常感谢您为我提供的任何帮助。

更新:最后我成功地解决了问题的第一部分,即让发布管道设置cosmos连接中的动态内容enter image description here

但不幸的是我的参数值或者它们是硬编码的或空的。

遵循本文档 https://learn.microsoft.com/en-us/azure/data-factory/continuous-integration-deployment

我尝试使用以下值在根文件夹的 adf_publish 中创建 arm-template-parameters-definition.json:

{
"Microsoft.DataFactory/factories/linkedservices":{
"properties": {
"parameters": {
"DBNameAggregated": {
"type": "string",
"defaultValue": "test"
},
"DBAccessKey": {
"type": "string",
"defaultValue": "test"
}
}
}
}
}

当我保存并推送更改时,我刷新了门户并发布了。在我的发布管道中,我设置了覆盖参数

-DBNameAggregated "test2"

但是发布管道失败并出现以下错误

Deployment template validation failed: 'The template parameters 'DBNameAggregated' in the parameters file are not valid; they are not present in the original template and can therefore not be provided at deployment time

我检查了我的两个 ARM 模板:

  • TemplateForFactory:这里声明了参数。
  • TemplateParameters:此处未声明参数

我真的很碰壁,不知道自己做错了什么

最佳答案

您需要在主根文件夹下创建 arm-template-parameters-definition.json

arm-template-parameters-definition

如果你想参数化这些值,你需要添加以下代码。

在此示例中,我将参数化 cosmosdb 链接服务的 typeProperties 下的所有值

"Microsoft.DataFactory/factories/linkedServices": {
"CosmosDB": {
"properties": {
"typeProperties": {
"*": "="
}
}
}
}

更新此代码后,您将在 adf_publish 分支下的 ARMTemplateforFactory.json 文件中看到更改。

以下是 armtemplateforfactory.json 文件中的值。

CosmosDb1_connectionStringcosmosdbURLCosmosDBKey 已参数化。

"name": "[concat(parameters('factoryName'), '/CosmosDb1')]",
"type": "Microsoft.DataFactory/factories/linkedServices",
"apiVersion": "2018-06-01",
"properties": {
"parameters": {
"cosmosdbURL": {
"type": "string",
"defaultValue": "xyz"
},
"CosmosDBKey": {
"type": "string",
"defaultValue": "xyz"
}
},
"annotations": [],
"type": "CosmosDb",
"typeProperties": {
"connectionString": {
"type": "SecureString",
"value": "[parameters('CosmosDb1_connectionString')]"
}
}
}

我在 cosmosdb 链接连接上的实际代码。在这里,我将 xyz 分配给 cosmosdburlcosmosdbkey

{
"name": "CosmosDb1",
"type": "Microsoft.DataFactory/factories/linkedservices",
"properties": {
"parameters": {
"cosmosdbURL": {
"type": "string",
"defaultValue": "xyz"
},
"CosmosDBKey": {
"type": "string",
"defaultValue": "xyz"
}
},
"annotations": [],
"type": "CosmosDb",
"typeProperties": {
"connectionString": "AccountEndpoint=@{linkedService().cosmosdbURL};Database=bhargavademo;AccountKey=@{linkedService().CosmosDBKey}"
}
}
}

最后一步是,您需要更新发布管道上的 overridetemplateparameters 上的 cosmosDBURLCosmosDBKey、连接字符串值。

Override Template parameters

关于每个环境的 Azure 数据工厂动态内容默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73736610/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com