def list_from_aws(cls: Type["IAMPolicyResourceSpec"], client: BaseClient, account_id: str, region: str) -> ListFromAWSResult: """Return a dict of dicts of the format: {'role_1_arn': {role_1_dict}, 'role_2_arn': {role_2_dict}, ...} Where the dicts represent results from list_policies and additional info per role from list_targets_by_role.""" policies = {} paginator = client.get_paginator("list_policies") for resp in paginator.paginate(Scope="Local"): for policy in resp.get("Policies", []): resource_arn = policy["Arn"] default_policy_version = policy["DefaultVersionId"] policy_version_resp = client.get_policy_version( PolicyArn=resource_arn, VersionId=default_policy_version) default_policy_version_document_text = policy_version_resp[ "PolicyVersion"]["Document"] policy[ "DefaultVersionPolicyDocumentText"] = policy_doc_dict_to_sorted_str( default_policy_version_document_text) policies[resource_arn] = policy return ListFromAWSResult(resources=policies)
def get_policy_version_document_text( cls: Type["IAMPolicyResourceSpec"], client: BaseClient, policy_arn: str, policy_version: str, ) -> Dict[str, Any]: policy_version_resp = client.get_policy_version( PolicyArn=policy_arn, VersionId=policy_version) return policy_version_resp["PolicyVersion"]["Document"]