因工作需要,想通过脚本控制阿里云的安全组,通过阿里云官网了解到有两种方式可以实现,一是通过API的方式,二是通过SDK的方式,昨天尝试了一下API的方式,没有成功,网上也没查到相关资料,只好转战SDK
因工作需要,想通过脚本控制阿里云的安全组,通过阿里云官网了解到有两种方式可以实现,一是通过API的方式,二是通过SDK的方式,昨天尝试了一下API的方式,没有成功,网上也没查到相关资料,只好转战SDK,接下来说说SDK怎么使用。
首先你需要创建一个RAM子账号:打开阿里云管理控制台,在“产品与服务”中找到“访问控制”,第一次使用需要激活,接下来不用我说你也应该懂怎么做了,创建完用户后给他创建一个”Access Key“,然后根据你的需要给他授权。
安装SDK:我需要管理ECS,所以我只需安装ECS的SDK即可,直接通过pip命令安装:”pip install aliyun-python-sdk-ecs“,如果你不知道你想管理的模块对应的SDK,请查看官网公布的列表。
下面是查看某个安全组的示例:
# -*- coding: utf8 -*-from aliyunsdkcore.client import AcsClientfrom aliyunsdkecs.request.v20140526 import DescribeSecurityGroupAttributeRequestclient = AcsClient( "AccessKeyId", # 此处填写你刚才创建的RAM子账号的AccessKeyId "AccessKeySecret", # 此处填写你刚才创建的RAM子账号的AccessKeySecret "区域" # 此处填写你要管理的区域)request = DescribeSecurityGroupAttributeRequest.DescribeSecurityGroupAttributeRequest()request.set_SecurityGroupId('安全组ID')response = client.do_action_with_exception(request)print response
注:如果不知道自己的服务器在哪个区域,可查看官网公布的信息。
官网上关于SDK的资料好少,所以只能靠包名来猜测功能了,所有包都在”C:/Python27/Lib/site-packages/aliyunsdkecs/request/v20140526“中,一般Describe开头的都是查看功能,Modify开头的都是修改功能,也不难搞懂。
包名 | 功能 |
AuthorizeSecurityGroupRequest | 添加安全组规则(入方向) |
AuthorizeSecurityGroupEgressRequest | 添加安全组规则(出方向) |
CreateSecurityGroupRequest | 创建安全组 |
DeleteSecurityGroupRequest | 删除安全组 |
DescribeSecurityGroupAttributeRequest | 查看某个安全组的明细 |
DescribeSecurityGroupsRequest | 查看所有安全组 |
JoinSecurityGroupRequest | 将实例加入安全组 |
LeaveSecurityGroupRequest | 将实例移出安全组 |
ModifySecurityGroupAttributeRequest | 修改安全组名和描述 |
RevokeSecurityGroupEgressRequest | 删除安全组规则(出方向) |
RevokeSecurityGroupRequest | 删除安全组规则(入方向) |
下面是一个添加安全组规则的示例(公共部分已省略,请参考第一个示例):
from aliyunsdkecs.request.v20140526 import AuthorizeSecurityGroupRequestrequest = AuthorizeSecurityGroupRequest.AuthorizeSecurityGroupRequest()request.set_SecurityGroupId('安全组ID')request.set_IpProtocol('tcp')request.set_PortRange('80/80')request.set_SourceCidrIp('0.0.0.0/0')
创建安全组的示例:
from aliyunsdkecs.request.v20140526 import CreateSecurityGroupRequestrequest = CreateSecurityGroupRequest.CreateSecurityGroupRequest()
删除安全组示例:
from aliyunsdkecs.request.v20140526 import DeleteSecurityGroupRequestrequest = DeleteSecurityGroupRequest.DeleteSecurityGroupRequest()request.set_SecurityGroupId('安全组ID')
将实例加入安全组:
from aliyunsdkecs.request.v20140526 import JoinSecurityGroupRequestrequest = JoinSecurityGroupRequest.JoinSecurityGroupRequest()request.set_SecurityGroupId('安全组ID')request.set_InstanceId('实例ID')
将实例移出安全组:
from aliyunsdkecs.request.v20140526 import LeaveSecurityGroupRequestrequest = LeaveSecurityGroupRequest.LeaveSecurityGroupRequest()request.set_SecurityGroupId('安全组ID')request.set_InstanceId('实例ID')
修改安全组名和描述:
from aliyunsdkecs.request.v20140526 import ModifySecurityGroupAttributeRequestrequest = ModifySecurityGroupAttributeRequest.ModifySecurityGroupAttributeRequest()request.set_SecurityGroupId('安全组ID')request.set_SecurityGroupName('新安全组名')request.set_Description('新描述')
删除安全组规则(入方向)示例:
from aliyunsdkecs.request.v20140526 import RevokeSecurityGroupRequestrequest = RevokeSecurityGroupRequest.RevokeSecurityGroupRequest()request.set_SecurityGroupId('安全组ID')request.set_IpProtocol('tcp')request.set_PortRange('80/80')request.set_SourceCidrIp('0.0.0.0/0')