All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.pulumi.aws.mwaa.EnvironmentArgs Maven / Gradle / Ivy

// *** WARNING: this file was generated by pulumi-java-gen. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

package com.pulumi.aws.mwaa;

import com.pulumi.aws.mwaa.inputs.EnvironmentLoggingConfigurationArgs;
import com.pulumi.aws.mwaa.inputs.EnvironmentNetworkConfigurationArgs;
import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import com.pulumi.exceptions.MissingRequiredPropertyException;
import java.lang.Integer;
import java.lang.String;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


public final class EnvironmentArgs extends com.pulumi.resources.ResourceArgs {

    public static final EnvironmentArgs Empty = new EnvironmentArgs();

    /**
     * The `airflow_configuration_options` parameter specifies airflow override options. Check the [Official documentation](https://docs.aws.amazon.com/mwaa/latest/userguide/configuring-env-variables.html#configuring-env-variables-reference) for all possible configuration options.
     * 
     */
    @Import(name="airflowConfigurationOptions")
    private @Nullable Output> airflowConfigurationOptions;

    /**
     * @return The `airflow_configuration_options` parameter specifies airflow override options. Check the [Official documentation](https://docs.aws.amazon.com/mwaa/latest/userguide/configuring-env-variables.html#configuring-env-variables-reference) for all possible configuration options.
     * 
     */
    public Optional>> airflowConfigurationOptions() {
        return Optional.ofNullable(this.airflowConfigurationOptions);
    }

    /**
     * Airflow version of your environment, will be set by default to the latest version that MWAA supports.
     * 
     */
    @Import(name="airflowVersion")
    private @Nullable Output airflowVersion;

    /**
     * @return Airflow version of your environment, will be set by default to the latest version that MWAA supports.
     * 
     */
    public Optional> airflowVersion() {
        return Optional.ofNullable(this.airflowVersion);
    }

    /**
     * The relative path to the DAG folder on your Amazon S3 storage bucket. For example, dags. For more information, see [Importing DAGs on Amazon MWAA](https://docs.aws.amazon.com/mwaa/latest/userguide/configuring-dag-import.html).
     * 
     */
    @Import(name="dagS3Path", required=true)
    private Output dagS3Path;

    /**
     * @return The relative path to the DAG folder on your Amazon S3 storage bucket. For example, dags. For more information, see [Importing DAGs on Amazon MWAA](https://docs.aws.amazon.com/mwaa/latest/userguide/configuring-dag-import.html).
     * 
     */
    public Output dagS3Path() {
        return this.dagS3Path;
    }

    /**
     * Defines whether the VPC endpoints configured for the environment are created and managed by the customer or by AWS. If set to `SERVICE`, Amazon MWAA will create and manage the required VPC endpoints in your VPC. If set to `CUSTOMER`, you must create, and manage, the VPC endpoints for your VPC. Defaults to `SERVICE` if not set.
     * 
     */
    @Import(name="endpointManagement")
    private @Nullable Output endpointManagement;

    /**
     * @return Defines whether the VPC endpoints configured for the environment are created and managed by the customer or by AWS. If set to `SERVICE`, Amazon MWAA will create and manage the required VPC endpoints in your VPC. If set to `CUSTOMER`, you must create, and manage, the VPC endpoints for your VPC. Defaults to `SERVICE` if not set.
     * 
     */
    public Optional> endpointManagement() {
        return Optional.ofNullable(this.endpointManagement);
    }

    /**
     * Environment class for the cluster. Possible options are `mw1.small`, `mw1.medium`, `mw1.large`. Will be set by default to `mw1.small`. Please check the [AWS Pricing](https://aws.amazon.com/de/managed-workflows-for-apache-airflow/pricing/) for more information about the environment classes.
     * 
     */
    @Import(name="environmentClass")
    private @Nullable Output environmentClass;

    /**
     * @return Environment class for the cluster. Possible options are `mw1.small`, `mw1.medium`, `mw1.large`. Will be set by default to `mw1.small`. Please check the [AWS Pricing](https://aws.amazon.com/de/managed-workflows-for-apache-airflow/pricing/) for more information about the environment classes.
     * 
     */
    public Optional> environmentClass() {
        return Optional.ofNullable(this.environmentClass);
    }

    /**
     * The Amazon Resource Name (ARN) of the task execution role that the Amazon MWAA and its environment can assume. Check the [official AWS documentation](https://docs.aws.amazon.com/mwaa/latest/userguide/mwaa-create-role.html) for the detailed role specification.
     * 
     */
    @Import(name="executionRoleArn", required=true)
    private Output executionRoleArn;

