<?php
    function percentEncode($str){
        // 使用urlencode编码后,将"+","*","%7E"做替换即满足ECS API规定的编码规范
        $res = urlencode($str);
        $res = preg_replace('/\+/', '%20', $res);
        $res = preg_replace('/\*/', '%2A', $res);
        $res = preg_replace('/%7E/', '~', $res);
        return $res;
    }
    function computeSignature($parameters, $accessKeySecret){
        // 将参数Key按字典顺序排序
        ksort($parameters);
        // 生成规范化请求字符串
        $canonicalizedQueryString = '';
        foreach($parameters as $key => $value)
        {
            $canonicalizedQueryString .= '&' . percentEncode($key)
                . '=' . percentEncode($value);
        }
        // 生成用于计算签名的字符串 stringToSign
        $stringToSign = 'GET&%2F&' . percentencode(substr($canonicalizedQueryString, 1));
        // 计算签名,注意accessKeySecret后面要加上字符'&'
        $signature = base64_encode(hash_hmac('sha1', $stringToSign, $accessKeySecret . '&', true));
        return $signature;
    }
    function get_action($data){
        date_default_timezone_set("GMT");
        $dateTimeFormat = 'Y-m-d\TH:i:s\Z';
        $publicdata = array(
            // 公共参数
            'Format' => 'JSON',
            'Version' => '2014-05-26',
            'AccessKeyId' => 'AccessKeyIdXXXXXXXX',
            'SignatureVersion' => '1.0',
            'SignatureMethod' => 'HMAC-SHA1',
            'SignatureNonce'=> uniqid(),
            'TimeStamp' => date($dateTimeFormat)
        );
        $data = array_merge($publicdata,$data);
        $data['Signature'] = computeSignature($data, 'AccessKeySecretXXXXXXXXXXXXXXXXXXXXXXXXX');
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, 'https://ecs.aliyuncs.com/?' . http_build_query($data));
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
          curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        $res = curl_exec($ch);
        date_default_timezone_set('PRC');
        return $res;
    }
     //流量JSON
    function get_(){
        $data = array(
                        'Action' => 'DescribeEipMonitorData',
                        'AllocationId' => 'eip-xxxxxxxxxxx',
                        'StartTime' =>"2019-04-17T00:00:00Z",
                        'EndTime' => "2019-06-01T00:00:00Z",
                        'Period' => "3600"
                    );
        $res = (string)get_action($data);
           $jsonarray = json_decode($res,true);
          //echo $jsonarray['EipMonitorDatas']['EipMonitorData'][1]['EipTX'];
          //echo count($jsonarray['EipMonitorDatas']['EipMonitorData']);
          $temp_all_EipTX=0;
          for ($i = 0; $i < count($jsonarray['EipMonitorDatas']['EipMonitorData']); $i++) {
            $temp_all_EipTX=$temp_all_EipTX+$jsonarray['EipMonitorDatas']['EipMonitorData'][$i]['EipTX'];
          }
          echo $temp_all_EipTX/1024/1024/1024;
          if($temp_all_EipTX>=950*1024*1024*1024){
          StopInstance();
          
        }
    }
    function StopInstance(){
        $data = array(
                        'Action' => 'StopInstance',
                        'InstanceId' => 'i-xxxxxxxxxx',
                        'ForceStop' =>"true",
                        'StoppedMode' => "keepcharging",
                        'ConfirmStop' => "false"
                    );
        $res = (string)get_action($data);
          echo $res;
    }
    get_();

?>
最后修改:2019 年 05 月 02 日
如果觉得我的文章对你有用,请随意赞赏