我们有相当大的EC2地产,并发现我们与数百个安全小组的情况。有没有人找到办法让他这样做:
谢谢,亚历克斯
发布于 2019-09-04 19:03:21
不能删除与网络接口相关联的安全组(即正在运行或停止的实例)。但是,如果从AMI创建实例,并且目前没有实例或其他资源(如负载平衡器)引用安全组,则可以删除它们。
最简单的方法是尝试删除所有安全组,与正在运行或停止的实例关联的组不会被删除。
如果您有自定义的需求,您可以根据您想要编写的任何逻辑编写一个lambda来完成所需的任务。
发布于 2019-09-05 07:21:05
对于aws,有一个命令要转储到json中,所有现有的安全组都有名为描述-安全-组的规则。
aws ec2 describe-security-groups --output json
# sample output
{
"SecurityGroups": [
{
"IpPermissionsEgress": [],
"Description": "group desc",
"IpPermissions": [
{
"PrefixListIds": [],
"FromPort": 27004,
"IpRanges": [],
"ToPort": 27049,
"IpProtocol": "tcp",
"UserIdGroupPairs": [
{
"GroupName": "name",
"UserId": "0511234123441",
"GroupId": "sg-b0674836"
}对于第二部分,您有描述-实例子命令女巫将转储包含相关安全组的所有实例的描述。您必须编写一个小程序来处理那些json输出,但是交叉引用实例和组规则所需的所有数据都在其中。您甚至可以使用jmespath查询从不需要的数据中清除json输出。
aws ec2 describe-instances --query "Reservations[].Instances[].[InstanceId,SecurityGroups]" --output json
[
[
"i-0c7bbc88743583793",
[
{
"GroupName": "group1",
"GroupId": "sg-a3f77f1d4"
}
]
],
[
"i-0f4ab88f9f9853a",
[
{
"GroupName": "group2",
"GroupId": "sg-7e99434"
}
]
],
....如果选择boto3库,您会发现库的输入和输出非常相似,同时具有描述实例函数和描述安全组函数
还要小心,因为如果您使用的是EC2经典安全组或VPC安全组,代码可能会发生一些变化,因为它们有点不同。
https://serverfault.com/questions/981890
复制相似问题