vue部署到服务器 接口调用不了_Python 调用 Azure API 实现服务器自动部署
由于在一个应用中需要通过 API 管理 Azure 的服务器,所以研究了一下 Azure API 的调用方法,中间遇到过很多坑,最后摸索出这一套可行的方法。原理就不多说了,想了解 Azure API 授权原理的可以看这篇文章。
OAuth authorization code flow - Microsoft identity platformdocs.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-pythongithub.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 实现服务器自动部署的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: nacos 配置_SpringCloud
- 下一篇: echarts formatter_vu