我似乎无法在Azure DevOps中授权访问我的Azure订阅,以便每当提交被推送到master时运行构建。我一直得到下面的错误:
此外,当我单击Authorize resources时,它显示授权成功,但下次运行管道时,我会得到相同的错误。我在项目设置-〉服务连接中验证了我有一个到订阅的活动连接。我该如何解决这个问题?当我转到Azure Functions中的部署中心并在那里连接连接时,它会创建一个基于任务的管道,但我想使用yaml。
Authorize resources
3qpi33ja1#
您必须从任务本身创建一个新连接(您可能需要使用高级选项来添加现有的服务主体)。
px9o7tmv2#
我花了一段时间试图弄清楚为什么我有同样的问题。将我的yaml与我以前使用过的另一个yaml进行了比较,没有发现任何问题,也验证了服务连接。但正如@Levi Lu-MSFT提到的,验证yaml让我找到了导致我的问题的原因,所以我想我会在这里分享它,即使它不是100%相关:我的变量没有正确地缩进。我有点累了,认为DevOps只是在和我开玩笑。因此,请验证您的yaml是否正确设置。有时候,可能是一些很小的事情导致了这些问题。
9fkzdhlc3#
以上表示您在Azure函数部署任务中指定的azureSubscription不存在,或者您没有权限。如果服务连接已经正确设置,但您仍然遇到上述错误。您可以按照下面的步骤解决问题。1.检查你的yaml管道。Azure订阅在编译时进行验证。如果使用变量引用azure订阅yaml管道。您需要确保变量可以在编译时检索。你可以看看这个线程。1.检查服务连接安全设置。进入项目设置--〉管道下的服务连接--〉选择您的Azure服务连接--〉更多设置(3个点)--〉安全性--〉尝试将您的管道添加到Pipeline permissions列表。
Pipeline permissions
如果未设置Azure订阅服务连接。您需要创建Azure Resource Manager类型的服务连接以连接到Azure订阅。参见以下步骤:1.转到项目设置--〉管道下的服务连接--〉新建服务连接--〉选择Azure Resource Manager--〉下一步
Azure Resource Manager
1.然后选择身份验证方法。如果您的Azure DevOps是connected to AAD。您可以选择Service principal (automatic)作为身份验证方法。这将自动在Azure AD中创建服务主体。1.如果要创建新的服务主体。您可以选择服务主体(手动)。请参阅以下文档以在Azure中创建服务主体Use the portal to create an Azure Active Directory application and a service principal that can access resourcesUse Azure PowerShell to create an Azure service principal with a certificate1.然后在服务连接配置页面中输入相关信息。
Service principal (automatic)
创建Azure订阅服务连接后。您可以通过指定服务连接名称在yaml管道任务中使用它。参见以下示例:
- task: AzureFunctionApp@1 displayName: Azure Function App Deploy inputs: azureSubscription: myAzureSubscription
注意:您需要为以上service principal添加正确的role assignment,以使服务主体能够部署到您的Azure资源。
service principal
role assignment
3条答案
按热度按时间3qpi33ja1#
您必须从任务本身创建一个新连接(您可能需要使用高级选项来添加现有的服务主体)。
px9o7tmv2#
我花了一段时间试图弄清楚为什么我有同样的问题。将我的yaml与我以前使用过的另一个yaml进行了比较,没有发现任何问题,也验证了服务连接。
但正如@Levi Lu-MSFT提到的,验证yaml让我找到了导致我的问题的原因,所以我想我会在这里分享它,即使它不是100%相关:
我的变量没有正确地缩进。我有点累了,认为DevOps只是在和我开玩笑。因此,请验证您的yaml是否正确设置。有时候,可能是一些很小的事情导致了这些问题。
9fkzdhlc3#
以上表示您在Azure函数部署任务中指定的azureSubscription不存在,或者您没有权限。
如果服务连接已经正确设置,但您仍然遇到上述错误。您可以按照下面的步骤解决问题。
1.检查你的yaml管道。
Azure订阅在编译时进行验证。如果使用变量引用azure订阅yaml管道。您需要确保变量可以在编译时检索。
你可以看看这个线程。
1.检查服务连接安全设置。
进入项目设置--〉管道下的服务连接--〉选择您的Azure服务连接--〉更多设置(3个点)--〉安全性--〉尝试将您的管道添加到
Pipeline permissions
列表。如果未设置Azure订阅服务连接。您需要创建Azure Resource Manager类型的服务连接以连接到Azure订阅。参见以下步骤:
1.转到项目设置--〉管道下的服务连接--〉新建服务连接--〉选择
Azure Resource Manager
--〉下一步1.然后选择身份验证方法。如果您的Azure DevOps是connected to AAD。您可以选择
Service principal (automatic)
作为身份验证方法。这将自动在Azure AD中创建服务主体。1.如果要创建新的服务主体。您可以选择服务主体(手动)。请参阅以下文档以在Azure中创建服务主体
Use the portal to create an Azure Active Directory application and a service principal that can access resources
Use Azure PowerShell to create an Azure service principal with a certificate
1.然后在服务连接配置页面中输入相关信息。
创建Azure订阅服务连接后。您可以通过指定服务连接名称在yaml管道任务中使用它。参见以下示例:
注意:您需要为以上
service principal
添加正确的role assignment
,以使服务主体能够部署到您的Azure资源。