From 855de2489702fcd775193232443a0b4cf6ccd5d0 Mon Sep 17 00:00:00 2001 From: KenF Date: Thu, 29 Jan 2026 13:01:15 +0800 Subject: [PATCH] feat: added aws-step.py for stepfunctions --- aws-step.py | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100755 aws-step.py diff --git a/aws-step.py b/aws-step.py new file mode 100755 index 0000000..96beb51 --- /dev/null +++ b/aws-step.py @@ -0,0 +1,43 @@ +#!/usr/bin/env python3 +r""" +Documentation + +License: This program is released under the MIT License +""" + +# Imports +import boto3 +import concurrent.futures +from openpyxl import load_workbook +from openpyxl.worksheet.worksheet import Worksheet +import projectlib.aws + + +def getResources(region_name: str) -> list[list[str | int]]: + return_data = [] + client = boto3.client('stepfunctions', region_name=region_name) + response = client.list_state_machines() + for i in response['stateMachines']: + return_data.append([i['name'], i['type'], region_name]) + return return_data + +# Main function +def main() -> None: + # Open spreadsheet and add a sheet + wb = load_workbook('aws-inventory.xlsx') + ws = wb.create_sheet("StepFunction") + + ws.append(["Name","Type","region"]) + with concurrent.futures.ThreadPoolExecutor(max_workers=8) as executor: + results = executor.map(getResources, projectlib.aws.getRegions()) + for region_rows in results: + # append to worksheet only if resoruces are found in the region + if region_rows: + for row in region_rows: + ws.append(row) + + wb.save('aws-inventory.xlsx') + +# Call main function +if __name__ == '__main__': + main()