在Azure Management API中找不到订阅

时间:2018-04-02 16:46:03

标签: azure kubernetes azure-container-service azure-management

我尝试使用Azure Management API创建Kubernetes集群。

  var credentials = SdkContext.AzureCredentialsFactory
    .FromFile(Environment.GetEnvironmentVariable("AZURE_AUTH_LOCATION"));


  var azure = Azure
    .Configure()
    .WithLogLevel(HttpLoggingDelegatingHandler.Level.Basic)
    .Authenticate(credentials)
    .WithDefaultSubscription();

var kubernetesCluster = azure.KubernetesClusters.Define("aks").WithRegion(Region.EuropeWest)
        .WithNewResourceGroup("aksResourceGroup").WithLatestVersion().WithRootUsername("aksUsername")
        .WithSshKey(sshPublicKey).WithServicePrincipalClientId("clientId")
        .WithServicePrincipalSecret("secret").DefineAgentPool("ap").WithVirtualMachineCount(1)
        .WithVirtualMachineSize(ContainerServiceVirtualMachineSizeTypes.StandardA0).Attach()
        .WithDnsPrefix("dns-aks").Create();

在最后一行中,抛出CloudException并显示以下消息:找不到Subscription []。

即使抛出异常,也会创建资源组但它是空的。

我已使用Azure CLI使用该服务主体登录,并且已运行

az account list

以下回复:

[
  {
    "cloudName": "AzureCloud",
    "id": "SUBSCRIPTION ID FROM EXCEPTION ABOVE",
    "isDefault": true,
    "name": "Pay-As-You-Go",
    "state": "Enabled",
    "tenantId": "xxx",
    "user": {
      "name": "xxxx",
      "type": "servicePrincipal"
    }
  }
]

应用程序注册存在于Azure Active Directory>应用注册>所有应用。我甚至授予了所有可能API的权限。

为了收到该异常消息,我有什么问题吗?

1 个答案:

答案 0 :(得分:1)

根据错误日志,您似乎没有为服务主体设置默认订阅。您可以使用az account set --subscription <name or id>进行设置。

如果仍然无效,我建议您使用以下代码。

  var azure = Azure
    .Configure()
    .WithLogLevel(HttpLoggingDelegatingHandler.Level.Basic)
    .Authenticate(credentials)
    .withSubscription("subscription id")

注意:您应该在订阅级别上提供服务主体所有者角色。见link。但似乎你已经做到了,但我建议你再次检查。