云计算-使用华为云API调用LTS日志信息
标签: 云计算-使用华为云API调用LTS日志信息 博客 51CTO博客
2023-07-11 18:24:14 96浏览
在项目中,需要使用华为云的API,来查询相关信息。本次记录了使用python的request模块,调用华为云LTS基础使用方法。
关于华为云LTS,见官网文档:https://support.huaweicloud.com/lts/index.html
关于华为云API,见官方文档:https://support.huaweicloud.com/api-lts/lts_api_0030.html
api调试
登录获取token
根据华为云API调用,按照如下调用接口
url:https://iam.myhuaweicloud.com/v3/auth/tokens?nocatalog=true
method:post
body:
{
"auth": {
"identity": {
"methods": [
"password"
],
"password": {
"user": {
"domain": {
"name": "******" //IAM用户所属帐号名
},
"name": "chaoyangdg", //IAM用户名
"password": "********" //IAM用户密码
}
}
},
"scope": {
"project": {
"name": "cn-north-4" //项目名称
}
}
}
}
我使用apipost工具进行调试:
发送请求后:
实时相应,回应了相关账号信息,权限信息
在相应头中,X-Subject-Token字段包含了加密后的token,然后这个token就是以后需要调用
一般token都是24小时的,超期后需要再次申请
查询所有日志信息
根据华为API案例,获取token后,就能进而查询到相关信息,例如查询账号下所有的日志组
url:https://lts.cn-north-4.myhuaweicloud.com/v2/06aaa0968d000f2c2f58c010ee9729a4/groups
method:get
构造的请求中,在headeri填写如下信息:
Content-Type:application/json
x-auth-token:加密后的token
发送请求后,就能在实时响应中看到查询的信息
python脚本
脚本的结构如下:
#config.py
#记录配置文件
#IAM登录信息
url="https://iam.myhuaweicloud.com/v3/auth/tokens?nocatalog=true"
IAMDomain="******"
IAMUser="chaoyangdg"
IAMPassword="*********"
name="cn-north-4"
#endpoint,projectid信息
endpoint="https://lts.cn-north-4.myhuaweicloud.com"
project_id="*****************"
#demo1.py
import requests
import config
import json
#使用华为云的API调用TLS测试
#ver 1.0
'''
1、使用IAM,获取用户token
2、登录后,获取信息
'''
class ApiLogin():
"""
login by iam,return accesstoken
"""
def __init__(self,IAMDomain:str,IAMUser:str,IAMPassword:str,name:str,url:str):
"""
IAMDomain:IAM用户所属帐号名
IAMUser:IAM用户名
IAMPassword:IAM用户密码
name:项目名称,区域
url:华为URL
"""
self.IAMDomain=IAMDomain
self.IAMUser=IAMUser
self.IAMPassword=IAMPassword
self.name=name
self.url=url
def get_auth_token(self)->str:
"""
return accesstoken
"""
payload = {
"auth": {
"identity": {
"methods": [
"password"
],
"password": {
"user": {
"domain": {
"name": self.IAMDomain #IAM用户所属帐号名
},
"name": self.IAMUser, #IAM用户名
"password": self.IAMPassword #IAM用户密码
}
}
},
"scope": {
"project": {
"name": self.name #项目名称
}
}
}
}
header={'Content-Type': 'application/json'}
json_data=json.dumps(payload)
try:
response = requests.post(self.url,data=json_data,headers=header,verify=False)
response.raise_for_status() # 检查请求是否成功
#获取响应头的token
access_token=response.headers.get("X-Subject-Token")
#token_data = response.json()
#access_token = response.json()
#access_token = access_token["X-Subject-Token"]
return access_token
except requests.exceptions.RequestException as e:
print("认证请求发生错误:", e)
class GetLts():
"""
获取LTS信息
"""
def __init__(self,token) -> None:
self.token=token
self.header={
'Content-Type': 'application/json', 'X-Auth-Token': self.token
}
def get_all_groups(self)->dict:
"""
查询账号下的所有日志组
"""
url=str(config.endpoint+"/v2/"+config.project_id+"/groups")
resp=requests.get(url=url,headers=self.header,verify=False)
content=resp.content
#content=json(content)
#转换为字符串
content_str=content.decode('utf-8')
#转换为字典
content_dict=json.loads(content_str)
#print(content_dict)
#print (type(content_dict))
return content_dict
if __name__=="__main__":
IAMDomain=config.IAMDomain
IAMUser=config.IAMUser
IAMPassword=config.IAMPassword
name=config.name
url=config.url
Api_login=ApiLogin(IAMDomain,IAMUser,IAMPassword,name,url)
token=Api_login.get_auth_token()
Get_lts=GetLts(token=token)
Get_lts.get_all_groups()
最后将获取到LTS所有日志组信息,都以字典的形式返回
总结
1、记录华为API调用的一般方法
2、其他的API调用跟此类似
3、能够通过api获取到的信息就能进一步加工,能够实现复杂程序的指定功能
好博客就要一起分享哦!分享海报
此处可发布评论
评论(0)展开评论
展开评论