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}