Подписку не удалось найти в Azure Management API

Я пытаюсь создать кластер Kubernetes с помощью Azure Management API.

  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 с сообщением: Подписка [] не может быть найдена.

Несмотря на то, что генерируется исключение, группа ресурсов создается, но пуста.

Я вошел в систему с помощью 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.

Что-то я сделал не так, чтобы получить это сообщение об исключении?


person Florin-Constantin Ciubotariu    schedule 02.04.2018    source источник


Ответы (1)


Согласно журналу ошибок, похоже, вы не устанавливаете подписку по умолчанию для своего субъекта-службы. Вы можете использовать az account set --subscription <name or id>, чтобы установить его.

Если это все еще не работает, я предлагаю вам использовать следующий код.

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

Примечание. Вы должны предоставить своему субъекту службы роль «Владелец» на уровне подписки. См. Это ссылка. Но кажется, вы это сделали, но я предлагаю вам проверить еще раз.

person Shui shengbao    schedule 03.04.2018
comment
Я попытался создать другого субъекта-службы с помощью Azure CLI, я установил подписку, как вы сказали. Принципал службы - Владелец. imgur.com/a/6vNzx. Исключение все еще генерируется. - person Florin-Constantin Ciubotariu; 03.04.2018
comment
Вы пытаетесь использовать .withSubscription("subscription id") для установки идентификатора подписки? - person Shui shengbao; 03.04.2018
comment
да. Свойство внутреннего ответа из исключения. Я получаю {code: BadRequest, сообщение: Не удалось найти подписку c83fbcef-1664-4ccf-bf94-439b37XXXXXX. } - person Florin-Constantin Ciubotariu; 03.04.2018
comment
Как вы устанавливаете файл аутентификации, похоже, вы настраиваете некоторую проблему. Проверьте эту ссылку github.com/Azure/azure-libraries -for-net / blob / master / AUTH.md - person Shui shengbao; 03.04.2018
comment
Или проверьте этот проект на GitHub. - person Shui shengbao; 03.04.2018
comment
Это образец, который я пытаюсь запустить. - person Florin-Constantin Ciubotariu; 03.04.2018
comment
Давайте продолжим это обсуждение в чате. - person Shui shengbao; 03.04.2018