// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
impl super::Client {
/// Constructs a fluent builder for the [`UpdateProtectionGroup`](crate::operation::update_protection_group::builders::UpdateProtectionGroupFluentBuilder) operation.
///
/// - The fluent builder is configurable:
/// - [`protection_group_id(impl Into<String>)`](crate::operation::update_protection_group::builders::UpdateProtectionGroupFluentBuilder::protection_group_id) / [`set_protection_group_id(Option<String>)`](crate::operation::update_protection_group::builders::UpdateProtectionGroupFluentBuilder::set_protection_group_id):<br>required: **true**<br><p>The name of the protection group. You use this to identify the protection group in lists and to manage the protection group, for example to update, delete, or describe it.</p><br>
/// - [`aggregation(ProtectionGroupAggregation)`](crate::operation::update_protection_group::builders::UpdateProtectionGroupFluentBuilder::aggregation) / [`set_aggregation(Option<ProtectionGroupAggregation>)`](crate::operation::update_protection_group::builders::UpdateProtectionGroupFluentBuilder::set_aggregation):<br>required: **true**<br><p>Defines how Shield combines resource data for the group in order to detect, mitigate, and report events.</p> <ul> <li> <p>Sum - Use the total traffic across the group. This is a good choice for most cases. Examples include Elastic IP addresses for EC2 instances that scale manually or automatically.</p></li> <li> <p>Mean - Use the average of the traffic across the group. This is a good choice for resources that share traffic uniformly. Examples include accelerators and load balancers.</p></li> <li> <p>Max - Use the highest traffic from each resource. This is useful for resources that don't share traffic and for resources that share that traffic in a non-uniform way. Examples include Amazon CloudFront distributions and origin resources for CloudFront distributions.</p></li> </ul><br>
/// - [`pattern(ProtectionGroupPattern)`](crate::operation::update_protection_group::builders::UpdateProtectionGroupFluentBuilder::pattern) / [`set_pattern(Option<ProtectionGroupPattern>)`](crate::operation::update_protection_group::builders::UpdateProtectionGroupFluentBuilder::set_pattern):<br>required: **true**<br><p>The criteria to use to choose the protected resources for inclusion in the group. You can include all resources that have protections, provide a list of resource Amazon Resource Names (ARNs), or include all resources of a specified resource type.</p><br>
/// - [`resource_type(ProtectedResourceType)`](crate::operation::update_protection_group::builders::UpdateProtectionGroupFluentBuilder::resource_type) / [`set_resource_type(Option<ProtectedResourceType>)`](crate::operation::update_protection_group::builders::UpdateProtectionGroupFluentBuilder::set_resource_type):<br>required: **false**<br><p>The resource type to include in the protection group. All protected resources of this type are included in the protection group. You must set this when you set <code>Pattern</code> to <code>BY_RESOURCE_TYPE</code> and you must not set it for any other <code>Pattern</code> setting.</p><br>
/// - [`members(impl Into<String>)`](crate::operation::update_protection_group::builders::UpdateProtectionGroupFluentBuilder::members) / [`set_members(Option<Vec::<String>>)`](crate::operation::update_protection_group::builders::UpdateProtectionGroupFluentBuilder::set_members):<br>required: **false**<br><p>The Amazon Resource Names (ARNs) of the resources to include in the protection group. You must set this when you set <code>Pattern</code> to <code>ARBITRARY</code> and you must not set it for any other <code>Pattern</code> setting.</p><br>
/// - On success, responds with [`UpdateProtectionGroupOutput`](crate::operation::update_protection_group::UpdateProtectionGroupOutput)
/// - On failure, responds with [`SdkError<UpdateProtectionGroupError>`](crate::operation::update_protection_group::UpdateProtectionGroupError)
pub fn update_protection_group(&self) -> crate::operation::update_protection_group::builders::UpdateProtectionGroupFluentBuilder {
crate::operation::update_protection_group::builders::UpdateProtectionGroupFluentBuilder::new(self.handle.clone())
}
}