use anyhow::Result;
use aws_sdk_s3::types::AccelerateConfiguration;
use tracing::info;
use s3util_rs::config::ClientConfig;
use s3util_rs::config::args::put_bucket_accelerate_configuration::PutBucketAccelerateConfigurationArgs;
use s3util_rs::storage::s3::api;
pub async fn run_put_bucket_accelerate_configuration(
args: PutBucketAccelerateConfigurationArgs,
client_config: ClientConfig,
) -> Result<()> {
args.validate_state_flag();
let bucket = args
.bucket_name()
.map_err(|e| anyhow::anyhow!("{}", e.trim_end()))?;
let status = args.accelerate_status();
let cfg = AccelerateConfiguration::builder()
.status(status.clone())
.build();
let client = client_config.create_client().await;
if args.dry_run {
info!(
bucket = %bucket,
status = %status.as_str(),
"[dry-run] would put bucket accelerate configuration."
);
return Ok(());
}
api::put_bucket_accelerate_configuration(&client, &bucket, cfg).await?;
info!(
bucket = %bucket,
status = %status.as_str(),
"Bucket Transfer Acceleration set."
);
Ok(())
}