如何使用Azure流畅的资源管理注册资源提供程序?
我想完全自动化我的资源创建过程。 不幸的是,全新订阅默认情况下没有注册一些资源提供程序。 例如SQL。 这很容易解决,如下所述: https : //docs.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-common-deployment-errors#noregisteredproviderfound
但是,这仅概述了使用手动使用门户或使用Powershell的方法。
我正在寻找使用Microsoft.Azure.Management.ResourceManager.Fluent
的解决方案
似乎不一致,我无法使用C#,但我似乎无法在任何地方找到该function。
如何使用Azure流畅资源管理为新订阅注册资源提供程序?
如何使用Azure流畅资源管理为新订阅注册资源提供程序?
我们可以在Azure流畅资源管理中使用以下函数到注册表提供程序。
var result=resourceManagementClient.Providers.Register("provider name");
我也做了一个演示。
Preparetion:
Registry Azure Active Directory应用程序并分配角色
然后我们可以获得tenantId,clientId,clientSecretKey
脚步:
1.创建一个C#控制台项目并引用Microsoft.Azure.Management.ResourceManager.Fluent
2.获取访问权限
public static async Task GetAccessToken(string tenantId, string clientId, string clientSecretKey) { var context = new AuthenticationContext("https://login.windows.net/" + tenantId); ClientCredential clientCredential = new ClientCredential(clientId, clientSecretKey); var tokenResponse = await context.AcquireTokenAsync("https://management.azure.com/", clientCredential); var accessToken = tokenResponse.AccessToken; return accessToken; }
3.初始化resourceManagementClient对象
TokenCredentials ccCredentials = new TokenCredentials(GetAccessToken(tenantId, appId, secretKey).Result); var resourceManagementClient = new ResourceManagementClient(ccCredentials) { SubscriptionId = subscriptionId };
4.Registry资源提供者
我们还可以列出未注册的提供商
var resources = resourceManagementClient.Providers.List().ToList(x => x.RegistrationState.Equals("NotRegistered")); var result=resourceManagementClient.Providers.Register("provider name");
5.从Azure门户进行检查。
码:
static string appId = "Registried Azure AD Appliction Id"; static string secretKey = "Client secret Key"; static string tenantId = "tenant Id "; private static string subscriptionId = "subscription Id "; public static async Task GetAccessToken(string azureTenantId, string azureAppId, string azureSecretKey) { var context = new AuthenticationContext("https://login.windows.net/" + tenantId); ClientCredential clientCredential = new ClientCredential(appId, secretKey); var tokenResponse = await context.AcquireTokenAsync("https://management.azure.com/", clientCredential); var accessToken = tokenResponse.AccessToken; return accessToken; } static void Main(string[] args) { TokenCredentials ccCredentials = new TokenCredentials(GetAccessToken(tenantId, appId, secretKey).Result); var resourceManagementClient = new ResourceManagementClient(ccCredentials) { SubscriptionId = subscriptionId }; var list1 = resourceManagementClient.Providers.List().ToList(); var resource = resourceManagementClient.Providers.List().ToList().FirstOrDefault(x => x.NamespaceProperty.Equals("TrendMicro.DeepSecurity") && x.RegistrationState.Equals("NotRegistered")); var registry =resourceManagementClient.Providers.Register(resource?.NamespaceProperty); }
Packages.config:
即将发布的Azure Management SDK(Fluent)v.1.1中添加了提供程序自动注册function。
- Azure Blob不存储PDF
- 升级到SDK 2.3.301后,Service Fabric Actor或Service变为无法访问
- 使用RequireHttpsAttribute ASP.NET Core的HTTP错误310 ERR_TOO_MANY_REDIRECTS
- 在Visual Studio中更改SQL Server数据库的最大大小以在Azure中上载
- C#生成Azure表存储ConnectionString
- 持久保存到Azure表存储时使用POCO
- 发布使用python脚本的MVC应用程序
- Mongo DB对象Id使用JSON序列化程序进行反序列化
- 使用未部署在Azure中的应用程序访问Azure密钥保管库存储密钥