vue部署到服务器 接口调用不了_Python 调用 Azure API 实现服务器自动部署
由于在一個應用中需要通過 API 管理 Azure 的服務器,所以研究了一下 Azure API 的調(diào)用方法,中間遇到過很多坑,最后摸索出這一套可行的方法。原理就不多說了,想了解 Azure API 授權(quán)原理的可以看這篇文章。
OAuth authorization code flow - Microsoft identity platform?docs.microsoft.com第一步:創(chuàng)建一個 App 并授權(quán)
首先,進入 Azure 面板后,選擇 Azure Active Directory,然后選擇 App Regestreations
然后點擊,New registration,創(chuàng)建一個新的 App
來到創(chuàng)建 App 的界面,填寫應用名,其余默認即可,然后點擊 Register
完成后打開我們剛剛創(chuàng)建的 App,記下 Application(client) ID 以及 Directoty(tenant) ID 備用,然后點擊 View API Permissions
點擊 Add a permission 為我們想調(diào)用的 API 授權(quán),如果這里不授權(quán)的話,之后是無法調(diào)用 API 的。默認有 sign in and read user profile 授權(quán),由于我這里需要調(diào)用 API 對 Azure 上部署的服務器進行管理,所以增加了 Azure Service Management 的授權(quán)
授權(quán)完畢后,點擊下方的 grant admin consent for
然后創(chuàng)建一個密匙用于 API 的登陸,點擊左側(cè)菜單欄的 Certificates & secrets,創(chuàng)建調(diào)用 API 的登陸密匙,密匙創(chuàng)建后復制保存?zhèn)溆谩?/p>
完成后,回到主頁,在側(cè)邊欄找到 Subscription 并打開,如果找不到的話,可以在搜索欄搜索。
進入 Subscription 界面后,選擇你之后想調(diào)用的資源所在的 Subscription(你想通過 API 管理的資源在哪個 subscription 就選擇哪個)
進去之后在側(cè)邊欄選擇 Access Control
點擊 Add,在彈出的選擇框中選擇 Add role assignment
彈出添加 role assignment 窗口,Role 選擇 Contributor,Assign access to 選擇 Azure AD user, group, or service principal,Select就是選擇之前我們創(chuàng)建的 App 即可。完成后點擊 Save。
這一步完成后,我們就完成了對 API 調(diào)用的授權(quán),接下來就可以開始調(diào)用 API 了。
要調(diào)用 API,先需要獲取一個 token 來證明我們的身份,獲取 token 的方法有很多種,我這里使用的是一個 Python 的 sdk。
AzureAD/azure-activedirectory-library-for-python?github.com調(diào)用 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 就是之前創(chuàng)建的 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 去調(diào)用 API 了,具體的操作在這里就不說了,可以去看 Azure 官方的接口文檔,這里展示一個調(diào)用 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)總結(jié)
以上是生活随笔為你收集整理的vue部署到服务器 接口调用不了_Python 调用 Azure API 实现服务器自动部署的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: nacos 配置_SpringCloud
- 下一篇: 2篇word文档比较重复率_继续教育 |