$npx -y skills add chaterm/terminal-skills --skill aliyun-cli阿里云 CLI 操作
| 1 | # 阿里云 CLI 操作 |
| 2 | |
| 3 | ## 概述 |
| 4 | 阿里云 ECS、OSS、RDS 等服务的命令行操作技能。 |
| 5 | |
| 6 | ## 配置与认证 |
| 7 | |
| 8 | ```bash |
| 9 | # 配置凭证 |
| 10 | aliyun configure |
| 11 | aliyun configure --profile myprofile |
| 12 | |
| 13 | # 交互式配置 |
| 14 | # Access Key ID: xxx |
| 15 | # Access Key Secret: xxx |
| 16 | # Default Region Id: cn-hangzhou |
| 17 | # Default Output Format: json |
| 18 | |
| 19 | # 查看配置 |
| 20 | aliyun configure list |
| 21 | |
| 22 | # 使用 profile |
| 23 | aliyun ecs DescribeInstances --profile myprofile |
| 24 | |
| 25 | # 环境变量 |
| 26 | export ALICLOUD_ACCESS_KEY=xxx |
| 27 | export ALICLOUD_SECRET_KEY=xxx |
| 28 | export ALICLOUD_REGION=cn-hangzhou |
| 29 | ``` |
| 30 | |
| 31 | ## ECS 实例 |
| 32 | |
| 33 | ### 实例管理 |
| 34 | ```bash |
| 35 | # 列出实例 |
| 36 | aliyun ecs DescribeInstances |
| 37 | aliyun ecs DescribeInstances --RegionId cn-hangzhou |
| 38 | |
| 39 | # 按状态过滤 |
| 40 | aliyun ecs DescribeInstances --Status Running |
| 41 | |
| 42 | # 查看实例详情 |
| 43 | aliyun ecs DescribeInstanceAttribute --InstanceId i-xxx |
| 44 | |
| 45 | # 启动实例 |
| 46 | aliyun ecs StartInstance --InstanceId i-xxx |
| 47 | |
| 48 | # 停止实例 |
| 49 | aliyun ecs StopInstance --InstanceId i-xxx |
| 50 | aliyun ecs StopInstance --InstanceId i-xxx --ForceStop true |
| 51 | |
| 52 | # 重启实例 |
| 53 | aliyun ecs RebootInstance --InstanceId i-xxx |
| 54 | |
| 55 | # 删除实例 |
| 56 | aliyun ecs DeleteInstance --InstanceId i-xxx --Force true |
| 57 | ``` |
| 58 | |
| 59 | ### 创建实例 |
| 60 | ```bash |
| 61 | # 创建实例 |
| 62 | aliyun ecs CreateInstance \ |
| 63 | --RegionId cn-hangzhou \ |
| 64 | --ImageId ubuntu_22_04_x64_20G_alibase_20230907.vhd \ |
| 65 | --InstanceType ecs.t6-c1m1.large \ |
| 66 | --SecurityGroupId sg-xxx \ |
| 67 | --VSwitchId vsw-xxx \ |
| 68 | --InstanceName my-instance \ |
| 69 | --InternetChargeType PayByTraffic \ |
| 70 | --InternetMaxBandwidthOut 5 |
| 71 | |
| 72 | # 分配公网 IP |
| 73 | aliyun ecs AllocatePublicIpAddress --InstanceId i-xxx |
| 74 | ``` |
| 75 | |
| 76 | ### 安全组 |
| 77 | ```bash |
| 78 | # 列出安全组 |
| 79 | aliyun ecs DescribeSecurityGroups --RegionId cn-hangzhou |
| 80 | |
| 81 | # 创建安全组 |
| 82 | aliyun ecs CreateSecurityGroup \ |
| 83 | --RegionId cn-hangzhou \ |
| 84 | --VpcId vpc-xxx \ |
| 85 | --SecurityGroupName my-sg |
| 86 | |
| 87 | # 添加入方向规则 |
| 88 | aliyun ecs AuthorizeSecurityGroup \ |
| 89 | --SecurityGroupId sg-xxx \ |
| 90 | --IpProtocol tcp \ |
| 91 | --PortRange 22/22 \ |
| 92 | --SourceCidrIp 0.0.0.0/0 |
| 93 | |
| 94 | # 删除规则 |
| 95 | aliyun ecs RevokeSecurityGroup \ |
| 96 | --SecurityGroupId sg-xxx \ |
| 97 | --IpProtocol tcp \ |
| 98 | --PortRange 22/22 \ |
| 99 | --SourceCidrIp 0.0.0.0/0 |
| 100 | ``` |
| 101 | |
| 102 | ## OSS 存储 |
| 103 | |
| 104 | ### ossutil 工具 |
| 105 | ```bash |
| 106 | # 配置 |
| 107 | ossutil config |
| 108 | |
| 109 | # 列出桶 |
| 110 | ossutil ls |
| 111 | |
| 112 | # 创建桶 |
| 113 | ossutil mb oss://my-bucket |
| 114 | |
| 115 | # 上传文件 |
| 116 | ossutil cp file.txt oss://my-bucket/ |
| 117 | ossutil cp -r ./dir oss://my-bucket/dir/ |
| 118 | |
| 119 | # 下载文件 |
| 120 | ossutil cp oss://my-bucket/file.txt ./ |
| 121 | ossutil cp -r oss://my-bucket/dir/ ./dir/ |
| 122 | |
| 123 | # 同步目录 |
| 124 | ossutil sync ./local-dir oss://my-bucket/prefix/ |
| 125 | ossutil sync oss://my-bucket/prefix/ ./local-dir |
| 126 | |
| 127 | # 删除文件 |
| 128 | ossutil rm oss://my-bucket/file.txt |
| 129 | ossutil rm -r oss://my-bucket/dir/ |
| 130 | |
| 131 | # 删除桶 |
| 132 | ossutil rb oss://my-bucket |
| 133 | |
| 134 | # 生成签名 URL |
| 135 | ossutil sign oss://my-bucket/file.txt --timeout 3600 |
| 136 | ``` |
| 137 | |
| 138 | ### OSS API |
| 139 | ```bash |
| 140 | # 列出桶 |
| 141 | aliyun oss ListBuckets |
| 142 | |
| 143 | # 列出对象 |
| 144 | aliyun oss ListObjects --BucketName my-bucket |
| 145 | |
| 146 | # 获取桶信息 |
| 147 | aliyun oss GetBucketInfo --BucketName my-bucket |
| 148 | ``` |
| 149 | |
| 150 | ## RDS 数据库 |
| 151 | |
| 152 | ```bash |
| 153 | # 列出实例 |
| 154 | aliyun rds DescribeDBInstances --RegionId cn-hangzhou |
| 155 | |
| 156 | # 查看实例详情 |
| 157 | aliyun rds DescribeDBInstanceAttribute --DBInstanceId rm-xxx |
| 158 | |
| 159 | # 创建实例 |
| 160 | aliyun rds CreateDBInstance \ |
| 161 | --RegionId cn-hangzhou \ |
| 162 | --Engine MySQL \ |
| 163 | --EngineVersion 8.0 \ |
| 164 | --DBInstanceClass rds.mysql.s2.large \ |
| 165 | --DBInstanceStorage 100 \ |
| 166 | --DBInstanceNetType Intranet \ |
| 167 | --PayType Postpaid |
| 168 | |
| 169 | # 创建数据库 |
| 170 | aliyun rds CreateDatabase \ |
| 171 | --DBInstanceId rm-xxx \ |
| 172 | --DBName mydb \ |
| 173 | --CharacterSetName utf8mb4 |
| 174 | |
| 175 | # 创建账号 |
| 176 | aliyun rds CreateAccount \ |
| 177 | --DBInstanceId rm-xxx \ |
| 178 | --AccountName admin \ |
| 179 | --AccountPassword 'MyPassword123!' \ |
| 180 | --AccountType Super |
| 181 | |
| 182 | # 重启实例 |
| 183 | aliyun rds RestartDBInstance --DBInstanceId rm-xxx |
| 184 | ``` |
| 185 | |
| 186 | ## ACK 容器服务 |
| 187 | |
| 188 | ```bash |
| 189 | # 列出集群 |
| 190 | aliyun cs DescribeClusters |
| 191 | |
| 192 | # 获取集群详情 |
| 193 | aliyun cs DescribeClusterDetail --ClusterId c-xxx |
| 194 | |
| 195 | # 获取 kubeconfig |
| 196 | aliyun cs DescribeClusterUserKubeconfig --ClusterId c-xxx |
| 197 | |
| 198 | # 扩容节点 |
| 199 | aliyun cs ScaleCluster \ |
| 200 | --ClusterId c-xxx \ |
| 201 | --size 5 |
| 202 | ``` |
| 203 | |
| 204 | ## SLB 负载均衡 |
| 205 | |
| 206 | ```bash |
| 207 | # 列出实例 |
| 208 | aliyun slb DescribeLoadBalancers --RegionId cn-hangzhou |
| 209 | |
| 210 | # 创建实例 |
| 211 | aliyun slb CreateLoadBalancer \ |
| 212 | --RegionId cn-hangzhou \ |
| 213 | --LoadBalancerName my-slb \ |
| 214 | --AddressType internet \ |
| 215 | --LoadBalancerSpec slb.s1.small |
| 216 | |
| 217 | # 添加后端服务器 |
| 218 | aliyun slb AddBackendServers \ |
| 219 | --LoadBalancerId lb-xxx \ |
| 220 | --BackendServers '[{"ServerId":"i-xxx","Weight":"100"}]' |
| 221 | |
| 222 | # 创建监听 |
| 223 | aliyun slb CreateLoadBalancerTCPListener \ |
| 224 | --LoadBalancerId lb-xxx \ |
| 225 | --ListenerPort 80 \ |
| 226 | --BackendServerPort 80 \ |
| 227 | --Bandwidth -1 |
| 228 | ``` |
| 229 | |
| 230 | ## 常见场景 |
| 231 | |
| 232 | ### 场景 1:批量操作实例 |
| 233 | ```bash |
| 234 | # 获取所有运行中实例 |
| 235 | aliyun ecs DescribeInstances --Status Running \ |
| 236 | --output cols=InstanceId rows=Instances.Instance[] |
| 237 | |
| 238 | # 批量停止 |
| 239 | for id in $(aliyun ecs DescribeInstances --Status Running \ |
| 240 | --output cols=InstanceId rows=Instances.Instance[] | tail -n +2); do |
| 241 | aliyun ecs StopInstance --InstanceId $id |
| 242 | done |
| 243 | ``` |
| 244 | |
| 245 | ### 场景 2:监控数据查询 |
| 246 | ```bash |
| 247 | # 查询 CPU 使用率 |
| 248 | aliyun cms DescribeMetricLast \ |
| 249 | --Namespace acs_ecs_dashboard \ |
| 250 | --MetricName CPUUtilization \ |
| 251 | --Dimensions '[{"instanceId":"i-xxx"}]' |
| 252 | ``` |
| 253 | |
| 254 | ### 场景 3:日志查询 |
| 255 | ```bash |
| 256 | # 查询 SLS 日志 |
| 257 | aliyun sls GetLogs \ |
| 258 | --project my-project \ |
| 259 | --logstore my-logstore \ |
| 260 | --from $(date -d '1 hour ago' +%s) \ |
| 261 | --to $(date +% |