1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.

/// <p>A container element for the account-level Amazon S3 Storage Lens configuration.</p>
/// <p>For more information about S3 Storage Lens, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage_lens.html">Assessing your storage activity and usage with S3 Storage Lens</a> in the <i>Amazon S3 User Guide</i>. For a complete list of S3 Storage Lens metrics, see <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage_lens_metrics_glossary.html">S3 Storage Lens metrics glossary</a> in the <i>Amazon S3 User Guide</i>.</p>
#[non_exhaustive]
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
pub struct AccountLevel {
    /// <p>A container element for S3 Storage Lens activity metrics.</p>
    pub activity_metrics: ::std::option::Option<crate::types::ActivityMetrics>,
    /// <p>A container element for the S3 Storage Lens bucket-level configuration.</p>
    pub bucket_level: ::std::option::Option<crate::types::BucketLevel>,
    /// <p>A container element for S3 Storage Lens advanced cost-optimization metrics.</p>
    pub advanced_cost_optimization_metrics: ::std::option::Option<crate::types::AdvancedCostOptimizationMetrics>,
    /// <p>A container element for S3 Storage Lens advanced data-protection metrics.</p>
    pub advanced_data_protection_metrics: ::std::option::Option<crate::types::AdvancedDataProtectionMetrics>,
    /// <p>A container element for detailed status code metrics.</p>
    pub detailed_status_codes_metrics: ::std::option::Option<crate::types::DetailedStatusCodesMetrics>,
    /// <p>A container element for S3 Storage Lens groups metrics.</p>
    pub storage_lens_group_level: ::std::option::Option<crate::types::StorageLensGroupLevel>,
}
impl AccountLevel {
    /// <p>A container element for S3 Storage Lens activity metrics.</p>
    pub fn activity_metrics(&self) -> ::std::option::Option<&crate::types::ActivityMetrics> {
        self.activity_metrics.as_ref()
    }
    /// <p>A container element for the S3 Storage Lens bucket-level configuration.</p>
    pub fn bucket_level(&self) -> ::std::option::Option<&crate::types::BucketLevel> {
        self.bucket_level.as_ref()
    }
    /// <p>A container element for S3 Storage Lens advanced cost-optimization metrics.</p>
    pub fn advanced_cost_optimization_metrics(&self) -> ::std::option::Option<&crate::types::AdvancedCostOptimizationMetrics> {
        self.advanced_cost_optimization_metrics.as_ref()
    }
    /// <p>A container element for S3 Storage Lens advanced data-protection metrics.</p>
    pub fn advanced_data_protection_metrics(&self) -> ::std::option::Option<&crate::types::AdvancedDataProtectionMetrics> {
        self.advanced_data_protection_metrics.as_ref()
    }
    /// <p>A container element for detailed status code metrics.</p>
    pub fn detailed_status_codes_metrics(&self) -> ::std::option::Option<&crate::types::DetailedStatusCodesMetrics> {
        self.detailed_status_codes_metrics.as_ref()
    }
    /// <p>A container element for S3 Storage Lens groups metrics.</p>
    pub fn storage_lens_group_level(&self) -> ::std::option::Option<&crate::types::StorageLensGroupLevel> {
        self.storage_lens_group_level.as_ref()
    }
}
impl AccountLevel {
    /// Creates a new builder-style object to manufacture [`AccountLevel`](crate::types::AccountLevel).
    pub fn builder() -> crate::types::builders::AccountLevelBuilder {
        crate::types::builders::AccountLevelBuilder::default()
    }
}