    /**
     * @return The Amazon Resource Name (ARN) of the task execution role that the Amazon MWAA and its environment can assume. Check the [official AWS documentation](https://docs.aws.amazon.com/mwaa/latest/userguide/mwaa-create-role.html) for the detailed role specification.
     * 
     */
    public Output executionRoleArn() {
        return this.executionRoleArn;
    }

    /**
     * The Amazon Resource Name (ARN) of your KMS key that you want to use for encryption. Will be set to the ARN of the managed KMS key `aws/airflow` by default. Please check the [Official Documentation](https://docs.aws.amazon.com/mwaa/latest/userguide/custom-keys-certs.html) for more information.
     * 
     */
    @Import(name="kmsKey")
    private @Nullable Output kmsKey;

    /**
     * @return The Amazon Resource Name (ARN) of your KMS key that you want to use for encryption. Will be set to the ARN of the managed KMS key `aws/airflow` by default. Please check the [Official Documentation](https://docs.aws.amazon.com/mwaa/latest/userguide/custom-keys-certs.html) for more information.
     * 
     */
    public Optional> kmsKey() {
        return Optional.ofNullable(this.kmsKey);
    }

    /**
     * The Apache Airflow logs you want to send to Amazon CloudWatch Logs. See `logging_configuration` Block for details.
     * 
     */
    @Import(name="loggingConfiguration")
    private @Nullable Output loggingConfiguration;

    /**
     * @return The Apache Airflow logs you want to send to Amazon CloudWatch Logs. See `logging_configuration` Block for details.
     * 
     */
    public Optional> loggingConfiguration() {
        return Optional.ofNullable(this.loggingConfiguration);
    }

    /**
     * The maximum number of web servers that you want to run in your environment. Value need to be between `2` and `5`. Will be `2` by default.
     * 
     */
    @Import(name="maxWebservers")
    private @Nullable Output maxWebservers;

    /**
     * @return The maximum number of web servers that you want to run in your environment. Value need to be between `2` and `5`. Will be `2` by default.
     * 
     */
    public Optional> maxWebservers() {
        return Optional.ofNullable(this.maxWebservers);
    }

    /**
     * The maximum number of workers that can be automatically scaled up. Value need to be between `1` and `25`. Will be `10` by default.
     * 
     */
    @Import(name="maxWorkers")
    private @Nullable Output maxWorkers;

    /**
     * @return The maximum number of workers that can be automatically scaled up. Value need to be between `1` and `25`. Will be `10` by default.
     * 
     */
    public Optional> maxWorkers() {
        return Optional.ofNullable(this.maxWorkers);
    }

    /**
     * The minimum number of web servers that you want to run in your environment. Value need to be between `2` and `5`. Will be `2` by default.
     * 
     */
    @Import(name="minWebservers")
    private @Nullable Output minWebservers;

    /**
     * @return The minimum number of web servers that you want to run in your environment. Value need to be between `2` and `5`. Will be `2` by default.
     * 
     */
    public Optional> minWebservers() {
        return Optional.ofNullable(this.minWebservers);
    }

    /**
     * The minimum number of workers that you want to run in your environment. Will be `1` by default.
     * 
     */
    @Import(name="minWorkers")
    private @Nullable Output minWorkers;

    /**
     * @return The minimum number of workers that you want to run in your environment. Will be `1` by default.
     * 
     */
    public Optional> minWorkers() {
        return Optional.ofNullable(this.minWorkers);
    }

    /**
     * The name of the Apache Airflow Environment
     * 
     */
    @Import(name="name")
    private @Nullable Output name;

    /**
     * @return The name of the Apache Airflow Environment
     * 
     */
    public Optional> name() {
        return Optional.ofNullable(this.name);
    }

    /**
     * Specifies the network configuration for your Apache Airflow Environment. This includes two private subnets as well as security groups for the Airflow environment. Each subnet requires internet connection, otherwise the deployment will fail. See `network_configuration` Block for details.
     * 
     */
    @Import(name="networkConfiguration", required=true)
    private Output networkConfiguration;

    /**
     * @return Specifies the network configuration for your Apache Airflow Environment. This includes two private subnets as well as security groups for the Airflow environment. Each subnet requires internet connection, otherwise the deployment will fail. See `network_configuration` Block for details.
     * 
     */
    public Output networkConfiguration() {
        return this.networkConfiguration;
    }

    /**
     * The plugins.zip file version you want to use.
     * 
     */
    @Import(name="pluginsS3ObjectVersion")
    private @Nullable Output pluginsS3ObjectVersion;

    /**
     * @return The plugins.zip file version you want to use.
     * 
     */
    public Optional> pluginsS3ObjectVersion() {
        return Optional.ofNullable(this.pluginsS3ObjectVersion);
    }

