use anyhow::{bail, Result}; use aws_sdk_autoscaling as autoscaling; use aws_sdk_autoscaling::types::AutoScalingGroup; pub trait AutoScaling { fn autoscaling(&self) -> &autoscaling::Client; } pub async fn asg_by_name(aws_context: &C, name: &str) -> Result where C: AutoScaling, { let groups_resp = aws_context .autoscaling() .describe_auto_scaling_groups() .auto_scaling_group_names(name) .send() .await?; let mut groups = groups_resp.auto_scaling_groups().iter(); let group = match (groups.next(), groups.next()) { (Some(group), None) => group, (None, _) => bail!("No autoscaling group found with name: {name}"), (Some(_), Some(_)) => bail!("Multiple autoscaling groups found with name: {name}"), }; Ok(group.to_owned()) }