1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- package com.fdkankan.mqcontroller.utils;
- import com.alibaba.fastjson.JSONObject;
- import com.aliyun.ess20220222.Client;
- import com.aliyun.ess20220222.models.ExecuteScalingRuleRequest;
- import com.aliyun.ess20220222.models.ExecuteScalingRuleResponse;
- import com.aliyun.ess20220222.models.RemoveInstancesRequest;
- import com.aliyun.ess20220222.models.RemoveInstancesResponse;
- import com.aliyun.tea.TeaException;
- import com.aliyun.teaopenapi.models.Config;
- import lombok.extern.slf4j.Slf4j;
- import java.util.Arrays;
- import java.util.UUID;
- @Slf4j
- public class ECSUtils {
- public static Client initClient(String accessKey,String accessKeySecret,String endPoint) throws Exception {
- Config config = new Config();
- config.setAccessKeyId(accessKey);
- config.setAccessKeySecret(accessKeySecret);
- config.setEndpoint(endPoint);
- return new Client(config);
- }
- public static Boolean executeScalingActivity(Client client, String scalingRuleAri) throws Exception{
- ExecuteScalingRuleRequest request = new ExecuteScalingRuleRequest();
- request.setScalingRuleAri(scalingRuleAri);
- request.setClientToken(UUID.randomUUID().toString()); // 使用UUID生成唯一标识,避免并发冲突
- ExecuteScalingRuleResponse response = client.executeScalingRule(request);
- log.info("executeScalingActivity-resp:{}",JSONObject.toJSONString(response));
- if(response.getStatusCode() == 200){
- return true;
- }
- return false;
- }
- public static Boolean executeScalingStop(Client client, String groupId,String instanceId) {
- try {
- RemoveInstancesRequest removeInstancesRequest = new RemoveInstancesRequest();
- removeInstancesRequest.setScalingGroupId(groupId);
- removeInstancesRequest.setInstanceIds(Arrays.asList(instanceId));
- RemoveInstancesResponse removeInstancesResponse = client.removeInstances(removeInstancesRequest);
- log.info("executeScalingStop-resp:{}",JSONObject.toJSONString(removeInstancesResponse));
- if(removeInstancesResponse.getStatusCode() == 200){
- return true;
- }
- }catch (TeaException e){
- //实例不存在视作关闭成功
- if(e.getStatusCode().equals(400) && e.getMessage().contains("The specified instance does not exist")){
- return true;
- }
- }catch (Exception e){
- log.info("delEcs--error:",e);
- }
- return false;
- }
- public static boolean createEcs(String accessKey,String secret,String endpoint,String scalingRuleAri){
- try {
- Client client = initClient(accessKey,secret,endpoint);
- return executeScalingActivity(client, scalingRuleAri);
- }catch (Exception e){
- log.info("createEcs--error:",e);
- }
- return false;
- }
- public static Boolean delEcs(String accessKey,String secret,String endpoint,String scalingGroupId,String instanceId){
- try {
- Client client = initClient(accessKey,secret,endpoint);
- return executeScalingStop(client, scalingGroupId,instanceId);
- }catch (Exception e){
- log.info("delEcs--error:",e);
- }
- return false;
- }
- }
|