利用阿里云服务的openAPi功能,可以实现服务配置自动化管理。
ecs临时带宽升级实例:
api说明文档: 链接
api调试工具: 链接
阿里云SDK下载地址: 链接
代码实例:
function temporaryBandwidthUpgrade($netOut = null, $startTime = null, $endTime = null)
{
date_default_timezone_set('PRC');
$now = time();
if(!is_numeric($netOut) || $netOut<=5 || strtotime($startTime) <= ($now - 300) ||
strtotime($endTime) <= (strtotime($startTime) + 10800)){
echo '传参错误! 使用说明:' . PHP_EOL;
echo '1、startTime 要晚于当前时间至少5分钟,精确到分' . PHP_EOL;
echo '1、endTime 需要比起始时间至少晚三个小时,精确到时' . PHP_EOL;
exit('php index.php temporaryBandwidthUpgrade (int)netOut (Y-m-d H:i:s)startTime (Y-m-d H:i:s)endTime' . PHP_EOL);
}
$prcStartTime = date('Y-m-d H:i', strtotime($startTime));
$prcEndTime = date('Y-m-d H', strtotime($endTime));
$startTime = date('Y-m-d\TH:i\Z', strtotime($startTime)-28800);
$endTime = date('Y-m-d\TH\Z', strtotime($endTime)-28800);
$iClientProfile = DefaultProfile::getProfile("cn-hangzhou", <accessKeyId>, <accessSecret>);
$client = new DefaultAcsClient($iClientProfile);
//设置参数
$request = new Ecs\ModifyInstanceNetworkSpecRequest();
$request->setInternetMaxBandwidthOut($netOut);
$request->setStartTime($startTime);
$request->setEndTime($endTime);
# 获取需升级阿里云服务器实例
$servers = getServers();
$success = [];
$fail = [];
foreach ($servers as $key => $val){
$request->setInstanceId($val['instanceId']);
// 发起请求
try {
$response = $client->getAcsResponse($request);
}catch (Exception $exception) {
$fail[] = $val['name'];
}
if(!empty($response->RequestId)){
$success[] = $val['name'];
}
}
$data = [
'subject' => '服务器临时带宽升级详情',
'message' => '服务器临时带宽升级详情:' . $prcStartTime . ' ~ ' . $prcEndTime . ' 升级带宽为 ' .
$netOut . ' M<br>升级成功 ' . count($success) . ' 台:<br>' . var_export($success, true) .
'<br> 升级失败 ' . count($fail) . ' 台:<br>' . var_export($fail, true),
'email' => json_encode([
'xxx' => '[email protected]',
])
];
$this->load->library('curl');
simple_post('http://xxx.com/ccc/vvv', $data);
exit();
}
修改实例的带宽配置。当实例现有网络规格不满足要求时,可以通过此接口修改实例的网络规格来提高网络性能。修改后可能影响到实例所产生的账单费用。在使用这个接口的时候,需要注意以下几点:
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
Action | String | 是 | 系统规定参数,取值:ModifyInstanceNetworkSpec。 |
InstanceId | String | 是 | 指定的需要实例规格的实例 ID。 |
InternetMaxBandwidthOut | Integer | 否 | 公网出网带宽最大值,单位为 Mbps (Megabit per second)。 - 按带宽计费:[0,200]。- 按流量计费:[0,200]。 |
InternetMaxBandwidthIn | Integer | 否 | 公网入网带宽最大值,单位为 Mbps。按带宽计费:[1,200]。按流量计费:[1,200]。 |
networkChargeType | String | 否 | 转换网络计费类型,转换为按流量计费或按固定带宽计费。可选值:- PayByBandwidth - PayByTraffic |
StartTime | String | 否 | 临时带宽生效的起始时间。按照 ISO8601 标准表示,并需要使用 UTC 时间。格式为: yyyy-MM-ddTHH:mmZ。例如 2017-08-09T09:40Z 。起始时间精确到分钟,起始时间需要比当前时间至少晚两分钟。该参数只对包年包月实例的固定带宽有效,其他模式带宽不支持该参数。 |
EndTime | String | 否 | 临时带宽生效的终止时间。按照 ISO8601 标准表示,并需要使用 UTC 时间。格式为: yyyy-MM-ddTHHZ。 例如 2017-08-09T09Z 。终止时间精确到小时,终止时间需要比起始时间至少晚三个小时。该参数只对包年包月实例的固定带宽有效,其他模式带宽不支持该参数。 |
AutoPay | Boolean | 否 | 默认为 true,自动支付。可修改该参数来设置是否自动支付。当设置了自动支付,如果账号余额不足,需要登录控制台作废订单,同一实例最多存在一条未支付订单。 |
ClientToken | String | 否 | 用于保证请求的幂等性。由客户端生成该参数值,要保证在不同请求间唯一,最大不值过 64 个 ASCII 字符。具体参见附录:如何保证幂等性。 |
[1]
链接: https://help.aliyun.com/document_detail/25545.html?spm=5176.11065259.1996646101.searchclickresult.4f6f6fc7uUIZPk[2]
链接: https://api.aliyun.com/?#product=Ecs&api=ModifyInstanceNetworkSpec¶ms=%7B%7D&tab=DEMO&lang=PHP&_=r[3]
链接: https://github.com/aliyun/aliyun-openapi-php-sdk/tree/master/[4]
控制台: https://ecs.console.aliyun.com/[5]
控制台: https://ecs.console.aliyun.com/[6]
控制台: https://ecs.console.aliyun.com/#/home