由于在一个应用中需要通过 API 管理 Azure 的服务器,所以研究了一下 Azure API 的调用方法,中间遇到过很多坑,最后摸索出这一套可行的方法。原理就不多说了,想了解 Azure API 授权原理的可以看这篇文章。

OAuth authorization code flow - Microsoft identity platform​docs.microsoft.com

第一步:创建一个 App 并授权

首先,进入 Azure 面板后,选择 Azure Active Directory,然后选择 App Regestreations

然后点击,New registration,创建一个新的 App

来到创建 App 的界面,填写应用名,其余默认即可,然后点击 Register

完成后打开我们刚刚创建的 App,记下 Application(client) ID 以及 Directoty(tenant) ID 备用,然后点击 View API Permissions

点击 Add a permission 为我们想调用的 API 授权,如果这里不授权的话,之后是无法调用 API 的。默认有 sign in and read user profile 授权,由于我这里需要调用 API 对 Azure 上部署的服务器进行管理,所以增加了 Azure Service Management 的授权

授权完毕后,点击下方的 grant admin consent for

然后创建一个密匙用于 API 的登陆,点击左侧菜单栏的 Certificates & secrets,创建调用 API 的登陆密匙,密匙创建后复制保存备用。

完成后,回到主页,在侧边栏找到 Subscription 并打开,如果找不到的话,可以在搜索栏搜索。

进入 Subscription 界面后,选择你之后想调用的资源所在的 Subscription(你想通过 API 管理的资源在哪个 subscription 就选择哪个)

进去之后在侧边栏选择 Access Control

点击 Add,在弹出的选择框中选择 Add role assignment

弹出添加 role assignment 窗口,Role 选择 Contributor,Assign access to 选择 Azure AD user, group, or service principal,Select就是选择之前我们创建的 App 即可。完成后点击 Save。

这一步完成后,我们就完成了对 API 调用的授权,接下来就可以开始调用 API 了。

要调用 API,先需要获取一个 token 来证明我们的身份,获取 token 的方法有很多种,我这里使用的是一个 Python 的 sdk。

AzureAD/azure-activedirectory-library-for-python​github.com

调用 API

安装依赖库

pip install adal==0.4.7
pip install azure-mgmt-datalake-analytics==0.2.0

导入必要的模块

## AADTokenCredentials for multi-factor authentication
from msrestazure.azure_active_directory import AADTokenCredentials## Required for Azure Data Lake Analytics job management
from azure.mgmt.datalake.analytics.job import DataLakeAnalyticsJobManagementClient
from azure.mgmt.datalake.analytics.job.models import JobInformation, JobState, USqlJobProperties## Other required imports
import adal, uuid, time

获取 token,TENANT 就是之前的 Directoty(tenant) ID,CLIENT_ID 就是之前的 Application(client) ID,CLIENT_SECRET 就是之前创建的 Secret 密匙。

def authenticate_client_key():“””Authenticate using service principal w/ key.“””authority_host_uri = ‘https://login.microsoftonline.com’tenant = ‘<TENANT>’authority_uri = authority_host_uri + ‘/‘ + tenantresource_uri = ‘https://management.core.windows.net/‘client_id = ‘<CLIENT_ID>’client_secret = ‘<CLIENT_SECRET>’context = adal.AuthenticationContext(authority_uri, api_version=None)mgmt_token = context.acquire_token_with_client_credentials(resource_uri, client_id, client_secret)credentials = AADTokenCredentials(mgmt_token, client_id)return credentials

获取 token 之后,就可以用获取的 token 去调用 API 了,具体的操作在这里就不说了,可以去看 Azure 官方的接口文档,这里展示一个调用 API 启动虚拟主机的例子

def basic_url():subscriptions_id = “Your subscription id”resource_group = “Your resource group”url = “https://management.azure.com/subscriptions/{subscriptions_id}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{{vmName}}/{{action}}?api-version=2019-03-01”.format(subscriptions_id=subscriptions_id,resourceGroupName=resource_group)return urldef start(vm_name):url = basic_url()url = url.format(vmName=vm_name,action=“start”)token = authenticate_client_key()bearer_token = “Bearer {bearer_token}”.format(bearer_token=token)headres = {“Authorization”: bearer_token, “Content-type”:”application/json”}r = requests.post(url,headers=headres)