    /**
     * The relative path to the plugins.zip file on your Amazon S3 storage bucket. For example, plugins.zip. If a relative path is provided in the request, then plugins_s3_object_version is required. For more information, see [Importing DAGs on Amazon MWAA](https://docs.aws.amazon.com/mwaa/latest/userguide/configuring-dag-import.html).
     * 
     */
    @Import(name="pluginsS3Path")
    private @Nullable Output pluginsS3Path;

    /**
     * @return The relative path to the plugins.zip file on your Amazon S3 storage bucket. For example, plugins.zip. If a relative path is provided in the request, then plugins_s3_object_version is required. For more information, see [Importing DAGs on Amazon MWAA](https://docs.aws.amazon.com/mwaa/latest/userguide/configuring-dag-import.html).
     * 
     */
    public Optional> pluginsS3Path() {
        return Optional.ofNullable(this.pluginsS3Path);
    }

    /**
     * The requirements.txt file version you want to use.
     * 
     */
    @Import(name="requirementsS3ObjectVersion")
    private @Nullable Output requirementsS3ObjectVersion;

    /**
     * @return The requirements.txt file version you want to use.
     * 
     */
    public Optional> requirementsS3ObjectVersion() {
        return Optional.ofNullable(this.requirementsS3ObjectVersion);
    }

    /**
     * The relative path to the requirements.txt file on your Amazon S3 storage bucket. For example, requirements.txt. If a relative path is provided in the request, then requirements_s3_object_version is required. For more information, see [Importing DAGs on Amazon MWAA](https://docs.aws.amazon.com/mwaa/latest/userguide/configuring-dag-import.html).
     * 
     */
    @Import(name="requirementsS3Path")
    private @Nullable Output requirementsS3Path;

    /**
     * @return The relative path to the requirements.txt file on your Amazon S3 storage bucket. For example, requirements.txt. If a relative path is provided in the request, then requirements_s3_object_version is required. For more information, see [Importing DAGs on Amazon MWAA](https://docs.aws.amazon.com/mwaa/latest/userguide/configuring-dag-import.html).
     * 
     */
    public Optional> requirementsS3Path() {
        return Optional.ofNullable(this.requirementsS3Path);
    }

    /**
     * The number of schedulers that you want to run in your environment. v2.0.2 and above accepts `2` - `5`, default `2`. v1.10.12 accepts `1`.
     * 
     */
    @Import(name="schedulers")
    private @Nullable Output schedulers;

    /**
     * @return The number of schedulers that you want to run in your environment. v2.0.2 and above accepts `2` - `5`, default `2`. v1.10.12 accepts `1`.
     * 
     */
    public Optional> schedulers() {
        return Optional.ofNullable(this.schedulers);
    }

    /**
     * The Amazon Resource Name (ARN) of your Amazon S3 storage bucket. For example, arn:aws:s3:::airflow-mybucketname.
     * 
     */
    @Import(name="sourceBucketArn", required=true)
    private Output sourceBucketArn;

    /**
     * @return The Amazon Resource Name (ARN) of your Amazon S3 storage bucket. For example, arn:aws:s3:::airflow-mybucketname.
     * 
     */
    public Output sourceBucketArn() {
        return this.sourceBucketArn;
    }

    /**
     * The version of the startup shell script you want to use. You must specify the version ID that Amazon S3 assigns to the file every time you update the script.
     * 
     */
    @Import(name="startupScriptS3ObjectVersion")
    private @Nullable Output startupScriptS3ObjectVersion;

    /**
     * @return The version of the startup shell script you want to use. You must specify the version ID that Amazon S3 assigns to the file every time you update the script.
     * 
     */
    public Optional> startupScriptS3ObjectVersion() {
        return Optional.ofNullable(this.startupScriptS3ObjectVersion);
    }

    /**
     * The relative path to the script hosted in your bucket. The script runs as your environment starts before starting the Apache Airflow process. Use this script to install dependencies, modify configuration options, and set environment variables. See [Using a startup script](https://docs.aws.amazon.com/mwaa/latest/userguide/using-startup-script.html). Supported for environment versions 2.x and later.
     * 
     */
    @Import(name="startupScriptS3Path")
    private @Nullable Output startupScriptS3Path;

    /**
     * @return The relative path to the script hosted in your bucket. The script runs as your environment starts before starting the Apache Airflow process. Use this script to install dependencies, modify configuration options, and set environment variables. See [Using a startup script](https://docs.aws.amazon.com/mwaa/latest/userguide/using-startup-script.html). Supported for environment versions 2.x and later.
     * 
     */
    public Optional> startupScriptS3Path() {
        return Optional.ofNullable(this.startupScriptS3Path);
    }

