Skip to main content

aws_sdk_ecs/operation/tag_resource/
builders.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2pub use crate::operation::tag_resource::_tag_resource_input::TagResourceInputBuilder;
3
4pub use crate::operation::tag_resource::_tag_resource_output::TagResourceOutputBuilder;
5
6impl crate::operation::tag_resource::builders::TagResourceInputBuilder {
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::tag_resource::TagResourceOutput,
13        ::aws_smithy_runtime_api::client::result::SdkError<
14            crate::operation::tag_resource::TagResourceError,
15            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
16        >,
17    > {
18        let mut fluent_builder = client.tag_resource();
19        fluent_builder.inner = self;
20        fluent_builder.send().await
21    }
22}
23/// Fluent builder constructing a request to `TagResource`.
24///
25/// <p>Associates the specified tags to a resource with the specified <code>resourceArn</code>. If existing tags on a resource aren't specified in the request parameters, they aren't changed. When a resource is deleted, the tags that are associated with that resource are deleted as well.</p>
26#[derive(::std::clone::Clone, ::std::fmt::Debug)]
27pub struct TagResourceFluentBuilder {
28    handle: ::std::sync::Arc<crate::client::Handle>,
29    inner: crate::operation::tag_resource::builders::TagResourceInputBuilder,
30    config_override: ::std::option::Option<crate::config::Builder>,
31}
32impl
33    crate::client::customize::internal::CustomizableSend<
34        crate::operation::tag_resource::TagResourceOutput,
35        crate::operation::tag_resource::TagResourceError,
36    > for TagResourceFluentBuilder
37{
38    fn send(
39        self,
40        config_override: crate::config::Builder,
41    ) -> crate::client::customize::internal::BoxFuture<
42        crate::client::customize::internal::SendResult<
43            crate::operation::tag_resource::TagResourceOutput,
44            crate::operation::tag_resource::TagResourceError,
45        >,
46    > {
47        ::std::boxed::Box::pin(async move { self.config_override(config_override).send().await })
48    }
49}
50impl TagResourceFluentBuilder {
51    /// Creates a new `TagResourceFluentBuilder`.
52    pub(crate) fn new(handle: ::std::sync::Arc<crate::client::Handle>) -> Self {
53        Self {
54            handle,
55            inner: ::std::default::Default::default(),
56            config_override: ::std::option::Option::None,
57        }
58    }
59    /// Access the TagResource as a reference.
60    pub fn as_input(&self) -> &crate::operation::tag_resource::builders::TagResourceInputBuilder {
61        &self.inner
62    }
63    /// Sends the request and returns the response.
64    ///
65    /// If an error occurs, an `SdkError` will be returned with additional details that
66    /// can be matched against.
67    ///
68    /// By default, any retryable failures will be retried twice. Retry behavior
69    /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
70    /// set when configuring the client.
71    pub async fn send(
72        self,
73    ) -> ::std::result::Result<
74        crate::operation::tag_resource::TagResourceOutput,
75        ::aws_smithy_runtime_api::client::result::SdkError<
76            crate::operation::tag_resource::TagResourceError,
77            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
78        >,
79    > {
80        let input = self
81            .inner
82            .build()
83            .map_err(::aws_smithy_runtime_api::client::result::SdkError::construction_failure)?;
84        let runtime_plugins = crate::operation::tag_resource::TagResource::operation_runtime_plugins(
85            self.handle.runtime_plugins.clone(),
86            &self.handle.conf,
87            self.config_override,
88        );
89        crate::operation::tag_resource::TagResource::orchestrate(&runtime_plugins, input).await
90    }
91
92    /// Consumes this builder, creating a customizable operation that can be modified before being sent.
93    pub fn customize(
94        self,
95    ) -> crate::client::customize::CustomizableOperation<
96        crate::operation::tag_resource::TagResourceOutput,
97        crate::operation::tag_resource::TagResourceError,
98        Self,
99    > {
100        crate::client::customize::CustomizableOperation::new(self)
101    }
102    pub(crate) fn config_override(mut self, config_override: impl ::std::convert::Into<crate::config::Builder>) -> Self {
103        self.set_config_override(::std::option::Option::Some(config_override.into()));
104        self
105    }
106
107    pub(crate) fn set_config_override(&mut self, config_override: ::std::option::Option<crate::config::Builder>) -> &mut Self {
108        self.config_override = config_override;
109        self
110    }
111    /// <p>The Amazon Resource Name (ARN) of the resource to add tags to. Currently, the supported resources are Amazon ECS capacity providers, tasks, services, task definitions, clusters, and container instances.</p>
112    /// <p>In order to tag a service that has the following ARN format, you need to migrate the service to the long ARN. For more information, see <a href="https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-arn-migration.html">Migrate an Amazon ECS short service ARN to a long ARN</a> in the <i>Amazon Elastic Container Service Developer Guide</i>.</p>
113    /// <p><code>arn:aws:ecs:region:aws_account_id:service/service-name</code></p>
114    /// <p>After the migration is complete, the service has the long ARN format, as shown below. Use this ARN to tag the service.</p>
115    /// <p><code>arn:aws:ecs:region:aws_account_id:service/cluster-name/service-name</code></p>
116    /// <p>If you try to tag a service with a short ARN, you receive an <code>InvalidParameterException</code> error.</p>
117    pub fn resource_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
118        self.inner = self.inner.resource_arn(input.into());
119        self
120    }
121    /// <p>The Amazon Resource Name (ARN) of the resource to add tags to. Currently, the supported resources are Amazon ECS capacity providers, tasks, services, task definitions, clusters, and container instances.</p>
122    /// <p>In order to tag a service that has the following ARN format, you need to migrate the service to the long ARN. For more information, see <a href="https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-arn-migration.html">Migrate an Amazon ECS short service ARN to a long ARN</a> in the <i>Amazon Elastic Container Service Developer Guide</i>.</p>
123    /// <p><code>arn:aws:ecs:region:aws_account_id:service/service-name</code></p>
124    /// <p>After the migration is complete, the service has the long ARN format, as shown below. Use this ARN to tag the service.</p>
125    /// <p><code>arn:aws:ecs:region:aws_account_id:service/cluster-name/service-name</code></p>
126    /// <p>If you try to tag a service with a short ARN, you receive an <code>InvalidParameterException</code> error.</p>
127    pub fn set_resource_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
128        self.inner = self.inner.set_resource_arn(input);
129        self
130    }
131    /// <p>The Amazon Resource Name (ARN) of the resource to add tags to. Currently, the supported resources are Amazon ECS capacity providers, tasks, services, task definitions, clusters, and container instances.</p>
132    /// <p>In order to tag a service that has the following ARN format, you need to migrate the service to the long ARN. For more information, see <a href="https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-arn-migration.html">Migrate an Amazon ECS short service ARN to a long ARN</a> in the <i>Amazon Elastic Container Service Developer Guide</i>.</p>
133    /// <p><code>arn:aws:ecs:region:aws_account_id:service/service-name</code></p>
134    /// <p>After the migration is complete, the service has the long ARN format, as shown below. Use this ARN to tag the service.</p>
135    /// <p><code>arn:aws:ecs:region:aws_account_id:service/cluster-name/service-name</code></p>
136    /// <p>If you try to tag a service with a short ARN, you receive an <code>InvalidParameterException</code> error.</p>
137    pub fn get_resource_arn(&self) -> &::std::option::Option<::std::string::String> {
138        self.inner.get_resource_arn()
139    }
140    ///
141    /// Appends an item to `tags`.
142    ///
143    /// To override the contents of this collection use [`set_tags`](Self::set_tags).
144    ///
145    /// <p>The tags to add to the resource. A tag is an array of key-value pairs.</p>
146    /// <p>The following basic restrictions apply to tags:</p>
147    /// <ul>
148    /// <li>
149    /// <p>Maximum number of tags per resource - 50</p></li>
150    /// <li>
151    /// <p>For each resource, each tag key must be unique, and each tag key can have only one value.</p></li>
152    /// <li>
153    /// <p>Maximum key length - 128 Unicode characters in UTF-8</p></li>
154    /// <li>
155    /// <p>Maximum value length - 256 Unicode characters in UTF-8</p></li>
156    /// <li>
157    /// <p>If your tagging schema is used across multiple services and resources, remember that other services may have restrictions on allowed characters. Generally allowed characters are: letters, numbers, and spaces representable in UTF-8, and the following characters: + - = . _ : / @.</p></li>
158    /// <li>
159    /// <p>Tag keys and values are case-sensitive.</p></li>
160    /// <li>
161    /// <p>Do not use <code>aws:</code>, <code>AWS:</code>, or any upper or lowercase combination of such as a prefix for either keys or values as it is reserved for Amazon Web Services use. You cannot edit or delete tag keys or values with this prefix. Tags with this prefix do not count against your tags per resource limit.</p></li>
162    /// </ul>
163    pub fn tags(mut self, input: crate::types::Tag) -> Self {
164        self.inner = self.inner.tags(input);
165        self
166    }
167    /// <p>The tags to add to the resource. A tag is an array of key-value pairs.</p>
168    /// <p>The following basic restrictions apply to tags:</p>
169    /// <ul>
170    /// <li>
171    /// <p>Maximum number of tags per resource - 50</p></li>
172    /// <li>
173    /// <p>For each resource, each tag key must be unique, and each tag key can have only one value.</p></li>
174    /// <li>
175    /// <p>Maximum key length - 128 Unicode characters in UTF-8</p></li>
176    /// <li>
177    /// <p>Maximum value length - 256 Unicode characters in UTF-8</p></li>
178    /// <li>
179    /// <p>If your tagging schema is used across multiple services and resources, remember that other services may have restrictions on allowed characters. Generally allowed characters are: letters, numbers, and spaces representable in UTF-8, and the following characters: + - = . _ : / @.</p></li>
180    /// <li>
181    /// <p>Tag keys and values are case-sensitive.</p></li>
182    /// <li>
183    /// <p>Do not use <code>aws:</code>, <code>AWS:</code>, or any upper or lowercase combination of such as a prefix for either keys or values as it is reserved for Amazon Web Services use. You cannot edit or delete tag keys or values with this prefix. Tags with this prefix do not count against your tags per resource limit.</p></li>
184    /// </ul>
185    pub fn set_tags(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::Tag>>) -> Self {
186        self.inner = self.inner.set_tags(input);
187        self
188    }
189    /// <p>The tags to add to the resource. A tag is an array of key-value pairs.</p>
190    /// <p>The following basic restrictions apply to tags:</p>
191    /// <ul>
192    /// <li>
193    /// <p>Maximum number of tags per resource - 50</p></li>
194    /// <li>
195    /// <p>For each resource, each tag key must be unique, and each tag key can have only one value.</p></li>
196    /// <li>
197    /// <p>Maximum key length - 128 Unicode characters in UTF-8</p></li>
198    /// <li>
199    /// <p>Maximum value length - 256 Unicode characters in UTF-8</p></li>
200    /// <li>
201    /// <p>If your tagging schema is used across multiple services and resources, remember that other services may have restrictions on allowed characters. Generally allowed characters are: letters, numbers, and spaces representable in UTF-8, and the following characters: + - = . _ : / @.</p></li>
202    /// <li>
203    /// <p>Tag keys and values are case-sensitive.</p></li>
204    /// <li>
205    /// <p>Do not use <code>aws:</code>, <code>AWS:</code>, or any upper or lowercase combination of such as a prefix for either keys or values as it is reserved for Amazon Web Services use. You cannot edit or delete tag keys or values with this prefix. Tags with this prefix do not count against your tags per resource limit.</p></li>
206    /// </ul>
207    pub fn get_tags(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::Tag>> {
208        self.inner.get_tags()
209    }
210}