因工作需要,想通过脚本控制阿里云的安全组,通过阿里云官网了解到有两种方式可以实现,一是通过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 AcsClient
from aliyunsdkecs.request.v20140526 import DescribeSecurityGroupAttributeRequest
client = 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 AuthorizeSecurityGroupRequest
request = 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 CreateSecurityGroupRequest
request = CreateSecurityGroupRequest.CreateSecurityGroupRequest()
删除安全组示例:
from aliyunsdkecs.request.v20140526 import DeleteSecurityGroupRequest
request = DeleteSecurityGroupRequest.DeleteSecurityGroupRequest()
request.set_SecurityGroupId('安全组ID')
将实例加入安全组:
from aliyunsdkecs.request.v20140526 import JoinSecurityGroupRequest
request = JoinSecurityGroupRequest.JoinSecurityGroupRequest()
request.set_SecurityGroupId('安全组ID')
request.set_InstanceId('实例ID')
将实例移出安全组:
from aliyunsdkecs.request.v20140526 import LeaveSecurityGroupRequest
request = LeaveSecurityGroupRequest.LeaveSecurityGroupRequest()
request.set_SecurityGroupId('安全组ID')
request.set_InstanceId('实例ID')
修改安全组名和描述:
from aliyunsdkecs.request.v20140526 import ModifySecurityGroupAttributeRequest
request = ModifySecurityGroupAttributeRequest.ModifySecurityGroupAttributeRequest()
request.set_SecurityGroupId('安全组ID')
request.set_SecurityGroupName('新安全组名')
request.set_Description('新描述')
删除安全组规则(入方向)示例:
from aliyunsdkecs.request.v20140526 import RevokeSecurityGroupRequest
request = RevokeSecurityGroupRequest.RevokeSecurityGroupRequest()
request.set_SecurityGroupId('安全组ID')
request.set_IpProtocol('tcp')
request.set_PortRange('80/80')
request.set_SourceCidrIp('0.0.0.0/0')