    /**
     * A map of resource tags to associate with the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
     * 
     */
    @Import(name="tags")
    private @Nullable Output> tags;

    /**
     * @return A map of resource tags to associate with the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
     * 
     */
    public Optional>> tags() {
        return Optional.ofNullable(this.tags);
    }

    /**
     * Specifies whether the webserver should be accessible over the internet or via your specified VPC. Possible options: `PRIVATE_ONLY` (default) and `PUBLIC_ONLY`.
     * 
     */
    @Import(name="webserverAccessMode")
    private @Nullable Output webserverAccessMode;

    /**
     * @return Specifies whether the webserver should be accessible over the internet or via your specified VPC. Possible options: `PRIVATE_ONLY` (default) and `PUBLIC_ONLY`.
     * 
     */
    public Optional> webserverAccessMode() {
        return Optional.ofNullable(this.webserverAccessMode);
    }

    /**
     * Specifies the start date for the weekly maintenance window.
     * 
     */
    @Import(name="weeklyMaintenanceWindowStart")
    private @Nullable Output weeklyMaintenanceWindowStart;

    /**
     * @return Specifies the start date for the weekly maintenance window.
     * 
     */
    public Optional> weeklyMaintenanceWindowStart() {
        return Optional.ofNullable(this.weeklyMaintenanceWindowStart);
    }

    private EnvironmentArgs() {}

    private EnvironmentArgs(EnvironmentArgs $) {
        this.airflowConfigurationOptions = $.airflowConfigurationOptions;
        this.airflowVersion = $.airflowVersion;
        this.dagS3Path = $.dagS3Path;
        this.endpointManagement = $.endpointManagement;
        this.environmentClass = $.environmentClass;
        this.executionRoleArn = $.executionRoleArn;
        this.kmsKey = $.kmsKey;
        this.loggingConfiguration = $.loggingConfiguration;
        this.maxWebservers = $.maxWebservers;
        this.maxWorkers = $.maxWorkers;
        this.minWebservers = $.minWebservers;
        this.minWorkers = $.minWorkers;
        this.name = $.name;
        this.networkConfiguration = $.networkConfiguration;
        this.pluginsS3ObjectVersion = $.pluginsS3ObjectVersion;
        this.pluginsS3Path = $.pluginsS3Path;
        this.requirementsS3ObjectVersion = $.requirementsS3ObjectVersion;
        this.requirementsS3Path = $.requirementsS3Path;
        this.schedulers = $.schedulers;
        this.sourceBucketArn = $.sourceBucketArn;
        this.startupScriptS3ObjectVersion = $.startupScriptS3ObjectVersion;
        this.startupScriptS3Path = $.startupScriptS3Path;
        this.tags = $.tags;
        this.webserverAccessMode = $.webserverAccessMode;
        this.weeklyMaintenanceWindowStart = $.weeklyMaintenanceWindowStart;
    }

    public static Builder builder() {
        return new Builder();
    }
    public static Builder builder(EnvironmentArgs defaults) {
        return new Builder(defaults);
    }

    public static final class Builder {
        private EnvironmentArgs $;

        public Builder() {
            $ = new EnvironmentArgs();
        }

        public Builder(EnvironmentArgs defaults) {
            $ = new EnvironmentArgs(Objects.requireNonNull(defaults));
        }

        /**
         * @param airflowConfigurationOptions The `airflow_configuration_options` parameter specifies airflow override options. Check the [Official documentation](https://docs.aws.amazon.com/mwaa/latest/userguide/configuring-env-variables.html#configuring-env-variables-reference) for all possible configuration options.
         * 
         * @return builder
         * 
         */
        public Builder airflowConfigurationOptions(@Nullable Output> airflowConfigurationOptions) {
            $.airflowConfigurationOptions = airflowConfigurationOptions;
            return this;
        }

        /**
         * @param airflowConfigurationOptions The `airflow_configuration_options` parameter specifies airflow override options. Check the [Official documentation](https://docs.aws.amazon.com/mwaa/latest/userguide/configuring-env-variables.html#configuring-env-variables-reference) for all possible configuration options.
         * 
         * @return builder
         * 
         */
        public Builder airflowConfigurationOptions(Map airflowConfigurationOptions) {
            return airflowConfigurationOptions(Output.of(airflowConfigurationOptions));
        }

        /**
         * @param airflowVersion Airflow version of your environment, will be set by default to the latest version that MWAA supports.
         * 
         * @return builder
         * 
         */
        public Builder airflowVersion(@Nullable Output airflowVersion) {
            $.airflowVersion = airflowVersion;
            return this;
        }

