Не удалось обнаружить ресурсы Azure с помощью класса ResourceManagementClient из пространства имен Microsoft.Azure.Management.ResourceManager.Fluent - PullRequest
1 голос
/ 17 октября 2019
  1. Я пытаюсь обнаружить ресурсы Azure для государственных организаций, используя приведенный ниже фрагмент кода из класса .NET SDK класса ResourceManagementClient в Microsoft.Azure.Management.ResourceManager.Fluent namespace

    new ResourceManagementClient(creds).Resources.ListAsync()

  2. При обнаружении я получаю сообщение об ошибке, так как «Подписка» не найдена ».

  3. Это прекрасно работает, когда мы пытаемся обнаружить ресурс в общедоступной среде Azure, используя тот же код

Есть ли проблема с .NET SDKс лазурным правительством? или это потому, что служба Azure Resource Graph недоступна в государственных службах Azure?

1 Ответ

0 голосов
/ 17 октября 2019

Вы должны убедиться, что вы указали AzureEnvironment.AzureUSGovernment для вашего AzureCredentials (строка # 2 ниже) следующим образом:

var servicePrincipal = new ServicePrincipalLoginInformation { ClientId = "<your-client-id>", ClientSecret = "<your-client-secret" };
var creds = new AzureCredentials(servicePrincipal, tenantId: "<your-tenant-id>", AzureEnvironment.AzureUSGovernment);
var azure = Azure.Configure().Authenticate(creds).WithDefaultSubscription();
var rgs = await azure.ResourceGroups.ListAsync();

В качестве альтернативы, вы можете использовать ResourceManagementClient, чтобы сделать то же самое, что иприведенный выше код, хотя код ResourceManagementClient более подробный, поэтому я рекомендую в большинстве случаев использовать приведенный выше код, но здесь есть альтернатива:

var servicePrincipal = new ServicePrincipalLoginInformation { ClientId = "<your-client-id>", ClientSecret = "<your-client-secret" };
var creds = new AzureCredentials(servicePrincipal, tenantId: "<your-tenant-id>", AzureEnvironment.AzureUSGovernment);
var restClient = RestClient
    .Configure()
    .WithEnvironment(AzureEnvironment.AzureUSGovernment)
    .WithCredentials(creds)
    .Build();
var resourceManagementClient = new ResourceManagementClient(restClient);
resourceManagementClient.SubscriptionId = "<your-subscription-id>";
var rgs = await resourceManagementClient.ResourceGroups.ListAsync();
...