Loading... ``` <?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 日 © 允许规范转载 打赏 赞赏作者 赞 如果觉得我的文章对你有用,请随意赞赏