aws_sdk_rum/operation/batch_create_rum_metric_definitions/
builders.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2pub use crate::operation::batch_create_rum_metric_definitions::_batch_create_rum_metric_definitions_output::BatchCreateRumMetricDefinitionsOutputBuilder;
3
4pub use crate::operation::batch_create_rum_metric_definitions::_batch_create_rum_metric_definitions_input::BatchCreateRumMetricDefinitionsInputBuilder;
5
6impl crate::operation::batch_create_rum_metric_definitions::builders::BatchCreateRumMetricDefinitionsInputBuilder {
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::batch_create_rum_metric_definitions::BatchCreateRumMetricDefinitionsOutput,
13        ::aws_smithy_runtime_api::client::result::SdkError<
14            crate::operation::batch_create_rum_metric_definitions::BatchCreateRumMetricDefinitionsError,
15            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
16        >,
17    > {
18        let mut fluent_builder = client.batch_create_rum_metric_definitions();
19        fluent_builder.inner = self;
20        fluent_builder.send().await
21    }
22}
23/// Fluent builder constructing a request to `BatchCreateRumMetricDefinitions`.
24///
25/// <p>Specifies the extended metrics and custom metrics that you want a CloudWatch RUM app monitor to send to a destination. Valid destinations include CloudWatch and Evidently.</p>
26/// <p>By default, RUM app monitors send some metrics to CloudWatch. These default metrics are listed in <a href="https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-RUM-metrics.html">CloudWatch metrics that you can collect with CloudWatch RUM</a>.</p>
27/// <p>In addition to these default metrics, you can choose to send extended metrics, custom metrics, or both.</p>
28/// <ul>
29/// <li>
30/// <p>Extended metrics let you send metrics with additional dimensions that aren't included in the default metrics. You can also send extended metrics to both Evidently and CloudWatch. The valid dimension names for the additional dimensions for extended metrics are <code>BrowserName</code>, <code>CountryCode</code>, <code>DeviceType</code>, <code>FileType</code>, <code>OSName</code>, and <code>PageId</code>. For more information, see <a href="https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-RUM-vended-metrics.html"> Extended metrics that you can send to CloudWatch and CloudWatch Evidently</a>.</p></li>
31/// <li>
32/// <p>Custom metrics are metrics that you define. You can send custom metrics to CloudWatch. CloudWatch Evidently, or both. With custom metrics, you can use any metric name and namespace. To derive the metrics, you can use any custom events, built-in events, custom attributes, or default attributes.</p>
33/// <p>You can't send custom metrics to the <code>AWS/RUM</code> namespace. You must send custom metrics to a custom namespace that you define. The namespace that you use can't start with <code>AWS/</code>. CloudWatch RUM prepends <code>RUM/CustomMetrics/</code> to the custom namespace that you define, so the final namespace for your metrics in CloudWatch is <code>RUM/CustomMetrics/<i>your-custom-namespace</i> </code>.</p></li>
34/// </ul>
35/// <p>The maximum number of metric definitions that you can specify in one <code>BatchCreateRumMetricDefinitions</code> operation is 200.</p>
36/// <p>The maximum number of metric definitions that one destination can contain is 2000.</p>
37/// <p>Extended metrics sent to CloudWatch and RUM custom metrics are charged as CloudWatch custom metrics. Each combination of additional dimension name and dimension value counts as a custom metric. For more information, see <a href="https://aws.amazon.com/cloudwatch/pricing/">Amazon CloudWatch Pricing</a>.</p>
38/// <p>You must have already created a destination for the metrics before you send them. For more information, see <a href="https://docs.aws.amazon.com/cloudwatchrum/latest/APIReference/API_PutRumMetricsDestination.html">PutRumMetricsDestination</a>.</p>
39/// <p>If some metric definitions specified in a <code>BatchCreateRumMetricDefinitions</code> operations are not valid, those metric definitions fail and return errors, but all valid metric definitions in the same operation still succeed.</p>
40#[derive(::std::clone::Clone, ::std::fmt::Debug)]
41pub struct BatchCreateRumMetricDefinitionsFluentBuilder {
42    handle: ::std::sync::Arc<crate::client::Handle>,
43    inner: crate::operation::batch_create_rum_metric_definitions::builders::BatchCreateRumMetricDefinitionsInputBuilder,
44    config_override: ::std::option::Option<crate::config::Builder>,
45}
46impl
47    crate::client::customize::internal::CustomizableSend<
48        crate::operation::batch_create_rum_metric_definitions::BatchCreateRumMetricDefinitionsOutput,
49        crate::operation::batch_create_rum_metric_definitions::BatchCreateRumMetricDefinitionsError,
50    > for BatchCreateRumMetricDefinitionsFluentBuilder
51{
52    fn send(
53        self,
54        config_override: crate::config::Builder,
55    ) -> crate::client::customize::internal::BoxFuture<
56        crate::client::customize::internal::SendResult<
57            crate::operation::batch_create_rum_metric_definitions::BatchCreateRumMetricDefinitionsOutput,
58            crate::operation::batch_create_rum_metric_definitions::BatchCreateRumMetricDefinitionsError,
59        >,
60    > {
61        ::std::boxed::Box::pin(async move { self.config_override(config_override).send().await })
62    }
63}
64impl BatchCreateRumMetricDefinitionsFluentBuilder {
65    /// Creates a new `BatchCreateRumMetricDefinitionsFluentBuilder`.
66    pub(crate) fn new(handle: ::std::sync::Arc<crate::client::Handle>) -> Self {
67        Self {
68            handle,
69            inner: ::std::default::Default::default(),
70            config_override: ::std::option::Option::None,
71        }
72    }
73    /// Access the BatchCreateRumMetricDefinitions as a reference.
74    pub fn as_input(&self) -> &crate::operation::batch_create_rum_metric_definitions::builders::BatchCreateRumMetricDefinitionsInputBuilder {
75        &self.inner
76    }
77    /// Sends the request and returns the response.
78    ///
79    /// If an error occurs, an `SdkError` will be returned with additional details that
80    /// can be matched against.
81    ///
82    /// By default, any retryable failures will be retried twice. Retry behavior
83    /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
84    /// set when configuring the client.
85    pub async fn send(
86        self,
87    ) -> ::std::result::Result<
88        crate::operation::batch_create_rum_metric_definitions::BatchCreateRumMetricDefinitionsOutput,
89        ::aws_smithy_runtime_api::client::result::SdkError<
90            crate::operation::batch_create_rum_metric_definitions::BatchCreateRumMetricDefinitionsError,
91            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
92        >,
93    > {
94        let input = self
95            .inner
96            .build()
97            .map_err(::aws_smithy_runtime_api::client::result::SdkError::construction_failure)?;
98        let runtime_plugins = crate::operation::batch_create_rum_metric_definitions::BatchCreateRumMetricDefinitions::operation_runtime_plugins(
99            self.handle.runtime_plugins.clone(),
100            &self.handle.conf,
101            self.config_override,
102        );
103        crate::operation::batch_create_rum_metric_definitions::BatchCreateRumMetricDefinitions::orchestrate(&runtime_plugins, input).await
104    }
105
106    /// Consumes this builder, creating a customizable operation that can be modified before being sent.
107    pub fn customize(
108        self,
109    ) -> crate::client::customize::CustomizableOperation<
110        crate::operation::batch_create_rum_metric_definitions::BatchCreateRumMetricDefinitionsOutput,
111        crate::operation::batch_create_rum_metric_definitions::BatchCreateRumMetricDefinitionsError,
112        Self,
113    > {
114        crate::client::customize::CustomizableOperation::new(self)
115    }
116    pub(crate) fn config_override(mut self, config_override: impl ::std::convert::Into<crate::config::Builder>) -> Self {
117        self.set_config_override(::std::option::Option::Some(config_override.into()));
118        self
119    }
120
121    pub(crate) fn set_config_override(&mut self, config_override: ::std::option::Option<crate::config::Builder>) -> &mut Self {
122        self.config_override = config_override;
123        self
124    }
125    /// <p>The name of the CloudWatch RUM app monitor that is to send the metrics.</p>
126    pub fn app_monitor_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
127        self.inner = self.inner.app_monitor_name(input.into());
128        self
129    }
130    /// <p>The name of the CloudWatch RUM app monitor that is to send the metrics.</p>
131    pub fn set_app_monitor_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
132        self.inner = self.inner.set_app_monitor_name(input);
133        self
134    }
135    /// <p>The name of the CloudWatch RUM app monitor that is to send the metrics.</p>
136    pub fn get_app_monitor_name(&self) -> &::std::option::Option<::std::string::String> {
137        self.inner.get_app_monitor_name()
138    }
139    /// <p>The destination to send the metrics to. Valid values are <code>CloudWatch</code> and <code>Evidently</code>. If you specify <code>Evidently</code>, you must also specify the Amazon Resource Name (ARN) of the CloudWatchEvidently experiment that will receive the metrics and an IAM role that has permission to write to the experiment.</p>
140    pub fn destination(mut self, input: crate::types::MetricDestination) -> Self {
141        self.inner = self.inner.destination(input);
142        self
143    }
144    /// <p>The destination to send the metrics to. Valid values are <code>CloudWatch</code> and <code>Evidently</code>. If you specify <code>Evidently</code>, you must also specify the Amazon Resource Name (ARN) of the CloudWatchEvidently experiment that will receive the metrics and an IAM role that has permission to write to the experiment.</p>
145    pub fn set_destination(mut self, input: ::std::option::Option<crate::types::MetricDestination>) -> Self {
146        self.inner = self.inner.set_destination(input);
147        self
148    }
149    /// <p>The destination to send the metrics to. Valid values are <code>CloudWatch</code> and <code>Evidently</code>. If you specify <code>Evidently</code>, you must also specify the Amazon Resource Name (ARN) of the CloudWatchEvidently experiment that will receive the metrics and an IAM role that has permission to write to the experiment.</p>
150    pub fn get_destination(&self) -> &::std::option::Option<crate::types::MetricDestination> {
151        self.inner.get_destination()
152    }
153    /// <p>This parameter is required if <code>Destination</code> is <code>Evidently</code>. If <code>Destination</code> is <code>CloudWatch</code>, do not use this parameter.</p>
154    /// <p>This parameter specifies the ARN of the Evidently experiment that is to receive the metrics. You must have already defined this experiment as a valid destination. For more information, see <a href="https://docs.aws.amazon.com/cloudwatchrum/latest/APIReference/API_PutRumMetricsDestination.html">PutRumMetricsDestination</a>.</p>
155    pub fn destination_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
156        self.inner = self.inner.destination_arn(input.into());
157        self
158    }
159    /// <p>This parameter is required if <code>Destination</code> is <code>Evidently</code>. If <code>Destination</code> is <code>CloudWatch</code>, do not use this parameter.</p>
160    /// <p>This parameter specifies the ARN of the Evidently experiment that is to receive the metrics. You must have already defined this experiment as a valid destination. For more information, see <a href="https://docs.aws.amazon.com/cloudwatchrum/latest/APIReference/API_PutRumMetricsDestination.html">PutRumMetricsDestination</a>.</p>
161    pub fn set_destination_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
162        self.inner = self.inner.set_destination_arn(input);
163        self
164    }
165    /// <p>This parameter is required if <code>Destination</code> is <code>Evidently</code>. If <code>Destination</code> is <code>CloudWatch</code>, do not use this parameter.</p>
166    /// <p>This parameter specifies the ARN of the Evidently experiment that is to receive the metrics. You must have already defined this experiment as a valid destination. For more information, see <a href="https://docs.aws.amazon.com/cloudwatchrum/latest/APIReference/API_PutRumMetricsDestination.html">PutRumMetricsDestination</a>.</p>
167    pub fn get_destination_arn(&self) -> &::std::option::Option<::std::string::String> {
168        self.inner.get_destination_arn()
169    }
170    ///
171    /// Appends an item to `MetricDefinitions`.
172    ///
173    /// To override the contents of this collection use [`set_metric_definitions`](Self::set_metric_definitions).
174    ///
175    /// <p>An array of structures which define the metrics that you want to send.</p>
176    pub fn metric_definitions(mut self, input: crate::types::MetricDefinitionRequest) -> Self {
177        self.inner = self.inner.metric_definitions(input);
178        self
179    }
180    /// <p>An array of structures which define the metrics that you want to send.</p>
181    pub fn set_metric_definitions(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::MetricDefinitionRequest>>) -> Self {
182        self.inner = self.inner.set_metric_definitions(input);
183        self
184    }
185    /// <p>An array of structures which define the metrics that you want to send.</p>
186    pub fn get_metric_definitions(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::MetricDefinitionRequest>> {
187        self.inner.get_metric_definitions()
188    }
189}