        /**
         * @param airflowVersion Airflow version of your environment, will be set by default to the latest version that MWAA supports.
         * 
         * @return builder
         * 
         */
        public Builder airflowVersion(String airflowVersion) {
            return airflowVersion(Output.of(airflowVersion));
        }

        /**
         * @param dagS3Path The relative path to the DAG folder on your Amazon S3 storage bucket. For example, dags. For more information, see [Importing DAGs on Amazon MWAA](https://docs.aws.amazon.com/mwaa/latest/userguide/configuring-dag-import.html).
         * 
         * @return builder
         * 
         */
        public Builder dagS3Path(Output dagS3Path) {
            $.dagS3Path = dagS3Path;
            return this;
        }

        /**
         * @param dagS3Path The relative path to the DAG folder on your Amazon S3 storage bucket. For example, dags. For more information, see [Importing DAGs on Amazon MWAA](https://docs.aws.amazon.com/mwaa/latest/userguide/configuring-dag-import.html).
         * 
         * @return builder
         * 
         */
        public Builder dagS3Path(String dagS3Path) {
            return dagS3Path(Output.of(dagS3Path));
        }

        /**
         * @param endpointManagement Defines whether the VPC endpoints configured for the environment are created and managed by the customer or by AWS. If set to `SERVICE`, Amazon MWAA will create and manage the required VPC endpoints in your VPC. If set to `CUSTOMER`, you must create, and manage, the VPC endpoints for your VPC. Defaults to `SERVICE` if not set.
         * 
         * @return builder
         * 
         */
        public Builder endpointManagement(@Nullable Output endpointManagement) {
            $.endpointManagement = endpointManagement;
            return this;
        }

        /**
         * @param endpointManagement Defines whether the VPC endpoints configured for the environment are created and managed by the customer or by AWS. If set to `SERVICE`, Amazon MWAA will create and manage the required VPC endpoints in your VPC. If set to `CUSTOMER`, you must create, and manage, the VPC endpoints for your VPC. Defaults to `SERVICE` if not set.
         * 
         * @return builder
         * 
         */
        public Builder endpointManagement(String endpointManagement) {
            return endpointManagement(Output.of(endpointManagement));
        }

        /**
         * @param environmentClass Environment class for the cluster. Possible options are `mw1.small`, `mw1.medium`, `mw1.large`. Will be set by default to `mw1.small`. Please check the [AWS Pricing](https://aws.amazon.com/de/managed-workflows-for-apache-airflow/pricing/) for more information about the environment classes.
         * 
         * @return builder
         * 
         */
        public Builder environmentClass(@Nullable Output environmentClass) {
            $.environmentClass = environmentClass;
            return this;
        }

        /**
         * @param environmentClass Environment class for the cluster. Possible options are `mw1.small`, `mw1.medium`, `mw1.large`. Will be set by default to `mw1.small`. Please check the [AWS Pricing](https://aws.amazon.com/de/managed-workflows-for-apache-airflow/pricing/) for more information about the environment classes.
         * 
         * @return builder
         * 
         */
        public Builder environmentClass(String environmentClass) {
            return environmentClass(Output.of(environmentClass));
        }

        /**
         * @param executionRoleArn The Amazon Resource Name (ARN) of the task execution role that the Amazon MWAA and its environment can assume. Check the [official AWS documentation](https://docs.aws.amazon.com/mwaa/latest/userguide/mwaa-create-role.html) for the detailed role specification.
         * 
         * @return builder
         * 
         */
        public Builder executionRoleArn(Output executionRoleArn) {
            $.executionRoleArn = executionRoleArn;
            return this;
        }

        /**
         * @param executionRoleArn The Amazon Resource Name (ARN) of the task execution role that the Amazon MWAA and its environment can assume. Check the [official AWS documentation](https://docs.aws.amazon.com/mwaa/latest/userguide/mwaa-create-role.html) for the detailed role specification.
         * 
         * @return builder
         * 
         */
        public Builder executionRoleArn(String executionRoleArn) {
            return executionRoleArn(Output.of(executionRoleArn));
        }

        /**
         * @param kmsKey The Amazon Resource Name (ARN) of your KMS key that you want to use for encryption. Will be set to the ARN of the managed KMS key `aws/airflow` by default. Please check the [Official Documentation](https://docs.aws.amazon.com/mwaa/latest/userguide/custom-keys-certs.html) for more information.
         * 
         * @return builder
         * 
         */
        public Builder kmsKey(@Nullable Output kmsKey) {
            $.kmsKey = kmsKey;
            return this;
        }

        /**
         * @param kmsKey The Amazon Resource Name (ARN) of your KMS key that you want to use for encryption. Will be set to the ARN of the managed KMS key `aws/airflow` by default. Please check the [Official Documentation](https://docs.aws.amazon.com/mwaa/latest/userguide/custom-keys-certs.html) for more information.
         * 
         * @return builder
         * 
         */
        public Builder kmsKey(String kmsKey) {
            return kmsKey(Output.of(kmsKey));
        }

        /**
         * @param loggingConfiguration The Apache Airflow logs you want to send to Amazon CloudWatch Logs. See `logging_configuration` Block for details.
         * 
         * @return builder
         * 
         */
        public Builder loggingConfiguration(@Nullable Output loggingConfiguration) {
            $.loggingConfiguration = loggingConfiguration;
            return this;
        }

        /**
         * @param loggingConfiguration The Apache Airflow logs you want to send to Amazon CloudWatch Logs. See `logging_configuration` Block for details.
         * 
         * @return builder
         * 
         */
        public Builder loggingConfiguration(EnvironmentLoggingConfigurationArgs loggingConfiguration) {
            return loggingConfiguration(Output.of(loggingConfiguration));
        }

        /**
         * @param maxWebservers The maximum number of web servers that you want to run in your environment. Value need to be between `2` and `5`. Will be `2` by default.
         * 
         * @return builder
         * 
         */
        public Builder maxWebservers(@Nullable Output maxWebservers) {
            $.maxWebservers = maxWebservers;
            return this;
        }

        /**
         * @param maxWebservers The maximum number of web servers that you want to run in your environment. Value need to be between `2` and `5`. Will be `2` by default.
         * 
         * @return builder
         * 
         */
        public Builder maxWebservers(Integer maxWebservers) {
            return maxWebservers(Output.of(maxWebservers));
        }

        /**
         * @param maxWorkers The maximum number of workers that can be automatically scaled up. Value need to be between `1` and `25`. Will be `10` by default.
         * 
         * @return builder
         * 
         */
        public Builder maxWorkers(@Nullable Output maxWorkers) {
            $.maxWorkers = maxWorkers;
            return this;
        }

        /**
         * @param maxWorkers The maximum number of workers that can be automatically scaled up. Value need to be between `1` and `25`. Will be `10` by default.
         * 
         * @return builder
         * 
         */
        public Builder maxWorkers(Integer maxWorkers) {
            return maxWorkers(Output.of(maxWorkers));
        }

        /**
         * @param minWebservers The minimum number of web servers that you want to run in your environment. Value need to be between `2` and `5`. Will be `2` by default.
         * 
         * @return builder
         * 
         */
        public Builder minWebservers(@Nullable Output minWebservers) {
            $.minWebservers = minWebservers;
            return this;
        }

        /**
         * @param minWebservers The minimum number of web servers that you want to run in your environment. Value need to be between `2` and `5`. Will be `2` by default.
         * 
         * @return builder
         * 
         */
        public Builder minWebservers(Integer minWebservers) {
            return minWebservers(Output.of(minWebservers));
        }

        /**
         * @param minWorkers The minimum number of workers that you want to run in your environment. Will be `1` by default.
         * 
         * @return builder
         * 
         */
        public Builder minWorkers(@Nullable Output minWorkers) {
            $.minWorkers = minWorkers;
            return this;
        }

        /**
         * @param minWorkers The minimum number of workers that you want to run in your environment. Will be `1` by default.
         * 
         * @return builder
         * 
         */
        public Builder minWorkers(Integer minWorkers) {
            return minWorkers(Output.of(minWorkers));
        }

        /**
         * @param name The name of the Apache Airflow Environment
         * 
         * @return builder
         * 
         */
        public Builder name(@Nullable Output name) {
            $.name = name;
            return this;
        }

        /**
         * @param name The name of the Apache Airflow Environment
         * 
         * @return builder
         * 
         */
        public Builder name(String name) {
            return name(Output.of(name));
        }

        /**
         * @param networkConfiguration Specifies the network configuration for your Apache Airflow Environment. This includes two private subnets as well as security groups for the Airflow environment. Each subnet requires internet connection, otherwise the deployment will fail. See `network_configuration` Block for details.
         * 
         * @return builder
         * 
         */
        public Builder networkConfiguration(Output networkConfiguration) {
            $.networkConfiguration = networkConfiguration;
            return this;
        }

        /**
         * @param networkConfiguration Specifies the network configuration for your Apache Airflow Environment. This includes two private subnets as well as security groups for the Airflow environment. Each subnet requires internet connection, otherwise the deployment will fail. See `network_configuration` Block for details.
         * 
         * @return builder
         * 
         */
        public Builder networkConfiguration(EnvironmentNetworkConfigurationArgs networkConfiguration) {
            return networkConfiguration(Output.of(networkConfiguration));
        }

        /**
         * @param pluginsS3ObjectVersion The plugins.zip file version you want to use.
         * 
         * @return builder
         * 
         */
        public Builder pluginsS3ObjectVersion(@Nullable Output pluginsS3ObjectVersion) {
            $.pluginsS3ObjectVersion = pluginsS3ObjectVersion;
            return this;
        }

        /**
         * @param pluginsS3ObjectVersion The plugins.zip file version you want to use.
         * 
         * @return builder
         * 
         */
        public Builder pluginsS3ObjectVersion(String pluginsS3ObjectVersion) {
            return pluginsS3ObjectVersion(Output.of(pluginsS3ObjectVersion));
        }

        /**
         * @param pluginsS3Path The relative path to the plugins.zip file on your Amazon S3 storage bucket. For example, plugins.zip. If a relative path is provided in the request, then plugins_s3_object_version is required. For more information, see [Importing DAGs on Amazon MWAA](https://docs.aws.amazon.com/mwaa/latest/userguide/configuring-dag-import.html).
         * 
         * @return builder
         * 
         */
        public Builder pluginsS3Path(@Nullable Output pluginsS3Path) {
            $.pluginsS3Path = pluginsS3Path;
            return this;
        }

        /**
         * @param pluginsS3Path The relative path to the plugins.zip file on your Amazon S3 storage bucket. For example, plugins.zip. If a relative path is provided in the request, then plugins_s3_object_version is required. For more information, see [Importing DAGs on Amazon MWAA](https://docs.aws.amazon.com/mwaa/latest/userguide/configuring-dag-import.html).
         * 
         * @return builder
         * 
         */
        public Builder pluginsS3Path(String pluginsS3Path) {
            return pluginsS3Path(Output.of(pluginsS3Path));
        }

        /**
         * @param requirementsS3ObjectVersion The requirements.txt file version you want to use.
         * 
         * @return builder
         * 
         */
        public Builder requirementsS3ObjectVersion(@Nullable Output requirementsS3ObjectVersion) {
            $.requirementsS3ObjectVersion = requirementsS3ObjectVersion;
            return this;
        }

        /**
         * @param requirementsS3ObjectVersion The requirements.txt file version you want to use.
         * 
         * @return builder
         * 
         */
        public Builder requirementsS3ObjectVersion(String requirementsS3ObjectVersion) {
            return requirementsS3ObjectVersion(Output.of(requirementsS3ObjectVersion));
        }

        /**
         * @param requirementsS3Path The relative path to the requirements.txt file on your Amazon S3 storage bucket. For example, requirements.txt. If a relative path is provided in the request, then requirements_s3_object_version is required. For more information, see [Importing DAGs on Amazon MWAA](https://docs.aws.amazon.com/mwaa/latest/userguide/configuring-dag-import.html).
         * 
         * @return builder
         * 
         */
        public Builder requirementsS3Path(@Nullable Output requirementsS3Path) {
            $.requirementsS3Path = requirementsS3Path;
            return this;
        }

        /**
         * @param requirementsS3Path The relative path to the requirements.txt file on your Amazon S3 storage bucket. For example, requirements.txt. If a relative path is provided in the request, then requirements_s3_object_version is required. For more information, see [Importing DAGs on Amazon MWAA](https://docs.aws.amazon.com/mwaa/latest/userguide/configuring-dag-import.html).
         * 
         * @return builder
         * 
         */
        public Builder requirementsS3Path(String requirementsS3Path) {
            return requirementsS3Path(Output.of(requirementsS3Path));
        }

        /**
         * @param schedulers The number of schedulers that you want to run in your environment. v2.0.2 and above accepts `2` - `5`, default `2`. v1.10.12 accepts `1`.
         * 
         * @return builder
         * 
         */
        public Builder schedulers(@Nullable Output schedulers) {
            $.schedulers = schedulers;
            return this;
        }

        /**
         * @param schedulers The number of schedulers that you want to run in your environment. v2.0.2 and above accepts `2` - `5`, default `2`. v1.10.12 accepts `1`.
         * 
         * @return builder
         * 
         */
        public Builder schedulers(Integer schedulers) {
            return schedulers(Output.of(schedulers));
        }

        /**
         * @param sourceBucketArn The Amazon Resource Name (ARN) of your Amazon S3 storage bucket. For example, arn:aws:s3:::airflow-mybucketname.
         * 
         * @return builder
         * 
         */
        public Builder sourceBucketArn(Output sourceBucketArn) {
            $.sourceBucketArn = sourceBucketArn;
            return this;
        }

        /**
         * @param sourceBucketArn The Amazon Resource Name (ARN) of your Amazon S3 storage bucket. For example, arn:aws:s3:::airflow-mybucketname.
         * 
         * @return builder
         * 
         */
        public Builder sourceBucketArn(String sourceBucketArn) {
            return sourceBucketArn(Output.of(sourceBucketArn));
        }

        /**
         * @param startupScriptS3ObjectVersion The version of the startup shell script you want to use. You must specify the version ID that Amazon S3 assigns to the file every time you update the script.
         * 
         * @return builder
         * 
         */
        public Builder startupScriptS3ObjectVersion(@Nullable Output startupScriptS3ObjectVersion) {
            $.startupScriptS3ObjectVersion = startupScriptS3ObjectVersion;
            return this;
        }

        /**
         * @param startupScriptS3ObjectVersion The version of the startup shell script you want to use. You must specify the version ID that Amazon S3 assigns to the file every time you update the script.
         * 
         * @return builder
         * 
         */
        public Builder startupScriptS3ObjectVersion(String startupScriptS3ObjectVersion) {
            return startupScriptS3ObjectVersion(Output.of(startupScriptS3ObjectVersion));
        }

        /**
         * @param startupScriptS3Path The relative path to the script hosted in your bucket. The script runs as your environment starts before starting the Apache Airflow process. Use this script to install dependencies, modify configuration options, and set environment variables. See [Using a startup script](https://docs.aws.amazon.com/mwaa/latest/userguide/using-startup-script.html). Supported for environment versions 2.x and later.
         * 
         * @return builder
         * 
         */
        public Builder startupScriptS3Path(@Nullable Output startupScriptS3Path) {
            $.startupScriptS3Path = startupScriptS3Path;
            return this;
        }

        /**
         * @param startupScriptS3Path The relative path to the script hosted in your bucket. The script runs as your environment starts before starting the Apache Airflow process. Use this script to install dependencies, modify configuration options, and set environment variables. See [Using a startup script](https://docs.aws.amazon.com/mwaa/latest/userguide/using-startup-script.html). Supported for environment versions 2.x and later.
         * 
         * @return builder
         * 
         */
        public Builder startupScriptS3Path(String startupScriptS3Path) {
            return startupScriptS3Path(Output.of(startupScriptS3Path));
        }

        /**
         * @param tags A map of resource tags to associate with the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
         * 
         * @return builder
         * 
         */
        public Builder tags(@Nullable Output> tags) {
            $.tags = tags;
            return this;
        }

        /**
         * @param tags A map of resource tags to associate with the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
         * 
         * @return builder
         * 
         */
        public Builder tags(Map tags) {
            return tags(Output.of(tags));
        }

        /**
         * @param webserverAccessMode Specifies whether the webserver should be accessible over the internet or via your specified VPC. Possible options: `PRIVATE_ONLY` (default) and `PUBLIC_ONLY`.
         * 
         * @return builder
         * 
         */
        public Builder webserverAccessMode(@Nullable Output webserverAccessMode) {
            $.webserverAccessMode = webserverAccessMode;
            return this;
        }

        /**
         * @param webserverAccessMode Specifies whether the webserver should be accessible over the internet or via your specified VPC. Possible options: `PRIVATE_ONLY` (default) and `PUBLIC_ONLY`.
         * 
         * @return builder
         * 
         */
        public Builder webserverAccessMode(String webserverAccessMode) {
            return webserverAccessMode(Output.of(webserverAccessMode));
        }

        /**
         * @param weeklyMaintenanceWindowStart Specifies the start date for the weekly maintenance window.
         * 
         * @return builder
         * 
         */
        public Builder weeklyMaintenanceWindowStart(@Nullable Output weeklyMaintenanceWindowStart) {
            $.weeklyMaintenanceWindowStart = weeklyMaintenanceWindowStart;
            return this;
        }

        /**
         * @param weeklyMaintenanceWindowStart Specifies the start date for the weekly maintenance window.
         * 
         * @return builder
         * 
         */
        public Builder weeklyMaintenanceWindowStart(String weeklyMaintenanceWindowStart) {
            return weeklyMaintenanceWindowStart(Output.of(weeklyMaintenanceWindowStart));
        }

        public EnvironmentArgs build() {
            if ($.dagS3Path == null) {
                throw new MissingRequiredPropertyException("EnvironmentArgs", "dagS3Path");
            }
            if ($.executionRoleArn == null) {
                throw new MissingRequiredPropertyException("EnvironmentArgs", "executionRoleArn");
            }
            if ($.networkConfiguration == null) {
                throw new MissingRequiredPropertyException("EnvironmentArgs", "networkConfiguration");
            }
            if ($.sourceBucketArn == null) {
                throw new MissingRequiredPropertyException("EnvironmentArgs", "sourceBucketArn");
            }
            return $;
        }
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy