gpt写的 
package main
import (
"fmt"
"time"
"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
"github.com/aliyun/alibaba-cloud-sdk-go/services/ecs"
)
func main() {
// 设置您的阿里云访问密钥 ID 和密钥 Secret
accessKeyID := "your_access_key_id"
accessKeySecret := "your_access_key_secret"
// 创建 ECS 客户端
client, err := ecs.NewClientWithAccessKey("cn-hangzhou", accessKeyID, accessKeySecret)
if err != nil {
fmt.Println("Error creating ECS client:", err)
return
}
// 设置请求参数
instanceID := "your_instance_id"
maxTrafficThreshold := 100000000 // 设置流量阈值,单位为Byte,此处设置为100MB
// 定期检查网络流量
for {
// 获取当前网络流量信息
request := ecs.CreateDescribeInstanceMonitorDataRequest()
request.InstanceId = instanceID
request.Period = "60" // 设置时间间隔,单位为秒,此处设置为1分钟
response, err := client.DescribeInstanceMonitorData(request)
if err != nil {
fmt.Println("Error calling DescribeInstanceMonitorData:", err)
return
}
// 计算当前的总网络流量
totalTraffic := int64(0)
for _, dataPoint := range response.MonitorData {
totalTraffic += dataPoint.IntranetRX + dataPoint.IntranetTX
}
// 判断是否超过流量阈值
if totalTraffic > int64(maxTrafficThreshold) {
fmt.Printf("网络流量超过阈值:%d Byte,正在关机...\n", totalTraffic)
// 关机实例
stopRequest := ecs.CreateStopInstanceRequest()
stopRequest.InstanceId = instanceID
_, err := client.StopInstance(stopRequest)
if err != nil {
fmt.Println("Error stopping instance:", err)
return
}
break
}
// 每隔一段时间检查一次,例如,每分钟检查一次
time.Sleep(60 * time.Second)
}
}
|