Class Environment


  • public class Environment
    extends com.pulumi.resources.CustomResource
    Creates a MWAA Environment resource. ## Example Usage A MWAA Environment requires an IAM role (`aws.iam.Role`), two subnets in the private zone (`aws.ec2.Subnet`) and a versioned S3 bucket (`aws.s3.Bucket`). ### Basic Usage
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.mwaa.Environment;
     import com.pulumi.aws.mwaa.EnvironmentArgs;
     import com.pulumi.aws.mwaa.inputs.EnvironmentNetworkConfigurationArgs;
     import java.util.ArrayList;
     import java.util.Arrays;
     import java.util.Map;
     import java.io.File;
     import java.nio.file.Files;
     import java.nio.file.Paths;
     
     public class App {
         public static void main(String[] args) {
             Pulumi.run(App::stack);
         }
     
         public static void stack(Context ctx) {
             var example = new Environment("example", EnvironmentArgs.builder()
                 .networkConfiguration(EnvironmentNetworkConfigurationArgs.builder()
                     .securityGroupIds(exampleAwsSecurityGroup.id())
                     .subnetIds(private_.stream().map(element -> element.id()).collect(toList()))
                     .build())
                 .dagS3Path("dags/")
                 .executionRoleArn(exampleAwsIamRole.arn())
                 .name("example")
                 .sourceBucketArn(exampleAwsS3Bucket.arn())
                 .build());
     
         }
     }
     
     
    ### Example with Airflow configuration options
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.mwaa.Environment;
     import com.pulumi.aws.mwaa.EnvironmentArgs;
     import com.pulumi.aws.mwaa.inputs.EnvironmentNetworkConfigurationArgs;
     import java.util.ArrayList;
     import java.util.Arrays;
     import java.util.Map;
     import java.io.File;
     import java.nio.file.Files;
     import java.nio.file.Paths;
     
     public class App {
         public static void main(String[] args) {
             Pulumi.run(App::stack);
         }
     
         public static void stack(Context ctx) {
             var example = new Environment("example", EnvironmentArgs.builder()
                 .networkConfiguration(EnvironmentNetworkConfigurationArgs.builder()
                     .securityGroupIds(exampleAwsSecurityGroup.id())
                     .subnetIds(private_.stream().map(element -> element.id()).collect(toList()))
                     .build())
                 .airflowConfigurationOptions(Map.ofEntries(
                     Map.entry("core.default_task_retries", "16"),
                     Map.entry("core.parallelism", "1")
                 ))
                 .dagS3Path("dags/")
                 .executionRoleArn(exampleAwsIamRole.arn())
                 .name("example")
                 .sourceBucketArn(exampleAwsS3Bucket.arn())
                 .build());
     
         }
     }
     
     
    ### Example with logging configurations Note that Airflow task logs are enabled by default with the `INFO` log level.
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.mwaa.Environment;
     import com.pulumi.aws.mwaa.EnvironmentArgs;
     import com.pulumi.aws.mwaa.inputs.EnvironmentLoggingConfigurationArgs;
     import com.pulumi.aws.mwaa.inputs.EnvironmentLoggingConfigurationDagProcessingLogsArgs;
     import com.pulumi.aws.mwaa.inputs.EnvironmentLoggingConfigurationSchedulerLogsArgs;
     import com.pulumi.aws.mwaa.inputs.EnvironmentLoggingConfigurationTaskLogsArgs;
     import com.pulumi.aws.mwaa.inputs.EnvironmentLoggingConfigurationWebserverLogsArgs;
     import com.pulumi.aws.mwaa.inputs.EnvironmentLoggingConfigurationWorkerLogsArgs;
     import com.pulumi.aws.mwaa.inputs.EnvironmentNetworkConfigurationArgs;
     import java.util.ArrayList;
     import java.util.Arrays;
     import java.util.Map;
     import java.io.File;
     import java.nio.file.Files;
     import java.nio.file.Paths;
     
     public class App {
         public static void main(String[] args) {
             Pulumi.run(App::stack);
         }
     
         public static void stack(Context ctx) {
             var example = new Environment("example", EnvironmentArgs.builder()
                 .loggingConfiguration(EnvironmentLoggingConfigurationArgs.builder()
                     .dagProcessingLogs(EnvironmentLoggingConfigurationDagProcessingLogsArgs.builder()
                         .enabled(true)
                         .logLevel("DEBUG")
                         .build())
                     .schedulerLogs(EnvironmentLoggingConfigurationSchedulerLogsArgs.builder()
                         .enabled(true)
                         .logLevel("INFO")
                         .build())
                     .taskLogs(EnvironmentLoggingConfigurationTaskLogsArgs.builder()
                         .enabled(true)
                         .logLevel("WARNING")
                         .build())
                     .webserverLogs(EnvironmentLoggingConfigurationWebserverLogsArgs.builder()
                         .enabled(true)
                         .logLevel("ERROR")
                         .build())
                     .workerLogs(EnvironmentLoggingConfigurationWorkerLogsArgs.builder()
                         .enabled(true)
                         .logLevel("CRITICAL")
                         .build())
                     .build())
                 .networkConfiguration(EnvironmentNetworkConfigurationArgs.builder()
                     .securityGroupIds(exampleAwsSecurityGroup.id())
                     .subnetIds(private_.stream().map(element -> element.id()).collect(toList()))
                     .build())
                 .dagS3Path("dags/")
                 .executionRoleArn(exampleAwsIamRole.arn())
                 .name("example")
                 .sourceBucketArn(exampleAwsS3Bucket.arn())
                 .build());
     
         }
     }
     
     
    ### Example with tags
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.mwaa.Environment;
     import com.pulumi.aws.mwaa.EnvironmentArgs;
     import com.pulumi.aws.mwaa.inputs.EnvironmentNetworkConfigurationArgs;
     import java.util.ArrayList;
     import java.util.Arrays;
     import java.util.Map;
     import java.io.File;
     import java.nio.file.Files;
     import java.nio.file.Paths;
     
     public class App {
         public static void main(String[] args) {
             Pulumi.run(App::stack);
         }
     
         public static void stack(Context ctx) {
             var example = new Environment("example", EnvironmentArgs.builder()
                 .networkConfiguration(EnvironmentNetworkConfigurationArgs.builder()
                     .securityGroupIds(exampleAwsSecurityGroup.id())
                     .subnetIds(private_.stream().map(element -> element.id()).collect(toList()))
                     .build())
                 .dagS3Path("dags/")
                 .executionRoleArn(exampleAwsIamRole.arn())
                 .name("example")
                 .sourceBucketArn(exampleAwsS3Bucket.arn())
                 .tags(Map.ofEntries(
                     Map.entry("Name", "example"),
                     Map.entry("Environment", "production")
                 ))
                 .build());
     
         }
     }
     
     
    ## Import Using `pulumi import`, import MWAA Environment using `Name`. For example: ```sh $ pulumi import aws:mwaa/environment:Environment example MyAirflowEnvironment ```
    • Nested Class Summary

      • Nested classes/interfaces inherited from class com.pulumi.resources.CustomResource

        com.pulumi.resources.CustomResource.CustomResourceInternal
      • Nested classes/interfaces inherited from class com.pulumi.resources.Resource

        com.pulumi.resources.Resource.LazyField<T extends java.lang.Object>, com.pulumi.resources.Resource.LazyFields, com.pulumi.resources.Resource.ResourceInternal
    • Field Summary

      • Fields inherited from class com.pulumi.resources.Resource

        childResources, remote
    • Constructor Detail

      • Environment

        public Environment​(java.lang.String name)
        Parameters:
        name - The _unique_ name of the resulting resource.
      • Environment

        public Environment​(java.lang.String name,
                           EnvironmentArgs args)
        Parameters:
        name - The _unique_ name of the resulting resource.
        args - The arguments to use to populate this resource's properties.
      • Environment

        public Environment​(java.lang.String name,
                           EnvironmentArgs args,
                           @Nullable
                           com.pulumi.resources.CustomResourceOptions options)
        Parameters:
        name - The _unique_ name of the resulting resource.
        args - The arguments to use to populate this resource's properties.
        options - A bag of options that control this resource's behavior.
    • Method Detail

      • airflowConfigurationOptions

        public com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,​java.lang.String>>> airflowConfigurationOptions()
        Returns:
        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.
      • airflowVersion

        public com.pulumi.core.Output<java.lang.String> airflowVersion()
        Returns:
        Airflow version of your environment, will be set by default to the latest version that MWAA supports.
      • arn

        public com.pulumi.core.Output<java.lang.String> arn()
        Returns:
        ARN of the MWAA Environment.
      • createdAt

        public com.pulumi.core.Output<java.lang.String> createdAt()
        Returns:
        Date and time the environment was last updated.
      • dagS3Path

        public com.pulumi.core.Output<java.lang.String> dagS3Path()
        Returns:
        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).
      • databaseVpcEndpointService

        public com.pulumi.core.Output<java.lang.String> databaseVpcEndpointService()
        Returns:
        VPC endpoint for the environment's Amazon RDS database.
      • endpointManagement

        public com.pulumi.core.Output<java.lang.String> endpointManagement()
        Returns:
        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.
      • environmentClass

        public com.pulumi.core.Output<java.lang.String> environmentClass()
        Returns:
        Environment class for the cluster. Possible options are `mw1.micro`, `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.
      • executionRoleArn

        public com.pulumi.core.Output<java.lang.String> executionRoleArn()
        Returns:
        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.
      • kmsKey

        public com.pulumi.core.Output<java.util.Optional<java.lang.String>> kmsKey()
        Returns:
        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.
      • lastUpdateds

        public com.pulumi.core.Output<java.util.List<EnvironmentLastUpdated>> lastUpdateds()
        Returns:
        Information about the last update of the environment. See `lastUpdated` Block for details.
      • loggingConfiguration

        public com.pulumi.core.Output<EnvironmentLoggingConfiguration> loggingConfiguration()
        Returns:
        Apache Airflow logs you want to send to Amazon CloudWatch Logs. See `loggingConfiguration` Block for details.
      • maxWebservers

        public com.pulumi.core.Output<java.lang.Integer> maxWebservers()
        Returns:
        Maximum number of web servers that you want to run in your environment. Value need to be between `2` and `5` if `environmentClass` is not `mw1.micro`, `1` otherwise.
      • maxWorkers

        public com.pulumi.core.Output<java.lang.Integer> maxWorkers()
        Returns:
        Maximum number of workers that can be automatically scaled up. Value need to be between `1` and `25`. Will be `10` by default.
      • minWebservers

        public com.pulumi.core.Output<java.lang.Integer> minWebservers()
        Returns:
        Minimum number of web servers that you want to run in your environment. Value need to be between `2` and `5` if `environmentClass` is not `mw1.micro`, `1` otherwise.
      • minWorkers

        public com.pulumi.core.Output<java.lang.Integer> minWorkers()
        Returns:
        Minimum number of workers that you want to run in your environment. Will be `1` by default.
      • name

        public com.pulumi.core.Output<java.lang.String> name()
        Returns:
        Name of the Apache Airflow Environment.
      • networkConfiguration

        public com.pulumi.core.Output<EnvironmentNetworkConfiguration> networkConfiguration()
        Returns:
        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 `networkConfiguration` Block for details.
      • pluginsS3ObjectVersion

        public com.pulumi.core.Output<java.lang.String> pluginsS3ObjectVersion()
        Returns:
        Version of the plugins.zip file you want to use.
      • pluginsS3Path

        public com.pulumi.core.Output<java.util.Optional<java.lang.String>> pluginsS3Path()
        Returns:
        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 pluginsS3ObjectVersion is required. For more information, see [Importing DAGs on Amazon MWAA](https://docs.aws.amazon.com/mwaa/latest/userguide/configuring-dag-import.html).
      • region

        public com.pulumi.core.Output<java.lang.String> region()
        Returns:
        Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration.
      • requirementsS3ObjectVersion

        public com.pulumi.core.Output<java.lang.String> requirementsS3ObjectVersion()
        Returns:
        Version of the requirements.txt file you want to use.
      • requirementsS3Path

        public com.pulumi.core.Output<java.util.Optional<java.lang.String>> requirementsS3Path()
        Returns:
        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 requirementsS3ObjectVersion is required. For more information, see [Importing DAGs on Amazon MWAA](https://docs.aws.amazon.com/mwaa/latest/userguide/configuring-dag-import.html).
      • schedulers

        public com.pulumi.core.Output<java.lang.Integer> schedulers()
        Returns:
        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`.
      • serviceRoleArn

        public com.pulumi.core.Output<java.lang.String> serviceRoleArn()
        Returns:
        Service Role ARN of the Amazon MWAA Environment.
      • sourceBucketArn

        public com.pulumi.core.Output<java.lang.String> sourceBucketArn()
        Returns:
        ARN of your Amazon S3 storage bucket. For example, arn:aws:s3:::airflow-mybucketname.
      • startupScriptS3ObjectVersion

        public com.pulumi.core.Output<java.lang.String> startupScriptS3ObjectVersion()
        Returns:
        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.
      • startupScriptS3Path

        public com.pulumi.core.Output<java.util.Optional<java.lang.String>> startupScriptS3Path()
        Returns:
        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.
      • status

        public com.pulumi.core.Output<java.lang.String> status()
        Returns:
        Status of the last update.
      • tags

        public com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,​java.lang.String>>> tags()
        Returns:
        Map of resource tags to associate with the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
      • tagsAll

        public com.pulumi.core.Output<java.util.Map<java.lang.String,​java.lang.String>> tagsAll()
        Returns:
        Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
      • webserverAccessMode

        public com.pulumi.core.Output<java.lang.String> webserverAccessMode()
        Returns:
        Whether the webserver should be accessible over the internet or via your specified VPC. Possible options: `PRIVATE_ONLY` (default), `PUBLIC_ONLY` and `PUBLIC_AND_PRIVATE`.
      • webserverUrl

        public com.pulumi.core.Output<java.lang.String> webserverUrl()
        Returns:
        Webserver URL of the MWAA Environment.
      • webserverVpcEndpointService

        public com.pulumi.core.Output<java.lang.String> webserverVpcEndpointService()
        Returns:
        VPC endpoint for the environment's web server.
      • weeklyMaintenanceWindowStart

        public com.pulumi.core.Output<java.lang.String> weeklyMaintenanceWindowStart()
        Returns:
        Start date for the weekly maintenance window.
      • workerReplacementStrategy

        public com.pulumi.core.Output<java.lang.String> workerReplacementStrategy()
        Returns:
        Worker replacement strategy. Valid values: `FORCED`, `GRACEFUL`.
      • get

        public static Environment get​(java.lang.String name,
                                      com.pulumi.core.Output<java.lang.String> id,
                                      @Nullable
                                      EnvironmentState state,
                                      @Nullable
                                      com.pulumi.resources.CustomResourceOptions options)
        Get an existing Host resource's state with the given name, ID, and optional extra properties used to qualify the lookup.
        Parameters:
        name - The _unique_ name of the resulting resource.
        id - The _unique_ provider ID of the resource to lookup.
        state -
        options - Optional settings to control the behavior of the CustomResource.