aws_sdk_cloudformation/types/
_stack_instance.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2
3/// <p>A CloudFormation stack, in a specific account and Region, that's part of a stack set operation. A stack instance is a reference to an attempted or actual stack in a given account within a given Region. A stack instance can exist without a stack—for example, if the stack couldn't be created for some reason. A stack instance is associated with only one stack set. Each stack instance contains the ID of its associated stack set, in addition to the ID of the actual stack and the stack status.</p>
4#[non_exhaustive]
5#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
6pub struct StackInstance {
7    /// <p>The name or unique ID of the stack set that the stack instance is associated with.</p>
8    pub stack_set_id: ::std::option::Option<::std::string::String>,
9    /// <p>The name of the Amazon Web Services Region that the stack instance is associated with.</p>
10    pub region: ::std::option::Option<::std::string::String>,
11    /// <p>\[Self-managed permissions\] The name of the Amazon Web Services account that the stack instance is associated with.</p>
12    pub account: ::std::option::Option<::std::string::String>,
13    /// <p>The ID of the stack instance.</p>
14    pub stack_id: ::std::option::Option<::std::string::String>,
15    /// <p>A list of parameters from the stack set template whose values have been overridden in this stack instance.</p>
16    pub parameter_overrides: ::std::option::Option<::std::vec::Vec<crate::types::Parameter>>,
17    /// <p>The status of the stack instance, in terms of its synchronization with its associated stack set.</p>
18    /// <ul>
19    /// <li>
20    /// <p><code>INOPERABLE</code>: A <code>DeleteStackInstances</code> operation has failed and left the stack in an unstable state. Stacks in this state are excluded from further <code>UpdateStackSet</code> operations. You might need to perform a <code>DeleteStackInstances</code> operation, with <code>RetainStacks</code> set to <code>true</code>, to delete the stack instance, and then delete the stack manually. <code>INOPERABLE</code> can be returned here when the cause is a failed import. If it's due to a failed import, the operation can be retried once the failures are fixed. To see if this is due to a failed import, look at the <code>DetailedStatus</code> member in the <code>StackInstanceSummary</code> member that is a peer to this <code>Status</code> member.</p></li>
21    /// <li>
22    /// <p><code>OUTDATED</code>: The stack isn't currently up to date with the stack set because:</p>
23    /// <ul>
24    /// <li>
25    /// <p>The associated stack failed during a <code>CreateStackSet</code> or <code>UpdateStackSet</code> operation.</p></li>
26    /// <li>
27    /// <p>The stack was part of a <code>CreateStackSet</code> or <code>UpdateStackSet</code> operation that failed or was stopped before the stack was created or updated.</p></li>
28    /// </ul></li>
29    /// <li>
30    /// <p><code>CURRENT</code>: The stack is currently up to date with the stack set.</p></li>
31    /// </ul>
32    pub status: ::std::option::Option<crate::types::StackInstanceStatus>,
33    /// <p>The detailed status of the stack instance.</p>
34    pub stack_instance_status: ::std::option::Option<crate::types::StackInstanceComprehensiveStatus>,
35    /// <p>The explanation for the specific status code that's assigned to this stack instance.</p>
36    pub status_reason: ::std::option::Option<::std::string::String>,
37    /// <p>\[Service-managed permissions\] The organization root ID or organizational unit (OU) IDs that you specified for DeploymentTargets.</p>
38    pub organizational_unit_id: ::std::option::Option<::std::string::String>,
39    /// <p>Status of the stack instance's actual configuration compared to the expected template and parameter configuration of the stack set to which it belongs.</p>
40    /// <ul>
41    /// <li>
42    /// <p><code>DRIFTED</code>: The stack differs from the expected template and parameter configuration of the stack set to which it belongs. A stack instance is considered to have drifted if one or more of the resources in the associated stack have drifted.</p></li>
43    /// <li>
44    /// <p><code>NOT_CHECKED</code>: CloudFormation hasn't checked if the stack instance differs from its expected stack set configuration.</p></li>
45    /// <li>
46    /// <p><code>IN_SYNC</code>: The stack instance's actual configuration matches its expected stack set configuration.</p></li>
47    /// <li>
48    /// <p><code>UNKNOWN</code>: This value is reserved for future use.</p></li>
49    /// </ul>
50    pub drift_status: ::std::option::Option<crate::types::StackDriftStatus>,
51    /// <p>Most recent time when CloudFormation performed a drift detection operation on the stack instance. This value will be <code>NULL</code> for any stack instance on which drift detection hasn't yet been performed.</p>
52    pub last_drift_check_timestamp: ::std::option::Option<::aws_smithy_types::DateTime>,
53    /// <p>The last unique ID of a StackSet operation performed on a stack instance.</p>
54    pub last_operation_id: ::std::option::Option<::std::string::String>,
55}
56impl StackInstance {
57    /// <p>The name or unique ID of the stack set that the stack instance is associated with.</p>
58    pub fn stack_set_id(&self) -> ::std::option::Option<&str> {
59        self.stack_set_id.as_deref()
60    }
61    /// <p>The name of the Amazon Web Services Region that the stack instance is associated with.</p>
62    pub fn region(&self) -> ::std::option::Option<&str> {
63        self.region.as_deref()
64    }
65    /// <p>\[Self-managed permissions\] The name of the Amazon Web Services account that the stack instance is associated with.</p>
66    pub fn account(&self) -> ::std::option::Option<&str> {
67        self.account.as_deref()
68    }
69    /// <p>The ID of the stack instance.</p>
70    pub fn stack_id(&self) -> ::std::option::Option<&str> {
71        self.stack_id.as_deref()
72    }
73    /// <p>A list of parameters from the stack set template whose values have been overridden in this stack instance.</p>
74    ///
75    /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.parameter_overrides.is_none()`.
76    pub fn parameter_overrides(&self) -> &[crate::types::Parameter] {
77        self.parameter_overrides.as_deref().unwrap_or_default()
78    }
79    /// <p>The status of the stack instance, in terms of its synchronization with its associated stack set.</p>
80    /// <ul>
81    /// <li>
82    /// <p><code>INOPERABLE</code>: A <code>DeleteStackInstances</code> operation has failed and left the stack in an unstable state. Stacks in this state are excluded from further <code>UpdateStackSet</code> operations. You might need to perform a <code>DeleteStackInstances</code> operation, with <code>RetainStacks</code> set to <code>true</code>, to delete the stack instance, and then delete the stack manually. <code>INOPERABLE</code> can be returned here when the cause is a failed import. If it's due to a failed import, the operation can be retried once the failures are fixed. To see if this is due to a failed import, look at the <code>DetailedStatus</code> member in the <code>StackInstanceSummary</code> member that is a peer to this <code>Status</code> member.</p></li>
83    /// <li>
84    /// <p><code>OUTDATED</code>: The stack isn't currently up to date with the stack set because:</p>
85    /// <ul>
86    /// <li>
87    /// <p>The associated stack failed during a <code>CreateStackSet</code> or <code>UpdateStackSet</code> operation.</p></li>
88    /// <li>
89    /// <p>The stack was part of a <code>CreateStackSet</code> or <code>UpdateStackSet</code> operation that failed or was stopped before the stack was created or updated.</p></li>
90    /// </ul></li>
91    /// <li>
92    /// <p><code>CURRENT</code>: The stack is currently up to date with the stack set.</p></li>
93    /// </ul>
94    pub fn status(&self) -> ::std::option::Option<&crate::types::StackInstanceStatus> {
95        self.status.as_ref()
96    }
97    /// <p>The detailed status of the stack instance.</p>
98    pub fn stack_instance_status(&self) -> ::std::option::Option<&crate::types::StackInstanceComprehensiveStatus> {
99        self.stack_instance_status.as_ref()
100    }
101    /// <p>The explanation for the specific status code that's assigned to this stack instance.</p>
102    pub fn status_reason(&self) -> ::std::option::Option<&str> {
103        self.status_reason.as_deref()
104    }
105    /// <p>\[Service-managed permissions\] The organization root ID or organizational unit (OU) IDs that you specified for DeploymentTargets.</p>
106    pub fn organizational_unit_id(&self) -> ::std::option::Option<&str> {
107        self.organizational_unit_id.as_deref()
108    }
109    /// <p>Status of the stack instance's actual configuration compared to the expected template and parameter configuration of the stack set to which it belongs.</p>
110    /// <ul>
111    /// <li>
112    /// <p><code>DRIFTED</code>: The stack differs from the expected template and parameter configuration of the stack set to which it belongs. A stack instance is considered to have drifted if one or more of the resources in the associated stack have drifted.</p></li>
113    /// <li>
114    /// <p><code>NOT_CHECKED</code>: CloudFormation hasn't checked if the stack instance differs from its expected stack set configuration.</p></li>
115    /// <li>
116    /// <p><code>IN_SYNC</code>: The stack instance's actual configuration matches its expected stack set configuration.</p></li>
117    /// <li>
118    /// <p><code>UNKNOWN</code>: This value is reserved for future use.</p></li>
119    /// </ul>
120    pub fn drift_status(&self) -> ::std::option::Option<&crate::types::StackDriftStatus> {
121        self.drift_status.as_ref()
122    }
123    /// <p>Most recent time when CloudFormation performed a drift detection operation on the stack instance. This value will be <code>NULL</code> for any stack instance on which drift detection hasn't yet been performed.</p>
124    pub fn last_drift_check_timestamp(&self) -> ::std::option::Option<&::aws_smithy_types::DateTime> {
125        self.last_drift_check_timestamp.as_ref()
126    }
127    /// <p>The last unique ID of a StackSet operation performed on a stack instance.</p>
128    pub fn last_operation_id(&self) -> ::std::option::Option<&str> {
129        self.last_operation_id.as_deref()
130    }
131}
132impl StackInstance {
133    /// Creates a new builder-style object to manufacture [`StackInstance`](crate::types::StackInstance).
134    pub fn builder() -> crate::types::builders::StackInstanceBuilder {
135        crate::types::builders::StackInstanceBuilder::default()
136    }
137}
138
139/// A builder for [`StackInstance`](crate::types::StackInstance).
140#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
141#[non_exhaustive]
142pub struct StackInstanceBuilder {
143    pub(crate) stack_set_id: ::std::option::Option<::std::string::String>,
144    pub(crate) region: ::std::option::Option<::std::string::String>,
145    pub(crate) account: ::std::option::Option<::std::string::String>,
146    pub(crate) stack_id: ::std::option::Option<::std::string::String>,
147    pub(crate) parameter_overrides: ::std::option::Option<::std::vec::Vec<crate::types::Parameter>>,
148    pub(crate) status: ::std::option::Option<crate::types::StackInstanceStatus>,
149    pub(crate) stack_instance_status: ::std::option::Option<crate::types::StackInstanceComprehensiveStatus>,
150    pub(crate) status_reason: ::std::option::Option<::std::string::String>,
151    pub(crate) organizational_unit_id: ::std::option::Option<::std::string::String>,
152    pub(crate) drift_status: ::std::option::Option<crate::types::StackDriftStatus>,
153    pub(crate) last_drift_check_timestamp: ::std::option::Option<::aws_smithy_types::DateTime>,
154    pub(crate) last_operation_id: ::std::option::Option<::std::string::String>,
155}
156impl StackInstanceBuilder {
157    /// <p>The name or unique ID of the stack set that the stack instance is associated with.</p>
158    pub fn stack_set_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
159        self.stack_set_id = ::std::option::Option::Some(input.into());
160        self
161    }
162    /// <p>The name or unique ID of the stack set that the stack instance is associated with.</p>
163    pub fn set_stack_set_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
164        self.stack_set_id = input;
165        self
166    }
167    /// <p>The name or unique ID of the stack set that the stack instance is associated with.</p>
168    pub fn get_stack_set_id(&self) -> &::std::option::Option<::std::string::String> {
169        &self.stack_set_id
170    }
171    /// <p>The name of the Amazon Web Services Region that the stack instance is associated with.</p>
172    pub fn region(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
173        self.region = ::std::option::Option::Some(input.into());
174        self
175    }
176    /// <p>The name of the Amazon Web Services Region that the stack instance is associated with.</p>
177    pub fn set_region(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
178        self.region = input;
179        self
180    }
181    /// <p>The name of the Amazon Web Services Region that the stack instance is associated with.</p>
182    pub fn get_region(&self) -> &::std::option::Option<::std::string::String> {
183        &self.region
184    }
185    /// <p>\[Self-managed permissions\] The name of the Amazon Web Services account that the stack instance is associated with.</p>
186    pub fn account(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
187        self.account = ::std::option::Option::Some(input.into());
188        self
189    }
190    /// <p>\[Self-managed permissions\] The name of the Amazon Web Services account that the stack instance is associated with.</p>
191    pub fn set_account(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
192        self.account = input;
193        self
194    }
195    /// <p>\[Self-managed permissions\] The name of the Amazon Web Services account that the stack instance is associated with.</p>
196    pub fn get_account(&self) -> &::std::option::Option<::std::string::String> {
197        &self.account
198    }
199    /// <p>The ID of the stack instance.</p>
200    pub fn stack_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
201        self.stack_id = ::std::option::Option::Some(input.into());
202        self
203    }
204    /// <p>The ID of the stack instance.</p>
205    pub fn set_stack_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
206        self.stack_id = input;
207        self
208    }
209    /// <p>The ID of the stack instance.</p>
210    pub fn get_stack_id(&self) -> &::std::option::Option<::std::string::String> {
211        &self.stack_id
212    }
213    /// Appends an item to `parameter_overrides`.
214    ///
215    /// To override the contents of this collection use [`set_parameter_overrides`](Self::set_parameter_overrides).
216    ///
217    /// <p>A list of parameters from the stack set template whose values have been overridden in this stack instance.</p>
218    pub fn parameter_overrides(mut self, input: crate::types::Parameter) -> Self {
219        let mut v = self.parameter_overrides.unwrap_or_default();
220        v.push(input);
221        self.parameter_overrides = ::std::option::Option::Some(v);
222        self
223    }
224    /// <p>A list of parameters from the stack set template whose values have been overridden in this stack instance.</p>
225    pub fn set_parameter_overrides(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::Parameter>>) -> Self {
226        self.parameter_overrides = input;
227        self
228    }
229    /// <p>A list of parameters from the stack set template whose values have been overridden in this stack instance.</p>
230    pub fn get_parameter_overrides(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::Parameter>> {
231        &self.parameter_overrides
232    }
233    /// <p>The status of the stack instance, in terms of its synchronization with its associated stack set.</p>
234    /// <ul>
235    /// <li>
236    /// <p><code>INOPERABLE</code>: A <code>DeleteStackInstances</code> operation has failed and left the stack in an unstable state. Stacks in this state are excluded from further <code>UpdateStackSet</code> operations. You might need to perform a <code>DeleteStackInstances</code> operation, with <code>RetainStacks</code> set to <code>true</code>, to delete the stack instance, and then delete the stack manually. <code>INOPERABLE</code> can be returned here when the cause is a failed import. If it's due to a failed import, the operation can be retried once the failures are fixed. To see if this is due to a failed import, look at the <code>DetailedStatus</code> member in the <code>StackInstanceSummary</code> member that is a peer to this <code>Status</code> member.</p></li>
237    /// <li>
238    /// <p><code>OUTDATED</code>: The stack isn't currently up to date with the stack set because:</p>
239    /// <ul>
240    /// <li>
241    /// <p>The associated stack failed during a <code>CreateStackSet</code> or <code>UpdateStackSet</code> operation.</p></li>
242    /// <li>
243    /// <p>The stack was part of a <code>CreateStackSet</code> or <code>UpdateStackSet</code> operation that failed or was stopped before the stack was created or updated.</p></li>
244    /// </ul></li>
245    /// <li>
246    /// <p><code>CURRENT</code>: The stack is currently up to date with the stack set.</p></li>
247    /// </ul>
248    pub fn status(mut self, input: crate::types::StackInstanceStatus) -> Self {
249        self.status = ::std::option::Option::Some(input);
250        self
251    }
252    /// <p>The status of the stack instance, in terms of its synchronization with its associated stack set.</p>
253    /// <ul>
254    /// <li>
255    /// <p><code>INOPERABLE</code>: A <code>DeleteStackInstances</code> operation has failed and left the stack in an unstable state. Stacks in this state are excluded from further <code>UpdateStackSet</code> operations. You might need to perform a <code>DeleteStackInstances</code> operation, with <code>RetainStacks</code> set to <code>true</code>, to delete the stack instance, and then delete the stack manually. <code>INOPERABLE</code> can be returned here when the cause is a failed import. If it's due to a failed import, the operation can be retried once the failures are fixed. To see if this is due to a failed import, look at the <code>DetailedStatus</code> member in the <code>StackInstanceSummary</code> member that is a peer to this <code>Status</code> member.</p></li>
256    /// <li>
257    /// <p><code>OUTDATED</code>: The stack isn't currently up to date with the stack set because:</p>
258    /// <ul>
259    /// <li>
260    /// <p>The associated stack failed during a <code>CreateStackSet</code> or <code>UpdateStackSet</code> operation.</p></li>
261    /// <li>
262    /// <p>The stack was part of a <code>CreateStackSet</code> or <code>UpdateStackSet</code> operation that failed or was stopped before the stack was created or updated.</p></li>
263    /// </ul></li>
264    /// <li>
265    /// <p><code>CURRENT</code>: The stack is currently up to date with the stack set.</p></li>
266    /// </ul>
267    pub fn set_status(mut self, input: ::std::option::Option<crate::types::StackInstanceStatus>) -> Self {
268        self.status = input;
269        self
270    }
271    /// <p>The status of the stack instance, in terms of its synchronization with its associated stack set.</p>
272    /// <ul>
273    /// <li>
274    /// <p><code>INOPERABLE</code>: A <code>DeleteStackInstances</code> operation has failed and left the stack in an unstable state. Stacks in this state are excluded from further <code>UpdateStackSet</code> operations. You might need to perform a <code>DeleteStackInstances</code> operation, with <code>RetainStacks</code> set to <code>true</code>, to delete the stack instance, and then delete the stack manually. <code>INOPERABLE</code> can be returned here when the cause is a failed import. If it's due to a failed import, the operation can be retried once the failures are fixed. To see if this is due to a failed import, look at the <code>DetailedStatus</code> member in the <code>StackInstanceSummary</code> member that is a peer to this <code>Status</code> member.</p></li>
275    /// <li>
276    /// <p><code>OUTDATED</code>: The stack isn't currently up to date with the stack set because:</p>
277    /// <ul>
278    /// <li>
279    /// <p>The associated stack failed during a <code>CreateStackSet</code> or <code>UpdateStackSet</code> operation.</p></li>
280    /// <li>
281    /// <p>The stack was part of a <code>CreateStackSet</code> or <code>UpdateStackSet</code> operation that failed or was stopped before the stack was created or updated.</p></li>
282    /// </ul></li>
283    /// <li>
284    /// <p><code>CURRENT</code>: The stack is currently up to date with the stack set.</p></li>
285    /// </ul>
286    pub fn get_status(&self) -> &::std::option::Option<crate::types::StackInstanceStatus> {
287        &self.status
288    }
289    /// <p>The detailed status of the stack instance.</p>
290    pub fn stack_instance_status(mut self, input: crate::types::StackInstanceComprehensiveStatus) -> Self {
291        self.stack_instance_status = ::std::option::Option::Some(input);
292        self
293    }
294    /// <p>The detailed status of the stack instance.</p>
295    pub fn set_stack_instance_status(mut self, input: ::std::option::Option<crate::types::StackInstanceComprehensiveStatus>) -> Self {
296        self.stack_instance_status = input;
297        self
298    }
299    /// <p>The detailed status of the stack instance.</p>
300    pub fn get_stack_instance_status(&self) -> &::std::option::Option<crate::types::StackInstanceComprehensiveStatus> {
301        &self.stack_instance_status
302    }
303    /// <p>The explanation for the specific status code that's assigned to this stack instance.</p>
304    pub fn status_reason(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
305        self.status_reason = ::std::option::Option::Some(input.into());
306        self
307    }
308    /// <p>The explanation for the specific status code that's assigned to this stack instance.</p>
309    pub fn set_status_reason(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
310        self.status_reason = input;
311        self
312    }
313    /// <p>The explanation for the specific status code that's assigned to this stack instance.</p>
314    pub fn get_status_reason(&self) -> &::std::option::Option<::std::string::String> {
315        &self.status_reason
316    }
317    /// <p>\[Service-managed permissions\] The organization root ID or organizational unit (OU) IDs that you specified for DeploymentTargets.</p>
318    pub fn organizational_unit_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
319        self.organizational_unit_id = ::std::option::Option::Some(input.into());
320        self
321    }
322    /// <p>\[Service-managed permissions\] The organization root ID or organizational unit (OU) IDs that you specified for DeploymentTargets.</p>
323    pub fn set_organizational_unit_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
324        self.organizational_unit_id = input;
325        self
326    }
327    /// <p>\[Service-managed permissions\] The organization root ID or organizational unit (OU) IDs that you specified for DeploymentTargets.</p>
328    pub fn get_organizational_unit_id(&self) -> &::std::option::Option<::std::string::String> {
329        &self.organizational_unit_id
330    }
331    /// <p>Status of the stack instance's actual configuration compared to the expected template and parameter configuration of the stack set to which it belongs.</p>
332    /// <ul>
333    /// <li>
334    /// <p><code>DRIFTED</code>: The stack differs from the expected template and parameter configuration of the stack set to which it belongs. A stack instance is considered to have drifted if one or more of the resources in the associated stack have drifted.</p></li>
335    /// <li>
336    /// <p><code>NOT_CHECKED</code>: CloudFormation hasn't checked if the stack instance differs from its expected stack set configuration.</p></li>
337    /// <li>
338    /// <p><code>IN_SYNC</code>: The stack instance's actual configuration matches its expected stack set configuration.</p></li>
339    /// <li>
340    /// <p><code>UNKNOWN</code>: This value is reserved for future use.</p></li>
341    /// </ul>
342    pub fn drift_status(mut self, input: crate::types::StackDriftStatus) -> Self {
343        self.drift_status = ::std::option::Option::Some(input);
344        self
345    }
346    /// <p>Status of the stack instance's actual configuration compared to the expected template and parameter configuration of the stack set to which it belongs.</p>
347    /// <ul>
348    /// <li>
349    /// <p><code>DRIFTED</code>: The stack differs from the expected template and parameter configuration of the stack set to which it belongs. A stack instance is considered to have drifted if one or more of the resources in the associated stack have drifted.</p></li>
350    /// <li>
351    /// <p><code>NOT_CHECKED</code>: CloudFormation hasn't checked if the stack instance differs from its expected stack set configuration.</p></li>
352    /// <li>
353    /// <p><code>IN_SYNC</code>: The stack instance's actual configuration matches its expected stack set configuration.</p></li>
354    /// <li>
355    /// <p><code>UNKNOWN</code>: This value is reserved for future use.</p></li>
356    /// </ul>
357    pub fn set_drift_status(mut self, input: ::std::option::Option<crate::types::StackDriftStatus>) -> Self {
358        self.drift_status = input;
359        self
360    }
361    /// <p>Status of the stack instance's actual configuration compared to the expected template and parameter configuration of the stack set to which it belongs.</p>
362    /// <ul>
363    /// <li>
364    /// <p><code>DRIFTED</code>: The stack differs from the expected template and parameter configuration of the stack set to which it belongs. A stack instance is considered to have drifted if one or more of the resources in the associated stack have drifted.</p></li>
365    /// <li>
366    /// <p><code>NOT_CHECKED</code>: CloudFormation hasn't checked if the stack instance differs from its expected stack set configuration.</p></li>
367    /// <li>
368    /// <p><code>IN_SYNC</code>: The stack instance's actual configuration matches its expected stack set configuration.</p></li>
369    /// <li>
370    /// <p><code>UNKNOWN</code>: This value is reserved for future use.</p></li>
371    /// </ul>
372    pub fn get_drift_status(&self) -> &::std::option::Option<crate::types::StackDriftStatus> {
373        &self.drift_status
374    }
375    /// <p>Most recent time when CloudFormation performed a drift detection operation on the stack instance. This value will be <code>NULL</code> for any stack instance on which drift detection hasn't yet been performed.</p>
376    pub fn last_drift_check_timestamp(mut self, input: ::aws_smithy_types::DateTime) -> Self {
377        self.last_drift_check_timestamp = ::std::option::Option::Some(input);
378        self
379    }
380    /// <p>Most recent time when CloudFormation performed a drift detection operation on the stack instance. This value will be <code>NULL</code> for any stack instance on which drift detection hasn't yet been performed.</p>
381    pub fn set_last_drift_check_timestamp(mut self, input: ::std::option::Option<::aws_smithy_types::DateTime>) -> Self {
382        self.last_drift_check_timestamp = input;
383        self
384    }
385    /// <p>Most recent time when CloudFormation performed a drift detection operation on the stack instance. This value will be <code>NULL</code> for any stack instance on which drift detection hasn't yet been performed.</p>
386    pub fn get_last_drift_check_timestamp(&self) -> &::std::option::Option<::aws_smithy_types::DateTime> {
387        &self.last_drift_check_timestamp
388    }
389    /// <p>The last unique ID of a StackSet operation performed on a stack instance.</p>
390    pub fn last_operation_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
391        self.last_operation_id = ::std::option::Option::Some(input.into());
392        self
393    }
394    /// <p>The last unique ID of a StackSet operation performed on a stack instance.</p>
395    pub fn set_last_operation_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
396        self.last_operation_id = input;
397        self
398    }
399    /// <p>The last unique ID of a StackSet operation performed on a stack instance.</p>
400    pub fn get_last_operation_id(&self) -> &::std::option::Option<::std::string::String> {
401        &self.last_operation_id
402    }
403    /// Consumes the builder and constructs a [`StackInstance`](crate::types::StackInstance).
404    pub fn build(self) -> crate::types::StackInstance {
405        crate::types::StackInstance {
406            stack_set_id: self.stack_set_id,
407            region: self.region,
408            account: self.account,
409            stack_id: self.stack_id,
410            parameter_overrides: self.parameter_overrides,
411            status: self.status,
412            stack_instance_status: self.stack_instance_status,
413            status_reason: self.status_reason,
414            organizational_unit_id: self.organizational_unit_id,
415            drift_status: self.drift_status,
416            last_drift_check_timestamp: self.last_drift_check_timestamp,
417            last_operation_id: self.last_operation_id,
418        }
419    }
420}