inventag-aws 5.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of inventag-aws might be problematic. Click here for more details.
- inventag_aws-5.0.0/LICENSE +21 -0
- inventag_aws-5.0.0/PKG-INFO +175 -0
- inventag_aws-5.0.0/README.md +134 -0
- inventag_aws-5.0.0/inventag/__init__.py +77 -0
- inventag_aws-5.0.0/inventag/_python_version.py +31 -0
- inventag_aws-5.0.0/inventag/_version.py +6 -0
- inventag_aws-5.0.0/inventag/cli/__init__.py +12 -0
- inventag_aws-5.0.0/inventag/cli/config_validator.py +481 -0
- inventag_aws-5.0.0/inventag/cli/logging_setup.py +169 -0
- inventag_aws-5.0.0/inventag/cli/main.py +1266 -0
- inventag_aws-5.0.0/inventag/cli/safety.py +131 -0
- inventag_aws-5.0.0/inventag/compliance/__init__.py +52 -0
- inventag_aws-5.0.0/inventag/compliance/checker.py +704 -0
- inventag_aws-5.0.0/inventag/compliance/compliance_manager.py +526 -0
- inventag_aws-5.0.0/inventag/compliance/production_monitor.py +979 -0
- inventag_aws-5.0.0/inventag/compliance/security_validator.py +801 -0
- inventag_aws-5.0.0/inventag/core/__init__.py +50 -0
- inventag_aws-5.0.0/inventag/core/cicd_integration.py +1107 -0
- inventag_aws-5.0.0/inventag/core/cloud_bom_generator.py +1290 -0
- inventag_aws-5.0.0/inventag/core/credential_manager.py +922 -0
- inventag_aws-5.0.0/inventag/core/s3_upload.py +166 -0
- inventag_aws-5.0.0/inventag/discovery/__init__.py +109 -0
- inventag_aws-5.0.0/inventag/discovery/comprehensive_discovery.py +1448 -0
- inventag_aws-5.0.0/inventag/discovery/cost_analyzer.py +1326 -0
- inventag_aws-5.0.0/inventag/discovery/enhanced_readonly_discovery.py +606 -0
- inventag_aws-5.0.0/inventag/discovery/intelligent_discovery.py +1001 -0
- inventag_aws-5.0.0/inventag/discovery/intelligent_discovery_backup.py +973 -0
- inventag_aws-5.0.0/inventag/discovery/inventory.py +3290 -0
- inventag_aws-5.0.0/inventag/discovery/network_analyzer.py +598 -0
- inventag_aws-5.0.0/inventag/discovery/optimized_discovery.py +1654 -0
- inventag_aws-5.0.0/inventag/discovery/optimized_dynamic_discovery.py +657 -0
- inventag_aws-5.0.0/inventag/discovery/security_analyzer.py +782 -0
- inventag_aws-5.0.0/inventag/discovery/service_descriptions.py +728 -0
- inventag_aws-5.0.0/inventag/discovery/service_enrichment.py +719 -0
- inventag_aws-5.0.0/inventag/discovery/service_filter.py +116 -0
- inventag_aws-5.0.0/inventag/discovery/service_handlers.py +798 -0
- inventag_aws-5.0.0/inventag/discovery/tag_mapping.py +650 -0
- inventag_aws-5.0.0/inventag/reporting/__init__.py +56 -0
- inventag_aws-5.0.0/inventag/reporting/bom_processor.py +1075 -0
- inventag_aws-5.0.0/inventag/reporting/branding_system.py +719 -0
- inventag_aws-5.0.0/inventag/reporting/configuration_manager.py +898 -0
- inventag_aws-5.0.0/inventag/reporting/converter.py +1652 -0
- inventag_aws-5.0.0/inventag/reporting/csv_builder.py +92 -0
- inventag_aws-5.0.0/inventag/reporting/document_generator.py +635 -0
- inventag_aws-5.0.0/inventag/reporting/excel_branding_applicator.py +582 -0
- inventag_aws-5.0.0/inventag/reporting/excel_builder.py +978 -0
- inventag_aws-5.0.0/inventag/reporting/report_template.py +1620 -0
- inventag_aws-5.0.0/inventag/reporting/template_framework.py +816 -0
- inventag_aws-5.0.0/inventag/reporting/word_branding_applicator.py +569 -0
- inventag_aws-5.0.0/inventag/reporting/word_builder.py +1017 -0
- inventag_aws-5.0.0/inventag/security/__init__.py +30 -0
- inventag_aws-5.0.0/inventag/security/arn.py +114 -0
- inventag_aws-5.0.0/inventag/security/iam_policy.py +216 -0
- inventag_aws-5.0.0/inventag/security/read_only_guard.py +287 -0
- inventag_aws-5.0.0/inventag/security/redaction.py +233 -0
- inventag_aws-5.0.0/inventag/security/safe_output.py +190 -0
- inventag_aws-5.0.0/inventag/state/__init__.py +16 -0
- inventag_aws-5.0.0/inventag/state/changelog_generator.py +1362 -0
- inventag_aws-5.0.0/inventag/state/delta_detector.py +1411 -0
- inventag_aws-5.0.0/inventag/state/state_manager.py +514 -0
- inventag_aws-5.0.0/inventag/templating/__init__.py +37 -0
- inventag_aws-5.0.0/inventag/templating/builtin/ci-pipeline.yaml +18 -0
- inventag_aws-5.0.0/inventag/templating/builtin/executive-summary.yaml +20 -0
- inventag_aws-5.0.0/inventag/templating/builtin/finops-cost-allocation.yaml +25 -0
- inventag_aws-5.0.0/inventag/templating/builtin/finops-cost-report.yaml +17 -0
- inventag_aws-5.0.0/inventag/templating/builtin/org-multi-account.yaml +33 -0
- inventag_aws-5.0.0/inventag/templating/builtin/security-baseline.yaml +20 -0
- inventag_aws-5.0.0/inventag/templating/builtin/single-account.yaml +15 -0
- inventag_aws-5.0.0/inventag/templating/builtin/standard-bom.yaml +42 -0
- inventag_aws-5.0.0/inventag/templating/cli.py +301 -0
- inventag_aws-5.0.0/inventag/templating/columns.py +166 -0
- inventag_aws-5.0.0/inventag/templating/errors.py +43 -0
- inventag_aws-5.0.0/inventag/templating/loader.py +255 -0
- inventag_aws-5.0.0/inventag/templating/reference.py +104 -0
- inventag_aws-5.0.0/inventag/templating/registry.py +410 -0
- inventag_aws-5.0.0/inventag/templating/render_excel.py +232 -0
- inventag_aws-5.0.0/inventag/templating/render_word.py +249 -0
- inventag_aws-5.0.0/inventag/templating/runner.py +368 -0
- inventag_aws-5.0.0/inventag/templating/schema.py +816 -0
- inventag_aws-5.0.0/inventag/templating/tag_policy.py +172 -0
- inventag_aws-5.0.0/inventag/timeutil.py +59 -0
- inventag_aws-5.0.0/inventag_aws.egg-info/PKG-INFO +175 -0
- inventag_aws-5.0.0/inventag_aws.egg-info/SOURCES.txt +91 -0
- inventag_aws-5.0.0/inventag_aws.egg-info/dependency_links.txt +1 -0
- inventag_aws-5.0.0/inventag_aws.egg-info/entry_points.txt +2 -0
- inventag_aws-5.0.0/inventag_aws.egg-info/requires.txt +14 -0
- inventag_aws-5.0.0/inventag_aws.egg-info/top_level.txt +1 -0
- inventag_aws-5.0.0/pyproject.toml +49 -0
- inventag_aws-5.0.0/requirements.txt +24 -0
- inventag_aws-5.0.0/setup.cfg +4 -0
- inventag_aws-5.0.0/tests/test_aws_resource_inventory.py +171 -0
- inventag_aws-5.0.0/tests/test_bom_converter.py +137 -0
- inventag_aws-5.0.0/tests/test_python_compatibility.py +181 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 InvenTag Contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: inventag-aws
|
|
3
|
+
Version: 5.0.0
|
|
4
|
+
Summary: AWS resource inventory, tag compliance checks, and Excel/Word BOM reports. Read-only.
|
|
5
|
+
Author: InvenTag Contributors
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://habhabhabs.github.io/inventag-aws/
|
|
8
|
+
Project-URL: Documentation, https://habhabhabs.github.io/inventag-aws/docs/
|
|
9
|
+
Project-URL: Source, https://github.com/habhabhabs/inventag-aws
|
|
10
|
+
Project-URL: Issues, https://github.com/habhabhabs/inventag-aws/issues
|
|
11
|
+
Project-URL: Changelog, https://github.com/habhabhabs/inventag-aws/blob/main/CHANGELOG.md
|
|
12
|
+
Keywords: aws,inventory,bom,tagging,compliance
|
|
13
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
14
|
+
Classifier: Environment :: Console
|
|
15
|
+
Classifier: Intended Audience :: System Administrators
|
|
16
|
+
Classifier: Operating System :: OS Independent
|
|
17
|
+
Classifier: Programming Language :: Python :: 3
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
22
|
+
Classifier: Topic :: System :: Systems Administration
|
|
23
|
+
Requires-Python: >=3.11
|
|
24
|
+
Description-Content-Type: text/markdown
|
|
25
|
+
License-File: LICENSE
|
|
26
|
+
Requires-Dist: boto3>=1.35.0
|
|
27
|
+
Requires-Dist: PyYAML>=6.0
|
|
28
|
+
Requires-Dist: openpyxl>=3.0.0
|
|
29
|
+
Requires-Dist: python-docx>=0.8.11
|
|
30
|
+
Requires-Dist: colorama>=0.4.4
|
|
31
|
+
Requires-Dist: semver>=3.0.0
|
|
32
|
+
Requires-Dist: psutil>=5.9.0
|
|
33
|
+
Requires-Dist: keyring>=24.0.0
|
|
34
|
+
Requires-Dist: cryptography>=50.0.0
|
|
35
|
+
Requires-Dist: requests>=2.33.0
|
|
36
|
+
Requires-Dist: urllib3>=2.8.0
|
|
37
|
+
Requires-Dist: certifi>=2026.10.18
|
|
38
|
+
Requires-Dist: idna>=3.15
|
|
39
|
+
Requires-Dist: lxml>=6.1.0
|
|
40
|
+
Dynamic: license-file
|
|
41
|
+
|
|
42
|
+
<p align="center">
|
|
43
|
+
<img src="website/static/img/logo-wordmark.svg#gh-light-mode-only" alt="InvenTag" width="366" height="96">
|
|
44
|
+
<img src="website/static/img/logo-wordmark-dark.svg#gh-dark-mode-only" alt="InvenTag" width="366" height="96">
|
|
45
|
+
</p>
|
|
46
|
+
|
|
47
|
+
<p align="center">
|
|
48
|
+
<strong>Find out what is running in your AWS accounts, check it is tagged properly, and hand over an Excel or Word bill of materials.</strong>
|
|
49
|
+
</p>
|
|
50
|
+
|
|
51
|
+
[](https://github.com/habhabhabs/inventag-aws/actions)
|
|
52
|
+
[](https://habhabhabs.github.io/inventag-aws/)
|
|
53
|
+
[](https://www.python.org/downloads/)
|
|
54
|
+
[](LICENSE)
|
|
55
|
+
|
|
56
|
+
**Docs:** <https://habhabhabs.github.io/inventag-aws/>
|
|
57
|
+
|
|
58
|
+
## Quick start
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
git clone https://github.com/habhabhabs/inventag-aws.git
|
|
62
|
+
cd inventag-aws
|
|
63
|
+
python3 -m venv .venv && source .venv/bin/activate
|
|
64
|
+
pip install -r requirements.txt
|
|
65
|
+
|
|
66
|
+
./inventag.sh --validate-credentials # uses your current AWS credentials
|
|
67
|
+
./inventag.sh --create-excel --verbose # -> bom_output/multi_account_bom_<timestamp>.xlsx
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Use a read-only IAM identity. By default, discovery makes two Cost Explorer
|
|
71
|
+
requests for each account, and AWS bills each request. Add
|
|
72
|
+
`--no-billing-validation` to make no Cost Explorer request. Details:
|
|
73
|
+
[Installation](https://habhabhabs.github.io/inventag-aws/docs/getting-started/installation).
|
|
74
|
+
|
|
75
|
+
## What it does
|
|
76
|
+
|
|
77
|
+
- **Discovery** across accounts and regions through the Resource Groups Tagging
|
|
78
|
+
API, per-service `List*`/`Describe*`/`Get*` calls and Cost Explorer billing data.
|
|
79
|
+
- **Bill of materials** as an Excel workbook (`--create-excel`) and/or Word
|
|
80
|
+
document (`--create-word`), with your own tag columns (`--tag-mappings`) and
|
|
81
|
+
service descriptions (`--service-descriptions`).
|
|
82
|
+
- **Report templates** (`--word-template`, `--excel-template`): a YAML or JSON
|
|
83
|
+
file selects the title, the sections or sheets, the columns, and the header
|
|
84
|
+
and footer text.
|
|
85
|
+
- **Several accounts** from a file (`--accounts-file`), interactively
|
|
86
|
+
(`--accounts-prompt`) or through an assumed role (`--cross-account-role`),
|
|
87
|
+
processed in parallel.
|
|
88
|
+
- **Change tracking**: each run saves a snapshot in `bom_output/state/`; the
|
|
89
|
+
next run reports what was added, removed or changed.
|
|
90
|
+
- **Upload to Amazon S3** (`--s3-bucket`) with server-side encryption.
|
|
91
|
+
- **Read-only guard**: the CLI blocks each AWS API call that is not a read
|
|
92
|
+
operation. `--audit-output audit.json` writes a list of the calls.
|
|
93
|
+
- **Tag-policy checks** (required tags, allowed values) with
|
|
94
|
+
`scripts/legacy/tag_compliance_checker.py --config policy.yaml`.
|
|
95
|
+
|
|
96
|
+
### Not implemented
|
|
97
|
+
|
|
98
|
+
These flags stop the CLI with an error message and exit code `2`:
|
|
99
|
+
`--create-google-docs`, `--per-account-reports`, `--compliance-standard`,
|
|
100
|
+
`--risk-threshold` and `--disable-production-safety`. InvenTag does not certify
|
|
101
|
+
compliance with SOC 2 or other standards. For the full list, see
|
|
102
|
+
[Current status and known limitations](https://habhabhabs.github.io/inventag-aws/docs/getting-started/status).
|
|
103
|
+
|
|
104
|
+
## More examples
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
# Several accounts, Excel + Word, your own tag columns
|
|
108
|
+
./inventag.sh --accounts-file accounts.json \
|
|
109
|
+
--create-excel --create-word \
|
|
110
|
+
--tag-mappings config/defaults/mappings/tag_to_column_mappings_example.yaml \
|
|
111
|
+
--service-descriptions config/defaults/services/service_descriptions_example.yaml
|
|
112
|
+
|
|
113
|
+
# Assume a read-only role (full role ARN)
|
|
114
|
+
./inventag.sh --cross-account-role arn:aws:iam::123456789012:role/InvenTagReadOnly \
|
|
115
|
+
--create-excel
|
|
116
|
+
|
|
117
|
+
# Assume the same role name in each account of accounts.json
|
|
118
|
+
./inventag.sh --accounts-file accounts.json --cross-account-role InvenTagReadOnly \
|
|
119
|
+
--create-excel
|
|
120
|
+
|
|
121
|
+
# Upload the reports to S3 (server-side encrypted)
|
|
122
|
+
./inventag.sh --create-excel --s3-bucket my-reports-bucket
|
|
123
|
+
|
|
124
|
+
# Faster runs: fewer regions, more accounts in parallel
|
|
125
|
+
./inventag.sh --accounts-file accounts.json --create-excel \
|
|
126
|
+
--account-regions us-east-1,ap-southeast-1 --max-concurrent-accounts 8
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Every flag: [CLI user guide](https://habhabhabs.github.io/inventag-aws/docs/user-guides/cli-user-guide).
|
|
130
|
+
|
|
131
|
+
## Documentation
|
|
132
|
+
|
|
133
|
+
| Section | Link |
|
|
134
|
+
|---|---|
|
|
135
|
+
| Quick start | [docs/getting-started/quick-start.md](docs/getting-started/quick-start.md) |
|
|
136
|
+
| Current status and known limitations | [docs/getting-started/status.md](docs/getting-started/status.md) |
|
|
137
|
+
| CLI user guide | [docs/user-guides/cli-user-guide.md](docs/user-guides/cli-user-guide.md) |
|
|
138
|
+
| Configuration examples | [docs/user-guides/configuration-examples.md](docs/user-guides/configuration-examples.md) |
|
|
139
|
+
| Report templates | [docs/user-guides/report-templates.md](docs/user-guides/report-templates.md) |
|
|
140
|
+
| Permissions and production safety | [docs/user-guides/production-safety.md](docs/user-guides/production-safety.md) |
|
|
141
|
+
| Architecture | [docs/architecture/core-module-integration.md](docs/architecture/core-module-integration.md) |
|
|
142
|
+
| Contributing | [docs/development/CONTRIBUTING.md](docs/development/CONTRIBUTING.md) |
|
|
143
|
+
|
|
144
|
+
The same Markdown files are published as the documentation site (Docusaurus,
|
|
145
|
+
in `website/`). Brand assets (logo, favicon, social card) and the script that
|
|
146
|
+
regenerates them live in [`website/brand/`](website/brand/README.md).
|
|
147
|
+
|
|
148
|
+
## Project layout
|
|
149
|
+
|
|
150
|
+
```text
|
|
151
|
+
inventag-aws/
|
|
152
|
+
├── inventag_cli.py # CLI entry point (inventag.sh / inventag.bat wrap it)
|
|
153
|
+
├── inventag/ # Python package: cli, core, discovery, compliance, reporting, state
|
|
154
|
+
├── scripts/legacy/ # standalone scripts (inventory, tag compliance, BOM converter)
|
|
155
|
+
├── config/ # example configs, IAM policy, JSON schemas
|
|
156
|
+
├── examples/ # account files and CI examples
|
|
157
|
+
├── docs/ # documentation (Markdown)
|
|
158
|
+
├── website/ # Docusaurus site, brand assets
|
|
159
|
+
└── tests/
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
## Support
|
|
163
|
+
|
|
164
|
+
- [Issues](https://github.com/habhabhabs/inventag-aws/issues): bugs and feature requests
|
|
165
|
+
- [Discussions](https://github.com/habhabhabs/inventag-aws/discussions): questions
|
|
166
|
+
|
|
167
|
+
## License
|
|
168
|
+
|
|
169
|
+
MIT. See [LICENSE](LICENSE).
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
*AWS is a trademark of Amazon.com, Inc. or its affiliates. InvenTag is an
|
|
174
|
+
independent tool and is not affiliated with, endorsed by, or sponsored by
|
|
175
|
+
Amazon Web Services, Inc.*
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="website/static/img/logo-wordmark.svg#gh-light-mode-only" alt="InvenTag" width="366" height="96">
|
|
3
|
+
<img src="website/static/img/logo-wordmark-dark.svg#gh-dark-mode-only" alt="InvenTag" width="366" height="96">
|
|
4
|
+
</p>
|
|
5
|
+
|
|
6
|
+
<p align="center">
|
|
7
|
+
<strong>Find out what is running in your AWS accounts, check it is tagged properly, and hand over an Excel or Word bill of materials.</strong>
|
|
8
|
+
</p>
|
|
9
|
+
|
|
10
|
+
[](https://github.com/habhabhabs/inventag-aws/actions)
|
|
11
|
+
[](https://habhabhabs.github.io/inventag-aws/)
|
|
12
|
+
[](https://www.python.org/downloads/)
|
|
13
|
+
[](LICENSE)
|
|
14
|
+
|
|
15
|
+
**Docs:** <https://habhabhabs.github.io/inventag-aws/>
|
|
16
|
+
|
|
17
|
+
## Quick start
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
git clone https://github.com/habhabhabs/inventag-aws.git
|
|
21
|
+
cd inventag-aws
|
|
22
|
+
python3 -m venv .venv && source .venv/bin/activate
|
|
23
|
+
pip install -r requirements.txt
|
|
24
|
+
|
|
25
|
+
./inventag.sh --validate-credentials # uses your current AWS credentials
|
|
26
|
+
./inventag.sh --create-excel --verbose # -> bom_output/multi_account_bom_<timestamp>.xlsx
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Use a read-only IAM identity. By default, discovery makes two Cost Explorer
|
|
30
|
+
requests for each account, and AWS bills each request. Add
|
|
31
|
+
`--no-billing-validation` to make no Cost Explorer request. Details:
|
|
32
|
+
[Installation](https://habhabhabs.github.io/inventag-aws/docs/getting-started/installation).
|
|
33
|
+
|
|
34
|
+
## What it does
|
|
35
|
+
|
|
36
|
+
- **Discovery** across accounts and regions through the Resource Groups Tagging
|
|
37
|
+
API, per-service `List*`/`Describe*`/`Get*` calls and Cost Explorer billing data.
|
|
38
|
+
- **Bill of materials** as an Excel workbook (`--create-excel`) and/or Word
|
|
39
|
+
document (`--create-word`), with your own tag columns (`--tag-mappings`) and
|
|
40
|
+
service descriptions (`--service-descriptions`).
|
|
41
|
+
- **Report templates** (`--word-template`, `--excel-template`): a YAML or JSON
|
|
42
|
+
file selects the title, the sections or sheets, the columns, and the header
|
|
43
|
+
and footer text.
|
|
44
|
+
- **Several accounts** from a file (`--accounts-file`), interactively
|
|
45
|
+
(`--accounts-prompt`) or through an assumed role (`--cross-account-role`),
|
|
46
|
+
processed in parallel.
|
|
47
|
+
- **Change tracking**: each run saves a snapshot in `bom_output/state/`; the
|
|
48
|
+
next run reports what was added, removed or changed.
|
|
49
|
+
- **Upload to Amazon S3** (`--s3-bucket`) with server-side encryption.
|
|
50
|
+
- **Read-only guard**: the CLI blocks each AWS API call that is not a read
|
|
51
|
+
operation. `--audit-output audit.json` writes a list of the calls.
|
|
52
|
+
- **Tag-policy checks** (required tags, allowed values) with
|
|
53
|
+
`scripts/legacy/tag_compliance_checker.py --config policy.yaml`.
|
|
54
|
+
|
|
55
|
+
### Not implemented
|
|
56
|
+
|
|
57
|
+
These flags stop the CLI with an error message and exit code `2`:
|
|
58
|
+
`--create-google-docs`, `--per-account-reports`, `--compliance-standard`,
|
|
59
|
+
`--risk-threshold` and `--disable-production-safety`. InvenTag does not certify
|
|
60
|
+
compliance with SOC 2 or other standards. For the full list, see
|
|
61
|
+
[Current status and known limitations](https://habhabhabs.github.io/inventag-aws/docs/getting-started/status).
|
|
62
|
+
|
|
63
|
+
## More examples
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
# Several accounts, Excel + Word, your own tag columns
|
|
67
|
+
./inventag.sh --accounts-file accounts.json \
|
|
68
|
+
--create-excel --create-word \
|
|
69
|
+
--tag-mappings config/defaults/mappings/tag_to_column_mappings_example.yaml \
|
|
70
|
+
--service-descriptions config/defaults/services/service_descriptions_example.yaml
|
|
71
|
+
|
|
72
|
+
# Assume a read-only role (full role ARN)
|
|
73
|
+
./inventag.sh --cross-account-role arn:aws:iam::123456789012:role/InvenTagReadOnly \
|
|
74
|
+
--create-excel
|
|
75
|
+
|
|
76
|
+
# Assume the same role name in each account of accounts.json
|
|
77
|
+
./inventag.sh --accounts-file accounts.json --cross-account-role InvenTagReadOnly \
|
|
78
|
+
--create-excel
|
|
79
|
+
|
|
80
|
+
# Upload the reports to S3 (server-side encrypted)
|
|
81
|
+
./inventag.sh --create-excel --s3-bucket my-reports-bucket
|
|
82
|
+
|
|
83
|
+
# Faster runs: fewer regions, more accounts in parallel
|
|
84
|
+
./inventag.sh --accounts-file accounts.json --create-excel \
|
|
85
|
+
--account-regions us-east-1,ap-southeast-1 --max-concurrent-accounts 8
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
Every flag: [CLI user guide](https://habhabhabs.github.io/inventag-aws/docs/user-guides/cli-user-guide).
|
|
89
|
+
|
|
90
|
+
## Documentation
|
|
91
|
+
|
|
92
|
+
| Section | Link |
|
|
93
|
+
|---|---|
|
|
94
|
+
| Quick start | [docs/getting-started/quick-start.md](docs/getting-started/quick-start.md) |
|
|
95
|
+
| Current status and known limitations | [docs/getting-started/status.md](docs/getting-started/status.md) |
|
|
96
|
+
| CLI user guide | [docs/user-guides/cli-user-guide.md](docs/user-guides/cli-user-guide.md) |
|
|
97
|
+
| Configuration examples | [docs/user-guides/configuration-examples.md](docs/user-guides/configuration-examples.md) |
|
|
98
|
+
| Report templates | [docs/user-guides/report-templates.md](docs/user-guides/report-templates.md) |
|
|
99
|
+
| Permissions and production safety | [docs/user-guides/production-safety.md](docs/user-guides/production-safety.md) |
|
|
100
|
+
| Architecture | [docs/architecture/core-module-integration.md](docs/architecture/core-module-integration.md) |
|
|
101
|
+
| Contributing | [docs/development/CONTRIBUTING.md](docs/development/CONTRIBUTING.md) |
|
|
102
|
+
|
|
103
|
+
The same Markdown files are published as the documentation site (Docusaurus,
|
|
104
|
+
in `website/`). Brand assets (logo, favicon, social card) and the script that
|
|
105
|
+
regenerates them live in [`website/brand/`](website/brand/README.md).
|
|
106
|
+
|
|
107
|
+
## Project layout
|
|
108
|
+
|
|
109
|
+
```text
|
|
110
|
+
inventag-aws/
|
|
111
|
+
├── inventag_cli.py # CLI entry point (inventag.sh / inventag.bat wrap it)
|
|
112
|
+
├── inventag/ # Python package: cli, core, discovery, compliance, reporting, state
|
|
113
|
+
├── scripts/legacy/ # standalone scripts (inventory, tag compliance, BOM converter)
|
|
114
|
+
├── config/ # example configs, IAM policy, JSON schemas
|
|
115
|
+
├── examples/ # account files and CI examples
|
|
116
|
+
├── docs/ # documentation (Markdown)
|
|
117
|
+
├── website/ # Docusaurus site, brand assets
|
|
118
|
+
└── tests/
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## Support
|
|
122
|
+
|
|
123
|
+
- [Issues](https://github.com/habhabhabs/inventag-aws/issues): bugs and feature requests
|
|
124
|
+
- [Discussions](https://github.com/habhabhabs/inventag-aws/discussions): questions
|
|
125
|
+
|
|
126
|
+
## License
|
|
127
|
+
|
|
128
|
+
MIT. See [LICENSE](LICENSE).
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
*AWS is a trademark of Amazon.com, Inc. or its affiliates. InvenTag is an
|
|
133
|
+
independent tool and is not affiliated with, endorsed by, or sponsored by
|
|
134
|
+
Amazon Web Services, Inc.*
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"""
|
|
2
|
+
InvenTag - Unified AWS Cloud Governance Platform
|
|
3
|
+
|
|
4
|
+
A comprehensive Python package for AWS resource discovery, compliance checking,
|
|
5
|
+
professional BOM (Bill of Materials) document generation, and state management
|
|
6
|
+
with advanced change tracking capabilities.
|
|
7
|
+
|
|
8
|
+
This package transforms the proven functionality from standalone scripts into
|
|
9
|
+
a unified, enterprise-grade platform suitable for both CLI usage and service deployment.
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
# Must stay first: fails with a plain message on Python older than 3.11.
|
|
13
|
+
from ._python_version import MIN_PYTHON, check_python_version
|
|
14
|
+
|
|
15
|
+
check_python_version()
|
|
16
|
+
|
|
17
|
+
from ._version import __version__
|
|
18
|
+
|
|
19
|
+
__author__ = "InvenTag Team"
|
|
20
|
+
|
|
21
|
+
# Core modules
|
|
22
|
+
from .discovery import AWSResourceInventory
|
|
23
|
+
from .compliance import ComprehensiveTagComplianceChecker
|
|
24
|
+
from .reporting import BOMConverter
|
|
25
|
+
|
|
26
|
+
# Analysis modules
|
|
27
|
+
from .discovery.network_analyzer import NetworkAnalyzer
|
|
28
|
+
|
|
29
|
+
# State management modules
|
|
30
|
+
from .state import StateManager, DeltaDetector, ChangelogGenerator
|
|
31
|
+
|
|
32
|
+
# Main orchestrator
|
|
33
|
+
from .core import (
|
|
34
|
+
CloudBOMGenerator,
|
|
35
|
+
MultiAccountConfig,
|
|
36
|
+
AccountContext,
|
|
37
|
+
AccountCredentials,
|
|
38
|
+
CredentialManager,
|
|
39
|
+
CredentialValidationResult,
|
|
40
|
+
CICDIntegration,
|
|
41
|
+
S3UploadConfig,
|
|
42
|
+
ComplianceGateConfig,
|
|
43
|
+
NotificationConfig,
|
|
44
|
+
PrometheusConfig,
|
|
45
|
+
PrometheusMetrics,
|
|
46
|
+
CICDResult,
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
# CLI components
|
|
50
|
+
from .cli import main as cli_main, create_parser, ConfigValidator, setup_logging
|
|
51
|
+
|
|
52
|
+
__all__ = [
|
|
53
|
+
"AWSResourceInventory",
|
|
54
|
+
"ComprehensiveTagComplianceChecker",
|
|
55
|
+
"BOMConverter",
|
|
56
|
+
"NetworkAnalyzer",
|
|
57
|
+
"StateManager",
|
|
58
|
+
"DeltaDetector",
|
|
59
|
+
"ChangelogGenerator",
|
|
60
|
+
"CloudBOMGenerator",
|
|
61
|
+
"MultiAccountConfig",
|
|
62
|
+
"AccountContext",
|
|
63
|
+
"AccountCredentials",
|
|
64
|
+
"CredentialManager",
|
|
65
|
+
"CredentialValidationResult",
|
|
66
|
+
"CICDIntegration",
|
|
67
|
+
"S3UploadConfig",
|
|
68
|
+
"ComplianceGateConfig",
|
|
69
|
+
"NotificationConfig",
|
|
70
|
+
"PrometheusConfig",
|
|
71
|
+
"PrometheusMetrics",
|
|
72
|
+
"CICDResult",
|
|
73
|
+
"cli_main",
|
|
74
|
+
"create_parser",
|
|
75
|
+
"ConfigValidator",
|
|
76
|
+
"setup_logging",
|
|
77
|
+
]
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Minimum supported Python version.
|
|
3
|
+
|
|
4
|
+
This module is imported first by ``inventag/__init__.py``. Keep it free of
|
|
5
|
+
syntax newer than Python 2.7 / 3.0 (no f-strings, no annotations), so that an
|
|
6
|
+
old interpreter reaches the plain error message below instead of failing with
|
|
7
|
+
a SyntaxError somewhere else in the package.
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
import sys
|
|
11
|
+
|
|
12
|
+
MIN_PYTHON = (3, 11)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def unsupported_python_message(version_info=None):
|
|
16
|
+
"""Return an error message if ``version_info`` is too old, else ``None``."""
|
|
17
|
+
version_info = sys.version_info if version_info is None else version_info
|
|
18
|
+
if tuple(version_info[:2]) >= MIN_PYTHON:
|
|
19
|
+
return None
|
|
20
|
+
return (
|
|
21
|
+
"InvenTag requires Python %d.%d or later; this interpreter is Python %d.%d. "
|
|
22
|
+
"Install a newer Python (https://www.python.org/downloads/) and run "
|
|
23
|
+
"InvenTag with it." % (MIN_PYTHON + tuple(version_info[:2]))
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def check_python_version(version_info=None):
|
|
28
|
+
"""Raise ``ImportError`` with a plain message on an unsupported Python."""
|
|
29
|
+
message = unsupported_python_message(version_info)
|
|
30
|
+
if message:
|
|
31
|
+
raise ImportError(message)
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Command Line Interface for InvenTag
|
|
3
|
+
|
|
4
|
+
Comprehensive CLI with multi-account support, format-specific options,
|
|
5
|
+
S3 upload capabilities, and extensive configuration management.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from .main import main, create_parser
|
|
9
|
+
from .config_validator import ConfigValidator
|
|
10
|
+
from .logging_setup import setup_logging
|
|
11
|
+
|
|
12
|
+
__all__ = ["main", "create_parser", "ConfigValidator", "setup_logging"]
|