vue部署到服务器 接口调用不了_Python 调用 Azure API 实现服务器自动部署相关推荐

  1. 直接打包的服务器组件,Vue-CLI-2.x全家桶架构,支持打包后自动部署到服务器构建案例...

    今天有时间分享一些平时自己开发上的一些构建配置,我们以Vue-CLI-2.x来构建开发环境. 好,我们先来看一下我们要做哪些工作. 现附上源码地址,https://github.com/7492643 ...

  2. python调用 matlab库_python调用matlab的搜索结果-阿里云开发者社区

    2018python技术问答集锦,希望能给喜欢python的同学一些帮助 小编发现问答专区中有很多人在问关于python的问题,小编把这些问题汇总一下,希望能给喜欢python的大家一些启示和帮助 本 ...

  3. python调用百度接口实现ocr识别_Python调用百度OCR实现图片文字识别的示例代码

    百度AI提供了一天50000次的免费文字识别额度,可以愉快的免费使用!下面直接上方法: 首先在百度AI创建一个应用,按照下图创建即可,创建后会获得如下: 创建后会获得如下信息: APP_ID = '* ...

  4. python什么模块动态调用链接库_Python调用C/C++动态链接库的方法详解

    本文以实例讲解了Python调用C/C++ DLL动态链接库的方法,具体示例如下: 示例一: 首先,在创建一个DLL工程(本例创建环境为VS 2005),头文件: 1 2 3 4 5 6 7 8 9 ...

  5. python调用google翻译_python调用百度翻译、谷歌翻译

    谷歌翻译不提供接口,想要使用谷歌的翻译结果,需要借用爬虫技术,将待翻译的文本传入,抓取页面,解析出翻译结果,经测试,这种方法的翻译效果较差,不建议使用. 百度翻译提供接口,可在百度翻译注册开发者后获取 ...

  6. python怎么调用c语言_Python调用C语言程序方法解析

    Python调用C语言程序方法解析 首先我们需要将编写好的c程序文件编译为动态库文件(后缀名为.so) 使用下面的命令: gcc 原文件名.c -shared -o 新文件名.so 然后在python ...

  7. python调用matlab程序_Python调用MATLAB实现fmincon函数

    motivation: 1.要实现"符号几何规划"的功能,使用MATLAB自带的fmincon函数来实现 2.工程的代码是通过Python来完成的,需要Python调用MATLAB ...

  8. python调用matlab 性能_Python调用MATLAB实现fmincon函数

    motivation: 1.要实现"符号几何规划"的功能,使用MATLAB自带的fmincon函数来实现 2.工程的代码是通过Python来完成的,需要Python调用MATLAB ...

  9. python调用c优缺点_Python调用C模块以及性能分析

    一.c,ctypes和python的数据类型的对应关系 ctypes type ctype Python type c_char char 1-character string c_wchar wch ...

最新文章

  1. ubuntu 设置开机执行脚本_ubuntu-18.04 设置开机启动脚本
  2. linux升级补丁tar,Linux内核升级补丁安装手册(一)
  3. Linux高可用集群(Corosync+Pacemaker)
  4. python调用c++返回带成员指针的类指针
  5. Numpy Axis
  6. 十二年 10 次 IT 大考 猪八戒网的系统架构和开发流程经历了什么?
  7. phpVirtualBox – 用浏览器操作虚拟机
  8. perl表达 匿名数组和匿名哈希
  9. 【板栗糖GIS】kmz数据是什么,如何打开,普通数据如何转换成kmz格式
  10. Win32反汇编(三)深层次的了解各种转移指令:IF语句有符号与无符号跳转
  11. mysql期末作业_MySql期中作业
  12. 运放输入偏置电流方向_运放参数的详细解释和分析-part1,输入偏置电流和输入失调电流【TI FAE 分享】...
  13. win10怎么用计算机,win10专业版如何通过简单设置,让你的电脑更流畅
  14. 「hdu6608」Fansblog【Miller_Rabin+威尔逊定理】
  15. 关于js中0==‘‘判断为True
  16. 【Paper Reading FedBCD: A Communication-Efficient Collaborative Learning Framework for DF
  17. win7的系统怎么进入win10服务器,肿么把win7系统升级到win10
  18. 王者服务器维护8月四日,王者荣耀8月4日体验服更新维护公告 弈星重做上线体验服...
  19. 微同城v8.4.1公众号功能模块
  20. 微软轻量级监控工具sysmon原理与实现

热门文章

  1. Linux 安装 luarocks(lua的模块管理工具)
  2. linux c++ 调用matlab,ubuntu系统下C++调用matlab程序的方法详解
  3. php编程实现单入口,apache配置php实现单一入口方法
  4. mysql centos 源码安装_centos7源码安装mysql8
  5. matlab中矩阵怎么敲_Ansys刚度(质量、阻尼)矩阵的提取(part 1)
  6. c语言求上升沿次数,[求助]上升沿信号在C语言中怎么写啊
  7. Spring Cloud:Eureka Server控制台
  8. yii 加载php文件,Yii2框架加载css和js文件的方法分析
  9. dbutils API学习
  10. 批量关闭公众号推送_啥?微信又出新功能了?或将提醒用户关闭长期未读公众号推送...