aws_sdk_ec2/operation/copy_image/builders.rs
1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2pub use crate::operation::copy_image::_copy_image_output::CopyImageOutputBuilder;
3
4pub use crate::operation::copy_image::_copy_image_input::CopyImageInputBuilder;
5
6impl crate::operation::copy_image::builders::CopyImageInputBuilder {
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::copy_image::CopyImageOutput,
13        ::aws_smithy_runtime_api::client::result::SdkError<
14            crate::operation::copy_image::CopyImageError,
15            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
16        >,
17    > {
18        let mut fluent_builder = client.copy_image();
19        fluent_builder.inner = self;
20        fluent_builder.send().await
21    }
22}
23/// Fluent builder constructing a request to `CopyImage`.
24///
25/// <p>Initiates an AMI copy operation. You can copy an AMI from one Region to another, or from a Region to an Outpost. You can't copy an AMI from an Outpost to a Region, from one Outpost to another, or within the same Outpost. To copy an AMI to another partition, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateStoreImageTask.html">CreateStoreImageTask</a>.</p>
26/// <p>When you copy an AMI from one Region to another, the destination Region is the current Region.</p>
27/// <p>When you copy an AMI from a Region to an Outpost, specify the ARN of the Outpost as the destination. Backing snapshots copied to an Outpost are encrypted by default using the default encryption key for the Region or the key that you specify. Outposts do not support unencrypted snapshots.</p>
28/// <p>For information about the prerequisites when copying an AMI, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/CopyingAMIs.html">Copy an Amazon EC2 AMI</a> in the <i>Amazon EC2 User Guide</i>.</p>
29#[derive(::std::clone::Clone, ::std::fmt::Debug)]
30pub struct CopyImageFluentBuilder {
31    handle: ::std::sync::Arc<crate::client::Handle>,
32    inner: crate::operation::copy_image::builders::CopyImageInputBuilder,
33    config_override: ::std::option::Option<crate::config::Builder>,
34}
35impl crate::client::customize::internal::CustomizableSend<crate::operation::copy_image::CopyImageOutput, crate::operation::copy_image::CopyImageError>
36    for CopyImageFluentBuilder
37{
38    fn send(
39        self,
40        config_override: crate::config::Builder,
41    ) -> crate::client::customize::internal::BoxFuture<
42        crate::client::customize::internal::SendResult<crate::operation::copy_image::CopyImageOutput, crate::operation::copy_image::CopyImageError>,
43    > {
44        ::std::boxed::Box::pin(async move { self.config_override(config_override).send().await })
45    }
46}
47impl CopyImageFluentBuilder {
48    /// Creates a new `CopyImageFluentBuilder`.
49    pub(crate) fn new(handle: ::std::sync::Arc<crate::client::Handle>) -> Self {
50        Self {
51            handle,
52            inner: ::std::default::Default::default(),
53            config_override: ::std::option::Option::None,
54        }
55    }
56    /// Access the CopyImage as a reference.
57    pub fn as_input(&self) -> &crate::operation::copy_image::builders::CopyImageInputBuilder {
58        &self.inner
59    }
60    /// Sends the request and returns the response.
61    ///
62    /// If an error occurs, an `SdkError` will be returned with additional details that
63    /// can be matched against.
64    ///
65    /// By default, any retryable failures will be retried twice. Retry behavior
66    /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
67    /// set when configuring the client.
68    pub async fn send(
69        self,
70    ) -> ::std::result::Result<
71        crate::operation::copy_image::CopyImageOutput,
72        ::aws_smithy_runtime_api::client::result::SdkError<
73            crate::operation::copy_image::CopyImageError,
74            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
75        >,
76    > {
77        let input = self
78            .inner
79            .build()
80            .map_err(::aws_smithy_runtime_api::client::result::SdkError::construction_failure)?;
81        let runtime_plugins = crate::operation::copy_image::CopyImage::operation_runtime_plugins(
82            self.handle.runtime_plugins.clone(),
83            &self.handle.conf,
84            self.config_override,
85        );
86        crate::operation::copy_image::CopyImage::orchestrate(&runtime_plugins, input).await
87    }
88
89    /// Consumes this builder, creating a customizable operation that can be modified before being sent.
90    pub fn customize(
91        self,
92    ) -> crate::client::customize::CustomizableOperation<
93        crate::operation::copy_image::CopyImageOutput,
94        crate::operation::copy_image::CopyImageError,
95        Self,
96    > {
97        crate::client::customize::CustomizableOperation::new(self)
98    }
99    pub(crate) fn config_override(mut self, config_override: impl ::std::convert::Into<crate::config::Builder>) -> Self {
100        self.set_config_override(::std::option::Option::Some(config_override.into()));
101        self
102    }
103
104    pub(crate) fn set_config_override(&mut self, config_override: ::std::option::Option<crate::config::Builder>) -> &mut Self {
105        self.config_override = config_override;
106        self
107    }
108    /// <p>Unique, case-sensitive identifier you provide to ensure idempotency of the request. For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html">Ensuring idempotency in Amazon EC2 API requests</a> in the <i>Amazon EC2 API Reference</i>.</p>
109    pub fn client_token(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
110        self.inner = self.inner.client_token(input.into());
111        self
112    }
113    /// <p>Unique, case-sensitive identifier you provide to ensure idempotency of the request. For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html">Ensuring idempotency in Amazon EC2 API requests</a> in the <i>Amazon EC2 API Reference</i>.</p>
114    pub fn set_client_token(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
115        self.inner = self.inner.set_client_token(input);
116        self
117    }
118    /// <p>Unique, case-sensitive identifier you provide to ensure idempotency of the request. For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html">Ensuring idempotency in Amazon EC2 API requests</a> in the <i>Amazon EC2 API Reference</i>.</p>
119    pub fn get_client_token(&self) -> &::std::option::Option<::std::string::String> {
120        self.inner.get_client_token()
121    }
122    /// <p>A description for the new AMI in the destination Region.</p>
123    pub fn description(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
124        self.inner = self.inner.description(input.into());
125        self
126    }
127    /// <p>A description for the new AMI in the destination Region.</p>
128    pub fn set_description(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
129        self.inner = self.inner.set_description(input);
130        self
131    }
132    /// <p>A description for the new AMI in the destination Region.</p>
133    pub fn get_description(&self) -> &::std::option::Option<::std::string::String> {
134        self.inner.get_description()
135    }
136    /// <p>Specifies whether the destination snapshots of the copied image should be encrypted. You can encrypt a copy of an unencrypted snapshot, but you cannot create an unencrypted copy of an encrypted snapshot. The default KMS key for Amazon EBS is used unless you specify a non-default Key Management Service (KMS) KMS key using <code>KmsKeyId</code>. For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIEncryption.html">Use encryption with EBS-backed AMIs</a> in the <i>Amazon EC2 User Guide</i>.</p>
137    pub fn encrypted(mut self, input: bool) -> Self {
138        self.inner = self.inner.encrypted(input);
139        self
140    }
141    /// <p>Specifies whether the destination snapshots of the copied image should be encrypted. You can encrypt a copy of an unencrypted snapshot, but you cannot create an unencrypted copy of an encrypted snapshot. The default KMS key for Amazon EBS is used unless you specify a non-default Key Management Service (KMS) KMS key using <code>KmsKeyId</code>. For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIEncryption.html">Use encryption with EBS-backed AMIs</a> in the <i>Amazon EC2 User Guide</i>.</p>
142    pub fn set_encrypted(mut self, input: ::std::option::Option<bool>) -> Self {
143        self.inner = self.inner.set_encrypted(input);
144        self
145    }
146    /// <p>Specifies whether the destination snapshots of the copied image should be encrypted. You can encrypt a copy of an unencrypted snapshot, but you cannot create an unencrypted copy of an encrypted snapshot. The default KMS key for Amazon EBS is used unless you specify a non-default Key Management Service (KMS) KMS key using <code>KmsKeyId</code>. For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIEncryption.html">Use encryption with EBS-backed AMIs</a> in the <i>Amazon EC2 User Guide</i>.</p>
147    pub fn get_encrypted(&self) -> &::std::option::Option<bool> {
148        self.inner.get_encrypted()
149    }
150    /// <p>The identifier of the symmetric Key Management Service (KMS) KMS key to use when creating encrypted volumes. If this parameter is not specified, your Amazon Web Services managed KMS key for Amazon EBS is used. If you specify a KMS key, you must also set the encrypted state to <code>true</code>.</p>
151    /// <p>You can specify a KMS key using any of the following:</p>
152    /// <ul>
153    /// <li>
154    /// <p>Key ID. For example, 1234abcd-12ab-34cd-56ef-1234567890ab.</p></li>
155    /// <li>
156    /// <p>Key alias. For example, alias/ExampleAlias.</p></li>
157    /// <li>
158    /// <p>Key ARN. For example, arn:aws:kms:us-east-1:012345678910:key/1234abcd-12ab-34cd-56ef-1234567890ab.</p></li>
159    /// <li>
160    /// <p>Alias ARN. For example, arn:aws:kms:us-east-1:012345678910:alias/ExampleAlias.</p></li>
161    /// </ul>
162    /// <p>Amazon Web Services authenticates the KMS key asynchronously. Therefore, if you specify an identifier that is not valid, the action can appear to complete, but eventually fails.</p>
163    /// <p>The specified KMS key must exist in the destination Region.</p>
164    /// <p>Amazon EBS does not support asymmetric KMS keys.</p>
165    pub fn kms_key_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
166        self.inner = self.inner.kms_key_id(input.into());
167        self
168    }
169    /// <p>The identifier of the symmetric Key Management Service (KMS) KMS key to use when creating encrypted volumes. If this parameter is not specified, your Amazon Web Services managed KMS key for Amazon EBS is used. If you specify a KMS key, you must also set the encrypted state to <code>true</code>.</p>
170    /// <p>You can specify a KMS key using any of the following:</p>
171    /// <ul>
172    /// <li>
173    /// <p>Key ID. For example, 1234abcd-12ab-34cd-56ef-1234567890ab.</p></li>
174    /// <li>
175    /// <p>Key alias. For example, alias/ExampleAlias.</p></li>
176    /// <li>
177    /// <p>Key ARN. For example, arn:aws:kms:us-east-1:012345678910:key/1234abcd-12ab-34cd-56ef-1234567890ab.</p></li>
178    /// <li>
179    /// <p>Alias ARN. For example, arn:aws:kms:us-east-1:012345678910:alias/ExampleAlias.</p></li>
180    /// </ul>
181    /// <p>Amazon Web Services authenticates the KMS key asynchronously. Therefore, if you specify an identifier that is not valid, the action can appear to complete, but eventually fails.</p>
182    /// <p>The specified KMS key must exist in the destination Region.</p>
183    /// <p>Amazon EBS does not support asymmetric KMS keys.</p>
184    pub fn set_kms_key_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
185        self.inner = self.inner.set_kms_key_id(input);
186        self
187    }
188    /// <p>The identifier of the symmetric Key Management Service (KMS) KMS key to use when creating encrypted volumes. If this parameter is not specified, your Amazon Web Services managed KMS key for Amazon EBS is used. If you specify a KMS key, you must also set the encrypted state to <code>true</code>.</p>
189    /// <p>You can specify a KMS key using any of the following:</p>
190    /// <ul>
191    /// <li>
192    /// <p>Key ID. For example, 1234abcd-12ab-34cd-56ef-1234567890ab.</p></li>
193    /// <li>
194    /// <p>Key alias. For example, alias/ExampleAlias.</p></li>
195    /// <li>
196    /// <p>Key ARN. For example, arn:aws:kms:us-east-1:012345678910:key/1234abcd-12ab-34cd-56ef-1234567890ab.</p></li>
197    /// <li>
198    /// <p>Alias ARN. For example, arn:aws:kms:us-east-1:012345678910:alias/ExampleAlias.</p></li>
199    /// </ul>
200    /// <p>Amazon Web Services authenticates the KMS key asynchronously. Therefore, if you specify an identifier that is not valid, the action can appear to complete, but eventually fails.</p>
201    /// <p>The specified KMS key must exist in the destination Region.</p>
202    /// <p>Amazon EBS does not support asymmetric KMS keys.</p>
203    pub fn get_kms_key_id(&self) -> &::std::option::Option<::std::string::String> {
204        self.inner.get_kms_key_id()
205    }
206    /// <p>The name of the new AMI in the destination Region.</p>
207    pub fn name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
208        self.inner = self.inner.name(input.into());
209        self
210    }
211    /// <p>The name of the new AMI in the destination Region.</p>
212    pub fn set_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
213        self.inner = self.inner.set_name(input);
214        self
215    }
216    /// <p>The name of the new AMI in the destination Region.</p>
217    pub fn get_name(&self) -> &::std::option::Option<::std::string::String> {
218        self.inner.get_name()
219    }
220    /// <p>The ID of the AMI to copy.</p>
221    pub fn source_image_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
222        self.inner = self.inner.source_image_id(input.into());
223        self
224    }
225    /// <p>The ID of the AMI to copy.</p>
226    pub fn set_source_image_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
227        self.inner = self.inner.set_source_image_id(input);
228        self
229    }
230    /// <p>The ID of the AMI to copy.</p>
231    pub fn get_source_image_id(&self) -> &::std::option::Option<::std::string::String> {
232        self.inner.get_source_image_id()
233    }
234    /// <p>The name of the Region that contains the AMI to copy.</p>
235    pub fn source_region(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
236        self.inner = self.inner.source_region(input.into());
237        self
238    }
239    /// <p>The name of the Region that contains the AMI to copy.</p>
240    pub fn set_source_region(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
241        self.inner = self.inner.set_source_region(input);
242        self
243    }
244    /// <p>The name of the Region that contains the AMI to copy.</p>
245    pub fn get_source_region(&self) -> &::std::option::Option<::std::string::String> {
246        self.inner.get_source_region()
247    }
248    /// <p>The Amazon Resource Name (ARN) of the Outpost to which to copy the AMI. Only specify this parameter when copying an AMI from an Amazon Web Services Region to an Outpost. The AMI must be in the Region of the destination Outpost. You cannot copy an AMI from an Outpost to a Region, from one Outpost to another, or within the same Outpost.</p>
249    /// <p>For more information, see <a href="https://docs.aws.amazon.com/ebs/latest/userguide/snapshots-outposts.html#copy-amis">Copy AMIs from an Amazon Web Services Region to an Outpost</a> in the <i>Amazon EBS User Guide</i>.</p>
250    pub fn destination_outpost_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
251        self.inner = self.inner.destination_outpost_arn(input.into());
252        self
253    }
254    /// <p>The Amazon Resource Name (ARN) of the Outpost to which to copy the AMI. Only specify this parameter when copying an AMI from an Amazon Web Services Region to an Outpost. The AMI must be in the Region of the destination Outpost. You cannot copy an AMI from an Outpost to a Region, from one Outpost to another, or within the same Outpost.</p>
255    /// <p>For more information, see <a href="https://docs.aws.amazon.com/ebs/latest/userguide/snapshots-outposts.html#copy-amis">Copy AMIs from an Amazon Web Services Region to an Outpost</a> in the <i>Amazon EBS User Guide</i>.</p>
256    pub fn set_destination_outpost_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
257        self.inner = self.inner.set_destination_outpost_arn(input);
258        self
259    }
260    /// <p>The Amazon Resource Name (ARN) of the Outpost to which to copy the AMI. Only specify this parameter when copying an AMI from an Amazon Web Services Region to an Outpost. The AMI must be in the Region of the destination Outpost. You cannot copy an AMI from an Outpost to a Region, from one Outpost to another, or within the same Outpost.</p>
261    /// <p>For more information, see <a href="https://docs.aws.amazon.com/ebs/latest/userguide/snapshots-outposts.html#copy-amis">Copy AMIs from an Amazon Web Services Region to an Outpost</a> in the <i>Amazon EBS User Guide</i>.</p>
262    pub fn get_destination_outpost_arn(&self) -> &::std::option::Option<::std::string::String> {
263        self.inner.get_destination_outpost_arn()
264    }
265    /// <p>Indicates whether to include your user-defined AMI tags when copying the AMI.</p>
266    /// <p>The following tags will not be copied:</p>
267    /// <ul>
268    /// <li>
269    /// <p>System tags (prefixed with <code>aws:</code>)</p></li>
270    /// <li>
271    /// <p>For public and shared AMIs, user-defined tags that are attached by other Amazon Web Services accounts</p></li>
272    /// </ul>
273    /// <p>Default: Your user-defined AMI tags are not copied.</p>
274    pub fn copy_image_tags(mut self, input: bool) -> Self {
275        self.inner = self.inner.copy_image_tags(input);
276        self
277    }
278    /// <p>Indicates whether to include your user-defined AMI tags when copying the AMI.</p>
279    /// <p>The following tags will not be copied:</p>
280    /// <ul>
281    /// <li>
282    /// <p>System tags (prefixed with <code>aws:</code>)</p></li>
283    /// <li>
284    /// <p>For public and shared AMIs, user-defined tags that are attached by other Amazon Web Services accounts</p></li>
285    /// </ul>
286    /// <p>Default: Your user-defined AMI tags are not copied.</p>
287    pub fn set_copy_image_tags(mut self, input: ::std::option::Option<bool>) -> Self {
288        self.inner = self.inner.set_copy_image_tags(input);
289        self
290    }
291    /// <p>Indicates whether to include your user-defined AMI tags when copying the AMI.</p>
292    /// <p>The following tags will not be copied:</p>
293    /// <ul>
294    /// <li>
295    /// <p>System tags (prefixed with <code>aws:</code>)</p></li>
296    /// <li>
297    /// <p>For public and shared AMIs, user-defined tags that are attached by other Amazon Web Services accounts</p></li>
298    /// </ul>
299    /// <p>Default: Your user-defined AMI tags are not copied.</p>
300    pub fn get_copy_image_tags(&self) -> &::std::option::Option<bool> {
301        self.inner.get_copy_image_tags()
302    }
303    ///
304    /// Appends an item to `TagSpecifications`.
305    ///
306    /// To override the contents of this collection use [`set_tag_specifications`](Self::set_tag_specifications).
307    ///
308    /// <p>The tags to apply to the new AMI and new snapshots. You can tag the AMI, the snapshots, or both.</p>
309    /// <ul>
310    /// <li>
311    /// <p>To tag the new AMI, the value for <code>ResourceType</code> must be <code>image</code>.</p></li>
312    /// <li>
313    /// <p>To tag the new snapshots, the value for <code>ResourceType</code> must be <code>snapshot</code>. The same tag is applied to all the new snapshots.</p></li>
314    /// </ul>
315    /// <p>If you specify other values for <code>ResourceType</code>, the request fails.</p>
316    /// <p>To tag an AMI or snapshot after it has been created, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateTags.html">CreateTags</a>.</p>
317    pub fn tag_specifications(mut self, input: crate::types::TagSpecification) -> Self {
318        self.inner = self.inner.tag_specifications(input);
319        self
320    }
321    /// <p>The tags to apply to the new AMI and new snapshots. You can tag the AMI, the snapshots, or both.</p>
322    /// <ul>
323    /// <li>
324    /// <p>To tag the new AMI, the value for <code>ResourceType</code> must be <code>image</code>.</p></li>
325    /// <li>
326    /// <p>To tag the new snapshots, the value for <code>ResourceType</code> must be <code>snapshot</code>. The same tag is applied to all the new snapshots.</p></li>
327    /// </ul>
328    /// <p>If you specify other values for <code>ResourceType</code>, the request fails.</p>
329    /// <p>To tag an AMI or snapshot after it has been created, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateTags.html">CreateTags</a>.</p>
330    pub fn set_tag_specifications(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::TagSpecification>>) -> Self {
331        self.inner = self.inner.set_tag_specifications(input);
332        self
333    }
334    /// <p>The tags to apply to the new AMI and new snapshots. You can tag the AMI, the snapshots, or both.</p>
335    /// <ul>
336    /// <li>
337    /// <p>To tag the new AMI, the value for <code>ResourceType</code> must be <code>image</code>.</p></li>
338    /// <li>
339    /// <p>To tag the new snapshots, the value for <code>ResourceType</code> must be <code>snapshot</code>. The same tag is applied to all the new snapshots.</p></li>
340    /// </ul>
341    /// <p>If you specify other values for <code>ResourceType</code>, the request fails.</p>
342    /// <p>To tag an AMI or snapshot after it has been created, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateTags.html">CreateTags</a>.</p>
343    pub fn get_tag_specifications(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::TagSpecification>> {
344        self.inner.get_tag_specifications()
345    }
346    /// <p>Specify a completion duration, in 15 minute increments, to initiate a time-based AMI copy. The specified completion duration applies to each of the snapshots associated with the AMI. Each snapshot associated with the AMI will be completed within the specified completion duration, with copy throughput automatically adjusted for each snapshot based on its size to meet the timing target.</p>
347    /// <p>If you do not specify a value, the AMI copy operation is completed on a best-effort basis.</p>
348    /// <p>For more information, see <a href="https://docs.aws.amazon.com/ebs/latest/userguide/time-based-copies.html">Time-based copies for Amazon EBS snapshots and EBS-backed AMIs</a>.</p>
349    pub fn snapshot_copy_completion_duration_minutes(mut self, input: i64) -> Self {
350        self.inner = self.inner.snapshot_copy_completion_duration_minutes(input);
351        self
352    }
353    /// <p>Specify a completion duration, in 15 minute increments, to initiate a time-based AMI copy. The specified completion duration applies to each of the snapshots associated with the AMI. Each snapshot associated with the AMI will be completed within the specified completion duration, with copy throughput automatically adjusted for each snapshot based on its size to meet the timing target.</p>
354    /// <p>If you do not specify a value, the AMI copy operation is completed on a best-effort basis.</p>
355    /// <p>For more information, see <a href="https://docs.aws.amazon.com/ebs/latest/userguide/time-based-copies.html">Time-based copies for Amazon EBS snapshots and EBS-backed AMIs</a>.</p>
356    pub fn set_snapshot_copy_completion_duration_minutes(mut self, input: ::std::option::Option<i64>) -> Self {
357        self.inner = self.inner.set_snapshot_copy_completion_duration_minutes(input);
358        self
359    }
360    /// <p>Specify a completion duration, in 15 minute increments, to initiate a time-based AMI copy. The specified completion duration applies to each of the snapshots associated with the AMI. Each snapshot associated with the AMI will be completed within the specified completion duration, with copy throughput automatically adjusted for each snapshot based on its size to meet the timing target.</p>
361    /// <p>If you do not specify a value, the AMI copy operation is completed on a best-effort basis.</p>
362    /// <p>For more information, see <a href="https://docs.aws.amazon.com/ebs/latest/userguide/time-based-copies.html">Time-based copies for Amazon EBS snapshots and EBS-backed AMIs</a>.</p>
363    pub fn get_snapshot_copy_completion_duration_minutes(&self) -> &::std::option::Option<i64> {
364        self.inner.get_snapshot_copy_completion_duration_minutes()
365    }
366    /// <p>Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. Otherwise, it is <code>UnauthorizedOperation</code>.</p>
367    pub fn dry_run(mut self, input: bool) -> Self {
368        self.inner = self.inner.dry_run(input);
369        self
370    }
371    /// <p>Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. Otherwise, it is <code>UnauthorizedOperation</code>.</p>
372    pub fn set_dry_run(mut self, input: ::std::option::Option<bool>) -> Self {
373        self.inner = self.inner.set_dry_run(input);
374        self
375    }
376    /// <p>Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. Otherwise, it is <code>UnauthorizedOperation</code>.</p>
377    pub fn get_dry_run(&self) -> &::std::option::Option<bool> {
378        self.inner.get_dry_run()
379    }
380}