def describe_security_groups(DryRun=None, GroupNames=None, GroupIds=None,
    Filters=None):
    """
    Describes one or more of your security groups.
    A security group is for use with instances either in the EC2-Classic platform or in a specific VPC. For more information, see Amazon EC2 Security Groups in the Amazon Elastic Compute Cloud User Guide and Security Groups for Your VPC in the Amazon Virtual Private Cloud User Guide .
    See also: AWS API Documentation
    
    
    :example: response = client.describe_security_groups(
        DryRun=True|False,
        GroupNames=[
            'string',
        ],
        GroupIds=[
            'string',
        ],
        Filters=[
            {
                'Name': 'string',
                'Values': [
                    'string',
                ]
            },
        ]
    )
    
    
    :type DryRun: boolean
    :param DryRun: Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation . Otherwise, it is UnauthorizedOperation .

    :type GroupNames: list
    :param GroupNames: [EC2-Classic and default VPC only] One or more security group names. You can specify either the security group name or the security group ID. For security groups in a nondefault VPC, use the group-name filter to describe security groups by name.
            Default: Describes all your security groups.
            (string) --
            

    :type GroupIds: list
    :param GroupIds: One or more security group IDs. Required for security groups in a nondefault VPC.
            Default: Describes all your security groups.
            (string) --
            

    :type Filters: list
    :param Filters: One or more filters. If using multiple filters for rules, the results include security groups for which any combination of rules - not necessarily a single rule - match all filters.
            description - The description of the security group.
            egress.ip-permission.prefix-list-id - The ID (prefix) of the AWS service to which the security group allows access.
            group-id - The ID of the security group.
            group-name - The name of the security group.
            ip-permission.cidr - An IPv4 CIDR range that has been granted permission in a security group rule.
            ip-permission.from-port - The start of port range for the TCP and UDP protocols, or an ICMP type number.
            ip-permission.group-id - The ID of a security group that has been granted permission.
            ip-permission.group-name - The name of a security group that has been granted permission.
            ip-permission.ipv6-cidr - An IPv6 CIDR range that has been granted permission in a security group rule.
            ip-permission.protocol - The IP protocol for the permission (tcp | udp | icmp or a protocol number).
            ip-permission.to-port - The end of port range for the TCP and UDP protocols, or an ICMP code.
            ip-permission.user-id - The ID of an AWS account that has been granted permission.
            owner-id - The AWS account ID of the owner of the security group.
            tag-key - The key of a tag assigned to the security group.
            tag-value - The value of a tag assigned to the security group.
            vpc-id - The ID of the VPC specified when the security group was created.
            (dict) --A filter name and value pair that is used to return a more specific list of results. Filters can be used to match a set of resources by various criteria, such as tags, attributes, or IDs.
            Name (string) --The name of the filter. Filter names are case-sensitive.
            Values (list) --One or more filter values. Filter values are case-sensitive.
            (string) --
            
            

    :rtype: dict
    :return: {
        'SecurityGroups': [
            {
                'OwnerId': 'string',
                'GroupName': 'string',
                'GroupId': 'string',
                'Description': 'string',
                'IpPermissions': [
                    {
                        'IpProtocol': 'string',
                        'FromPort': 123,
                        'ToPort': 123,
                        'UserIdGroupPairs': [
                            {
                                'UserId': 'string',
                                'GroupName': 'string',
                                'GroupId': 'string',
                                'VpcId': 'string',
                                'VpcPeeringConnectionId': 'string',
                                'PeeringStatus': 'string'
                            },
                        ],
                        'IpRanges': [
                            {
                                'CidrIp': 'string'
                            },
                        ],
                        'Ipv6Ranges': [
                            {
                                'CidrIpv6': 'string'
                            },
                        ],
                        'PrefixListIds': [
                            {
                                'PrefixListId': 'string'
                            },
                        ]
                    },
                ],
                'IpPermissionsEgress': [
                    {
                        'IpProtocol': 'string',
                        'FromPort': 123,
                        'ToPort': 123,
                        'UserIdGroupPairs': [
                            {
                                'UserId': 'string',
                                'GroupName': 'string',
                                'GroupId': 'string',
                                'VpcId': 'string',
                                'VpcPeeringConnectionId': 'string',
                                'PeeringStatus': 'string'
                            },
                        ],
                        'IpRanges': [
                            {
                                'CidrIp': 'string'
                            },
                        ],
                        'Ipv6Ranges': [
                            {
                                'CidrIpv6': 'string'
                            },
                        ],
                        'PrefixListIds': [
                            {
                                'PrefixListId': 'string'
                            },
                        ]
                    },
                ],
                'VpcId': 'string',
                'Tags': [
                    {
                        'Key': 'string',
                        'Value': 'string'
                    },
                ]
            },
        ]
    }
    
    
    """
    pass
