51CTO 博客地址: https://blog.51cto.com/14669127

Azure培训视频地址: https://space.bilibili.com/2000820534

Azure CLI是一个命令行工具,可以调用Azure REST API以执行每个Azure CLI命令支持的操作。今天给大家分享一下从命令行调用Azure REST API的两种方法:

• Az rest

• Curl

az rest命令允许对Azure rest API进行自定义请求,如果没有向az rest命令传递身份验证参数,则它将自动使用您已使用az login命令登录的Azure帐户,这将很容易地使用相同的Azure CLI工作流来验证和使用Azure资源。

调用az rest命令时使用以下参数:

• url或--uri–用于指定要调用的Azure REST API的请求url。

• method–用于指定用于进行Azure REST API调用的HTTP方法。

• body–用于指定随请求一起发送的HTTP body。

az-rest命令将假定--url或--uri参数是一个Azure资源ID,然后它将自动将其前缀设置为当前Azure云的Azure ARM端点。默认情况下,这是Azure公共云,可以通过运行az cloud show命令来查看。

以下是使用az-rest调用Azure rest API的几个示例:

# Get Azure Subscription ID 
subscriptionId=$(az account show --query id -o tsv)
# Get Audit log through Microsoft Graph
az rest --method get --url https://graph.microsoft.com/beta/auditLogs/directoryAudits
# Update Azure AD Graph User's display name
az rest --method patch \
--url "https://graph.microsoft.com/v1.0/users/Nancy@azurecontoso.onmicrosoft.com" \
--body "{\"displayName\": \"nancy\"}"

使用curl或其他类似的命令行工具是进行Azure REST API调用时更理想的工具,使用az登录到Azure帐户,登录后,az-account-get-access token命令可用于检索访问令牌,然后可与Azure REST API调用上的Authorization:bearer HTTP Header一起使用,以在发出请求时验证curl或其他工具。

以下是与上述类似的示例,但这次使用curl调用Azure REST API以检索当前Azure订阅中的Azure资源组列表:

# Get Azure Subscription ID 
subscriptionId=$(az account show --query id -o tsv)
$ Get Azure Access Token to authorize HTTP requests
azureAccessToken=$(az account get-access-token --query accessToken -o tsv)
# List all Resource Groups
curl -sL \
-H "authorization: bearer $azureAccessToken" \
-H "content-type: application/json" \
https://management.azure.com/subscriptions/$subscriptionId/resourceGroups?api-version=XXXX-XX-XX

请注意,以下HTTP headers被传递到Azure REST API,以正确验证并指定API的返回响应:

• authorization:bearer{access token}–authorization标头用于将先前从Azure CLI检索到的承载令牌传递给Azure REST API,以验证HTTP请求

• content-type:application/json–content-type header告诉Azure REST API返回json格式的结果。

使用curl调用Azure REST API的相同方法也可以用于从任何命令行或其他工具进行Azure REST API调用,这些工具能够进行HTTP调用并随请求传递自定义HTTP header。