# pyawsopstoolkit_advsearch
The **pyawsopstoolkit_advsearch** module delivers an exhaustive array of advanced search functionalities, tailor-made
for seamless integration with AWS (Amazon Web Services). Meticulously engineered, these advanced searches are finely
tuned to meet the distinctive demands inherent to the expansive AWS ecosystem, encompassing a diverse spectrum of
aspects.
## Getting Started
Ready to supercharge your AWS operations? Let's get started with **pyawsopstoolkit_advsearch!**
### Installation
Install **pyawsopstoolkit_advsearch** via pip:
```bash
pip install pyawsopstoolkit_advsearch
```
## Documentation
- [Constants](#constants)
- [ec2](#ec2)
- [iam](#iam)
### Constants
This package supports various conditions for advanced searches, outlined below as global constants:
- `OR`: Represents the **or** condition.
- `AND`: Represents the **and** condition.
- `LESS_THAN`: Represents the less than **<** value.
- `LESS_THAN_OR_EQUAL_TO`: Represents the less than or equal to **<=** value.
- `GREATER_THAN`: Represents the greater than **>** value.
- `GREATER_THAN_OR_EQUAL_TO`: Represents the greater than or equal to **>=** value.
- `EQUAL_TO`: Represents the equal to **=** value.
- `NOT_EQUAL_TO`: Represents the not equal to **!=** value.
- `BETWEEN`: Represents the between range **< x <** value. These constants facilitate the formulation of complex
queries, enabling precise and efficient data retrieval within the AWS environment.
### ec2
This **pyawsopstoolkit_advsearch.ec2** subpackage offers sophisticated search capabilities specifically designed for
AWS (Amazon Web Services) Elastic Compute Cloud (EC2).
#### SecurityGroup
The **SecurityGroup** class provides advanced search features related to EC2 security groups.
##### Constructors
- `SecurityGroup(session: Session) -> None`: Initializes a new **SecurityGroup** object.
##### Methods
- `search_security_groups(condition: str = OR, region: str | list = 'eu-west-1', include_usage: bool = False, **kwargs) -> list`:
Returns a list of EC2 security groups using advanced search features supported by the specified arguments. For details
on supported keyword arguments, please refer to the section below.
##### Properties
- `session`: An `pyawsopstoolkit.session.Session` object providing access to AWS services.
##### `search_security_groups` Supported Keyword Arguments
The **search_security_groups** method allows you to search for EC2 security groups using various keyword arguments.
Below are the supported keyword arguments:
- `description`: Specifies the description of the EC2 security group. Example: `description='test'`.
- `id`: Specifies the unique identifier of the EC2 security group. Example: `id='sg-12345678'`.
- `in_use`: Specifies the flag to indicate if the EC2 security group has any associated ENIs. Example: `in_use=True`.
- `in_from_port`: Specifies the inbound EC2 security group rule entry "from" port. Example: `in_from_port=80`.
- `in_ip_protocol`: Specifies the inbound EC2 security group rule entry protocol. Example: `in_ip_protocol='tcp'`.
- `in_port_range`: Specifies the inbound EC2 security group rule entry port if it exists within range "from" and "to".
Example: `in_port_range=80`.
- `in_to_port`: Specifies the inbound EC2 security group rule entry "to" port. Example: `in_to_port=443`.
- `name`: Specifies the name of the EC2 security group. Example: `name='web-servers-sg'`.
- `out_from_port`: Specifies the outbound EC2 security group rule entry "from" port. Example: `out_from_port=80`.
- `out_ip_protocol`: Specifies the outbound EC2 security group rule entry protocol. Example: `out_ip_protocol='udp'`.
- `out_port_range`: Specifies the outbound EC2 security group rule entry port if it exists within range "from" and "to".
Example: `out_port_range=443`.
- `out_to_port`: Specifies the outbound EC2 security group rule entry "to" port. Example: `out_to_port=443`.
- `owner_id`: Specifies the owner ID of the EC2 security group. Example: `owner_id='123456789012'`.
- `tag_key`: Specifies the tag key associated with the EC2 security group. Example: `tag_key='test_key'`.
- `tag`: Specifies the tag key and value combination associated with the EC2 security group (dictionary format).
Example: `tag={'key': 'test_key', 'value': 'test_value'}`.
- `vpc_id`: Specifies the VPC ID of the EC2 security group. Example: `vpc_id='vpc-abcdefgh'`.
All the above arguments support string types and accept regular expression patterns. Additionally,
the `in_from_port`, `out_from_port`, `in_to_port`, `out_to_port`, `in_port_range`, and `out_port_range` arguments
support integer types.
###### Usage
```python
from pyawsopstoolkit.session import Session
from pyawsopstoolkit_advsearch.ec2 import SecurityGroup
from pyawsopstoolkit_advsearch import OR
# Create a session using the 'default' profile
session = Session(profile_name='default')
# Initialize the EC2 security group object with the session
sg_object = SecurityGroup(session=session)
# Example searches:
# 1. Search for all EC2 security groups
print(sg_object.search_security_groups())
# 2. Search for EC2 security groups with the name matching 'test_sg'
print(sg_object.search_security_groups(condition=OR, region='us-east-2', name=r'test_sg'))
# 3. Search for EC2 security groups with the name matching 'test_sg' or description matching 'test'
print(sg_object.search_security_groups(condition=OR, region='us-east-2', name=r'test_sg', description=r'test'))
# 4. Search for EC2 security groups that contain the tag key 'test_key'
print(sg_object.search_security_groups(tag_key='test_key'))
# 5. Search for EC2 security groups that contain a tag with key 'test_key' and value 'test_value'
print(sg_object.search_security_groups(tag={'key': 'test_key', 'value': 'test_value'}))
# 6. Search for EC2 security groups that contain port 80 as an inbound rule entry
print(sg_object.search_security_groups(in_from_port=80))
# 7. Search for EC2 security groups that contain 'all' traffic within inbound rule entry protocols
print(sg_object.search_security_groups(in_ip_protocol='all'))
# 8. Search for EC2 security groups that are in use and associated with ENIs
print(sg_object.search_security_groups(include_usage=True, in_use=True))
```
### iam
This **pyawsopstookit_advsearch.iam** subpackage offers sophisticated search capabilities specifically designed for
AWS (Amazon Web Services) Identity and Access Management (IAM).
#### Role
A class representing advanced search features related to IAM roles.
##### Constructors
- `Role(session: Session) -> None`: Initializes a new **Role** object.
##### Methods
- `search_roles(condition: str = OR, include_details: bool = False, **kwargs) -> list`: Returns a list of IAM roles
using advanced search features supported by the specified arguments. For details on supported kwargs, please refer to
the section below.
##### Properties
- `session`: An `pyawsopstoolkit.session.Session` object providing access to AWS services.
##### `search_roles` Supported Keyword Arguments
The **search_roles** function allows you to search for IAM roles using various keyword arguments. Below are the
supported keyword arguments:
- `arn`: Specifies the ARN of the IAM role. Example: `arn='arn:aws:iam::111122223333:role/role-name'`.
- `created_date`: Specifies the created date of the IAM role (datetime format).
Example: `created_date={GREATER_THAN: datetime(2024, 10, 15)}`.
- `description`: Specifies the description of the IAM role. Example: `description='test'`.
- `id`: Specifies the ID of the IAM role. Example: `id='AIDACKCEVSQ6C2EXAMPLE'`.
- `last_used_date`: Specifies the last used date of the IAM role (datetime format).
Example: `last_used_date={BETWEEN: [datetime(2023, 10, 15), datetime(2024, 10, 15)]}`.
- `last_used_region`: Specifies the region where the IAM role was last used. Example: `last_used_region='eu-west-1'`.
- `max_session_duration`: Specifies the maximum session duration of the IAM role (in seconds, integer type).
Example: `max_session_duration={LESS_THAN: 3600}`.
- `name`: Specifies the name of the IAM role. Example: `name='test_role'`.
- `path`: Specifies the path of the IAM role. Example: `path='/service-role/'`.
- `permissions_boundary_arn`: Specifies the ARN of the permissions boundary for the IAM role.
Example: `permissions_boundary_arn='arn:aws:iam::111122223333:policy/policy-name'`.
- `permissions_boundary_type`: Specifies the type of permissions boundary for the IAM role.
Example: `permissions_boundary_type='Policy'`.
- `tag_key`: Specifies the tag key associated with the IAM role. Example: `tag_key='test_key'`.
- `tag`: Specifies the tag key and value combination associated with the IAM role (dictionary format).
Example: `tag={'key': 'test_key', 'value': 'test_value'}`.
All the above arguments support string types and accept regular expression patterns. Additionally,
the `max_session_duration`, `created_date`, and `last_used_date` arguments support conditions such as less than, greater
than, and between. For more details, please refer to the constants above.
###### Usage
```python
from datetime import datetime
from pyawsopstoolkit.session import Session
from pyawsopstoolkit_advsearch.iam import Role
from pyawsopstoolkit_advsearch import OR, AND, LESS_THAN, BETWEEN
# Create a session using the 'default' profile
session = Session(profile_name='default')
# Initialize the IAM Role object with the session
role_object = Role(session=session)
# Example searches:
# 1. Search for all IAM roles
print(role_object.search_roles())
# 2. Search for IAM roles with the name matching 'test_role'
print(role_object.search_roles(condition=OR, name=r'test_role'))
# 3. Search for IAM roles with the name matching 'test_role' or description matching 'test'
print(role_object.search_roles(condition=OR, name=r'test_role', description=r'test'))
# 4. Search for IAM roles with both path matching '/service-role/' and name matching 'test'
print(role_object.search_roles(condition=AND, path='/service-role/', name='test'))
# 5. Search for IAM roles with a maximum session duration less than 4 hours (14400 seconds)
print(role_object.search_roles(max_session_duration={LESS_THAN: 14400}))
# 6. Search for IAM roles last used between October 15, 2023, and October 15, 2024
print(role_object.search_roles(last_used_date={BETWEEN: [datetime(2023, 10, 15), datetime(2024, 10, 15)]}))
# 7. Search for IAM roles that contain the tag key 'test_key'
print(role_object.search_roles(tag_key='test_key'))
# 8. Search for IAM roles that contain a tag with key 'test_key' and value 'test_value'
print(role_object.search_roles(tag={'key': 'test_key', 'value': 'test_value'}))
```
#### User
A class representing advance search features related with IAM users.
##### Constructors
- `User(session: Session) -> None`: Initializes a new **User** object.
##### Methods
- `search_users(condition: str = OR, include_details: bool = False, **kwargs) -> list`: Returns a list of IAM users
using advanced search features supported by the specified arguments. For details on supported kwargs, please refer to
the section below.
##### Properties
- `session`: An `pyawsopstoolkit.session.Session` object providing access to AWS services.
##### `search_users` Supported Keyword Arguments
The `search_users` function allows you to search for IAM users using various keyword arguments. Below are the supported
keyword arguments:
- `access_key_id`: Specifies the ID of the IAM user access key. Example: `access_key_id='ABCD'`.
- `access_key_region`: Specifies the last used region of the IAM user access key.
Example: `access_key_region='eu-west-1'`.
- `access_key_service`: Specifies the last used service of the IAM user access key.
Example: `access_key_service='ec2.amazonaws.com'`.
- `access_key_status`: Specifies the status of the IAM user access key. Example: `access_key_status='Active'`.
- `arn`: Specifies the ARN of the IAM user. Example: `arn='arn:aws:iam::111122223333:user/test_user'`.
- `created_date`: Specifies the created date of the IAM user (datetime format).
Example: `created_date={GREATER_THAN: datetime(2024, 10, 15)}`.
- `id`: Specifies the ID of the IAM user. Example: `id='AIDACKCEVSQ6C2EXAMPLE'`.
- `login_profile_created_date`: Specifies the login profile created date of the IAM user (datetime format).
Example: `login_profile_created_date={GREATER_THAN: datetime(2024, 10, 15)}`.
- `login_profile_password_reset_required`: Specifies the flag of the login profile to check if a password reset is
required for the IAM user (boolean format). Example: `login_profile_password_reset_required=False`.
- `name`: Specifies the name of the IAM user. Example: `name='test_user'`.
- `password_last_used_date`: Specifies the password last used date of the IAM user (datetime format).
Example: `password_last_used_date={BETWEEN: [datetime(2023, 10, 15), datetime(2024, 10, 15)]}`.
- `path`: Specifies the path of the IAM user. Example: `path='/'`.
- `permissions_boundary_arn`: Specifies the ARN of the permissions boundary for the IAM user.
Example: `permissions_boundary_arn='arn:aws:iam::111122223333:policy/policy-name'`.
- `permissions_boundary_type`: Specifies the type of permissions boundary for the IAM user.
Example: `permissions_boundary_type='Policy'`.
- `tag_key`: Specifies the tag key associated with the IAM user. Example: `tag_key='test_key'`.
- `tag`: Specifies the tag key and value combination associated with the IAM user (dictionary format).
Example: `tag={'Key': 'test_key', 'Value': 'test_value'}`.
All the above arguments support string types and accept regular expression patterns. Additionally, the `created_date`
and `password_last_used_date` arguments support conditions such as less than, greater than, and between. For more
details, please refer to the constants above.
###### Usage
```python
from datetime import datetime
from pyawsopstoolkit.session import Session
from pyawsopstoolkit_advsearch.iam import User
from pyawsopstoolkit_advsearch import OR, AND, BETWEEN
# Create a session using the 'default' profile
session = Session(profile_name='default')
# Initialize the IAM User object with the session
user_object = User(session=session)
# Example searches:
# 1. Search for all IAM users
print(user_object.search_users())
# 2. Search for IAM users with the name matching 'test_user'
print(user_object.search_users(condition=OR, name=r'test_user'))
# 3. Search for IAM users with both path matching '/' and name matching 'test'
print(user_object.search_users(condition=AND, path='/', name='test'))
# 4. Search for IAM users password last used between October 15, 2023, and October 15, 2024
print(user_object.search_users(password_last_used_date={BETWEEN: [datetime(2023, 10, 15), datetime(2024, 10, 15)]}))
# 5. Search for IAM roles that contain the tag key 'test_key'
print(user_object.search_users(tag_key='test_key'))
# 6. Search for IAM roles that contain a tag with key 'test_key' and value 'test_value'
print(user_object.search_users(tag={'key': 'test_key', 'value': 'test_value'}))
```
# License
Please refer to the [MIT License](LICENSE) within the project for more information.
# Contributing
We welcome contributions from the community! Whether you have ideas for new features, bug fixes, or enhancements, feel
free to open an issue or submit a pull request on [GitHub](https://github.com/coldsofttech/pyawsopstoolkit-advsearch).
Raw data
{
"_id": null,
"home_page": "https://github.com/coldsofttech/pyawsopstoolkit-advsearch.git",
"name": "pyawsopstoolkit-advsearch",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": "aws, toolkit, operations, tools, development, python, search, utilities, amazon-web-services, advance-search, search-functionality",
"author": "coldsofttech",
"author_email": null,
"download_url": null,
"platform": null,
"description": "# pyawsopstoolkit_advsearch\n\nThe **pyawsopstoolkit_advsearch** module delivers an exhaustive array of advanced search functionalities, tailor-made\nfor seamless integration with AWS (Amazon Web Services). Meticulously engineered, these advanced searches are finely\ntuned to meet the distinctive demands inherent to the expansive AWS ecosystem, encompassing a diverse spectrum of\naspects.\n\n## Getting Started\n\nReady to supercharge your AWS operations? Let's get started with **pyawsopstoolkit_advsearch!**\n\n### Installation\n\nInstall **pyawsopstoolkit_advsearch** via pip:\n\n```bash\npip install pyawsopstoolkit_advsearch\n```\n\n## Documentation\n\n- [Constants](#constants)\n- [ec2](#ec2)\n- [iam](#iam)\n\n### Constants\n\nThis package supports various conditions for advanced searches, outlined below as global constants:\n\n- `OR`: Represents the **or** condition.\n- `AND`: Represents the **and** condition.\n- `LESS_THAN`: Represents the less than **<** value.\n- `LESS_THAN_OR_EQUAL_TO`: Represents the less than or equal to **<=** value.\n- `GREATER_THAN`: Represents the greater than **>** value.\n- `GREATER_THAN_OR_EQUAL_TO`: Represents the greater than or equal to **>=** value.\n- `EQUAL_TO`: Represents the equal to **=** value.\n- `NOT_EQUAL_TO`: Represents the not equal to **!=** value.\n- `BETWEEN`: Represents the between range **< x <** value. These constants facilitate the formulation of complex\n queries, enabling precise and efficient data retrieval within the AWS environment.\n\n### ec2\n\nThis **pyawsopstoolkit_advsearch.ec2** subpackage offers sophisticated search capabilities specifically designed for\nAWS (Amazon Web Services) Elastic Compute Cloud (EC2).\n\n#### SecurityGroup\n\nThe **SecurityGroup** class provides advanced search features related to EC2 security groups.\n\n##### Constructors\n\n- `SecurityGroup(session: Session) -> None`: Initializes a new **SecurityGroup** object.\n\n##### Methods\n\n- `search_security_groups(condition: str = OR, region: str | list = 'eu-west-1', include_usage: bool = False, **kwargs) -> list`:\n Returns a list of EC2 security groups using advanced search features supported by the specified arguments. For details\n on supported keyword arguments, please refer to the section below.\n\n##### Properties\n\n- `session`: An `pyawsopstoolkit.session.Session` object providing access to AWS services.\n\n##### `search_security_groups` Supported Keyword Arguments\n\nThe **search_security_groups** method allows you to search for EC2 security groups using various keyword arguments.\nBelow are the supported keyword arguments:\n\n- `description`: Specifies the description of the EC2 security group. Example: `description='test'`.\n- `id`: Specifies the unique identifier of the EC2 security group. Example: `id='sg-12345678'`.\n- `in_use`: Specifies the flag to indicate if the EC2 security group has any associated ENIs. Example: `in_use=True`.\n- `in_from_port`: Specifies the inbound EC2 security group rule entry \"from\" port. Example: `in_from_port=80`.\n- `in_ip_protocol`: Specifies the inbound EC2 security group rule entry protocol. Example: `in_ip_protocol='tcp'`.\n- `in_port_range`: Specifies the inbound EC2 security group rule entry port if it exists within range \"from\" and \"to\".\n Example: `in_port_range=80`.\n- `in_to_port`: Specifies the inbound EC2 security group rule entry \"to\" port. Example: `in_to_port=443`.\n- `name`: Specifies the name of the EC2 security group. Example: `name='web-servers-sg'`.\n- `out_from_port`: Specifies the outbound EC2 security group rule entry \"from\" port. Example: `out_from_port=80`.\n- `out_ip_protocol`: Specifies the outbound EC2 security group rule entry protocol. Example: `out_ip_protocol='udp'`.\n- `out_port_range`: Specifies the outbound EC2 security group rule entry port if it exists within range \"from\" and \"to\".\n Example: `out_port_range=443`.\n- `out_to_port`: Specifies the outbound EC2 security group rule entry \"to\" port. Example: `out_to_port=443`.\n- `owner_id`: Specifies the owner ID of the EC2 security group. Example: `owner_id='123456789012'`.\n- `tag_key`: Specifies the tag key associated with the EC2 security group. Example: `tag_key='test_key'`.\n- `tag`: Specifies the tag key and value combination associated with the EC2 security group (dictionary format).\n Example: `tag={'key': 'test_key', 'value': 'test_value'}`.\n- `vpc_id`: Specifies the VPC ID of the EC2 security group. Example: `vpc_id='vpc-abcdefgh'`.\n\nAll the above arguments support string types and accept regular expression patterns. Additionally,\nthe `in_from_port`, `out_from_port`, `in_to_port`, `out_to_port`, `in_port_range`, and `out_port_range` arguments\nsupport integer types.\n\n###### Usage\n\n```python\nfrom pyawsopstoolkit.session import Session\nfrom pyawsopstoolkit_advsearch.ec2 import SecurityGroup\nfrom pyawsopstoolkit_advsearch import OR\n\n# Create a session using the 'default' profile\nsession = Session(profile_name='default')\n\n# Initialize the EC2 security group object with the session\nsg_object = SecurityGroup(session=session)\n\n# Example searches:\n\n# 1. Search for all EC2 security groups\nprint(sg_object.search_security_groups())\n\n# 2. Search for EC2 security groups with the name matching 'test_sg'\nprint(sg_object.search_security_groups(condition=OR, region='us-east-2', name=r'test_sg'))\n\n# 3. Search for EC2 security groups with the name matching 'test_sg' or description matching 'test'\nprint(sg_object.search_security_groups(condition=OR, region='us-east-2', name=r'test_sg', description=r'test'))\n\n# 4. Search for EC2 security groups that contain the tag key 'test_key'\nprint(sg_object.search_security_groups(tag_key='test_key'))\n\n# 5. Search for EC2 security groups that contain a tag with key 'test_key' and value 'test_value'\nprint(sg_object.search_security_groups(tag={'key': 'test_key', 'value': 'test_value'}))\n\n# 6. Search for EC2 security groups that contain port 80 as an inbound rule entry\nprint(sg_object.search_security_groups(in_from_port=80))\n\n# 7. Search for EC2 security groups that contain 'all' traffic within inbound rule entry protocols\nprint(sg_object.search_security_groups(in_ip_protocol='all'))\n\n# 8. Search for EC2 security groups that are in use and associated with ENIs\nprint(sg_object.search_security_groups(include_usage=True, in_use=True))\n```\n\n### iam\n\nThis **pyawsopstookit_advsearch.iam** subpackage offers sophisticated search capabilities specifically designed for\nAWS (Amazon Web Services) Identity and Access Management (IAM).\n\n#### Role\n\nA class representing advanced search features related to IAM roles.\n\n##### Constructors\n\n- `Role(session: Session) -> None`: Initializes a new **Role** object.\n\n##### Methods\n\n- `search_roles(condition: str = OR, include_details: bool = False, **kwargs) -> list`: Returns a list of IAM roles\n using advanced search features supported by the specified arguments. For details on supported kwargs, please refer to\n the section below.\n\n##### Properties\n\n- `session`: An `pyawsopstoolkit.session.Session` object providing access to AWS services.\n\n##### `search_roles` Supported Keyword Arguments\n\nThe **search_roles** function allows you to search for IAM roles using various keyword arguments. Below are the\nsupported keyword arguments:\n\n- `arn`: Specifies the ARN of the IAM role. Example: `arn='arn:aws:iam::111122223333:role/role-name'`.\n- `created_date`: Specifies the created date of the IAM role (datetime format).\n Example: `created_date={GREATER_THAN: datetime(2024, 10, 15)}`.\n- `description`: Specifies the description of the IAM role. Example: `description='test'`.\n- `id`: Specifies the ID of the IAM role. Example: `id='AIDACKCEVSQ6C2EXAMPLE'`.\n- `last_used_date`: Specifies the last used date of the IAM role (datetime format).\n Example: `last_used_date={BETWEEN: [datetime(2023, 10, 15), datetime(2024, 10, 15)]}`.\n- `last_used_region`: Specifies the region where the IAM role was last used. Example: `last_used_region='eu-west-1'`.\n- `max_session_duration`: Specifies the maximum session duration of the IAM role (in seconds, integer type).\n Example: `max_session_duration={LESS_THAN: 3600}`.\n- `name`: Specifies the name of the IAM role. Example: `name='test_role'`.\n- `path`: Specifies the path of the IAM role. Example: `path='/service-role/'`.\n- `permissions_boundary_arn`: Specifies the ARN of the permissions boundary for the IAM role.\n Example: `permissions_boundary_arn='arn:aws:iam::111122223333:policy/policy-name'`.\n- `permissions_boundary_type`: Specifies the type of permissions boundary for the IAM role.\n Example: `permissions_boundary_type='Policy'`.\n- `tag_key`: Specifies the tag key associated with the IAM role. Example: `tag_key='test_key'`.\n- `tag`: Specifies the tag key and value combination associated with the IAM role (dictionary format).\n Example: `tag={'key': 'test_key', 'value': 'test_value'}`.\n\nAll the above arguments support string types and accept regular expression patterns. Additionally,\nthe `max_session_duration`, `created_date`, and `last_used_date` arguments support conditions such as less than, greater\nthan, and between. For more details, please refer to the constants above.\n\n###### Usage\n\n```python\nfrom datetime import datetime\n\nfrom pyawsopstoolkit.session import Session\nfrom pyawsopstoolkit_advsearch.iam import Role\nfrom pyawsopstoolkit_advsearch import OR, AND, LESS_THAN, BETWEEN\n\n# Create a session using the 'default' profile\nsession = Session(profile_name='default')\n\n# Initialize the IAM Role object with the session\nrole_object = Role(session=session)\n\n# Example searches:\n# 1. Search for all IAM roles\nprint(role_object.search_roles())\n\n# 2. Search for IAM roles with the name matching 'test_role'\nprint(role_object.search_roles(condition=OR, name=r'test_role'))\n\n# 3. Search for IAM roles with the name matching 'test_role' or description matching 'test'\nprint(role_object.search_roles(condition=OR, name=r'test_role', description=r'test'))\n\n# 4. Search for IAM roles with both path matching '/service-role/' and name matching 'test'\nprint(role_object.search_roles(condition=AND, path='/service-role/', name='test'))\n\n# 5. Search for IAM roles with a maximum session duration less than 4 hours (14400 seconds)\nprint(role_object.search_roles(max_session_duration={LESS_THAN: 14400}))\n\n# 6. Search for IAM roles last used between October 15, 2023, and October 15, 2024\nprint(role_object.search_roles(last_used_date={BETWEEN: [datetime(2023, 10, 15), datetime(2024, 10, 15)]}))\n\n# 7. Search for IAM roles that contain the tag key 'test_key'\nprint(role_object.search_roles(tag_key='test_key'))\n\n# 8. Search for IAM roles that contain a tag with key 'test_key' and value 'test_value'\nprint(role_object.search_roles(tag={'key': 'test_key', 'value': 'test_value'}))\n```\n\n#### User\n\nA class representing advance search features related with IAM users.\n\n##### Constructors\n\n- `User(session: Session) -> None`: Initializes a new **User** object.\n\n##### Methods\n\n- `search_users(condition: str = OR, include_details: bool = False, **kwargs) -> list`: Returns a list of IAM users\n using advanced search features supported by the specified arguments. For details on supported kwargs, please refer to\n the section below.\n\n##### Properties\n\n- `session`: An `pyawsopstoolkit.session.Session` object providing access to AWS services.\n\n##### `search_users` Supported Keyword Arguments\n\nThe `search_users` function allows you to search for IAM users using various keyword arguments. Below are the supported\nkeyword arguments:\n\n- `access_key_id`: Specifies the ID of the IAM user access key. Example: `access_key_id='ABCD'`.\n- `access_key_region`: Specifies the last used region of the IAM user access key.\n Example: `access_key_region='eu-west-1'`.\n- `access_key_service`: Specifies the last used service of the IAM user access key.\n Example: `access_key_service='ec2.amazonaws.com'`.\n- `access_key_status`: Specifies the status of the IAM user access key. Example: `access_key_status='Active'`.\n- `arn`: Specifies the ARN of the IAM user. Example: `arn='arn:aws:iam::111122223333:user/test_user'`.\n- `created_date`: Specifies the created date of the IAM user (datetime format).\n Example: `created_date={GREATER_THAN: datetime(2024, 10, 15)}`.\n- `id`: Specifies the ID of the IAM user. Example: `id='AIDACKCEVSQ6C2EXAMPLE'`.\n- `login_profile_created_date`: Specifies the login profile created date of the IAM user (datetime format).\n Example: `login_profile_created_date={GREATER_THAN: datetime(2024, 10, 15)}`.\n- `login_profile_password_reset_required`: Specifies the flag of the login profile to check if a password reset is\n required for the IAM user (boolean format). Example: `login_profile_password_reset_required=False`.\n- `name`: Specifies the name of the IAM user. Example: `name='test_user'`.\n- `password_last_used_date`: Specifies the password last used date of the IAM user (datetime format).\n Example: `password_last_used_date={BETWEEN: [datetime(2023, 10, 15), datetime(2024, 10, 15)]}`.\n- `path`: Specifies the path of the IAM user. Example: `path='/'`.\n- `permissions_boundary_arn`: Specifies the ARN of the permissions boundary for the IAM user.\n Example: `permissions_boundary_arn='arn:aws:iam::111122223333:policy/policy-name'`.\n- `permissions_boundary_type`: Specifies the type of permissions boundary for the IAM user.\n Example: `permissions_boundary_type='Policy'`.\n- `tag_key`: Specifies the tag key associated with the IAM user. Example: `tag_key='test_key'`.\n- `tag`: Specifies the tag key and value combination associated with the IAM user (dictionary format).\n Example: `tag={'Key': 'test_key', 'Value': 'test_value'}`.\n\nAll the above arguments support string types and accept regular expression patterns. Additionally, the `created_date`\nand `password_last_used_date` arguments support conditions such as less than, greater than, and between. For more\ndetails, please refer to the constants above.\n\n###### Usage\n\n```python\nfrom datetime import datetime\n\nfrom pyawsopstoolkit.session import Session\nfrom pyawsopstoolkit_advsearch.iam import User\nfrom pyawsopstoolkit_advsearch import OR, AND, BETWEEN\n\n# Create a session using the 'default' profile\nsession = Session(profile_name='default')\n\n# Initialize the IAM User object with the session\nuser_object = User(session=session)\n\n# Example searches:\n# 1. Search for all IAM users\nprint(user_object.search_users())\n\n# 2. Search for IAM users with the name matching 'test_user'\nprint(user_object.search_users(condition=OR, name=r'test_user'))\n\n# 3. Search for IAM users with both path matching '/' and name matching 'test'\nprint(user_object.search_users(condition=AND, path='/', name='test'))\n\n# 4. Search for IAM users password last used between October 15, 2023, and October 15, 2024\nprint(user_object.search_users(password_last_used_date={BETWEEN: [datetime(2023, 10, 15), datetime(2024, 10, 15)]}))\n\n# 5. Search for IAM roles that contain the tag key 'test_key'\nprint(user_object.search_users(tag_key='test_key'))\n\n# 6. Search for IAM roles that contain a tag with key 'test_key' and value 'test_value'\nprint(user_object.search_users(tag={'key': 'test_key', 'value': 'test_value'}))\n```\n\n# License\n\nPlease refer to the [MIT License](LICENSE) within the project for more information.\n\n# Contributing\n\nWe welcome contributions from the community! Whether you have ideas for new features, bug fixes, or enhancements, feel\nfree to open an issue or submit a pull request on [GitHub](https://github.com/coldsofttech/pyawsopstoolkit-advsearch).\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "This package delivers an exhaustive array of advanced search functionalities tailor-made for seamless integration with",
"version": "0.1.1",
"project_urls": {
"Homepage": "https://github.com/coldsofttech/pyawsopstoolkit-advsearch.git"
},
"split_keywords": [
"aws",
" toolkit",
" operations",
" tools",
" development",
" python",
" search",
" utilities",
" amazon-web-services",
" advance-search",
" search-functionality"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "ac8c89ca8b82ec89f9892b284e8c64b5e6b91f55ff0a92851d548e5398efe0ee",
"md5": "a9ee8d8f3e7510148ece1d30c8a8b6f8",
"sha256": "e57892a132e954dc79f3c42f9d210dca436011f5ee74cf3c2ed5c41dddcfef85"
},
"downloads": -1,
"filename": "pyawsopstoolkit_advsearch-0.1.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "a9ee8d8f3e7510148ece1d30c8a8b6f8",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 17331,
"upload_time": "2024-08-11T18:24:50",
"upload_time_iso_8601": "2024-08-11T18:24:50.730526Z",
"url": "https://files.pythonhosted.org/packages/ac/8c/89ca8b82ec89f9892b284e8c64b5e6b91f55ff0a92851d548e5398efe0ee/pyawsopstoolkit_advsearch-0.1.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-08-11 18:24:50",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "coldsofttech",
"github_project": "pyawsopstoolkit-advsearch",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "pyawsopstoolkit",
"specs": [
[
"==",
"0.1.19"
]
]
},
{
"name": "pyawsopstoolkit_models",
"specs": [
[
"==",
"0.1.1"
]
]
},
{
"name": "botocore",
"specs": [
[
"==",
"1.34.158"
]
]
}
],
"lcname": "pyawsopstoolkit-advsearch"
}