简体   繁体   中英

Is there a C# sdk/wrapper for Azure Resource Management API calls?

I want to execute resource group based calls. For example: https://msdn.microsoft.com/en-us/library/azure/mt163572.aspx

Azure Management Libraries don't seem to have this capability (unless I'm missing something). Is there any SDK or client wrapper available that can make that kind of call?

EDIT: Gaurav pointed me at exactly what I needed. Going to do people a solid and expand upon what I did to help clear the muddy muddy waters that is the Azure Resource Management API.

In your app's Packet Manager do: Install-Package Microsoft.Azure.Management.Resources -Pre Then Install-Package Microsoft.Azure.Management.Compute -Pre Then Install-Package Microsoft.IdentityModel.Clients.ActiveDirectory -Pre

Follow this blog for getting an authorization header/token: https://msdn.microsoft.com/en-us/library/azure/dn722415.aspx

Then call the new API like so (note the slight name changes):

class Program
{
    static void Main(string[] args)
    {
        var token = GetAuthorizationHeader();
        var credential = new Microsoft.Rest.TokenCredentials(token);
        using (var client = new ComputeManagementClient(credential) { SubscriptionId = ConfigurationManager.AppSettings["subscriptionId"] })
        {
            var vms = client.VirtualMachines.ListAll();
        }
    }

    private static string GetAuthorizationHeader()
    {
        AuthenticationResult result = null;

        var context = new AuthenticationContext("https://login.windows.net/" + ConfigurationManager.AppSettings["tenantId"]);

        string clientId = ConfigurationManager.AppSettings["clientId"];
        string clientSecret = ConfigurationManager.AppSettings["clientSecret"];
        ClientCredential clientCred = new ClientCredential(clientId, clientSecret);

        var thread = new Thread(() =>
        {
            result = context.AcquireToken(
              "https://management.core.windows.net/",
              clientCred);
        });

        thread.SetApartmentState(ApartmentState.STA);
        thread.Name = "AquireTokenThread";
        thread.Start();
        thread.Join();

        if (result == null)
        {
            throw new InvalidOperationException("Failed to obtain the JWT token");
        }

        string token = result.AccessToken;
        return token;
    }
}

I believe the package you're looking for is Microsoft.Azure.Management.Resources 3.4.0-preview . You can find the complete source code for Azure Resource Manager here: https://github.com/Azure/azure-sdk-for-net/tree/master/src/ResourceManagement .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM