aws-sdk-imagebuilder 1.110.0

AWS SDK for EC2 Image Builder
Documentation
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.

/// <p>Defines the settings for a specific Region.</p>
#[non_exhaustive]
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
pub struct Distribution {
    /// <p>The target Region.</p>
    pub region: ::std::string::String,
    /// <p>The specific AMI settings; for example, launch permissions or AMI tags.</p>
    pub ami_distribution_configuration: ::std::option::Option<crate::types::AmiDistributionConfiguration>,
    /// <p>Container distribution settings for encryption, licensing, and sharing in a specific Region.</p>
    pub container_distribution_configuration: ::std::option::Option<crate::types::ContainerDistributionConfiguration>,
    /// <p>The License Manager Configuration to associate with the AMI in the specified Region.</p>
    pub license_configuration_arns: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
    /// <p>A group of launchTemplateConfiguration settings that apply to image distribution for specified accounts.</p>
    pub launch_template_configurations: ::std::option::Option<::std::vec::Vec<crate::types::LaunchTemplateConfiguration>>,
    /// <p>Configure export settings to deliver disk images created from your image build, using a file format that is compatible with your VMs in that Region.</p>
    pub s3_export_configuration: ::std::option::Option<crate::types::S3ExportConfiguration>,
    /// <p>The Windows faster-launching configurations to use for AMI distribution.</p>
    pub fast_launch_configurations: ::std::option::Option<::std::vec::Vec<crate::types::FastLaunchConfiguration>>,
    /// <p>Contains settings to update Amazon Web Services Systems Manager (SSM) Parameter Store Parameters with output AMI IDs from the build by target Region.</p>
    pub ssm_parameter_configurations: ::std::option::Option<::std::vec::Vec<crate::types::SsmParameterConfiguration>>,
}
impl Distribution {
    /// <p>The target Region.</p>
    pub fn region(&self) -> &str {
        use std::ops::Deref;
        self.region.deref()
    }
    /// <p>The specific AMI settings; for example, launch permissions or AMI tags.</p>
    pub fn ami_distribution_configuration(&self) -> ::std::option::Option<&crate::types::AmiDistributionConfiguration> {
        self.ami_distribution_configuration.as_ref()
    }
    /// <p>Container distribution settings for encryption, licensing, and sharing in a specific Region.</p>
    pub fn container_distribution_configuration(&self) -> ::std::option::Option<&crate::types::ContainerDistributionConfiguration> {
        self.container_distribution_configuration.as_ref()
    }
    /// <p>The License Manager Configuration to associate with the AMI in the specified Region.</p>
    ///
    /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.license_configuration_arns.is_none()`.
    pub fn license_configuration_arns(&self) -> &[::std::string::String] {
        self.license_configuration_arns.as_deref().unwrap_or_default()
    }
    /// <p>A group of launchTemplateConfiguration settings that apply to image distribution for specified accounts.</p>
    ///
    /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.launch_template_configurations.is_none()`.
    pub fn launch_template_configurations(&self) -> &[crate::types::LaunchTemplateConfiguration] {
        self.launch_template_configurations.as_deref().unwrap_or_default()
    }
    /// <p>Configure export settings to deliver disk images created from your image build, using a file format that is compatible with your VMs in that Region.</p>
    pub fn s3_export_configuration(&self) -> ::std::option::Option<&crate::types::S3ExportConfiguration> {
        self.s3_export_configuration.as_ref()
    }
    /// <p>The Windows faster-launching configurations to use for AMI distribution.</p>
    ///
    /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.fast_launch_configurations.is_none()`.
    pub fn fast_launch_configurations(&self) -> &[crate::types::FastLaunchConfiguration] {
        self.fast_launch_configurations.as_deref().unwrap_or_default()
    }
    /// <p>Contains settings to update Amazon Web Services Systems Manager (SSM) Parameter Store Parameters with output AMI IDs from the build by target Region.</p>
    ///
    /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.ssm_parameter_configurations.is_none()`.
    pub fn ssm_parameter_configurations(&self) -> &[crate::types::SsmParameterConfiguration] {
        self.ssm_parameter_configurations.as_deref().unwrap_or_default()
    }
}
impl Distribution {
    /// Creates a new builder-style object to manufacture [`Distribution`](crate::types::Distribution).
    pub fn builder() -> crate::types::builders::DistributionBuilder {
        crate::types::builders::DistributionBuilder::default()
    }
}

/// A builder for [`Distribution`](crate::types::Distribution).
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
#[non_exhaustive]
pub struct DistributionBuilder {
    pub(crate) region: ::std::option::Option<::std::string::String>,
    pub(crate) ami_distribution_configuration: ::std::option::Option<crate::types::AmiDistributionConfiguration>,
    pub(crate) container_distribution_configuration: ::std::option::Option<crate::types::ContainerDistributionConfiguration>,
    pub(crate) license_configuration_arns: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
    pub(crate) launch_template_configurations: ::std::option::Option<::std::vec::Vec<crate::types::LaunchTemplateConfiguration>>,
    pub(crate) s3_export_configuration: ::std::option::Option<crate::types::S3ExportConfiguration>,
    pub(crate) fast_launch_configurations: ::std::option::Option<::std::vec::Vec<crate::types::FastLaunchConfiguration>>,
    pub(crate) ssm_parameter_configurations: ::std::option::Option<::std::vec::Vec<crate::types::SsmParameterConfiguration>>,
}
impl DistributionBuilder {
    /// <p>The target Region.</p>
    /// This field is required.
    pub fn region(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.region = ::std::option::Option::Some(input.into());
        self
    }
    /// <p>The target Region.</p>
    pub fn set_region(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.region = input;
        self
    }
    /// <p>The target Region.</p>
    pub fn get_region(&self) -> &::std::option::Option<::std::string::String> {
        &self.region
    }
    /// <p>The specific AMI settings; for example, launch permissions or AMI tags.</p>
    pub fn ami_distribution_configuration(mut self, input: crate::types::AmiDistributionConfiguration) -> Self {
        self.ami_distribution_configuration = ::std::option::Option::Some(input);
        self
    }
    /// <p>The specific AMI settings; for example, launch permissions or AMI tags.</p>
    pub fn set_ami_distribution_configuration(mut self, input: ::std::option::Option<crate::types::AmiDistributionConfiguration>) -> Self {
        self.ami_distribution_configuration = input;
        self
    }
    /// <p>The specific AMI settings; for example, launch permissions or AMI tags.</p>
    pub fn get_ami_distribution_configuration(&self) -> &::std::option::Option<crate::types::AmiDistributionConfiguration> {
        &self.ami_distribution_configuration
    }
    /// <p>Container distribution settings for encryption, licensing, and sharing in a specific Region.</p>
    pub fn container_distribution_configuration(mut self, input: crate::types::ContainerDistributionConfiguration) -> Self {
        self.container_distribution_configuration = ::std::option::Option::Some(input);
        self
    }
    /// <p>Container distribution settings for encryption, licensing, and sharing in a specific Region.</p>
    pub fn set_container_distribution_configuration(
        mut self,
        input: ::std::option::Option<crate::types::ContainerDistributionConfiguration>,
    ) -> Self {
        self.container_distribution_configuration = input;
        self
    }
    /// <p>Container distribution settings for encryption, licensing, and sharing in a specific Region.</p>
    pub fn get_container_distribution_configuration(&self) -> &::std::option::Option<crate::types::ContainerDistributionConfiguration> {
        &self.container_distribution_configuration
    }
    /// Appends an item to `license_configuration_arns`.
    ///
    /// To override the contents of this collection use [`set_license_configuration_arns`](Self::set_license_configuration_arns).
    ///
    /// <p>The License Manager Configuration to associate with the AMI in the specified Region.</p>
    pub fn license_configuration_arns(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        let mut v = self.license_configuration_arns.unwrap_or_default();
        v.push(input.into());
        self.license_configuration_arns = ::std::option::Option::Some(v);
        self
    }
    /// <p>The License Manager Configuration to associate with the AMI in the specified Region.</p>
    pub fn set_license_configuration_arns(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
        self.license_configuration_arns = input;
        self
    }
    /// <p>The License Manager Configuration to associate with the AMI in the specified Region.</p>
    pub fn get_license_configuration_arns(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
        &self.license_configuration_arns
    }
    /// Appends an item to `launch_template_configurations`.
    ///
    /// To override the contents of this collection use [`set_launch_template_configurations`](Self::set_launch_template_configurations).
    ///
    /// <p>A group of launchTemplateConfiguration settings that apply to image distribution for specified accounts.</p>
    pub fn launch_template_configurations(mut self, input: crate::types::LaunchTemplateConfiguration) -> Self {
        let mut v = self.launch_template_configurations.unwrap_or_default();
        v.push(input);
        self.launch_template_configurations = ::std::option::Option::Some(v);
        self
    }
    /// <p>A group of launchTemplateConfiguration settings that apply to image distribution for specified accounts.</p>
    pub fn set_launch_template_configurations(
        mut self,
        input: ::std::option::Option<::std::vec::Vec<crate::types::LaunchTemplateConfiguration>>,
    ) -> Self {
        self.launch_template_configurations = input;
        self
    }
    /// <p>A group of launchTemplateConfiguration settings that apply to image distribution for specified accounts.</p>
    pub fn get_launch_template_configurations(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::LaunchTemplateConfiguration>> {
        &self.launch_template_configurations
    }
    /// <p>Configure export settings to deliver disk images created from your image build, using a file format that is compatible with your VMs in that Region.</p>
    pub fn s3_export_configuration(mut self, input: crate::types::S3ExportConfiguration) -> Self {
        self.s3_export_configuration = ::std::option::Option::Some(input);
        self
    }
    /// <p>Configure export settings to deliver disk images created from your image build, using a file format that is compatible with your VMs in that Region.</p>
    pub fn set_s3_export_configuration(mut self, input: ::std::option::Option<crate::types::S3ExportConfiguration>) -> Self {
        self.s3_export_configuration = input;
        self
    }
    /// <p>Configure export settings to deliver disk images created from your image build, using a file format that is compatible with your VMs in that Region.</p>
    pub fn get_s3_export_configuration(&self) -> &::std::option::Option<crate::types::S3ExportConfiguration> {
        &self.s3_export_configuration
    }
    /// Appends an item to `fast_launch_configurations`.
    ///
    /// To override the contents of this collection use [`set_fast_launch_configurations`](Self::set_fast_launch_configurations).
    ///
    /// <p>The Windows faster-launching configurations to use for AMI distribution.</p>
    pub fn fast_launch_configurations(mut self, input: crate::types::FastLaunchConfiguration) -> Self {
        let mut v = self.fast_launch_configurations.unwrap_or_default();
        v.push(input);
        self.fast_launch_configurations = ::std::option::Option::Some(v);
        self
    }
    /// <p>The Windows faster-launching configurations to use for AMI distribution.</p>
    pub fn set_fast_launch_configurations(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::FastLaunchConfiguration>>) -> Self {
        self.fast_launch_configurations = input;
        self
    }
    /// <p>The Windows faster-launching configurations to use for AMI distribution.</p>
    pub fn get_fast_launch_configurations(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::FastLaunchConfiguration>> {
        &self.fast_launch_configurations
    }
    /// Appends an item to `ssm_parameter_configurations`.
    ///
    /// To override the contents of this collection use [`set_ssm_parameter_configurations`](Self::set_ssm_parameter_configurations).
    ///
    /// <p>Contains settings to update Amazon Web Services Systems Manager (SSM) Parameter Store Parameters with output AMI IDs from the build by target Region.</p>
    pub fn ssm_parameter_configurations(mut self, input: crate::types::SsmParameterConfiguration) -> Self {
        let mut v = self.ssm_parameter_configurations.unwrap_or_default();
        v.push(input);
        self.ssm_parameter_configurations = ::std::option::Option::Some(v);
        self
    }
    /// <p>Contains settings to update Amazon Web Services Systems Manager (SSM) Parameter Store Parameters with output AMI IDs from the build by target Region.</p>
    pub fn set_ssm_parameter_configurations(
        mut self,
        input: ::std::option::Option<::std::vec::Vec<crate::types::SsmParameterConfiguration>>,
    ) -> Self {
        self.ssm_parameter_configurations = input;
        self
    }
    /// <p>Contains settings to update Amazon Web Services Systems Manager (SSM) Parameter Store Parameters with output AMI IDs from the build by target Region.</p>
    pub fn get_ssm_parameter_configurations(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::SsmParameterConfiguration>> {
        &self.ssm_parameter_configurations
    }
    /// Consumes the builder and constructs a [`Distribution`](crate::types::Distribution).
    /// This method will fail if any of the following fields are not set:
    /// - [`region`](crate::types::builders::DistributionBuilder::region)
    pub fn build(self) -> ::std::result::Result<crate::types::Distribution, ::aws_smithy_types::error::operation::BuildError> {
        ::std::result::Result::Ok(crate::types::Distribution {
            region: self.region.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "region",
                    "region was not specified but it is required when building Distribution",
                )
            })?,
            ami_distribution_configuration: self.ami_distribution_configuration,
            container_distribution_configuration: self.container_distribution_configuration,
            license_configuration_arns: self.license_configuration_arns,
            launch_template_configurations: self.launch_template_configurations,
            s3_export_configuration: self.s3_export_configuration,
            fast_launch_configurations: self.fast_launch_configurations,
            ssm_parameter_configurations: self.ssm_parameter_configurations,
        })
    }
}