Amazon EC2 не позволяет мне удалить группу безопасности, жалуясь, что у группы все еще есть зависимости. Как я могу узнать, что это за зависимости?
aws ec2 description-security-groups не говорит.
Вставьте идентификатор группы безопасности в раздел «Сетевые интерфейсы» EC2. Это найдет применение в EC2, EB, RDS, ELB.
CLI: aws ec2 describe-network-interfaces --filters Name=group-id,Values=sg-123abc45
Лучший способ сделать это в консоли AWS EC2 - вставить имя группы безопасности в поле поиска в разделе EC2-> Instances.
Затем будут заполнены все экземпляры, связанные с вставленной группой безопасности - это будут объекты ec2 (зависимости).
Вы также можете выполнить этот поиск в разделе ELB и других предложениях AWS, которые используют группы безопасности.
Если вы пытаетесь удалить группу безопасности, вам нужно будет либо «изменить группу безопасности» для каждого экземпляра (если они находятся в VPC), либо создать AMI и перезапустить с использованием другой группы безопасности, а затем удалить старый экземпляр (если с использованием классической версии EC2)
Надеюсь, это поможет-
Вам нужно смотреть на объекты вашего экземпляра EC2, а не на сами группы:
$ aws ec2 describe-instances --output text
Затем либо найдите «sg- *», либо используйте стандартные инструменты обработки текстового потока unix, чтобы извлечь нужные данные.
В качестве альтернативы, если у вас небольшое количество экземпляров, используйте --output table
для красиво оформленного списка.
Вы можете запросить aws cli, чтобы получить нужные данные.
Вам необходимо:
Вы также можете использовать библиотеки, такие как boto https://code.google.com/p/boto/ вместо raw aws cli.
Лямбда-функции также могут иметь группы безопасности. На момент написания Amazon не предотвращает удаление групп безопасности, используемых функциями Lambda.
Я использовал это:
aws lambda list-functions | jq -c '.Functions[] | {FunctionArn, SecurityGroups: (.VpcConfig.SecurityGroupIds[]? // null) }'
Другая проблема - это группы безопасности, которые зависят от других групп безопасности. Можно использовать эту команду для генерации Список смежности (прямые зависимости):
aws ec2 describe-security-groups --query "SecurityGroups[*].{ID:GroupId,Name:GroupName,dependentOnSGs:IpPermissions[].UserIdGroupPairs[].GroupId}
В идеале этот результат следует использовать для поиска Переходное закрытие (все зависимости, прямые и косвенные). К сожалению, мне не удалось найти утилиту Transitive closure util.
Вы можете использовать этот инструмент Python для составления списка групп безопасности с их зависимостями. Он также позволяет отображать неиспользуемые (устаревшие) группы безопасности:
Это могло быть недоступно, когда вопрос был первоначально задан, но если вы войдете в Консоль AWS для групп безопасности, выберите нужную группу (группы) и выберите действие Удалить, в появившемся запросе будет указано, есть ли на нее ссылка и по какому .
Отмеченный ответ неверен. Если вы видите нарушение зависимости, вероятно, в вашей конфигурации разрешений IP (Ingress) указана другая группа безопасности. Вам нужно будет отозвать все входящие разрешения, которые содержат группы безопасности в качестве источника.