azure 尝试CI/CD时出现“无法加密子资源负载”错误

vsikbqxv  于 2023-01-31  发布在  其他
关注(0)|答案(6)|浏览(138)

我们正在尝试使用此处提供的文档设置DevOps的CI/部署:https://learn.microsoft.com/en-us/azure/data-factory/continuous-integration-deployment。我们使用的是在部署前已在目标环境中设置的共享IR。
如果部署模式设置设置为仅验证,则发布成功;如果选择增量或完整,则发布失败。使用覆盖模板参数时,会出现以下错误:
2018年9月21日T17:07:43.2936188Z ##[错误]请求错误:{
“错误”:{
“代码”:“错误请求”,
“message”:“无法加密子资源有效负载

lvjbypge

lvjbypge1#

请确保您的共享IR在进行部署时处于联机状态,否则您可能会遇到此问题,因为自托管IR将用于加密您的负载。
如果您确认上述操作已完成,但仍然存在此错误,请将请求活动ID共享给我们,以便我们进行进一步调查。

rta7y2nd

rta7y2nd2#

确保你已经为你正在使用的任何链接服务在你的参数JSON中输入了正确的连接字符串。这为我修复了这个错误,尽管我没有一个完整的CI/CD环境和IR。

mo49yndu

mo49yndu3#

我可以使用Azure密钥库解决它。
我将连接字符串添加为Secret。在连接字符串中,我还包含了身份验证数据(用户名和密码)。
这种方法的局限性在于无法传递参数。例如:动态值,如数据库或用户的名称。

oiopk7p5

oiopk7p54#

我会请求您查看已附加IR的各个链接服务的连接字符串。对于我的基于ASQL的链接服务,我不得不使用类似这样的内容,简单的服务器名称是不够的,您将获得"message": "Failed to encrypt sub-resource payload

"typeProperties": {
            "connectionString": "Integrated Security=False;Encrypt=True;Connection Timeout=30;Data Source=axxx-xxx-xx-xxxx.database.windows.net;Initial Catalog=\"@{split(linkedService().LS_ASQL_SERVERDB,';')[1]}\""
        }
lndjwyie

lndjwyie5#

我重写参数,因为连接字符串是安全的。如果没有原始值,请使用伪值(用户名、密码、连接字符串),然后部署。

n3h0vuf2

n3h0vuf26#

完全部署ADF示例时,已在运行的IR没有意义。IR密钥是在您部署的ADF示例中生成的,这意味着您创建了循环逻辑:在ADF部署完成之前,您无法部署IR,但在部署IR之前,您无法完成ADF的部署。
到目前为止,我们的答案是让arm模板在这一点上失败,这是在模板中注册IR之后,然后生成IR密钥。我们使用它来部署IR,然后重新运行模板,它成功了...这是愚蠢和黑客,必须有一个比故意失败/重试更明智的方法来做到这一点。

相关问题