# access keys: deactivate (reversible) then delete
for k in $(aws_ iam list-access-keys --user-name "$u" --query 'AccessKeyMetadata[].AccessKeyId' --output text);do
aws_ iam update-access-key --user-name "$u" --access-key-id "$k" --status Inactive
aws_ iam delete-access-key --user-name "$u" --access-key-id "$k"
done
# detach managed policies
for p in $(aws_ iam list-attached-user-policies --user-name "$u" --query 'AttachedPolicies[].PolicyArn' --output text);do
aws_ iam detach-user-policy --user-name "$u" --policy-arn "$p"
done
# delete inline policies
for ip in $(aws_ iam list-user-policies --user-name "$u" --query 'PolicyNames[]' --output text);do
aws_ iam delete-user-policy --user-name "$u" --policy-name "$ip"
done
# remove from groups
for g in $(aws_ iam list-groups-for-user --user-name "$u" --query 'Groups[].GroupName' --output text);do
aws_ iam remove-user-from-group --user-name "$u" --group-name "$g"
done
# MFA devices
for m in $(aws_ iam list-mfa-devices --user-name "$u" --query 'MFADevices[].SerialNumber' --output text);do
aws_ iam deactivate-mfa-device --user-name "$u" --serial-number "$m"
done
# login profile (console password)
aws_ iam delete-login-profile --user-name "$u" 2>/dev/null ||true
# signing certs
for c in $(aws_ iam list-signing-certificates --user-name "$u" --query 'Certificates[].CertificateId' --output text 2>/dev/null);do
aws_ iam delete-signing-certificate --user-name "$u" --certificate-id "$c"
done
# SSH public keys (CodeCommit)
for s in $(aws_ iam list-ssh-public-keys --user-name "$u" --query 'SSHPublicKeys[].SSHPublicKeyId' --output text 2>/dev/null);do
aws_ iam delete-ssh-public-key --user-name "$u" --ssh-public-key-id "$s"
done
# service-specific credentials
for sc in $(aws_ iam list-service-specific-credentials --user-name "$u" --query 'ServiceSpecificCredentials[].ServiceSpecificCredentialId' --output text 2>/dev/null);do
aws_ iam delete-service-specific-credential --user-name "$u" --service-specific-credential-id "$sc"
done
aws_ iam delete-user --user-name "$u"
echo"$u: deleted"
}
rc=0
for u in "${USERS[@]}";do delete_user "$u"||rc=1;done