aws_sdk_sagemaker/operation/create_feature_group/
builders.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2pub use crate::operation::create_feature_group::_create_feature_group_output::CreateFeatureGroupOutputBuilder;
3
4pub use crate::operation::create_feature_group::_create_feature_group_input::CreateFeatureGroupInputBuilder;
5
6impl crate::operation::create_feature_group::builders::CreateFeatureGroupInputBuilder {
7    /// Sends a request with this input using the given client.
8    pub async fn send_with(
9        self,
10        client: &crate::Client,
11    ) -> ::std::result::Result<
12        crate::operation::create_feature_group::CreateFeatureGroupOutput,
13        ::aws_smithy_runtime_api::client::result::SdkError<
14            crate::operation::create_feature_group::CreateFeatureGroupError,
15            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
16        >,
17    > {
18        let mut fluent_builder = client.create_feature_group();
19        fluent_builder.inner = self;
20        fluent_builder.send().await
21    }
22}
23/// Fluent builder constructing a request to `CreateFeatureGroup`.
24///
25/// <p>Create a new <code>FeatureGroup</code>. A <code>FeatureGroup</code> is a group of <code>Features</code> defined in the <code>FeatureStore</code> to describe a <code>Record</code>.</p>
26/// <p>The <code>FeatureGroup</code> defines the schema and features contained in the <code>FeatureGroup</code>. A <code>FeatureGroup</code> definition is composed of a list of <code>Features</code>, a <code>RecordIdentifierFeatureName</code>, an <code>EventTimeFeatureName</code> and configurations for its <code>OnlineStore</code> and <code>OfflineStore</code>. Check <a href="https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html">Amazon Web Services service quotas</a> to see the <code>FeatureGroup</code>s quota for your Amazon Web Services account.</p>
27/// <p>Note that it can take approximately 10-15 minutes to provision an <code>OnlineStore</code> <code>FeatureGroup</code> with the <code>InMemory</code> <code>StorageType</code>.</p><important>
28/// <p>You must include at least one of <code>OnlineStoreConfig</code> and <code>OfflineStoreConfig</code> to create a <code>FeatureGroup</code>.</p>
29/// </important>
30#[derive(::std::clone::Clone, ::std::fmt::Debug)]
31pub struct CreateFeatureGroupFluentBuilder {
32    handle: ::std::sync::Arc<crate::client::Handle>,
33    inner: crate::operation::create_feature_group::builders::CreateFeatureGroupInputBuilder,
34    config_override: ::std::option::Option<crate::config::Builder>,
35}
36impl
37    crate::client::customize::internal::CustomizableSend<
38        crate::operation::create_feature_group::CreateFeatureGroupOutput,
39        crate::operation::create_feature_group::CreateFeatureGroupError,
40    > for CreateFeatureGroupFluentBuilder
41{
42    fn send(
43        self,
44        config_override: crate::config::Builder,
45    ) -> crate::client::customize::internal::BoxFuture<
46        crate::client::customize::internal::SendResult<
47            crate::operation::create_feature_group::CreateFeatureGroupOutput,
48            crate::operation::create_feature_group::CreateFeatureGroupError,
49        >,
50    > {
51        ::std::boxed::Box::pin(async move { self.config_override(config_override).send().await })
52    }
53}
54impl CreateFeatureGroupFluentBuilder {
55    /// Creates a new `CreateFeatureGroupFluentBuilder`.
56    pub(crate) fn new(handle: ::std::sync::Arc<crate::client::Handle>) -> Self {
57        Self {
58            handle,
59            inner: ::std::default::Default::default(),
60            config_override: ::std::option::Option::None,
61        }
62    }
63    /// Access the CreateFeatureGroup as a reference.
64    pub fn as_input(&self) -> &crate::operation::create_feature_group::builders::CreateFeatureGroupInputBuilder {
65        &self.inner
66    }
67    /// Sends the request and returns the response.
68    ///
69    /// If an error occurs, an `SdkError` will be returned with additional details that
70    /// can be matched against.
71    ///
72    /// By default, any retryable failures will be retried twice. Retry behavior
73    /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
74    /// set when configuring the client.
75    pub async fn send(
76        self,
77    ) -> ::std::result::Result<
78        crate::operation::create_feature_group::CreateFeatureGroupOutput,
79        ::aws_smithy_runtime_api::client::result::SdkError<
80            crate::operation::create_feature_group::CreateFeatureGroupError,
81            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
82        >,
83    > {
84        let input = self
85            .inner
86            .build()
87            .map_err(::aws_smithy_runtime_api::client::result::SdkError::construction_failure)?;
88        let runtime_plugins = crate::operation::create_feature_group::CreateFeatureGroup::operation_runtime_plugins(
89            self.handle.runtime_plugins.clone(),
90            &self.handle.conf,
91            self.config_override,
92        );
93        crate::operation::create_feature_group::CreateFeatureGroup::orchestrate(&runtime_plugins, input).await
94    }
95
96    /// Consumes this builder, creating a customizable operation that can be modified before being sent.
97    pub fn customize(
98        self,
99    ) -> crate::client::customize::CustomizableOperation<
100        crate::operation::create_feature_group::CreateFeatureGroupOutput,
101        crate::operation::create_feature_group::CreateFeatureGroupError,
102        Self,
103    > {
104        crate::client::customize::CustomizableOperation::new(self)
105    }
106    pub(crate) fn config_override(mut self, config_override: impl ::std::convert::Into<crate::config::Builder>) -> Self {
107        self.set_config_override(::std::option::Option::Some(config_override.into()));
108        self
109    }
110
111    pub(crate) fn set_config_override(&mut self, config_override: ::std::option::Option<crate::config::Builder>) -> &mut Self {
112        self.config_override = config_override;
113        self
114    }
115    /// <p>The name of the <code>FeatureGroup</code>. The name must be unique within an Amazon Web Services Region in an Amazon Web Services account.</p>
116    /// <p>The name:</p>
117    /// <ul>
118    /// <li>
119    /// <p>Must start with an alphanumeric character.</p></li>
120    /// <li>
121    /// <p>Can only include alphanumeric characters, underscores, and hyphens. Spaces are not allowed.</p></li>
122    /// </ul>
123    pub fn feature_group_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
124        self.inner = self.inner.feature_group_name(input.into());
125        self
126    }
127    /// <p>The name of the <code>FeatureGroup</code>. The name must be unique within an Amazon Web Services Region in an Amazon Web Services account.</p>
128    /// <p>The name:</p>
129    /// <ul>
130    /// <li>
131    /// <p>Must start with an alphanumeric character.</p></li>
132    /// <li>
133    /// <p>Can only include alphanumeric characters, underscores, and hyphens. Spaces are not allowed.</p></li>
134    /// </ul>
135    pub fn set_feature_group_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
136        self.inner = self.inner.set_feature_group_name(input);
137        self
138    }
139    /// <p>The name of the <code>FeatureGroup</code>. The name must be unique within an Amazon Web Services Region in an Amazon Web Services account.</p>
140    /// <p>The name:</p>
141    /// <ul>
142    /// <li>
143    /// <p>Must start with an alphanumeric character.</p></li>
144    /// <li>
145    /// <p>Can only include alphanumeric characters, underscores, and hyphens. Spaces are not allowed.</p></li>
146    /// </ul>
147    pub fn get_feature_group_name(&self) -> &::std::option::Option<::std::string::String> {
148        self.inner.get_feature_group_name()
149    }
150    /// <p>The name of the <code>Feature</code> whose value uniquely identifies a <code>Record</code> defined in the <code>FeatureStore</code>. Only the latest record per identifier value will be stored in the <code>OnlineStore</code>. <code>RecordIdentifierFeatureName</code> must be one of feature definitions' names.</p>
151    /// <p>You use the <code>RecordIdentifierFeatureName</code> to access data in a <code>FeatureStore</code>.</p>
152    /// <p>This name:</p>
153    /// <ul>
154    /// <li>
155    /// <p>Must start with an alphanumeric character.</p></li>
156    /// <li>
157    /// <p>Can only contains alphanumeric characters, hyphens, underscores. Spaces are not allowed.</p></li>
158    /// </ul>
159    pub fn record_identifier_feature_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
160        self.inner = self.inner.record_identifier_feature_name(input.into());
161        self
162    }
163    /// <p>The name of the <code>Feature</code> whose value uniquely identifies a <code>Record</code> defined in the <code>FeatureStore</code>. Only the latest record per identifier value will be stored in the <code>OnlineStore</code>. <code>RecordIdentifierFeatureName</code> must be one of feature definitions' names.</p>
164    /// <p>You use the <code>RecordIdentifierFeatureName</code> to access data in a <code>FeatureStore</code>.</p>
165    /// <p>This name:</p>
166    /// <ul>
167    /// <li>
168    /// <p>Must start with an alphanumeric character.</p></li>
169    /// <li>
170    /// <p>Can only contains alphanumeric characters, hyphens, underscores. Spaces are not allowed.</p></li>
171    /// </ul>
172    pub fn set_record_identifier_feature_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
173        self.inner = self.inner.set_record_identifier_feature_name(input);
174        self
175    }
176    /// <p>The name of the <code>Feature</code> whose value uniquely identifies a <code>Record</code> defined in the <code>FeatureStore</code>. Only the latest record per identifier value will be stored in the <code>OnlineStore</code>. <code>RecordIdentifierFeatureName</code> must be one of feature definitions' names.</p>
177    /// <p>You use the <code>RecordIdentifierFeatureName</code> to access data in a <code>FeatureStore</code>.</p>
178    /// <p>This name:</p>
179    /// <ul>
180    /// <li>
181    /// <p>Must start with an alphanumeric character.</p></li>
182    /// <li>
183    /// <p>Can only contains alphanumeric characters, hyphens, underscores. Spaces are not allowed.</p></li>
184    /// </ul>
185    pub fn get_record_identifier_feature_name(&self) -> &::std::option::Option<::std::string::String> {
186        self.inner.get_record_identifier_feature_name()
187    }
188    /// <p>The name of the feature that stores the <code>EventTime</code> of a <code>Record</code> in a <code>FeatureGroup</code>.</p>
189    /// <p>An <code>EventTime</code> is a point in time when a new event occurs that corresponds to the creation or update of a <code>Record</code> in a <code>FeatureGroup</code>. All <code>Records</code> in the <code>FeatureGroup</code> must have a corresponding <code>EventTime</code>.</p>
190    /// <p>An <code>EventTime</code> can be a <code>String</code> or <code>Fractional</code>.</p>
191    /// <ul>
192    /// <li>
193    /// <p><code>Fractional</code>: <code>EventTime</code> feature values must be a Unix timestamp in seconds.</p></li>
194    /// <li>
195    /// <p><code>String</code>: <code>EventTime</code> feature values must be an ISO-8601 string in the format. The following formats are supported <code>yyyy-MM-dd'T'HH:mm:ssZ</code> and <code>yyyy-MM-dd'T'HH:mm:ss.SSSZ</code> where <code>yyyy</code>, <code>MM</code>, and <code>dd</code> represent the year, month, and day respectively and <code>HH</code>, <code>mm</code>, <code>ss</code>, and if applicable, <code>SSS</code> represent the hour, month, second and milliseconds respsectively. <code>'T'</code> and <code>Z</code> are constants.</p></li>
196    /// </ul>
197    pub fn event_time_feature_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
198        self.inner = self.inner.event_time_feature_name(input.into());
199        self
200    }
201    /// <p>The name of the feature that stores the <code>EventTime</code> of a <code>Record</code> in a <code>FeatureGroup</code>.</p>
202    /// <p>An <code>EventTime</code> is a point in time when a new event occurs that corresponds to the creation or update of a <code>Record</code> in a <code>FeatureGroup</code>. All <code>Records</code> in the <code>FeatureGroup</code> must have a corresponding <code>EventTime</code>.</p>
203    /// <p>An <code>EventTime</code> can be a <code>String</code> or <code>Fractional</code>.</p>
204    /// <ul>
205    /// <li>
206    /// <p><code>Fractional</code>: <code>EventTime</code> feature values must be a Unix timestamp in seconds.</p></li>
207    /// <li>
208    /// <p><code>String</code>: <code>EventTime</code> feature values must be an ISO-8601 string in the format. The following formats are supported <code>yyyy-MM-dd'T'HH:mm:ssZ</code> and <code>yyyy-MM-dd'T'HH:mm:ss.SSSZ</code> where <code>yyyy</code>, <code>MM</code>, and <code>dd</code> represent the year, month, and day respectively and <code>HH</code>, <code>mm</code>, <code>ss</code>, and if applicable, <code>SSS</code> represent the hour, month, second and milliseconds respsectively. <code>'T'</code> and <code>Z</code> are constants.</p></li>
209    /// </ul>
210    pub fn set_event_time_feature_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
211        self.inner = self.inner.set_event_time_feature_name(input);
212        self
213    }
214    /// <p>The name of the feature that stores the <code>EventTime</code> of a <code>Record</code> in a <code>FeatureGroup</code>.</p>
215    /// <p>An <code>EventTime</code> is a point in time when a new event occurs that corresponds to the creation or update of a <code>Record</code> in a <code>FeatureGroup</code>. All <code>Records</code> in the <code>FeatureGroup</code> must have a corresponding <code>EventTime</code>.</p>
216    /// <p>An <code>EventTime</code> can be a <code>String</code> or <code>Fractional</code>.</p>
217    /// <ul>
218    /// <li>
219    /// <p><code>Fractional</code>: <code>EventTime</code> feature values must be a Unix timestamp in seconds.</p></li>
220    /// <li>
221    /// <p><code>String</code>: <code>EventTime</code> feature values must be an ISO-8601 string in the format. The following formats are supported <code>yyyy-MM-dd'T'HH:mm:ssZ</code> and <code>yyyy-MM-dd'T'HH:mm:ss.SSSZ</code> where <code>yyyy</code>, <code>MM</code>, and <code>dd</code> represent the year, month, and day respectively and <code>HH</code>, <code>mm</code>, <code>ss</code>, and if applicable, <code>SSS</code> represent the hour, month, second and milliseconds respsectively. <code>'T'</code> and <code>Z</code> are constants.</p></li>
222    /// </ul>
223    pub fn get_event_time_feature_name(&self) -> &::std::option::Option<::std::string::String> {
224        self.inner.get_event_time_feature_name()
225    }
226    ///
227    /// Appends an item to `FeatureDefinitions`.
228    ///
229    /// To override the contents of this collection use [`set_feature_definitions`](Self::set_feature_definitions).
230    ///
231    /// <p>A list of <code>Feature</code> names and types. <code>Name</code> and <code>Type</code> is compulsory per <code>Feature</code>.</p>
232    /// <p>Valid feature <code>FeatureType</code>s are <code>Integral</code>, <code>Fractional</code> and <code>String</code>.</p>
233    /// <p><code>FeatureName</code>s cannot be any of the following: <code>is_deleted</code>, <code>write_time</code>, <code>api_invocation_time</code></p>
234    /// <p>You can create up to 2,500 <code>FeatureDefinition</code>s per <code>FeatureGroup</code>.</p>
235    pub fn feature_definitions(mut self, input: crate::types::FeatureDefinition) -> Self {
236        self.inner = self.inner.feature_definitions(input);
237        self
238    }
239    /// <p>A list of <code>Feature</code> names and types. <code>Name</code> and <code>Type</code> is compulsory per <code>Feature</code>.</p>
240    /// <p>Valid feature <code>FeatureType</code>s are <code>Integral</code>, <code>Fractional</code> and <code>String</code>.</p>
241    /// <p><code>FeatureName</code>s cannot be any of the following: <code>is_deleted</code>, <code>write_time</code>, <code>api_invocation_time</code></p>
242    /// <p>You can create up to 2,500 <code>FeatureDefinition</code>s per <code>FeatureGroup</code>.</p>
243    pub fn set_feature_definitions(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::FeatureDefinition>>) -> Self {
244        self.inner = self.inner.set_feature_definitions(input);
245        self
246    }
247    /// <p>A list of <code>Feature</code> names and types. <code>Name</code> and <code>Type</code> is compulsory per <code>Feature</code>.</p>
248    /// <p>Valid feature <code>FeatureType</code>s are <code>Integral</code>, <code>Fractional</code> and <code>String</code>.</p>
249    /// <p><code>FeatureName</code>s cannot be any of the following: <code>is_deleted</code>, <code>write_time</code>, <code>api_invocation_time</code></p>
250    /// <p>You can create up to 2,500 <code>FeatureDefinition</code>s per <code>FeatureGroup</code>.</p>
251    pub fn get_feature_definitions(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::FeatureDefinition>> {
252        self.inner.get_feature_definitions()
253    }
254    /// <p>You can turn the <code>OnlineStore</code> on or off by specifying <code>True</code> for the <code>EnableOnlineStore</code> flag in <code>OnlineStoreConfig</code>.</p>
255    /// <p>You can also include an Amazon Web Services KMS key ID (<code>KMSKeyId</code>) for at-rest encryption of the <code>OnlineStore</code>.</p>
256    /// <p>The default value is <code>False</code>.</p>
257    pub fn online_store_config(mut self, input: crate::types::OnlineStoreConfig) -> Self {
258        self.inner = self.inner.online_store_config(input);
259        self
260    }
261    /// <p>You can turn the <code>OnlineStore</code> on or off by specifying <code>True</code> for the <code>EnableOnlineStore</code> flag in <code>OnlineStoreConfig</code>.</p>
262    /// <p>You can also include an Amazon Web Services KMS key ID (<code>KMSKeyId</code>) for at-rest encryption of the <code>OnlineStore</code>.</p>
263    /// <p>The default value is <code>False</code>.</p>
264    pub fn set_online_store_config(mut self, input: ::std::option::Option<crate::types::OnlineStoreConfig>) -> Self {
265        self.inner = self.inner.set_online_store_config(input);
266        self
267    }
268    /// <p>You can turn the <code>OnlineStore</code> on or off by specifying <code>True</code> for the <code>EnableOnlineStore</code> flag in <code>OnlineStoreConfig</code>.</p>
269    /// <p>You can also include an Amazon Web Services KMS key ID (<code>KMSKeyId</code>) for at-rest encryption of the <code>OnlineStore</code>.</p>
270    /// <p>The default value is <code>False</code>.</p>
271    pub fn get_online_store_config(&self) -> &::std::option::Option<crate::types::OnlineStoreConfig> {
272        self.inner.get_online_store_config()
273    }
274    /// <p>Use this to configure an <code>OfflineFeatureStore</code>. This parameter allows you to specify:</p>
275    /// <ul>
276    /// <li>
277    /// <p>The Amazon Simple Storage Service (Amazon S3) location of an <code>OfflineStore</code>.</p></li>
278    /// <li>
279    /// <p>A configuration for an Amazon Web Services Glue or Amazon Web Services Hive data catalog.</p></li>
280    /// <li>
281    /// <p>An KMS encryption key to encrypt the Amazon S3 location used for <code>OfflineStore</code>. If KMS encryption key is not specified, by default we encrypt all data at rest using Amazon Web Services KMS key. By defining your <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-key.html">bucket-level key</a> for SSE, you can reduce Amazon Web Services KMS requests costs by up to 99 percent.</p></li>
282    /// <li>
283    /// <p>Format for the offline store table. Supported formats are Glue (Default) and <a href="https://iceberg.apache.org/">Apache Iceberg</a>.</p></li>
284    /// </ul>
285    /// <p>To learn more about this parameter, see <a href="https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_OfflineStoreConfig.html">OfflineStoreConfig</a>.</p>
286    pub fn offline_store_config(mut self, input: crate::types::OfflineStoreConfig) -> Self {
287        self.inner = self.inner.offline_store_config(input);
288        self
289    }
290    /// <p>Use this to configure an <code>OfflineFeatureStore</code>. This parameter allows you to specify:</p>
291    /// <ul>
292    /// <li>
293    /// <p>The Amazon Simple Storage Service (Amazon S3) location of an <code>OfflineStore</code>.</p></li>
294    /// <li>
295    /// <p>A configuration for an Amazon Web Services Glue or Amazon Web Services Hive data catalog.</p></li>
296    /// <li>
297    /// <p>An KMS encryption key to encrypt the Amazon S3 location used for <code>OfflineStore</code>. If KMS encryption key is not specified, by default we encrypt all data at rest using Amazon Web Services KMS key. By defining your <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-key.html">bucket-level key</a> for SSE, you can reduce Amazon Web Services KMS requests costs by up to 99 percent.</p></li>
298    /// <li>
299    /// <p>Format for the offline store table. Supported formats are Glue (Default) and <a href="https://iceberg.apache.org/">Apache Iceberg</a>.</p></li>
300    /// </ul>
301    /// <p>To learn more about this parameter, see <a href="https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_OfflineStoreConfig.html">OfflineStoreConfig</a>.</p>
302    pub fn set_offline_store_config(mut self, input: ::std::option::Option<crate::types::OfflineStoreConfig>) -> Self {
303        self.inner = self.inner.set_offline_store_config(input);
304        self
305    }
306    /// <p>Use this to configure an <code>OfflineFeatureStore</code>. This parameter allows you to specify:</p>
307    /// <ul>
308    /// <li>
309    /// <p>The Amazon Simple Storage Service (Amazon S3) location of an <code>OfflineStore</code>.</p></li>
310    /// <li>
311    /// <p>A configuration for an Amazon Web Services Glue or Amazon Web Services Hive data catalog.</p></li>
312    /// <li>
313    /// <p>An KMS encryption key to encrypt the Amazon S3 location used for <code>OfflineStore</code>. If KMS encryption key is not specified, by default we encrypt all data at rest using Amazon Web Services KMS key. By defining your <a href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-key.html">bucket-level key</a> for SSE, you can reduce Amazon Web Services KMS requests costs by up to 99 percent.</p></li>
314    /// <li>
315    /// <p>Format for the offline store table. Supported formats are Glue (Default) and <a href="https://iceberg.apache.org/">Apache Iceberg</a>.</p></li>
316    /// </ul>
317    /// <p>To learn more about this parameter, see <a href="https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_OfflineStoreConfig.html">OfflineStoreConfig</a>.</p>
318    pub fn get_offline_store_config(&self) -> &::std::option::Option<crate::types::OfflineStoreConfig> {
319        self.inner.get_offline_store_config()
320    }
321    /// <p>Used to set feature group throughput configuration. There are two modes: <code>ON_DEMAND</code> and <code>PROVISIONED</code>. With on-demand mode, you are charged for data reads and writes that your application performs on your feature group. You do not need to specify read and write throughput because Feature Store accommodates your workloads as they ramp up and down. You can switch a feature group to on-demand only once in a 24 hour period. With provisioned throughput mode, you specify the read and write capacity per second that you expect your application to require, and you are billed based on those limits. Exceeding provisioned throughput will result in your requests being throttled.</p>
322    /// <p>Note: <code>PROVISIONED</code> throughput mode is supported only for feature groups that are offline-only, or use the <a href="https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_OnlineStoreConfig.html#sagemaker-Type-OnlineStoreConfig-StorageType"> <code>Standard</code> </a> tier online store.</p>
323    pub fn throughput_config(mut self, input: crate::types::ThroughputConfig) -> Self {
324        self.inner = self.inner.throughput_config(input);
325        self
326    }
327    /// <p>Used to set feature group throughput configuration. There are two modes: <code>ON_DEMAND</code> and <code>PROVISIONED</code>. With on-demand mode, you are charged for data reads and writes that your application performs on your feature group. You do not need to specify read and write throughput because Feature Store accommodates your workloads as they ramp up and down. You can switch a feature group to on-demand only once in a 24 hour period. With provisioned throughput mode, you specify the read and write capacity per second that you expect your application to require, and you are billed based on those limits. Exceeding provisioned throughput will result in your requests being throttled.</p>
328    /// <p>Note: <code>PROVISIONED</code> throughput mode is supported only for feature groups that are offline-only, or use the <a href="https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_OnlineStoreConfig.html#sagemaker-Type-OnlineStoreConfig-StorageType"> <code>Standard</code> </a> tier online store.</p>
329    pub fn set_throughput_config(mut self, input: ::std::option::Option<crate::types::ThroughputConfig>) -> Self {
330        self.inner = self.inner.set_throughput_config(input);
331        self
332    }
333    /// <p>Used to set feature group throughput configuration. There are two modes: <code>ON_DEMAND</code> and <code>PROVISIONED</code>. With on-demand mode, you are charged for data reads and writes that your application performs on your feature group. You do not need to specify read and write throughput because Feature Store accommodates your workloads as they ramp up and down. You can switch a feature group to on-demand only once in a 24 hour period. With provisioned throughput mode, you specify the read and write capacity per second that you expect your application to require, and you are billed based on those limits. Exceeding provisioned throughput will result in your requests being throttled.</p>
334    /// <p>Note: <code>PROVISIONED</code> throughput mode is supported only for feature groups that are offline-only, or use the <a href="https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_OnlineStoreConfig.html#sagemaker-Type-OnlineStoreConfig-StorageType"> <code>Standard</code> </a> tier online store.</p>
335    pub fn get_throughput_config(&self) -> &::std::option::Option<crate::types::ThroughputConfig> {
336        self.inner.get_throughput_config()
337    }
338    /// <p>The Amazon Resource Name (ARN) of the IAM execution role used to persist data into the <code>OfflineStore</code> if an <code>OfflineStoreConfig</code> is provided.</p>
339    pub fn role_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
340        self.inner = self.inner.role_arn(input.into());
341        self
342    }
343    /// <p>The Amazon Resource Name (ARN) of the IAM execution role used to persist data into the <code>OfflineStore</code> if an <code>OfflineStoreConfig</code> is provided.</p>
344    pub fn set_role_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
345        self.inner = self.inner.set_role_arn(input);
346        self
347    }
348    /// <p>The Amazon Resource Name (ARN) of the IAM execution role used to persist data into the <code>OfflineStore</code> if an <code>OfflineStoreConfig</code> is provided.</p>
349    pub fn get_role_arn(&self) -> &::std::option::Option<::std::string::String> {
350        self.inner.get_role_arn()
351    }
352    /// <p>A free-form description of a <code>FeatureGroup</code>.</p>
353    pub fn description(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
354        self.inner = self.inner.description(input.into());
355        self
356    }
357    /// <p>A free-form description of a <code>FeatureGroup</code>.</p>
358    pub fn set_description(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
359        self.inner = self.inner.set_description(input);
360        self
361    }
362    /// <p>A free-form description of a <code>FeatureGroup</code>.</p>
363    pub fn get_description(&self) -> &::std::option::Option<::std::string::String> {
364        self.inner.get_description()
365    }
366    ///
367    /// Appends an item to `Tags`.
368    ///
369    /// To override the contents of this collection use [`set_tags`](Self::set_tags).
370    ///
371    /// <p>Tags used to identify <code>Features</code> in each <code>FeatureGroup</code>.</p>
372    pub fn tags(mut self, input: crate::types::Tag) -> Self {
373        self.inner = self.inner.tags(input);
374        self
375    }
376    /// <p>Tags used to identify <code>Features</code> in each <code>FeatureGroup</code>.</p>
377    pub fn set_tags(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::Tag>>) -> Self {
378        self.inner = self.inner.set_tags(input);
379        self
380    }
381    /// <p>Tags used to identify <code>Features</code> in each <code>FeatureGroup</code>.</p>
382    pub fn get_tags(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::Tag>> {
383        self.inner.get_tags()
384    }
385}