【问题标题】:How to Add CNAME in Azure DNS via C# code如何通过 C# 代码在 Azure DNS 中添加 CNAME
【发布时间】:2021-10-14 14:02:30
【问题描述】:

我需要有多个子域。 我的网站托管在名为 test.mydomain.com 的虚拟机中 我已经在 azureDNS 中手动添加了 CNAME Testing1,并在 IIS 站点绑定 Testing1.mydomain.com 中对其进行了配置。这是有效的

但我想让它自动化。而不是手动过程。需要通过代码或 powershell 来完成。

谁知道这方面的知识,请帮助我

谢谢

【问题讨论】:

    标签: c# azure asp.net-core azure-web-app-service virtual-machine


    【解决方案1】:

    您需要首先创建一个服务主体帐户,因为它是您通过 SDK 向 Azure 进行身份验证的权限。

    这是创建服务主体的文档:

    将以下包安装到您的 C# 项目中: Microsoft.Azure.Management.Dns Microsoft.Rest.ClientRuntime.Azure.Authentication Microsoft.Azure.Management.ResourceManager(注意这是预览包)

    您需要为下面的示例填充以下变量:

    tenantID: The ID of the tenant your Service Principal and DNS resource are on

    clientId: The Service Principal identifier

    secret: Whatever your secret mechanism is for the Service Principal you picked above

    subscriptionId: The ID of the Azure subscription your DNS resource is on

    resourceGroupName: The name of the resource group your DNS resource is located in

    zoneName: The name of the DNS zone you're modifying (the host name)

    recordSetName: A name to assign to the record set

    然后,您将使用以下逻辑使用服务主体值在 Azure DNS 中创建必要的 CNAME。

    var dnsClient = new DnsManagementClient(serviceCreds);
    dnsClient.SubscriptionId = subscriptionId;
    
    // Create record set parameters
    var recordSetParams = new RecordSet();
    recordSetParams.TTL = 3600;
    recordSetParams.CnameRecord = new CnameRecord
    {
      Cname = "<Your CNAME Value>"
    };
    
    //Create the record in Azure DNS
    await dnsClient.RecordSets.CreateOrUpdateAsync(resourceGroupName, zoneName, recordSetName, RecordType.Cname, recordSetParams);
    

    【讨论】:

    • 我打算使用 powershell ,我不需要获取租户 ID 和客户端 ID。我测试了一个我可以通过 powershell 添加的脚本。所以现在我打算从 C# 代码执行该查询。你怎么看?
    • PS C:\> $Records = @() PS C:\> $Records += New-AzureRmDnsRecordConfig -Cname test.mydomain.com PS C:\> $RecordSet = New-AzureRmDnsRecordSet - Name "mycname" -RecordType CNAME -ResourceGroupName "sonic" -TTL 3600 -ZoneName "myzone.com" -DnsRecords $Records 这个脚本适合我
    • 可能您已登录到您的 Powershell 会话(可能以交互方式)。如果您的目标是自主解决方案,则需要服务主体。
    • Connect-AzureRmAccount 这是我从 powershell 发出的第一个命令,首先连接我的帐户,
    • 如果您弹出打开您的 AAD 租户并创建一个新的应用程序注册,它的身份等同于服务主体(您将在属性概览中看到租户 ID 和客户端 ID)并具有如果您不习惯通过 PS 设置身份验证方法,则可以选择使用 GUI 定义身份验证方法
    猜你喜欢
    • 2019-08-09
    • 2020-06-27
    • 1970-01-01
    • 1970-01-01
    • 2018-02-07
    • 1970-01-01
    • 1970-01-01
    • 2011-07-05
    相关资源
    最近更新 更多