/// A builder for [`AccountLevel`](crate::types::AccountLevel).
#[non_exhaustive]
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
pub struct AccountLevelBuilder {
    pub(crate) activity_metrics: ::std::option::Option<crate::types::ActivityMetrics>,
    pub(crate) bucket_level: ::std::option::Option<crate::types::BucketLevel>,
    pub(crate) advanced_cost_optimization_metrics: ::std::option::Option<crate::types::AdvancedCostOptimizationMetrics>,
    pub(crate) advanced_data_protection_metrics: ::std::option::Option<crate::types::AdvancedDataProtectionMetrics>,
    pub(crate) detailed_status_codes_metrics: ::std::option::Option<crate::types::DetailedStatusCodesMetrics>,
    pub(crate) storage_lens_group_level: ::std::option::Option<crate::types::StorageLensGroupLevel>,
}
impl AccountLevelBuilder {
    /// <p>A container element for S3 Storage Lens activity metrics.</p>
    pub fn activity_metrics(mut self, input: crate::types::ActivityMetrics) -> Self {
        self.activity_metrics = ::std::option::Option::Some(input);
        self
    }
    /// <p>A container element for S3 Storage Lens activity metrics.</p>
    pub fn set_activity_metrics(mut self, input: ::std::option::Option<crate::types::ActivityMetrics>) -> Self {
        self.activity_metrics = input;
        self
    }
    /// <p>A container element for S3 Storage Lens activity metrics.</p>
    pub fn get_activity_metrics(&self) -> &::std::option::Option<crate::types::ActivityMetrics> {
        &self.activity_metrics
    }
    /// <p>A container element for the S3 Storage Lens bucket-level configuration.</p>
    /// This field is required.
    pub fn bucket_level(mut self, input: crate::types::BucketLevel) -> Self {
        self.bucket_level = ::std::option::Option::Some(input);
        self
    }
    /// <p>A container element for the S3 Storage Lens bucket-level configuration.</p>
    pub fn set_bucket_level(mut self, input: ::std::option::Option<crate::types::BucketLevel>) -> Self {
        self.bucket_level = input;
        self
    }
    /// <p>A container element for the S3 Storage Lens bucket-level configuration.</p>
    pub fn get_bucket_level(&self) -> &::std::option::Option<crate::types::BucketLevel> {
        &self.bucket_level
    }
    /// <p>A container element for S3 Storage Lens advanced cost-optimization metrics.</p>
    pub fn advanced_cost_optimization_metrics(mut self, input: crate::types::AdvancedCostOptimizationMetrics) -> Self {
        self.advanced_cost_optimization_metrics = ::std::option::Option::Some(input);
        self
    }
    /// <p>A container element for S3 Storage Lens advanced cost-optimization metrics.</p>
    pub fn set_advanced_cost_optimization_metrics(mut self, input: ::std::option::Option<crate::types::AdvancedCostOptimizationMetrics>) -> Self {
        self.advanced_cost_optimization_metrics = input;
        self
    }
    /// <p>A container element for S3 Storage Lens advanced cost-optimization metrics.</p>
    pub fn get_advanced_cost_optimization_metrics(&self) -> &::std::option::Option<crate::types::AdvancedCostOptimizationMetrics> {
        &self.advanced_cost_optimization_metrics
    }
    /// <p>A container element for S3 Storage Lens advanced data-protection metrics.</p>
    pub fn advanced_data_protection_metrics(mut self, input: crate::types::AdvancedDataProtectionMetrics) -> Self {
        self.advanced_data_protection_metrics = ::std::option::Option::Some(input);
        self
    }
    /// <p>A container element for S3 Storage Lens advanced data-protection metrics.</p>
    pub fn set_advanced_data_protection_metrics(mut self, input: ::std::option::Option<crate::types::AdvancedDataProtectionMetrics>) -> Self {
        self.advanced_data_protection_metrics = input;
        self
    }
    /// <p>A container element for S3 Storage Lens advanced data-protection metrics.</p>
    pub fn get_advanced_data_protection_metrics(&self) -> &::std::option::Option<crate::types::AdvancedDataProtectionMetrics> {
        &self.advanced_data_protection_metrics
    }
    /// <p>A container element for detailed status code metrics.</p>
    pub fn detailed_status_codes_metrics(mut self, input: crate::types::DetailedStatusCodesMetrics) -> Self {
        self.detailed_status_codes_metrics = ::std::option::Option::Some(input);
        self
    }
    /// <p>A container element for detailed status code metrics.</p>
    pub fn set_detailed_status_codes_metrics(mut self, input: ::std::option::Option<crate::types::DetailedStatusCodesMetrics>) -> Self {
        self.detailed_status_codes_metrics = input;
        self
    }
    /// <p>A container element for detailed status code metrics.</p>
    pub fn get_detailed_status_codes_metrics(&self) -> &::std::option::Option<crate::types::DetailedStatusCodesMetrics> {
        &self.detailed_status_codes_metrics
    }
    /// <p>A container element for S3 Storage Lens groups metrics.</p>
    pub fn storage_lens_group_level(mut self, input: crate::types::StorageLensGroupLevel) -> Self {
        self.storage_lens_group_level = ::std::option::Option::Some(input);
        self
    }
    /// <p>A container element for S3 Storage Lens groups metrics.</p>
    pub fn set_storage_lens_group_level(mut self, input: ::std::option::Option<crate::types::StorageLensGroupLevel>) -> Self {
        self.storage_lens_group_level = input;
        self
    }
    /// <p>A container element for S3 Storage Lens groups metrics.</p>
    pub fn get_storage_lens_group_level(&self) -> &::std::option::Option<crate::types::StorageLensGroupLevel> {
        &self.storage_lens_group_level
    }
    /// Consumes the builder and constructs a [`AccountLevel`](crate::types::AccountLevel).
    pub fn build(self) -> crate::types::AccountLevel {
        crate::types::AccountLevel {
            activity_metrics: self.activity_metrics,
            bucket_level: self.bucket_level,
            advanced_cost_optimization_metrics: self.advanced_cost_optimization_metrics,
            advanced_data_protection_metrics: self.advanced_data_protection_metrics,
            detailed_status_codes_metrics: self.detailed_status_codes_metrics,
            storage_lens_group_level: self.storage_lens_group_level,
        }
    }
}