使用阿里云Python SDK管理ECS安全组
准备工作
本机操作系统:CentOS7
python版本:python2.7.5
还需要准备如下信息:
一个云账号、Access Key ID、
Access Key Secret、
安全组ID、Region ID(如cn-shanghai)
1 安装阿里云python SDK
pip install aliyun-python-sdk-ecs
2 需求分析
我们供应商的开发人员经常需要访问我们的阿里云ECS资源,我们要根据供应商的ip添加相应的入方向安全组策略。
但是供应商的外网ip经常变化,几乎每天都要添加新的安全组策略并删掉旧的策略,在阿里云平台上执行此类操作很繁琐、低效。
所以需要使用python来简化操作,运行脚本就可以实现添加和删除安全组规则的操作。
3 脚本说明
3.1 增加规则的脚本
#!/usr/bin/python
# -*- coding: utf-8 -*- from aliyunsdkcore.client import AcsClient
from aliyunsdkecs.request.v20140526 import AuthorizeSecurityGroupRequest
import sys
import json class AliGroup: def __init__(self, AccessKey, AccessSecret, RegionId):
self.AccessKey = AccessKey
self.AccessSecret = AccessSecret
self.RegionId = RegionId def client(self):
"""用于创建AcsClient实例
"""
client = AcsClient(self.AccessKey, self.AccessSecret, self.RegionId)
return client def authorizeSecurityGroupRequest(self, PortRange, SourceCidrIp, Priority=1, IpProtocol='tcp', SecurityGroupId='your-securitygroup-id'):
"""用于添加安全组规则
"""
#创建AuthorizeSecurityGroupRequest实例
request = AuthorizeSecurityGroupRequest.AuthorizeSecurityGroupRequest()
#设置安全组ID
request.set_SecurityGroupId(SecurityGroupId)
#设置协议,比如TCP或者UDP
request.set_IpProtocol(IpProtocol)
#设置端口范围
request.set_PortRange(PortRange)
#如果存在源ip,则设置源ip
if SourceCidrIp:
request.set_SourceCidrIp(SourceCidrIp)
#设置优先级
request.set_Priority(Priority)
#设置规则的动作为接受
request.set_Policy('accept')
#设置接收数据格式为json
request.set_accept_format('json')
return request if __name__ == '__main__':
#AliGroup类实例化
ali = AliGroup("your-access-key-id", "your-access-key-secret", "your-region-id")
#创建AcsClient实例
clt = ali.client()
#添加安全组规则,由于优先级、协议和安全组ID已经设置默认参数,所以只需要在运行脚本时输入端口范围和源ip两个参数
add = ali.authorizeSecurityGroupRequest(sys.argv[1], sys.argv[2])
#打印输出
res = clt.do_action(add)
print res
3.2 删除规则的脚本
#!/usr/bin/python
# -*- coding: utf-8 -*- from aliyunsdkcore.client import AcsClient
from aliyunsdkecs.request.v20140526 import RevokeSecurityGroupRequest
import sys
import json class AliGroup:
def __init__(self, AccessKey, AccessSecret, RegionId):
self.AccessKey = AccessKey
self.AccessSecret = AccessSecret
self.RegionId = RegionId def client(self):
"""用于创建AcsClient的实例
"""
client = AcsClient(self.AccessKey, self.AccessSecret, self.RegionId)
return client def revokeSecurityGroupRequest(self, PortRange, SourceCidrIp, Priority=1, IpProtocol='tcp', SecurityGroupId='your-securitygroup-id'):
"""删除安全组规则
"""
request = RevokeSecurityGroupRequest.RevokeSecurityGroupRequest()
request.set_SecurityGroupId(SecurityGroupId)
request.set_IpProtocol(IpProtocol)
request.set_PortRange(PortRange)
if SourceCidrIp:
request.set_SourceCidrIp(SourceCidrIp)
request.set_Policy('accept')
request.set_accept_format('json')
return request if __name__ == '__main__':
ali = AliGroup("your-access-key-id", "your-access-key-secret", "your-region-id")
clt = ali.client()
rem = ali.revokeSecurityGroupRequest(sys.argv[1], sys.argv[2])
res = clt.do_action(rem)
print res
4 运行结果
4.1 增加规则
参数说明:
python后面第一个参数是脚本名称;
第二个参数是端口范围,一定要以"source-port/end-port"这种形式来写,这里以8282/8282为例;
第三个参数是源ip,这里以112.115.115.58为例。
运行结果如下:
云平台上查看结果,也可以看到增加的规则:
4.2 删除规则
运行结果如下:
云平台上查看结果,也可以看到删除的规则消失了,这里就不展示了。
使用阿里云Python SDK管理ECS安全组的更多相关文章
- 阿里云 OCS SDK for NodeJS介绍
阿里云 OCS SDK for NodeJS介绍 阿里云技术团队:熊亮 阿里云 SDK for NodeJS 是为 NodeJS 开发者提供使用阿里云各项服务的统一入口,由阿里云UED团队负责开发维护 ...
- 快速上手阿里云oss SDK
使用阿里云oss SDK 依赖安装: pip install oss2 pip install aliyun-python-sdk-sts 版本最好是 2.7.5 或以上 如果要开启 crc64 循环 ...
- 使用Python SDK管理Azure Load Balancer
概述 下面将演示如何使用Python SDK管理中国区Azure Load balancer.关于Azure负载均衡器的详细功能介绍,请参考官方文档. Code Sample import os fr ...
- 基于阿里云SLB/ESS/EIP/ECS/VPC的同城高可用方案演练
今天基于阿里云SLB/ESS/EIP/ECS/VPC等产品进行了一次同城高可用方案演练: 基本步骤如下: 1. 在华东1创建VPC网络VPC1,在华东1可用区B和G各创建一个虚拟交换机vpc1_swi ...
- 阿里云 .NET SDK Roa 和 Rpc 风格签名
阿里云 .NET SDK Roa 和 Rpc 风格的签名 Demo,适用于自己不想用其提供的SDK,想用自己组装 Roa 和 Rpc 的签名方式. Roa 和 Rpc 的签名方式主要有以下几个不同点: ...
- 揭秘阿里云 RTS SDK 是如何实现直播降低延迟和卡顿
作者:予涛 途坦 这个夏天,没什么能够比一场酣畅淋漓的奥运比赛来的过瘾.但是,在视频平台直播观看比赛也有痛点:"卡顿" 和 "延时".受限于不同地域.复杂的网络 ...
- 在阿里云 CentOS 服务器(ECS)上搭建 nginx + mysql + php-fpm 环境
阿里云的云服务器(ECS)可以选择多种操作系统,打算用它运行 Drupal或者 WordPress ,你最好选择 Linux 系统,这篇文章的演示是基于阿里云的 CentOS 操作系统的服务器.我们在 ...
- 阿里云直播SDK - .NET
阿里云sdk:https://develop.aliyun.com/sdk/csharp?spm=5176.doc27234.2.4.QiJb9l Github:https://github.com/ ...
- (转)在阿里云 CentOS 服务器(ECS)上搭建 nginx + mysql + php-fpm 环境
阿里云的云服务器(ECS)可以选择多种操作系统,打算用它运行 Drupal或者 WordPress ,你最好选择 Linux 系统,这篇文章的演示是基于阿里云的 CentOS 操作系统的服务器.我们在 ...
随机推荐
- Spine Skeleton Animation(2D骨骼动画)
骨骼动画 首先我们来看到底什么是骨骼动画: 在早期的机器上,渲染本身已经占用了很多CPU资源,因此,对于渲染,往往采取的是一种空间换时间的策略,以避免在模型的渲染中继续加重CPU的负担.帧动画模型在这 ...
- spark-机器学习实践-K近邻应用实践一
K近邻应用-异常检测应用 原理: 根据数据样本进行KMeans机器学习模型的建立,获取簇心点,以簇为单位,离簇心最远的第五个点的距离为阈值,大于这个值的为异常点,即获得数据异常. 如图:
- 【adb命令】在cmd窗口中使用adb install命令安装 中文名字apk报错的解决办法
1.在cmd窗口中使用adb install命令安装中文名字apk报错,安装英文名字apk就正常,详细报错如下图: 2.查看adb版本号:adb version 3.怀疑是adb版本的原因,尝试换个最 ...
- 关于requests.exceptions.SSLError: HTTPSConnectionPool
问题: requests.exceptions.SSLError: HTTPSConnectionPool(host='mall.christine.com.cn', port=443): Max r ...
- 【转】网段,子网掩码,网络标识,IP划分
网段指一个计算机网络中使用同一物理层设备(传输介质,中继器,集线器等)直接通讯的那一部分.就是从一个IP到另一个IP 好比 从192.168.0.1到192.168.255.255这之间就是一个网段 ...
- Postman-断言和Runner
断言(部分) // 推荐用全等 ===,确保类型和值都一致 tests['Status code is 200'] = responseCode.code === 200; //判断响应结果是否是20 ...
- docker-compose运行Rails
1.新建空目录,名字可以叫Rails 2.新建Dockerfile并添加如下内容 FROM ruby:2.5 RUN apt-get update -qq && apt-get ins ...
- shiro实战系列(十三)之单元测试
由于我们已经涉及到了 Subject reference,我们知道 Subject 是“当前执行”用户的特定安全视图,且该 Subject 实 例绑定到一个线程来确保我们知道在线程执行期间的任何时间是 ...
- kvm安装配置使用centos6.5
# yum -y install kvm virt-* libvirt && yum -y groupinstall Virtualization 'Virtualization C ...
- [转]C#操作INI文件
在很多的程序中,我们都会看到有以.ini为后缀名的文件,这个文件可以很方便的对程序配置的一些信息进行设置和读取,比如说我们在做一个程序后台登陆的时候,需要自动登录或者是远程配置数据库连接,及保存密码设 ...