aws-sdk-imagebuilder 1.118.0

AWS SDK for EC2 Image Builder
Documentation
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
pub use crate::operation::create_image_recipe::_create_image_recipe_input::CreateImageRecipeInputBuilder;

pub use crate::operation::create_image_recipe::_create_image_recipe_output::CreateImageRecipeOutputBuilder;

impl crate::operation::create_image_recipe::builders::CreateImageRecipeInputBuilder {
    /// Sends a request with this input using the given client.
    pub async fn send_with(
        self,
        client: &crate::Client,
    ) -> ::std::result::Result<
        crate::operation::create_image_recipe::CreateImageRecipeOutput,
        ::aws_smithy_runtime_api::client::result::SdkError<
            crate::operation::create_image_recipe::CreateImageRecipeError,
            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
        >,
    > {
        let mut fluent_builder = client.create_image_recipe();
        fluent_builder.inner = self;
        fluent_builder.send().await
    }
}
/// Fluent builder constructing a request to `CreateImageRecipe`.
///
/// <p>Creates a new image recipe. Image recipes define how images are configured, tested, and assessed.</p>
#[derive(::std::clone::Clone, ::std::fmt::Debug)]
pub struct CreateImageRecipeFluentBuilder {
    handle: ::std::sync::Arc<crate::client::Handle>,
    inner: crate::operation::create_image_recipe::builders::CreateImageRecipeInputBuilder,
    config_override: ::std::option::Option<crate::config::Builder>,
}
impl
    crate::client::customize::internal::CustomizableSend<
        crate::operation::create_image_recipe::CreateImageRecipeOutput,
        crate::operation::create_image_recipe::CreateImageRecipeError,
    > for CreateImageRecipeFluentBuilder
{
    fn send(
        self,
        config_override: crate::config::Builder,
    ) -> crate::client::customize::internal::BoxFuture<
        crate::client::customize::internal::SendResult<
            crate::operation::create_image_recipe::CreateImageRecipeOutput,
            crate::operation::create_image_recipe::CreateImageRecipeError,
        >,
    > {
        ::std::boxed::Box::pin(async move { self.config_override(config_override).send().await })
    }
}
impl CreateImageRecipeFluentBuilder {
    /// Creates a new `CreateImageRecipeFluentBuilder`.
    pub(crate) fn new(handle: ::std::sync::Arc<crate::client::Handle>) -> Self {
        Self {
            handle,
            inner: ::std::default::Default::default(),
            config_override: ::std::option::Option::None,
        }
    }
    /// Access the CreateImageRecipe as a reference.
    pub fn as_input(&self) -> &crate::operation::create_image_recipe::builders::CreateImageRecipeInputBuilder {
        &self.inner
    }
    /// Sends the request and returns the response.
    ///
    /// If an error occurs, an `SdkError` will be returned with additional details that
    /// can be matched against.
    ///
    /// By default, any retryable failures will be retried twice. Retry behavior
    /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
    /// set when configuring the client.
    pub async fn send(
        self,
    ) -> ::std::result::Result<
        crate::operation::create_image_recipe::CreateImageRecipeOutput,
        ::aws_smithy_runtime_api::client::result::SdkError<
            crate::operation::create_image_recipe::CreateImageRecipeError,
            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
        >,
    > {
        let input = self
            .inner
            .build()
            .map_err(::aws_smithy_runtime_api::client::result::SdkError::construction_failure)?;
        let runtime_plugins = crate::operation::create_image_recipe::CreateImageRecipe::operation_runtime_plugins(
            self.handle.runtime_plugins.clone(),
            &self.handle.conf,
            self.config_override,
        );
        crate::operation::create_image_recipe::CreateImageRecipe::orchestrate(&runtime_plugins, input).await
    }

    /// Consumes this builder, creating a customizable operation that can be modified before being sent.
    pub fn customize(
        self,
    ) -> crate::client::customize::CustomizableOperation<
        crate::operation::create_image_recipe::CreateImageRecipeOutput,
        crate::operation::create_image_recipe::CreateImageRecipeError,
        Self,
    > {
        crate::client::customize::CustomizableOperation::new(self)
    }
    pub(crate) fn config_override(mut self, config_override: impl ::std::convert::Into<crate::config::Builder>) -> Self {
        self.set_config_override(::std::option::Option::Some(config_override.into()));
        self
    }

