Azure CLI azure resource show
は、Azure PowerShell Get-AzureRmResource
に似ており、常に「GET」メソッドを使用しています。 "-vv"オプションを追加すると、使用しているREST APIが表示されます。一方、PowerShell Invoke-AzureRmResourceAction
は "POST"メソッドを使用しています。 Invoke-AzureRmResourceAction
に '-debug'オプションを追加すると、REST APIを見ることができます。ここで
https://management.azure.com/subscriptions/<your subscription id>/resourceGroups/<resource group>/providers/Microsoft.Web/sites/<app service>/config/publishingcredentials/list?api-version=2015-08-01
はこのREST APIを呼び出すためのPowerShellスクリプトです:
Add-Type -Path 'C:\Program Files\Microsoft Azure Active Directory Connect\Microsoft.IdentityModel.Clients.ActiveDirectory.dll'
# The tenant ID of you Subscription. You can use tenant name instead.
$tenantID = "<the tenant ID of your Subscription>"
# You can leave the variables as what they are, if you are under Azure Cloud Environment.
$loginEndpoint = "https://login.windows.net/"
$managementResourceURI = "https://management.core.windows.net/"
$redirectURI = New-Object System.Uri ("urn:ietf:wg:oauth:2.0:oob")
$clientID = "1950a258-227b-4e31-a9cf-717495945fc2"
# Fill in the below variables.
$subscriptionID = "<your subscription id>"
$resouceGroup = "<your resource group>"
$appService = "<your app service>"
$username = "<your Azure account>"
# Constructing the authentication string.
$authString = $loginEndpoint + $tenantID
# Use the above authentication string to create an authentication context.
$authenticationContext = New-Object Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext ($authString, $false)
$promptBehaviour = [Microsoft.IdentityModel.Clients.ActiveDirectory.PromptBehavior]::Auto
$userIdentifierType = [Microsoft.IdentityModel.Clients.ActiveDirectory.UserIdentifierType]::RequiredDisplayableId
$userIdentifier = New-Object Microsoft.IdentityModel.Clients.ActiveDirectory.UserIdentifier ($username, $userIdentifierType)
# Prompt for signing in.
$authenticationResult = $authenticationContext.AcquireToken($managementResourceURI, $clientID, $redirectURI, $promptBehaviour, $userIdentifier);
# construct authorization header for the REST API.
$authHeader = $authenticationResult.AccessTokenType + " " + $authenticationResult.AccessToken
$headers = @{"Authorization"=$authHeader; "Content-Type"="application/json"}
# Invoke the REST API.
Invoke-RestMethod -Method POST -Uri "https://management.azure.com/subscriptions/$subscriptionID/resourceGroups/$resourceGroup/providers/Microsoft.Web/sites/$appService/config/publishingcredentials/list?api-version=2015-08-01" `
-Headers $headers
あなたがLinuxシステムの下にある場合、あなたはあなたの出版資格を与えるbashスクリプト以下のOAuth 2.ザ・とカール使用することができますあなたのウェブアプリのしかし、私のスクリプトを使用するには、create a service principleとinstall curl in you Linux systemが必要です。
#!/bin/bash
tenantID="<the tenant id of your subscription>"
client_id="<the client id of your AD application>"
client_secret="<a key you added to your AD application>"
body="grant_type=client_credentials&client_id=$client_id&client_secret=$client_secret&resource=https%3A%2F%2Fmanagement.core.windows.net%2F"
authorization=$(curl -X POST -H "Content-Type: application/x-www-form-urlencoded" --data-ascii "$body" "https://login.microsoftonline.com/$tenantID/oauth2/token" | python -c 'import json,sys;obj=json.load(sys.stdin);print(obj["token_type"]+" "+obj["access_token"])')
subscriptionID="<your subscription id>"
resourceGroup="<the resource group of you web app>"
appService="<your web app>"
curl -X POST -H "Authorization: $authorization" --data-ascii "" "https://management.azure.com/subscriptions/$subscriptionID/resourceGroups/$resourceGroup/providers/Microsoft.Web/sites/$appService/config/publishingcredentials/list?api-version=2015-08-01"
REST APIを使用してpublishingcredentialsを取得する詳細な例を提供していただきありがとうございます。他の文脈でこの例を使用することは間違いありません。 Azure CLIがレベル2のリソースをサポートするように修正されるまでは、Jenkinサーバー用にWindowsマシンを使用し、Azure PowerShellを使用する必要があります。 –
私はAzure CLIをチェックしましたが、実際には '--parent'オプションでレベル2リソースをサポートしています。しかし、 'azure resource show'は常に" GET "メソッドを使用しているので、あなたの場合は助けにならないのですが、あなたの場合は" POST "メソッドを使用する必要があります。私は少し私の答えを更新します。 –