2017-04-04 13 views
1

最新のAzure Powershell SDKを使用していますが、まだcreate Custom SSL Domains for CDNs in Azure via API Managementには見えません。私たちは、将来の拡張性のためにこのタスクの作成をスクリプト化できるようにするために、100のサブドメインを作成し、必要としています。Azure CDN - リソース管理APIによるカスタムドメインSSL

enter image description here

誰もがSDK has no support以来、REST APIを介して、このフラグをトグルする方法を知っていますか?我々はNew-AzureRmCdnCustomDomain commandletを使用しています。カスタムドメインHTTPSを有効にするための

答えて

2

REST APIはdocs.microsoft.com

で文書化されているカスタムHTTPSを有効

は、カスタムドメインのHTTPS配信を有効にします。

POST /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Cdn/profiles/{profileName}/endpoints/{endpointName}/customDomains/{customDomainName}/enableCustomHttps?api-version=2016-10-02 

あなたはan access tokenを取得する必要がありAzureのREST APIを使用する前に:PowerShellを使用してアクセストークンを生成

$Token = Invoke-RestMethod -Uri https://login.microsoftonline.com/<TenantID>/oauth2/token?api-version=1.0 -Method Post -Body @{ 
    "grant_type" = "client_credentials" 
    "resource" = "https://management.core.windows.net/" 
    "client_id" = "<application id>" 
    "client_secret" = "<password you selected for authentication>" 
} 

応答はアクセストークンが含まれています、その トークンが有効である期間に関する情報、およびwhaに関する情報あなたはそのリソースに トークンを使用することができます。以前のHTTPコール で受信したアクセストークンは、すべての要求に対してResource Manager APIに渡す必要があります。 値 "Bearer YOUR_ACCESS_TOKEN"の "Authorization"というヘッダー値として渡します。 「ベアラ」とあなたのアクセス トークンの間のスペースに注意してください。

Azure ADにアプリ登録を作成するとクライアントIDが取得され、作成されたアプリ登録のキーセクションにクライアントキーが生成されます。これは、このようなソリューションにまとめることができます。

$subscriptionId = "..." 
$resourceGroupName = "..." 
$profileName = "..." 
$endpointName = "..." 
$customDomainName = ".." 

$Token = Invoke-RestMethod -Uri https://login.microsoftonline.com/<TenantID>/oauth2/token?api-version=1.0 -Method Post -Body @{ 
    "grant_type" = "client_credentials" 
    "resource" = "https://management.core.windows.net/" 
    "client_id" = "<application id>" 
    "client_secret" = "<password you selected for authentication>" 
} 

$header = @{ 
    "Authorization"= "Bearer $($Token.access_token)" 
} 

Invoke-RestMethod -Method Post -Headers $header -Uri "https://management.azure.com/subscriptions/$subscriptionId/resourceGroups/$resourceGroupName/providers/Microsoft.Cdn/profiles/$profileName/endpoints/$endpointName/customDomains/$customDomainName/enableCustomHttps?api-version=2016-10-02" 

スクリプトを自動化する必要がない場合、あなたはSourceに基づいて(この修正されたサンプルを使用したGUI(アプリ登録の必要はありません)を使用して手動でログインすることができます)。これにはを使用してインストールできるAzureRM-moduleが必要です。

Function Login-AzureRESTApi { 

    Import-Module AzureRM.Profile 

    # Load ADAL Azure AD Authentication Library Assemblies 
    $modulepath = Split-Path (Get-Module -Name AzureRM.Profile).Path 
    $adal = "$modulepath\Microsoft.IdentityModel.Clients.ActiveDirectory.dll" 
    $adalforms = "$modulepath\Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms.dll" 
    $null = [System.Reflection.Assembly]::LoadFrom($adal) 
    $null = [System.Reflection.Assembly]::LoadFrom($adalforms) 

    # Login to Azure 
    $Env = Login-AzureRmAccount 

    # Select Subscription 
    $Subscription = (Get-AzureRmSubscription | Out-GridView -Title "Choose a subscription ..." -PassThru) 
    $adTenant = $Subscription.TenantId 
    $global:SubscriptionID = $Subscription.SubscriptionId 

    # Client ID for Azure PowerShell 
    $clientId = "1950a258-227b-4e31-a9cf-717495945fc2" 

    # Set redirect URI for Azure PowerShell 
    $redirectUri = "urn:ietf:wg:oauth:2.0:oob" 

    # Set Resource URI to Azure Service Management API | @marckean 
    $resourceAppIdURIASM = "https://management.core.windows.net/" 
    $resourceAppIdURIARM = "https://management.azure.com/" 

    # Set Authority to Azure AD Tenant 
    $authority = "https://login.windows.net/$adTenant" 

    # Create Authentication Context tied to Azure AD Tenant 
    $authContext = New-Object "Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext" -ArgumentList $authority 

    # Acquire token 
    $global:authResultASM = $authContext.AcquireToken($resourceAppIdURIASM, $clientId, $redirectUri, "Auto") 
    $global:authResultARM = $authContext.AcquireToken($resourceAppIdURIARM, $clientId, $redirectUri, "Auto") 

} 

$resourceGroupName = "..." 
$profileName = "..." 
$endpointName = "..." 
$customDomainName = ".." 

Login-AzureRESTApi 

#Reuse selected subscription from login 
$Subscription = $global:subscriptionId 

$header = @{ 
    "Authorization"= $global:authResultARM.CreateAuthorizationHeader() 
} 

Invoke-RestMethod -Method Post -Headers $header -Uri "https://management.azure.com/subscriptions/$subscriptionId/resourceGroups/$resourceGroupName/providers/Microsoft.Cdn/profiles/$profileName/endpoints/$endpointName/customDomains/$customDomainName/enableCustomHttps?api-version=2016-10-02" 
関連する問題