aws_sdk_elasticbeanstalk/operation/create_environment/
_create_environment_input.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2
3/// <p></p>
4#[non_exhaustive]
5#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
6pub struct CreateEnvironmentInput {
7    /// <p>The name of the application that is associated with this environment.</p>
8    pub application_name: ::std::option::Option<::std::string::String>,
9    /// <p>A unique name for the environment.</p>
10    /// <p>Constraint: Must be from 4 to 40 characters in length. The name can contain only letters, numbers, and hyphens. It can't start or end with a hyphen. This name must be unique within a region in your account. If the specified name already exists in the region, Elastic Beanstalk returns an <code>InvalidParameterValue</code> error.</p>
11    /// <p>If you don't specify the <code>CNAMEPrefix</code> parameter, the environment name becomes part of the CNAME, and therefore part of the visible URL for your application.</p>
12    pub environment_name: ::std::option::Option<::std::string::String>,
13    /// <p>The name of the group to which the target environment belongs. Specify a group name only if the environment's name is specified in an environment manifest and not with the environment name parameter. See <a href="https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/environment-cfg-manifest.html">Environment Manifest (env.yaml)</a> for details.</p>
14    pub group_name: ::std::option::Option<::std::string::String>,
15    /// <p>Your description for this environment.</p>
16    pub description: ::std::option::Option<::std::string::String>,
17    /// <p>If specified, the environment attempts to use this value as the prefix for the CNAME in your Elastic Beanstalk environment URL. If not specified, the CNAME is generated automatically by appending a random alphanumeric string to the environment name.</p>
18    pub cname_prefix: ::std::option::Option<::std::string::String>,
19    /// <p>Specifies the tier to use in creating this environment. The environment tier that you choose determines whether Elastic Beanstalk provisions resources to support a web application that handles HTTP(S) requests or a web application that handles background-processing tasks.</p>
20    pub tier: ::std::option::Option<crate::types::EnvironmentTier>,
21    /// <p>Specifies the tags applied to resources in the environment.</p>
22    pub tags: ::std::option::Option<::std::vec::Vec<crate::types::Tag>>,
23    /// <p>The name of the application version to deploy.</p>
24    /// <p>Default: If not specified, Elastic Beanstalk attempts to deploy the sample application.</p>
25    pub version_label: ::std::option::Option<::std::string::String>,
26    /// <p>The name of the Elastic Beanstalk configuration template to use with the environment.</p><note>
27    /// <p>If you specify <code>TemplateName</code>, then don't specify <code>SolutionStackName</code>.</p>
28    /// </note>
29    pub template_name: ::std::option::Option<::std::string::String>,
30    /// <p>The name of an Elastic Beanstalk solution stack (platform version) to use with the environment. If specified, Elastic Beanstalk sets the configuration values to the default values associated with the specified solution stack. For a list of current solution stacks, see <a href="https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html">Elastic Beanstalk Supported Platforms</a> in the <i>AWS Elastic Beanstalk Platforms</i> guide.</p><note>
31    /// <p>If you specify <code>SolutionStackName</code>, don't specify <code>PlatformArn</code> or <code>TemplateName</code>.</p>
32    /// </note>
33    pub solution_stack_name: ::std::option::Option<::std::string::String>,
34    /// <p>The Amazon Resource Name (ARN) of the custom platform to use with the environment. For more information, see <a href="https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/custom-platforms.html">Custom Platforms</a> in the <i>AWS Elastic Beanstalk Developer Guide</i>.</p><note>
35    /// <p>If you specify <code>PlatformArn</code>, don't specify <code>SolutionStackName</code>.</p>
36    /// </note>
37    pub platform_arn: ::std::option::Option<::std::string::String>,
38    /// <p>If specified, AWS Elastic Beanstalk sets the specified configuration options to the requested value in the configuration set for the new environment. These override the values obtained from the solution stack or the configuration template.</p>
39    pub option_settings: ::std::option::Option<::std::vec::Vec<crate::types::ConfigurationOptionSetting>>,
40    /// <p>A list of custom user-defined configuration options to remove from the configuration set for this new environment.</p>
41    pub options_to_remove: ::std::option::Option<::std::vec::Vec<crate::types::OptionSpecification>>,
42    /// <p>The Amazon Resource Name (ARN) of an existing IAM role to be used as the environment's operations role. If specified, Elastic Beanstalk uses the operations role for permissions to downstream services during this call and during subsequent calls acting on this environment. To specify an operations role, you must have the <code>iam:PassRole</code> permission for the role. For more information, see <a href="https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/iam-operationsrole.html">Operations roles</a> in the <i>AWS Elastic Beanstalk Developer Guide</i>.</p>
43    pub operations_role: ::std::option::Option<::std::string::String>,
44}
45impl CreateEnvironmentInput {
46    /// <p>The name of the application that is associated with this environment.</p>
47    pub fn application_name(&self) -> ::std::option::Option<&str> {
48        self.application_name.as_deref()
49    }
50    /// <p>A unique name for the environment.</p>
51    /// <p>Constraint: Must be from 4 to 40 characters in length. The name can contain only letters, numbers, and hyphens. It can't start or end with a hyphen. This name must be unique within a region in your account. If the specified name already exists in the region, Elastic Beanstalk returns an <code>InvalidParameterValue</code> error.</p>
52    /// <p>If you don't specify the <code>CNAMEPrefix</code> parameter, the environment name becomes part of the CNAME, and therefore part of the visible URL for your application.</p>
53    pub fn environment_name(&self) -> ::std::option::Option<&str> {
54        self.environment_name.as_deref()
55    }
56    /// <p>The name of the group to which the target environment belongs. Specify a group name only if the environment's name is specified in an environment manifest and not with the environment name parameter. See <a href="https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/environment-cfg-manifest.html">Environment Manifest (env.yaml)</a> for details.</p>
57    pub fn group_name(&self) -> ::std::option::Option<&str> {
58        self.group_name.as_deref()
59    }
60    /// <p>Your description for this environment.</p>
61    pub fn description(&self) -> ::std::option::Option<&str> {
62        self.description.as_deref()
63    }
64    /// <p>If specified, the environment attempts to use this value as the prefix for the CNAME in your Elastic Beanstalk environment URL. If not specified, the CNAME is generated automatically by appending a random alphanumeric string to the environment name.</p>
65    pub fn cname_prefix(&self) -> ::std::option::Option<&str> {
66        self.cname_prefix.as_deref()
67    }
68    /// <p>Specifies the tier to use in creating this environment. The environment tier that you choose determines whether Elastic Beanstalk provisions resources to support a web application that handles HTTP(S) requests or a web application that handles background-processing tasks.</p>
69    pub fn tier(&self) -> ::std::option::Option<&crate::types::EnvironmentTier> {
70        self.tier.as_ref()
71    }
72    /// <p>Specifies the tags applied to resources in the environment.</p>
73    ///
74    /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.tags.is_none()`.
75    pub fn tags(&self) -> &[crate::types::Tag] {
76        self.tags.as_deref().unwrap_or_default()
77    }
78    /// <p>The name of the application version to deploy.</p>
79    /// <p>Default: If not specified, Elastic Beanstalk attempts to deploy the sample application.</p>
80    pub fn version_label(&self) -> ::std::option::Option<&str> {
81        self.version_label.as_deref()
82    }
83    /// <p>The name of the Elastic Beanstalk configuration template to use with the environment.</p><note>
84    /// <p>If you specify <code>TemplateName</code>, then don't specify <code>SolutionStackName</code>.</p>
85    /// </note>
86    pub fn template_name(&self) -> ::std::option::Option<&str> {
87        self.template_name.as_deref()
88    }
89    /// <p>The name of an Elastic Beanstalk solution stack (platform version) to use with the environment. If specified, Elastic Beanstalk sets the configuration values to the default values associated with the specified solution stack. For a list of current solution stacks, see <a href="https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html">Elastic Beanstalk Supported Platforms</a> in the <i>AWS Elastic Beanstalk Platforms</i> guide.</p><note>
90    /// <p>If you specify <code>SolutionStackName</code>, don't specify <code>PlatformArn</code> or <code>TemplateName</code>.</p>
91    /// </note>
92    pub fn solution_stack_name(&self) -> ::std::option::Option<&str> {
93        self.solution_stack_name.as_deref()
94    }
95    /// <p>The Amazon Resource Name (ARN) of the custom platform to use with the environment. For more information, see <a href="https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/custom-platforms.html">Custom Platforms</a> in the <i>AWS Elastic Beanstalk Developer Guide</i>.</p><note>
96    /// <p>If you specify <code>PlatformArn</code>, don't specify <code>SolutionStackName</code>.</p>
97    /// </note>
98    pub fn platform_arn(&self) -> ::std::option::Option<&str> {
99        self.platform_arn.as_deref()
100    }
101    /// <p>If specified, AWS Elastic Beanstalk sets the specified configuration options to the requested value in the configuration set for the new environment. These override the values obtained from the solution stack or the configuration template.</p>
102    ///
103    /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.option_settings.is_none()`.
104    pub fn option_settings(&self) -> &[crate::types::ConfigurationOptionSetting] {
105        self.option_settings.as_deref().unwrap_or_default()
106    }
107    /// <p>A list of custom user-defined configuration options to remove from the configuration set for this new environment.</p>
108    ///
109    /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.options_to_remove.is_none()`.
110    pub fn options_to_remove(&self) -> &[crate::types::OptionSpecification] {
111        self.options_to_remove.as_deref().unwrap_or_default()
112    }
113    /// <p>The Amazon Resource Name (ARN) of an existing IAM role to be used as the environment's operations role. If specified, Elastic Beanstalk uses the operations role for permissions to downstream services during this call and during subsequent calls acting on this environment. To specify an operations role, you must have the <code>iam:PassRole</code> permission for the role. For more information, see <a href="https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/iam-operationsrole.html">Operations roles</a> in the <i>AWS Elastic Beanstalk Developer Guide</i>.</p>
114    pub fn operations_role(&self) -> ::std::option::Option<&str> {
115        self.operations_role.as_deref()
116    }
117}
118impl CreateEnvironmentInput {
119    /// Creates a new builder-style object to manufacture [`CreateEnvironmentInput`](crate::operation::create_environment::CreateEnvironmentInput).
120    pub fn builder() -> crate::operation::create_environment::builders::CreateEnvironmentInputBuilder {
121        crate::operation::create_environment::builders::CreateEnvironmentInputBuilder::default()
122    }
123}
124
125/// A builder for [`CreateEnvironmentInput`](crate::operation::create_environment::CreateEnvironmentInput).
126#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
127#[non_exhaustive]
128pub struct CreateEnvironmentInputBuilder {
129    pub(crate) application_name: ::std::option::Option<::std::string::String>,
130    pub(crate) environment_name: ::std::option::Option<::std::string::String>,
131    pub(crate) group_name: ::std::option::Option<::std::string::String>,
132    pub(crate) description: ::std::option::Option<::std::string::String>,
133    pub(crate) cname_prefix: ::std::option::Option<::std::string::String>,
134    pub(crate) tier: ::std::option::Option<crate::types::EnvironmentTier>,
135    pub(crate) tags: ::std::option::Option<::std::vec::Vec<crate::types::Tag>>,
136    pub(crate) version_label: ::std::option::Option<::std::string::String>,
137    pub(crate) template_name: ::std::option::Option<::std::string::String>,
138    pub(crate) solution_stack_name: ::std::option::Option<::std::string::String>,
139    pub(crate) platform_arn: ::std::option::Option<::std::string::String>,
140    pub(crate) option_settings: ::std::option::Option<::std::vec::Vec<crate::types::ConfigurationOptionSetting>>,
141    pub(crate) options_to_remove: ::std::option::Option<::std::vec::Vec<crate::types::OptionSpecification>>,
142    pub(crate) operations_role: ::std::option::Option<::std::string::String>,
143}
144impl CreateEnvironmentInputBuilder {
145    /// <p>The name of the application that is associated with this environment.</p>
146    /// This field is required.
147    pub fn application_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
148        self.application_name = ::std::option::Option::Some(input.into());
149        self
150    }
151    /// <p>The name of the application that is associated with this environment.</p>
152    pub fn set_application_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
153        self.application_name = input;
154        self
155    }
156    /// <p>The name of the application that is associated with this environment.</p>
157    pub fn get_application_name(&self) -> &::std::option::Option<::std::string::String> {
158        &self.application_name
159    }
160    /// <p>A unique name for the environment.</p>
161    /// <p>Constraint: Must be from 4 to 40 characters in length. The name can contain only letters, numbers, and hyphens. It can't start or end with a hyphen. This name must be unique within a region in your account. If the specified name already exists in the region, Elastic Beanstalk returns an <code>InvalidParameterValue</code> error.</p>
162    /// <p>If you don't specify the <code>CNAMEPrefix</code> parameter, the environment name becomes part of the CNAME, and therefore part of the visible URL for your application.</p>
163    pub fn environment_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
164        self.environment_name = ::std::option::Option::Some(input.into());
165        self
166    }
167    /// <p>A unique name for the environment.</p>
168    /// <p>Constraint: Must be from 4 to 40 characters in length. The name can contain only letters, numbers, and hyphens. It can't start or end with a hyphen. This name must be unique within a region in your account. If the specified name already exists in the region, Elastic Beanstalk returns an <code>InvalidParameterValue</code> error.</p>
169    /// <p>If you don't specify the <code>CNAMEPrefix</code> parameter, the environment name becomes part of the CNAME, and therefore part of the visible URL for your application.</p>
170    pub fn set_environment_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
171        self.environment_name = input;
172        self
173    }
174    /// <p>A unique name for the environment.</p>
175    /// <p>Constraint: Must be from 4 to 40 characters in length. The name can contain only letters, numbers, and hyphens. It can't start or end with a hyphen. This name must be unique within a region in your account. If the specified name already exists in the region, Elastic Beanstalk returns an <code>InvalidParameterValue</code> error.</p>
176    /// <p>If you don't specify the <code>CNAMEPrefix</code> parameter, the environment name becomes part of the CNAME, and therefore part of the visible URL for your application.</p>
177    pub fn get_environment_name(&self) -> &::std::option::Option<::std::string::String> {
178        &self.environment_name
179    }
180    /// <p>The name of the group to which the target environment belongs. Specify a group name only if the environment's name is specified in an environment manifest and not with the environment name parameter. See <a href="https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/environment-cfg-manifest.html">Environment Manifest (env.yaml)</a> for details.</p>
181    pub fn group_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
182        self.group_name = ::std::option::Option::Some(input.into());
183        self
184    }
185    /// <p>The name of the group to which the target environment belongs. Specify a group name only if the environment's name is specified in an environment manifest and not with the environment name parameter. See <a href="https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/environment-cfg-manifest.html">Environment Manifest (env.yaml)</a> for details.</p>
186    pub fn set_group_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
187        self.group_name = input;
188        self
189    }
190    /// <p>The name of the group to which the target environment belongs. Specify a group name only if the environment's name is specified in an environment manifest and not with the environment name parameter. See <a href="https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/environment-cfg-manifest.html">Environment Manifest (env.yaml)</a> for details.</p>
191    pub fn get_group_name(&self) -> &::std::option::Option<::std::string::String> {
192        &self.group_name
193    }
194    /// <p>Your description for this environment.</p>
195    pub fn description(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
196        self.description = ::std::option::Option::Some(input.into());
197        self
198    }
199    /// <p>Your description for this environment.</p>
200    pub fn set_description(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
201        self.description = input;
202        self
203    }
204    /// <p>Your description for this environment.</p>
205    pub fn get_description(&self) -> &::std::option::Option<::std::string::String> {
206        &self.description
207    }
208    /// <p>If specified, the environment attempts to use this value as the prefix for the CNAME in your Elastic Beanstalk environment URL. If not specified, the CNAME is generated automatically by appending a random alphanumeric string to the environment name.</p>
209    pub fn cname_prefix(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
210        self.cname_prefix = ::std::option::Option::Some(input.into());
211        self
212    }
213    /// <p>If specified, the environment attempts to use this value as the prefix for the CNAME in your Elastic Beanstalk environment URL. If not specified, the CNAME is generated automatically by appending a random alphanumeric string to the environment name.</p>
214    pub fn set_cname_prefix(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
215        self.cname_prefix = input;
216        self
217    }
218    /// <p>If specified, the environment attempts to use this value as the prefix for the CNAME in your Elastic Beanstalk environment URL. If not specified, the CNAME is generated automatically by appending a random alphanumeric string to the environment name.</p>
219    pub fn get_cname_prefix(&self) -> &::std::option::Option<::std::string::String> {
220        &self.cname_prefix
221    }
222    /// <p>Specifies the tier to use in creating this environment. The environment tier that you choose determines whether Elastic Beanstalk provisions resources to support a web application that handles HTTP(S) requests or a web application that handles background-processing tasks.</p>
223    pub fn tier(mut self, input: crate::types::EnvironmentTier) -> Self {
224        self.tier = ::std::option::Option::Some(input);
225        self
226    }
227    /// <p>Specifies the tier to use in creating this environment. The environment tier that you choose determines whether Elastic Beanstalk provisions resources to support a web application that handles HTTP(S) requests or a web application that handles background-processing tasks.</p>
228    pub fn set_tier(mut self, input: ::std::option::Option<crate::types::EnvironmentTier>) -> Self {
229        self.tier = input;
230        self
231    }
232    /// <p>Specifies the tier to use in creating this environment. The environment tier that you choose determines whether Elastic Beanstalk provisions resources to support a web application that handles HTTP(S) requests or a web application that handles background-processing tasks.</p>
233    pub fn get_tier(&self) -> &::std::option::Option<crate::types::EnvironmentTier> {
234        &self.tier
235    }
236    /// Appends an item to `tags`.
237    ///
238    /// To override the contents of this collection use [`set_tags`](Self::set_tags).
239    ///
240    /// <p>Specifies the tags applied to resources in the environment.</p>
241    pub fn tags(mut self, input: crate::types::Tag) -> Self {
242        let mut v = self.tags.unwrap_or_default();
243        v.push(input);
244        self.tags = ::std::option::Option::Some(v);
245        self
246    }
247    /// <p>Specifies the tags applied to resources in the environment.</p>
248    pub fn set_tags(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::Tag>>) -> Self {
249        self.tags = input;
250        self
251    }
252    /// <p>Specifies the tags applied to resources in the environment.</p>
253    pub fn get_tags(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::Tag>> {
254        &self.tags
255    }
256    /// <p>The name of the application version to deploy.</p>
257    /// <p>Default: If not specified, Elastic Beanstalk attempts to deploy the sample application.</p>
258    pub fn version_label(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
259        self.version_label = ::std::option::Option::Some(input.into());
260        self
261    }
262    /// <p>The name of the application version to deploy.</p>
263    /// <p>Default: If not specified, Elastic Beanstalk attempts to deploy the sample application.</p>
264    pub fn set_version_label(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
265        self.version_label = input;
266        self
267    }
268    /// <p>The name of the application version to deploy.</p>
269    /// <p>Default: If not specified, Elastic Beanstalk attempts to deploy the sample application.</p>
270    pub fn get_version_label(&self) -> &::std::option::Option<::std::string::String> {
271        &self.version_label
272    }
273    /// <p>The name of the Elastic Beanstalk configuration template to use with the environment.</p><note>
274    /// <p>If you specify <code>TemplateName</code>, then don't specify <code>SolutionStackName</code>.</p>
275    /// </note>
276    pub fn template_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
277        self.template_name = ::std::option::Option::Some(input.into());
278        self
279    }
280    /// <p>The name of the Elastic Beanstalk configuration template to use with the environment.</p><note>
281    /// <p>If you specify <code>TemplateName</code>, then don't specify <code>SolutionStackName</code>.</p>
282    /// </note>
283    pub fn set_template_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
284        self.template_name = input;
285        self
286    }
287    /// <p>The name of the Elastic Beanstalk configuration template to use with the environment.</p><note>
288    /// <p>If you specify <code>TemplateName</code>, then don't specify <code>SolutionStackName</code>.</p>
289    /// </note>
290    pub fn get_template_name(&self) -> &::std::option::Option<::std::string::String> {
291        &self.template_name
292    }
293    /// <p>The name of an Elastic Beanstalk solution stack (platform version) to use with the environment. If specified, Elastic Beanstalk sets the configuration values to the default values associated with the specified solution stack. For a list of current solution stacks, see <a href="https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html">Elastic Beanstalk Supported Platforms</a> in the <i>AWS Elastic Beanstalk Platforms</i> guide.</p><note>
294    /// <p>If you specify <code>SolutionStackName</code>, don't specify <code>PlatformArn</code> or <code>TemplateName</code>.</p>
295    /// </note>
296    pub fn solution_stack_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
297        self.solution_stack_name = ::std::option::Option::Some(input.into());
298        self
299    }
300    /// <p>The name of an Elastic Beanstalk solution stack (platform version) to use with the environment. If specified, Elastic Beanstalk sets the configuration values to the default values associated with the specified solution stack. For a list of current solution stacks, see <a href="https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html">Elastic Beanstalk Supported Platforms</a> in the <i>AWS Elastic Beanstalk Platforms</i> guide.</p><note>
301    /// <p>If you specify <code>SolutionStackName</code>, don't specify <code>PlatformArn</code> or <code>TemplateName</code>.</p>
302    /// </note>
303    pub fn set_solution_stack_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
304        self.solution_stack_name = input;
305        self
306    }
307    /// <p>The name of an Elastic Beanstalk solution stack (platform version) to use with the environment. If specified, Elastic Beanstalk sets the configuration values to the default values associated with the specified solution stack. For a list of current solution stacks, see <a href="https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html">Elastic Beanstalk Supported Platforms</a> in the <i>AWS Elastic Beanstalk Platforms</i> guide.</p><note>
308    /// <p>If you specify <code>SolutionStackName</code>, don't specify <code>PlatformArn</code> or <code>TemplateName</code>.</p>
309    /// </note>
310    pub fn get_solution_stack_name(&self) -> &::std::option::Option<::std::string::String> {
311        &self.solution_stack_name
312    }
313    /// <p>The Amazon Resource Name (ARN) of the custom platform to use with the environment. For more information, see <a href="https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/custom-platforms.html">Custom Platforms</a> in the <i>AWS Elastic Beanstalk Developer Guide</i>.</p><note>
314    /// <p>If you specify <code>PlatformArn</code>, don't specify <code>SolutionStackName</code>.</p>
315    /// </note>
316    pub fn platform_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
317        self.platform_arn = ::std::option::Option::Some(input.into());
318        self
319    }
320    /// <p>The Amazon Resource Name (ARN) of the custom platform to use with the environment. For more information, see <a href="https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/custom-platforms.html">Custom Platforms</a> in the <i>AWS Elastic Beanstalk Developer Guide</i>.</p><note>
321    /// <p>If you specify <code>PlatformArn</code>, don't specify <code>SolutionStackName</code>.</p>
322    /// </note>
323    pub fn set_platform_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
324        self.platform_arn = input;
325        self
326    }
327    /// <p>The Amazon Resource Name (ARN) of the custom platform to use with the environment. For more information, see <a href="https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/custom-platforms.html">Custom Platforms</a> in the <i>AWS Elastic Beanstalk Developer Guide</i>.</p><note>
328    /// <p>If you specify <code>PlatformArn</code>, don't specify <code>SolutionStackName</code>.</p>
329    /// </note>
330    pub fn get_platform_arn(&self) -> &::std::option::Option<::std::string::String> {
331        &self.platform_arn
332    }
333    /// Appends an item to `option_settings`.
334    ///
335    /// To override the contents of this collection use [`set_option_settings`](Self::set_option_settings).
336    ///
337    /// <p>If specified, AWS Elastic Beanstalk sets the specified configuration options to the requested value in the configuration set for the new environment. These override the values obtained from the solution stack or the configuration template.</p>
338    pub fn option_settings(mut self, input: crate::types::ConfigurationOptionSetting) -> Self {
339        let mut v = self.option_settings.unwrap_or_default();
340        v.push(input);
341        self.option_settings = ::std::option::Option::Some(v);
342        self
343    }
344    /// <p>If specified, AWS Elastic Beanstalk sets the specified configuration options to the requested value in the configuration set for the new environment. These override the values obtained from the solution stack or the configuration template.</p>
345    pub fn set_option_settings(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::ConfigurationOptionSetting>>) -> Self {
346        self.option_settings = input;
347        self
348    }
349    /// <p>If specified, AWS Elastic Beanstalk sets the specified configuration options to the requested value in the configuration set for the new environment. These override the values obtained from the solution stack or the configuration template.</p>
350    pub fn get_option_settings(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::ConfigurationOptionSetting>> {
351        &self.option_settings
352    }
353    /// Appends an item to `options_to_remove`.
354    ///
355    /// To override the contents of this collection use [`set_options_to_remove`](Self::set_options_to_remove).
356    ///
357    /// <p>A list of custom user-defined configuration options to remove from the configuration set for this new environment.</p>
358    pub fn options_to_remove(mut self, input: crate::types::OptionSpecification) -> Self {
359        let mut v = self.options_to_remove.unwrap_or_default();
360        v.push(input);
361        self.options_to_remove = ::std::option::Option::Some(v);
362        self
363    }
364    /// <p>A list of custom user-defined configuration options to remove from the configuration set for this new environment.</p>
365    pub fn set_options_to_remove(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::OptionSpecification>>) -> Self {
366        self.options_to_remove = input;
367        self
368    }
369    /// <p>A list of custom user-defined configuration options to remove from the configuration set for this new environment.</p>
370    pub fn get_options_to_remove(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::OptionSpecification>> {
371        &self.options_to_remove
372    }
373    /// <p>The Amazon Resource Name (ARN) of an existing IAM role to be used as the environment's operations role. If specified, Elastic Beanstalk uses the operations role for permissions to downstream services during this call and during subsequent calls acting on this environment. To specify an operations role, you must have the <code>iam:PassRole</code> permission for the role. For more information, see <a href="https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/iam-operationsrole.html">Operations roles</a> in the <i>AWS Elastic Beanstalk Developer Guide</i>.</p>
374    pub fn operations_role(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
375        self.operations_role = ::std::option::Option::Some(input.into());
376        self
377    }
378    /// <p>The Amazon Resource Name (ARN) of an existing IAM role to be used as the environment's operations role. If specified, Elastic Beanstalk uses the operations role for permissions to downstream services during this call and during subsequent calls acting on this environment. To specify an operations role, you must have the <code>iam:PassRole</code> permission for the role. For more information, see <a href="https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/iam-operationsrole.html">Operations roles</a> in the <i>AWS Elastic Beanstalk Developer Guide</i>.</p>
379    pub fn set_operations_role(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
380        self.operations_role = input;
381        self
382    }
383    /// <p>The Amazon Resource Name (ARN) of an existing IAM role to be used as the environment's operations role. If specified, Elastic Beanstalk uses the operations role for permissions to downstream services during this call and during subsequent calls acting on this environment. To specify an operations role, you must have the <code>iam:PassRole</code> permission for the role. For more information, see <a href="https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/iam-operationsrole.html">Operations roles</a> in the <i>AWS Elastic Beanstalk Developer Guide</i>.</p>
384    pub fn get_operations_role(&self) -> &::std::option::Option<::std::string::String> {
385        &self.operations_role
386    }
387    /// Consumes the builder and constructs a [`CreateEnvironmentInput`](crate::operation::create_environment::CreateEnvironmentInput).
388    pub fn build(
389        self,
390    ) -> ::std::result::Result<crate::operation::create_environment::CreateEnvironmentInput, ::aws_smithy_types::error::operation::BuildError> {
391        ::std::result::Result::Ok(crate::operation::create_environment::CreateEnvironmentInput {
392            application_name: self.application_name,
393            environment_name: self.environment_name,
394            group_name: self.group_name,
395            description: self.description,
396            cname_prefix: self.cname_prefix,
397            tier: self.tier,
398            tags: self.tags,
399            version_label: self.version_label,
400            template_name: self.template_name,
401            solution_stack_name: self.solution_stack_name,
402            platform_arn: self.platform_arn,
403            option_settings: self.option_settings,
404            options_to_remove: self.options_to_remove,
405            operations_role: self.operations_role,
406        })
407    }
408}