    pub(crate) fn set_config_override(&mut self, config_override: ::std::option::Option<crate::config::Builder>) -> &mut Self {
        self.config_override = config_override;
        self
    }
    /// <p>The name of the image recipe.</p>
    pub fn name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.inner = self.inner.name(input.into());
        self
    }
    /// <p>The name of the image recipe.</p>
    pub fn set_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.inner = self.inner.set_name(input);
        self
    }
    /// <p>The name of the image recipe.</p>
    pub fn get_name(&self) -> &::std::option::Option<::std::string::String> {
        self.inner.get_name()
    }
    /// <p>The description of the image recipe.</p>
    pub fn description(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.inner = self.inner.description(input.into());
        self
    }
    /// <p>The description of the image recipe.</p>
    pub fn set_description(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.inner = self.inner.set_description(input);
        self
    }
    /// <p>The description of the image recipe.</p>
    pub fn get_description(&self) -> &::std::option::Option<::std::string::String> {
        self.inner.get_description()
    }
    /// <p>The semantic version of the image recipe. This version follows the semantic version syntax.</p><note>
    /// <p>The semantic version has four nodes: <major>
    /// .
    /// <minor>
    /// .
    /// <patch>
    /// /
    /// <build>
    /// . You can assign values for the first three, and can filter on all of them.
    /// </build>
    /// </patch>
    /// </minor>
    /// </major></p>
    /// <p><b>Assignment:</b> For the first three nodes you can assign any positive integer value, including zero, with an upper limit of 2^30-1, or 1073741823 for each node. Image Builder automatically assigns the build number to the fourth node.</p>
    /// <p><b>Patterns:</b> You can use any numeric pattern that adheres to the assignment requirements for the nodes that you can assign. For example, you might choose a software version pattern, such as 1.0.0, or a date, such as 2021.01.01.</p>
    /// </note>
    pub fn semantic_version(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.inner = self.inner.semantic_version(input.into());
        self
    }
    /// <p>The semantic version of the image recipe. This version follows the semantic version syntax.</p><note>
    /// <p>The semantic version has four nodes: <major>
    /// .
    /// <minor>
    /// .
    /// <patch>
    /// /
    /// <build>
    /// . You can assign values for the first three, and can filter on all of them.
    /// </build>
    /// </patch>
    /// </minor>
    /// </major></p>
    /// <p><b>Assignment:</b> For the first three nodes you can assign any positive integer value, including zero, with an upper limit of 2^30-1, or 1073741823 for each node. Image Builder automatically assigns the build number to the fourth node.</p>
    /// <p><b>Patterns:</b> You can use any numeric pattern that adheres to the assignment requirements for the nodes that you can assign. For example, you might choose a software version pattern, such as 1.0.0, or a date, such as 2021.01.01.</p>
    /// </note>
    pub fn set_semantic_version(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.inner = self.inner.set_semantic_version(input);
        self
    }
    /// <p>The semantic version of the image recipe. This version follows the semantic version syntax.</p><note>
    /// <p>The semantic version has four nodes: <major>
    /// .
    /// <minor>
    /// .
    /// <patch>
    /// /
    /// <build>
    /// . You can assign values for the first three, and can filter on all of them.
    /// </build>
    /// </patch>
    /// </minor>
    /// </major></p>
    /// <p><b>Assignment:</b> For the first three nodes you can assign any positive integer value, including zero, with an upper limit of 2^30-1, or 1073741823 for each node. Image Builder automatically assigns the build number to the fourth node.</p>
    /// <p><b>Patterns:</b> You can use any numeric pattern that adheres to the assignment requirements for the nodes that you can assign. For example, you might choose a software version pattern, such as 1.0.0, or a date, such as 2021.01.01.</p>
    /// </note>
    pub fn get_semantic_version(&self) -> &::std::option::Option<::std::string::String> {
        self.inner.get_semantic_version()
    }
    ///
    /// Appends an item to `components`.
    ///
    /// To override the contents of this collection use [`set_components`](Self::set_components).
    ///
    /// <p>The components included in the image recipe.</p>
    pub fn components(mut self, input: crate::types::ComponentConfiguration) -> Self {
        self.inner = self.inner.components(input);
        self
    }
    /// <p>The components included in the image recipe.</p>
    pub fn set_components(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::ComponentConfiguration>>) -> Self {
        self.inner = self.inner.set_components(input);
        self
    }
    /// <p>The components included in the image recipe.</p>
    pub fn get_components(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::ComponentConfiguration>> {
        self.inner.get_components()
    }
    /// <p>The base image for customizations specified in the image recipe. You can specify the parent image using one of the following options:</p>
    /// <ul>
    /// <li>
    /// <p>AMI ID</p></li>
    /// <li>
    /// <p>Image Builder image Amazon Resource Name (ARN)</p></li>
    /// <li>
    /// <p>Amazon Web Services Systems Manager (SSM) Parameter Store Parameter, prefixed by <code>ssm:</code>, followed by the parameter name or ARN.</p></li>
    /// <li>
    /// <p>Amazon Web Services Marketplace product ID</p></li>
    /// </ul>
    /// <p>If you enter an AMI ID or an SSM parameter that contains the AMI ID, you must have access to the AMI, and the AMI must be in the source Region.</p>
    pub fn parent_image(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.inner = self.inner.parent_image(input.into());
        self
    }
    /// <p>The base image for customizations specified in the image recipe. You can specify the parent image using one of the following options:</p>
    /// <ul>
    /// <li>
    /// <p>AMI ID</p></li>
    /// <li>
    /// <p>Image Builder image Amazon Resource Name (ARN)</p></li>
    /// <li>
    /// <p>Amazon Web Services Systems Manager (SSM) Parameter Store Parameter, prefixed by <code>ssm:</code>, followed by the parameter name or ARN.</p></li>
    /// <li>
    /// <p>Amazon Web Services Marketplace product ID</p></li>
    /// </ul>
    /// <p>If you enter an AMI ID or an SSM parameter that contains the AMI ID, you must have access to the AMI, and the AMI must be in the source Region.</p>
    pub fn set_parent_image(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.inner = self.inner.set_parent_image(input);
        self
    }
    /// <p>The base image for customizations specified in the image recipe. You can specify the parent image using one of the following options:</p>
    /// <ul>
    /// <li>
    /// <p>AMI ID</p></li>
    /// <li>
    /// <p>Image Builder image Amazon Resource Name (ARN)</p></li>
    /// <li>
    /// <p>Amazon Web Services Systems Manager (SSM) Parameter Store Parameter, prefixed by <code>ssm:</code>, followed by the parameter name or ARN.</p></li>
    /// <li>
    /// <p>Amazon Web Services Marketplace product ID</p></li>
    /// </ul>
    /// <p>If you enter an AMI ID or an SSM parameter that contains the AMI ID, you must have access to the AMI, and the AMI must be in the source Region.</p>
    pub fn get_parent_image(&self) -> &::std::option::Option<::std::string::String> {
        self.inner.get_parent_image()
    }
    ///
    /// Appends an item to `blockDeviceMappings`.
    ///
    /// To override the contents of this collection use [`set_block_device_mappings`](Self::set_block_device_mappings).
    ///
    /// <p>The block device mappings of the image recipe.</p>
    pub fn block_device_mappings(mut self, input: crate::types::InstanceBlockDeviceMapping) -> Self {
        self.inner = self.inner.block_device_mappings(input);
        self
    }
    /// <p>The block device mappings of the image recipe.</p>
    pub fn set_block_device_mappings(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::InstanceBlockDeviceMapping>>) -> Self {
        self.inner = self.inner.set_block_device_mappings(input);
        self
    }
    /// <p>The block device mappings of the image recipe.</p>
    pub fn get_block_device_mappings(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::InstanceBlockDeviceMapping>> {
        self.inner.get_block_device_mappings()
    }
    ///
    /// Adds a key-value pair to `tags`.
    ///
    /// To override the contents of this collection use [`set_tags`](Self::set_tags).
    ///
    /// <p>The tags of the image recipe.</p>
    pub fn tags(mut self, k: impl ::std::convert::Into<::std::string::String>, v: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.inner = self.inner.tags(k.into(), v.into());
        self
    }
    /// <p>The tags of the image recipe.</p>
    pub fn set_tags(mut self, input: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>) -> Self {
        self.inner = self.inner.set_tags(input);
        self
    }
    /// <p>The tags of the image recipe.</p>
    pub fn get_tags(&self) -> &::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>> {
        self.inner.get_tags()
    }
    /// <p>The working directory used during build and test workflows.</p>
    pub fn working_directory(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.inner = self.inner.working_directory(input.into());
        self
    }
    /// <p>The working directory used during build and test workflows.</p>
    pub fn set_working_directory(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.inner = self.inner.set_working_directory(input);
        self
    }
    /// <p>The working directory used during build and test workflows.</p>
    pub fn get_working_directory(&self) -> &::std::option::Option<::std::string::String> {
        self.inner.get_working_directory()
    }
    /// <p>Specify additional settings and launch scripts for your build instances.</p>
    pub fn additional_instance_configuration(mut self, input: crate::types::AdditionalInstanceConfiguration) -> Self {
        self.inner = self.inner.additional_instance_configuration(input);
        self
    }
    /// <p>Specify additional settings and launch scripts for your build instances.</p>
    pub fn set_additional_instance_configuration(mut self, input: ::std::option::Option<crate::types::AdditionalInstanceConfiguration>) -> Self {
        self.inner = self.inner.set_additional_instance_configuration(input);
        self
    }
    /// <p>Specify additional settings and launch scripts for your build instances.</p>
    pub fn get_additional_instance_configuration(&self) -> &::std::option::Option<crate::types::AdditionalInstanceConfiguration> {
        self.inner.get_additional_instance_configuration()
    }
    ///
    /// Adds a key-value pair to `amiTags`.
    ///
    /// To override the contents of this collection use [`set_ami_tags`](Self::set_ami_tags).
    ///
    /// <p>Tags that are applied to the AMI that Image Builder creates during the Build phase prior to image distribution.</p>
    pub fn ami_tags(mut self, k: impl ::std::convert::Into<::std::string::String>, v: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.inner = self.inner.ami_tags(k.into(), v.into());
        self
    }
    /// <p>Tags that are applied to the AMI that Image Builder creates during the Build phase prior to image distribution.</p>
    pub fn set_ami_tags(mut self, input: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>) -> Self {
        self.inner = self.inner.set_ami_tags(input);
        self
    }
    /// <p>Tags that are applied to the AMI that Image Builder creates during the Build phase prior to image distribution.</p>
    pub fn get_ami_tags(&self) -> &::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>> {
        self.inner.get_ami_tags()
    }
    ///
    /// Appends an item to `amiWatermarks`.
    ///
    /// To override the contents of this collection use [`set_ami_watermarks`](Self::set_ami_watermarks).
    ///
    /// <p>The AMI watermark names to attach to the output AMI from this recipe. AMI watermarks are lineage markers. They automatically propagate to derivative AMIs when the source AMI is copied or distributed across Regions or accounts.</p><note>
    /// <p>AMI watermarks are supported only for image recipes. AMIs with watermarks cannot be made public.</p>
    /// </note>
    pub fn ami_watermarks(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.inner = self.inner.ami_watermarks(input.into());
        self
    }
    /// <p>The AMI watermark names to attach to the output AMI from this recipe. AMI watermarks are lineage markers. They automatically propagate to derivative AMIs when the source AMI is copied or distributed across Regions or accounts.</p><note>
    /// <p>AMI watermarks are supported only for image recipes. AMIs with watermarks cannot be made public.</p>
    /// </note>
    pub fn set_ami_watermarks(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
        self.inner = self.inner.set_ami_watermarks(input);
        self
    }
    /// <p>The AMI watermark names to attach to the output AMI from this recipe. AMI watermarks are lineage markers. They automatically propagate to derivative AMIs when the source AMI is copied or distributed across Regions or accounts.</p><note>
    /// <p>AMI watermarks are supported only for image recipes. AMIs with watermarks cannot be made public.</p>
    /// </note>
    pub fn get_ami_watermarks(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
        self.inner.get_ami_watermarks()
    }
    /// <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</a> in the <i>Amazon EC2 API Reference</i>.</p>
    pub fn client_token(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.inner = self.inner.client_token(input.into());
        self
    }
    /// <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</a> in the <i>Amazon EC2 API Reference</i>.</p>
    pub fn set_client_token(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.inner = self.inner.set_client_token(input);
        self
    }
    /// <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</a> in the <i>Amazon EC2 API Reference</i>.</p>
    pub fn get_client_token(&self) -> &::std::option::Option<::std::string::String> {
        self.inner.get_client_token()
    }
}