#!/usr/bin/python3#-*- coding: utf-8 -*-#@Time : 2018/1/18 0018 16:51#@Author : sanmuyan#@File : aliyun_slb.py
importjson, jsonpath, osfrom aliyunsdkcore.client importAcsClientfrom aliyunsdkcore.acs_exception.exceptions importClientExceptionfrom aliyunsdkcore.acs_exception.exceptions importServerExceptionfrom aliyunsdkslb.request.v20140515 importDescribeLoadBalancerHTTPSListenerAttributeRequestfrom aliyunsdkslb.request.v20140515 importSetLoadBalancerHTTPSListenerAttributeRequestdefslb_set (LoadBalancerId,ListenerPort,ServerCertificateId,AccessKey,Secret,Regions):#创建 AcsClient 实例
client =AcsClient(
AccessKey,
Secret,
Regions
);#获取配置前的信息
request =DescribeLoadBalancerHTTPSListenerAttributeRequest.DescribeLoadBalancerHTTPSListenerAttributeRequest()
request.set_LoadBalancerId(LoadBalancerId)
request.set_ListenerPort(ListenerPort)
response=client.do_action_with_exception(request)
data=(json.loads(response))
HealthCheck= (data['HealthCheck'])print("更新前的配置信息")print(json.dumps(data, sort_keys=True, indent=2))#设置负载均衡实例
request =SetLoadBalancerHTTPSListenerAttributeRequest.SetLoadBalancerHTTPSListenerAttributeRequest()
request.set_LoadBalancerId(LoadBalancerId)#负载均衡实例的唯一标识
request.set_ListenerPort(ListenerPort) #负载均衡实例前端使用的端口
request.set_ServerCertificateId(ServerCertificateId) #证书ID
request.set_Bandwidth(data['Bandwidth']) #监听的带宽峰值。取值:-1/1-1000Mbps
request.set_StickySession(data['StickySession']) #是否开启会话保持
request.set_HealthCheck(HealthCheck) #是否开启健康检查
if (HealthCheck == "on"):
request.set_HealthCheckURI(data['HealthCheckURI']) #监控检查url
request.set_HealthCheckTimeout(data['HealthCheckTimeout']) #健康检查超时时间
request.set_HealthCheckInterval(data['HealthCheckInterval']) #健康检查间隔时间
request.set_HealthyThreshold(data['HealthyThreshold']) #健康检查健康阈值
request.set_UnhealthyThreshold(data['UnhealthyThreshold']) #健康检查不健康阈值
if "HealthCheckConnectPort" indata:
request.set_HealthCheckConnectPort(data['HealthCheckConnectPort']) #健康检查端口
else:print("HealthCheckConnectPort=default")else:print("HealthCheck=off")
response=client.do_action_with_exception(request)print(response)print("更新后的配置信息")print(json.dumps(data, sort_keys=True, indent=2))if __name__ == '__main__':
LoadBalancerId= os.environ.get('LoadBalancerId')
LoadBalancerId= LoadBalancerId.strip(',').split(',')
ListenerPort= os.environ.get('ListenerPort')
ServerCertificateId= os.environ.get('ServerCertificateId')
AccessKey= os.environ.get('AccessKey')
Secret= os.environ.get('Secret')
Regions= os.environ.get('Regions')print("需要部署",len(LoadBalancerId),"个实例")for i inLoadBalancerId:print(i)for i inrange(len(LoadBalancerId)):print("+++++++++++++++++++++++++++++++++++++++++++++")print("正在配置","第",i+1,"个实例",LoadBalancerId[i])
slb_set (LoadBalancerId[i],ListenerPort,ServerCertificateId,AccessKey,Secret,Regions)print("+++++++++++++++++++++++++++++++++++++++++++++")