# coding=utf-8
# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import json
import warnings
import pulumi
import pulumi.runtime
from typing import Union
from .. import utilities, tables

class DeploymentGroup(pulumi.CustomResource):
    alarm_configuration: pulumi.Output[dict]
    """
    Configuration block of alarms associated with the deployment group (documented below).

      * `alarms` (`list`) - A list of alarms configured for the deployment group. _A maximum of 10 alarms can be added to a deployment group_.
      * `enabled` (`bool`) - Indicates whether a defined automatic rollback configuration is currently enabled for this Deployment Group. If you enable automatic rollback, you must specify at least one event type.
      * `ignorePollAlarmFailure` (`bool`) - Indicates whether a deployment should continue if information about the current state of alarms cannot be retrieved from CloudWatch. The default value is `false`.
        * `true`: The deployment will proceed even if alarm status information can't be retrieved.
        * `false`: The deployment will stop if alarm status information can't be retrieved.
    """
    app_name: pulumi.Output[str]
    """
    The name of the application.
    """
    auto_rollback_configuration: pulumi.Output[dict]
    """
    Configuration block of the automatic rollback configuration associated with the deployment group (documented below).

      * `enabled` (`bool`) - Indicates whether a defined automatic rollback configuration is currently enabled for this Deployment Group. If you enable automatic rollback, you must specify at least one event type.
      * `events` (`list`) - The event type or types that trigger a rollback. Supported types are `DEPLOYMENT_FAILURE` and `DEPLOYMENT_STOP_ON_ALARM`.
    """
    autoscaling_groups: pulumi.Output[list]
    """
    Autoscaling groups associated with the deployment group.
    """
    blue_green_deployment_config: pulumi.Output[dict]
    """
    Configuration block of the blue/green deployment options for a deployment group (documented below).

      * `deploymentReadyOption` (`dict`) - Information about the action to take when newly provisioned instances are ready to receive traffic in a blue/green deployment (documented below).
        * `actionOnTimeout` (`str`) - When to reroute traffic from an original environment to a replacement environment in a blue/green deployment.
          * `CONTINUE_DEPLOYMENT`: Register new instances with the load balancer immediately after the new application revision is installed on the instances in the replacement environment.
          * `STOP_DEPLOYMENT`: Do not register new instances with load balancer unless traffic is rerouted manually. If traffic is not rerouted manually before the end of the specified wait period, the deployment status is changed to Stopped.
        * `waitTimeInMinutes` (`float`) - The number of minutes to wait before the status of a blue/green deployment changed to Stopped if rerouting is not started manually. Applies only to the `STOP_DEPLOYMENT` option for `action_on_timeout`.

      * `greenFleetProvisioningOption` (`dict`) - Information about how instances are provisioned for a replacement environment in a blue/green deployment (documented below).
        * `action` (`str`) - The action to take on instances in the original environment after a successful blue/green deployment.
          * `TERMINATE`: Instances are terminated after a specified wait time.
          * `KEEP_ALIVE`: Instances are left running after they are deregistered from the load balancer and removed from the deployment group.

      * `terminateBlueInstancesOnDeploymentSuccess` (`dict`) - Information about whether to terminate instances in the original fleet during a blue/green deployment (documented below).
        * `action` (`str`) - The action to take on instances in the original environment after a successful blue/green deployment.
          * `TERMINATE`: Instances are terminated after a specified wait time.
          * `KEEP_ALIVE`: Instances are left running after they are deregistered from the load balancer and removed from the deployment group.
        * `terminationWaitTimeInMinutes` (`float`) - The number of minutes to wait after a successful blue/green deployment before terminating instances from the original environment.
    """
    deployment_config_name: pulumi.Output[str]
    """
    The name of the group's deployment config. The default is "CodeDeployDefault.OneAtATime".
    """
    deployment_group_name: pulumi.Output[str]
    """
    The name of the deployment group.
    """
    deployment_style: pulumi.Output[dict]
    """
    Configuration block of the type of deployment, either in-place or blue/green, you want to run and whether to route deployment traffic behind a load balancer (documented below).

      * `deploymentOption` (`str`) - Indicates whether to route deployment traffic behind a load balancer. Valid Values are `WITH_TRAFFIC_CONTROL` or `WITHOUT_TRAFFIC_CONTROL`. Default is `WITHOUT_TRAFFIC_CONTROL`.
      * `deploymentType` (`str`) - Indicates whether to run an in-place deployment or a blue/green deployment. Valid Values are `IN_PLACE` or `BLUE_GREEN`. Default is `IN_PLACE`.
    """
    ec2_tag_filters: pulumi.Output[list]
    """
    Tag filters associated with the deployment group. See the AWS docs for details.

      * `key` (`str`) - The key of the tag filter.
      * `type` (`str`) - The type of the tag filter, either `KEY_ONLY`, `VALUE_ONLY`, or `KEY_AND_VALUE`.
      * `value` (`str`) - The value of the tag filter.
    """
    ec2_tag_sets: pulumi.Output[list]
    """
    Configuration block(s) of Tag filters associated with the deployment group, which are also referred to as tag groups (documented below). See the AWS docs for details.

      * `ec2_tag_filters` (`list`) - Tag filters associated with the deployment group. See the AWS docs for details.
        * `key` (`str`) - The key of the tag filter.
        * `type` (`str`) - The type of the tag filter, either `KEY_ONLY`, `VALUE_ONLY`, or `KEY_AND_VALUE`.
        * `value` (`str`) - The value of the tag filter.
    """
    ecs_service: pulumi.Output[dict]
    """
    Configuration block(s) of the ECS services for a deployment group (documented below).

      * `cluster_name` (`str`) - The name of the ECS cluster.
      * `service_name` (`str`) - The name of the ECS service.
    """
    load_balancer_info: pulumi.Output[dict]
    """
    Single configuration block of the load balancer to use in a blue/green deployment (documented below).

      * `elbInfos` (`list`) - The Classic Elastic Load Balancer to use in a deployment. Conflicts with `target_group_info` and `target_group_pair_info`.
        * `name` (`str`) - Name of the target group.

      * `targetGroupInfos` (`list`) - The (Application/Network Load Balancer) target group to use in a deployment. Conflicts with `elb_info` and `target_group_pair_info`.
        * `name` (`str`) - Name of the target group.

      * `targetGroupPairInfo` (`dict`) - The (Application/Network Load Balancer) target group pair to use in a deployment. Conflicts with `elb_info` and `target_group_info`.
        * `prodTrafficRoute` (`dict`) - Configuration block for the production traffic route (documented below).
          * `listenerArns` (`list`) - List of Amazon Resource Names (ARNs) of the load balancer listeners.

        * `targetGroups` (`list`) - Configuration blocks for a target group within a target group pair (documented below).
          * `name` (`str`) - Name of the target group.

        * `testTrafficRoute` (`dict`) - Configuration block for the test traffic route (documented below).
          * `listenerArns` (`list`) - List of Amazon Resource Names (ARNs) of the load balancer listeners.
    """
    on_premises_instance_tag_filters: pulumi.Output[list]
    """
    On premise tag filters associated with the group. See the AWS docs for details.

      * `key` (`str`) - The key of the tag filter.
      * `type` (`str`) - The type of the tag filter, either `KEY_ONLY`, `VALUE_ONLY`, or `KEY_AND_VALUE`.
      * `value` (`str`) - The value of the tag filter.
    """
    service_role_arn: pulumi.Output[str]
    """
    The service role ARN that allows deployments.
    """
    trigger_configurations: pulumi.Output[list]
    """
    Configuration block(s) of the triggers for the deployment group (documented below).

      * `triggerEvents` (`list`) - The event type or types for which notifications are triggered. Some values that are supported: `DeploymentStart`, `DeploymentSuccess`, `DeploymentFailure`, `DeploymentStop`, `DeploymentRollback`, `InstanceStart`, `InstanceSuccess`, `InstanceFailure`.  See [the CodeDeploy documentation][1] for all possible values.
      * `triggerName` (`str`) - The name of the notification trigger.
      * `triggerTargetArn` (`str`) - The ARN of the SNS topic through which notifications are sent.
    """
    def __init__(__self__, resource_name, opts=None, alarm_configuration=None, app_name=None, auto_rollback_configuration=None, autoscaling_groups=None, blue_green_deployment_config=None, deployment_config_name=None, deployment_group_name=None, deployment_style=None, ec2_tag_filters=None, ec2_tag_sets=None, ecs_service=None, load_balancer_info=None, on_premises_instance_tag_filters=None, service_role_arn=None, trigger_configurations=None, __props__=None, __name__=None, __opts__=None):
        """
        Provides a CodeDeploy Deployment Group for a CodeDeploy Application

        > **NOTE on blue/green deployments:** When using `green_fleet_provisioning_option` with the `COPY_AUTO_SCALING_GROUP` action, CodeDeploy will create a new ASG with a different name. This ASG is _not_ managed by this provider and will conflict with existing configuration and state. You may want to use a different approach to managing deployments that involve multiple ASG, such as `DISCOVER_EXISTING` with separate blue and green ASG.

        > This content is derived from https://github.com/terraform-providers/terraform-provider-aws/blob/master/website/docs/r/codedeploy_deployment_group.html.markdown.

        :param str resource_name: The name of the resource.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[dict] alarm_configuration: Configuration block of alarms associated with the deployment group (documented below).
        :param pulumi.Input[str] app_name: The name of the application.
        :param pulumi.Input[dict] auto_rollback_configuration: Configuration block of the automatic rollback configuration associated with the deployment group (documented below).
        :param pulumi.Input[list] autoscaling_groups: Autoscaling groups associated with the deployment group.
        :param pulumi.Input[dict] blue_green_deployment_config: Configuration block of the blue/green deployment options for a deployment group (documented below).
        :param pulumi.Input[str] deployment_config_name: The name of the group's deployment config. The default is "CodeDeployDefault.OneAtATime".
        :param pulumi.Input[str] deployment_group_name: The name of the deployment group.
        :param pulumi.Input[dict] deployment_style: Configuration block of the type of deployment, either in-place or blue/green, you want to run and whether to route deployment traffic behind a load balancer (documented below).
        :param pulumi.Input[list] ec2_tag_filters: Tag filters associated with the deployment group. See the AWS docs for details.
        :param pulumi.Input[list] ec2_tag_sets: Configuration block(s) of Tag filters associated with the deployment group, which are also referred to as tag groups (documented below). See the AWS docs for details.
        :param pulumi.Input[dict] ecs_service: Configuration block(s) of the ECS services for a deployment group (documented below).
        :param pulumi.Input[dict] load_balancer_info: Single configuration block of the load balancer to use in a blue/green deployment (documented below).
        :param pulumi.Input[list] on_premises_instance_tag_filters: On premise tag filters associated with the group. See the AWS docs for details.
        :param pulumi.Input[str] service_role_arn: The service role ARN that allows deployments.
        :param pulumi.Input[list] trigger_configurations: Configuration block(s) of the triggers for the deployment group (documented below).

        The **alarm_configuration** object supports the following:

          * `alarms` (`pulumi.Input[list]`) - A list of alarms configured for the deployment group. _A maximum of 10 alarms can be added to a deployment group_.
          * `enabled` (`pulumi.Input[bool]`) - Indicates whether a defined automatic rollback configuration is currently enabled for this Deployment Group. If you enable automatic rollback, you must specify at least one event type.
          * `ignorePollAlarmFailure` (`pulumi.Input[bool]`) - Indicates whether a deployment should continue if information about the current state of alarms cannot be retrieved from CloudWatch. The default value is `false`.
            * `true`: The deployment will proceed even if alarm status information can't be retrieved.
            * `false`: The deployment will stop if alarm status information can't be retrieved.

        The **auto_rollback_configuration** object supports the following:

          * `enabled` (`pulumi.Input[bool]`) - Indicates whether a defined automatic rollback configuration is currently enabled for this Deployment Group. If you enable automatic rollback, you must specify at least one event type.
          * `events` (`pulumi.Input[list]`) - The event type or types that trigger a rollback. Supported types are `DEPLOYMENT_FAILURE` and `DEPLOYMENT_STOP_ON_ALARM`.

        The **blue_green_deployment_config** object supports the following:

          * `deploymentReadyOption` (`pulumi.Input[dict]`) - Information about the action to take when newly provisioned instances are ready to receive traffic in a blue/green deployment (documented below).
            * `actionOnTimeout` (`pulumi.Input[str]`) - When to reroute traffic from an original environment to a replacement environment in a blue/green deployment.
              * `CONTINUE_DEPLOYMENT`: Register new instances with the load balancer immediately after the new application revision is installed on the instances in the replacement environment.
              * `STOP_DEPLOYMENT`: Do not register new instances with load balancer unless traffic is rerouted manually. If traffic is not rerouted manually before the end of the specified wait period, the deployment status is changed to Stopped.
            * `waitTimeInMinutes` (`pulumi.Input[float]`) - The number of minutes to wait before the status of a blue/green deployment changed to Stopped if rerouting is not started manually. Applies only to the `STOP_DEPLOYMENT` option for `action_on_timeout`.

          * `greenFleetProvisioningOption` (`pulumi.Input[dict]`) - Information about how instances are provisioned for a replacement environment in a blue/green deployment (documented below).
            * `action` (`pulumi.Input[str]`) - The action to take on instances in the original environment after a successful blue/green deployment.
              * `TERMINATE`: Instances are terminated after a specified wait time.
              * `KEEP_ALIVE`: Instances are left running after they are deregistered from the load balancer and removed from the deployment group.

          * `terminateBlueInstancesOnDeploymentSuccess` (`pulumi.Input[dict]`) - Information about whether to terminate instances in the original fleet during a blue/green deployment (documented below).
            * `action` (`pulumi.Input[str]`) - The action to take on instances in the original environment after a successful blue/green deployment.
              * `TERMINATE`: Instances are terminated after a specified wait time.
              * `KEEP_ALIVE`: Instances are left running after they are deregistered from the load balancer and removed from the deployment group.
            * `terminationWaitTimeInMinutes` (`pulumi.Input[float]`) - The number of minutes to wait after a successful blue/green deployment before terminating instances from the original environment.

        The **deployment_style** object supports the following:

          * `deploymentOption` (`pulumi.Input[str]`) - Indicates whether to route deployment traffic behind a load balancer. Valid Values are `WITH_TRAFFIC_CONTROL` or `WITHOUT_TRAFFIC_CONTROL`. Default is `WITHOUT_TRAFFIC_CONTROL`.
          * `deploymentType` (`pulumi.Input[str]`) - Indicates whether to run an in-place deployment or a blue/green deployment. Valid Values are `IN_PLACE` or `BLUE_GREEN`. Default is `IN_PLACE`.

        The **ec2_tag_filters** object supports the following:

          * `key` (`pulumi.Input[str]`) - The key of the tag filter.
          * `type` (`pulumi.Input[str]`) - The type of the tag filter, either `KEY_ONLY`, `VALUE_ONLY`, or `KEY_AND_VALUE`.
          * `value` (`pulumi.Input[str]`) - The value of the tag filter.

        The **ec2_tag_sets** object supports the following:

          * `ec2_tag_filters` (`pulumi.Input[list]`) - Tag filters associated with the deployment group. See the AWS docs for details.
            * `key` (`pulumi.Input[str]`) - The key of the tag filter.
            * `type` (`pulumi.Input[str]`) - The type of the tag filter, either `KEY_ONLY`, `VALUE_ONLY`, or `KEY_AND_VALUE`.
            * `value` (`pulumi.Input[str]`) - The value of the tag filter.

        The **ecs_service** object supports the following:

          * `cluster_name` (`pulumi.Input[str]`) - The name of the ECS cluster.
          * `service_name` (`pulumi.Input[str]`) - The name of the ECS service.

        The **load_balancer_info** object supports the following:

          * `elbInfos` (`pulumi.Input[list]`) - The Classic Elastic Load Balancer to use in a deployment. Conflicts with `target_group_info` and `target_group_pair_info`.
            * `name` (`pulumi.Input[str]`) - Name of the target group.

          * `targetGroupInfos` (`pulumi.Input[list]`) - The (Application/Network Load Balancer) target group to use in a deployment. Conflicts with `elb_info` and `target_group_pair_info`.
            * `name` (`pulumi.Input[str]`) - Name of the target group.

          * `targetGroupPairInfo` (`pulumi.Input[dict]`) - The (Application/Network Load Balancer) target group pair to use in a deployment. Conflicts with `elb_info` and `target_group_info`.
            * `prodTrafficRoute` (`pulumi.Input[dict]`) - Configuration block for the production traffic route (documented below).
              * `listenerArns` (`pulumi.Input[list]`) - List of Amazon Resource Names (ARNs) of the load balancer listeners.

            * `targetGroups` (`pulumi.Input[list]`) - Configuration blocks for a target group within a target group pair (documented below).
              * `name` (`pulumi.Input[str]`) - Name of the target group.

            * `testTrafficRoute` (`pulumi.Input[dict]`) - Configuration block for the test traffic route (documented below).
              * `listenerArns` (`pulumi.Input[list]`) - List of Amazon Resource Names (ARNs) of the load balancer listeners.

        The **on_premises_instance_tag_filters** object supports the following:

          * `key` (`pulumi.Input[str]`) - The key of the tag filter.
          * `type` (`pulumi.Input[str]`) - The type of the tag filter, either `KEY_ONLY`, `VALUE_ONLY`, or `KEY_AND_VALUE`.
          * `value` (`pulumi.Input[str]`) - The value of the tag filter.

        The **trigger_configurations** object supports the following:

          * `triggerEvents` (`pulumi.Input[list]`) - The event type or types for which notifications are triggered. Some values that are supported: `DeploymentStart`, `DeploymentSuccess`, `DeploymentFailure`, `DeploymentStop`, `DeploymentRollback`, `InstanceStart`, `InstanceSuccess`, `InstanceFailure`.  See [the CodeDeploy documentation][1] for all possible values.
          * `triggerName` (`pulumi.Input[str]`) - The name of the notification trigger.
          * `triggerTargetArn` (`pulumi.Input[str]`) - The ARN of the SNS topic through which notifications are sent.
        """
        if __name__ is not None:
            warnings.warn("explicit use of __name__ is deprecated", DeprecationWarning)
            resource_name = __name__
        if __opts__ is not None:
            warnings.warn("explicit use of __opts__ is deprecated, use 'opts' instead", DeprecationWarning)
            opts = __opts__
        if opts is None:
            opts = pulumi.ResourceOptions()
        if not isinstance(opts, pulumi.ResourceOptions):
            raise TypeError('Expected resource options to be a ResourceOptions instance')
        if opts.version is None:
            opts.version = utilities.get_version()
        if opts.id is None:
            if __props__ is not None:
                raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
            __props__ = dict()

            __props__['alarm_configuration'] = alarm_configuration
            if app_name is None:
                raise TypeError("Missing required property 'app_name'")
            __props__['app_name'] = app_name
            __props__['auto_rollback_configuration'] = auto_rollback_configuration
            __props__['autoscaling_groups'] = autoscaling_groups
            __props__['blue_green_deployment_config'] = blue_green_deployment_config
            __props__['deployment_config_name'] = deployment_config_name
            if deployment_group_name is None:
                raise TypeError("Missing required property 'deployment_group_name'")
            __props__['deployment_group_name'] = deployment_group_name
            __props__['deployment_style'] = deployment_style
            __props__['ec2_tag_filters'] = ec2_tag_filters
            __props__['ec2_tag_sets'] = ec2_tag_sets
            __props__['ecs_service'] = ecs_service
            __props__['load_balancer_info'] = load_balancer_info
            __props__['on_premises_instance_tag_filters'] = on_premises_instance_tag_filters
            if service_role_arn is None:
                raise TypeError("Missing required property 'service_role_arn'")
            __props__['service_role_arn'] = service_role_arn
            __props__['trigger_configurations'] = trigger_configurations
        super(DeploymentGroup, __self__).__init__(
            'aws:codedeploy/deploymentGroup:DeploymentGroup',
            resource_name,
            __props__,
            opts)

    @staticmethod
    def get(resource_name, id, opts=None, alarm_configuration=None, app_name=None, auto_rollback_configuration=None, autoscaling_groups=None, blue_green_deployment_config=None, deployment_config_name=None, deployment_group_name=None, deployment_style=None, ec2_tag_filters=None, ec2_tag_sets=None, ecs_service=None, load_balancer_info=None, on_premises_instance_tag_filters=None, service_role_arn=None, trigger_configurations=None):
        """
        Get an existing DeploymentGroup resource's state with the given name, id, and optional extra
        properties used to qualify the lookup.

        :param str resource_name: The unique name of the resulting resource.
        :param str id: The unique provider ID of the resource to lookup.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[dict] alarm_configuration: Configuration block of alarms associated with the deployment group (documented below).
        :param pulumi.Input[str] app_name: The name of the application.
        :param pulumi.Input[dict] auto_rollback_configuration: Configuration block of the automatic rollback configuration associated with the deployment group (documented below).
        :param pulumi.Input[list] autoscaling_groups: Autoscaling groups associated with the deployment group.
        :param pulumi.Input[dict] blue_green_deployment_config: Configuration block of the blue/green deployment options for a deployment group (documented below).
        :param pulumi.Input[str] deployment_config_name: The name of the group's deployment config. The default is "CodeDeployDefault.OneAtATime".
        :param pulumi.Input[str] deployment_group_name: The name of the deployment group.
        :param pulumi.Input[dict] deployment_style: Configuration block of the type of deployment, either in-place or blue/green, you want to run and whether to route deployment traffic behind a load balancer (documented below).
        :param pulumi.Input[list] ec2_tag_filters: Tag filters associated with the deployment group. See the AWS docs for details.
        :param pulumi.Input[list] ec2_tag_sets: Configuration block(s) of Tag filters associated with the deployment group, which are also referred to as tag groups (documented below). See the AWS docs for details.
        :param pulumi.Input[dict] ecs_service: Configuration block(s) of the ECS services for a deployment group (documented below).
        :param pulumi.Input[dict] load_balancer_info: Single configuration block of the load balancer to use in a blue/green deployment (documented below).
        :param pulumi.Input[list] on_premises_instance_tag_filters: On premise tag filters associated with the group. See the AWS docs for details.
        :param pulumi.Input[str] service_role_arn: The service role ARN that allows deployments.
        :param pulumi.Input[list] trigger_configurations: Configuration block(s) of the triggers for the deployment group (documented below).

        The **alarm_configuration** object supports the following:

          * `alarms` (`pulumi.Input[list]`) - A list of alarms configured for the deployment group. _A maximum of 10 alarms can be added to a deployment group_.
          * `enabled` (`pulumi.Input[bool]`) - Indicates whether a defined automatic rollback configuration is currently enabled for this Deployment Group. If you enable automatic rollback, you must specify at least one event type.
          * `ignorePollAlarmFailure` (`pulumi.Input[bool]`) - Indicates whether a deployment should continue if information about the current state of alarms cannot be retrieved from CloudWatch. The default value is `false`.
            * `true`: The deployment will proceed even if alarm status information can't be retrieved.
            * `false`: The deployment will stop if alarm status information can't be retrieved.

        The **auto_rollback_configuration** object supports the following:

          * `enabled` (`pulumi.Input[bool]`) - Indicates whether a defined automatic rollback configuration is currently enabled for this Deployment Group. If you enable automatic rollback, you must specify at least one event type.
          * `events` (`pulumi.Input[list]`) - The event type or types that trigger a rollback. Supported types are `DEPLOYMENT_FAILURE` and `DEPLOYMENT_STOP_ON_ALARM`.

        The **blue_green_deployment_config** object supports the following:

          * `deploymentReadyOption` (`pulumi.Input[dict]`) - Information about the action to take when newly provisioned instances are ready to receive traffic in a blue/green deployment (documented below).
            * `actionOnTimeout` (`pulumi.Input[str]`) - When to reroute traffic from an original environment to a replacement environment in a blue/green deployment.
              * `CONTINUE_DEPLOYMENT`: Register new instances with the load balancer immediately after the new application revision is installed on the instances in the replacement environment.
              * `STOP_DEPLOYMENT`: Do not register new instances with load balancer unless traffic is rerouted manually. If traffic is not rerouted manually before the end of the specified wait period, the deployment status is changed to Stopped.
            * `waitTimeInMinutes` (`pulumi.Input[float]`) - The number of minutes to wait before the status of a blue/green deployment changed to Stopped if rerouting is not started manually. Applies only to the `STOP_DEPLOYMENT` option for `action_on_timeout`.

          * `greenFleetProvisioningOption` (`pulumi.Input[dict]`) - Information about how instances are provisioned for a replacement environment in a blue/green deployment (documented below).
            * `action` (`pulumi.Input[str]`) - The action to take on instances in the original environment after a successful blue/green deployment.
              * `TERMINATE`: Instances are terminated after a specified wait time.
              * `KEEP_ALIVE`: Instances are left running after they are deregistered from the load balancer and removed from the deployment group.

          * `terminateBlueInstancesOnDeploymentSuccess` (`pulumi.Input[dict]`) - Information about whether to terminate instances in the original fleet during a blue/green deployment (documented below).
            * `action` (`pulumi.Input[str]`) - The action to take on instances in the original environment after a successful blue/green deployment.
              * `TERMINATE`: Instances are terminated after a specified wait time.
              * `KEEP_ALIVE`: Instances are left running after they are deregistered from the load balancer and removed from the deployment group.
            * `terminationWaitTimeInMinutes` (`pulumi.Input[float]`) - The number of minutes to wait after a successful blue/green deployment before terminating instances from the original environment.

        The **deployment_style** object supports the following:

          * `deploymentOption` (`pulumi.Input[str]`) - Indicates whether to route deployment traffic behind a load balancer. Valid Values are `WITH_TRAFFIC_CONTROL` or `WITHOUT_TRAFFIC_CONTROL`. Default is `WITHOUT_TRAFFIC_CONTROL`.
          * `deploymentType` (`pulumi.Input[str]`) - Indicates whether to run an in-place deployment or a blue/green deployment. Valid Values are `IN_PLACE` or `BLUE_GREEN`. Default is `IN_PLACE`.

        The **ec2_tag_filters** object supports the following:

          * `key` (`pulumi.Input[str]`) - The key of the tag filter.
          * `type` (`pulumi.Input[str]`) - The type of the tag filter, either `KEY_ONLY`, `VALUE_ONLY`, or `KEY_AND_VALUE`.
          * `value` (`pulumi.Input[str]`) - The value of the tag filter.

        The **ec2_tag_sets** object supports the following:

          * `ec2_tag_filters` (`pulumi.Input[list]`) - Tag filters associated with the deployment group. See the AWS docs for details.
            * `key` (`pulumi.Input[str]`) - The key of the tag filter.
            * `type` (`pulumi.Input[str]`) - The type of the tag filter, either `KEY_ONLY`, `VALUE_ONLY`, or `KEY_AND_VALUE`.
            * `value` (`pulumi.Input[str]`) - The value of the tag filter.

        The **ecs_service** object supports the following:

          * `cluster_name` (`pulumi.Input[str]`) - The name of the ECS cluster.
          * `service_name` (`pulumi.Input[str]`) - The name of the ECS service.

        The **load_balancer_info** object supports the following:

          * `elbInfos` (`pulumi.Input[list]`) - The Classic Elastic Load Balancer to use in a deployment. Conflicts with `target_group_info` and `target_group_pair_info`.
            * `name` (`pulumi.Input[str]`) - Name of the target group.

          * `targetGroupInfos` (`pulumi.Input[list]`) - The (Application/Network Load Balancer) target group to use in a deployment. Conflicts with `elb_info` and `target_group_pair_info`.
            * `name` (`pulumi.Input[str]`) - Name of the target group.

          * `targetGroupPairInfo` (`pulumi.Input[dict]`) - The (Application/Network Load Balancer) target group pair to use in a deployment. Conflicts with `elb_info` and `target_group_info`.
            * `prodTrafficRoute` (`pulumi.Input[dict]`) - Configuration block for the production traffic route (documented below).
              * `listenerArns` (`pulumi.Input[list]`) - List of Amazon Resource Names (ARNs) of the load balancer listeners.

            * `targetGroups` (`pulumi.Input[list]`) - Configuration blocks for a target group within a target group pair (documented below).
              * `name` (`pulumi.Input[str]`) - Name of the target group.

            * `testTrafficRoute` (`pulumi.Input[dict]`) - Configuration block for the test traffic route (documented below).
              * `listenerArns` (`pulumi.Input[list]`) - List of Amazon Resource Names (ARNs) of the load balancer listeners.

        The **on_premises_instance_tag_filters** object supports the following:

          * `key` (`pulumi.Input[str]`) - The key of the tag filter.
          * `type` (`pulumi.Input[str]`) - The type of the tag filter, either `KEY_ONLY`, `VALUE_ONLY`, or `KEY_AND_VALUE`.
          * `value` (`pulumi.Input[str]`) - The value of the tag filter.

        The **trigger_configurations** object supports the following:

          * `triggerEvents` (`pulumi.Input[list]`) - The event type or types for which notifications are triggered. Some values that are supported: `DeploymentStart`, `DeploymentSuccess`, `DeploymentFailure`, `DeploymentStop`, `DeploymentRollback`, `InstanceStart`, `InstanceSuccess`, `InstanceFailure`.  See [the CodeDeploy documentation][1] for all possible values.
          * `triggerName` (`pulumi.Input[str]`) - The name of the notification trigger.
          * `triggerTargetArn` (`pulumi.Input[str]`) - The ARN of the SNS topic through which notifications are sent.
        """
        opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))

        __props__ = dict()

        __props__["alarm_configuration"] = alarm_configuration
        __props__["app_name"] = app_name
        __props__["auto_rollback_configuration"] = auto_rollback_configuration
        __props__["autoscaling_groups"] = autoscaling_groups
        __props__["blue_green_deployment_config"] = blue_green_deployment_config
        __props__["deployment_config_name"] = deployment_config_name
        __props__["deployment_group_name"] = deployment_group_name
        __props__["deployment_style"] = deployment_style
        __props__["ec2_tag_filters"] = ec2_tag_filters
        __props__["ec2_tag_sets"] = ec2_tag_sets
        __props__["ecs_service"] = ecs_service
        __props__["load_balancer_info"] = load_balancer_info
        __props__["on_premises_instance_tag_filters"] = on_premises_instance_tag_filters
        __props__["service_role_arn"] = service_role_arn
        __props__["trigger_configurations"] = trigger_configurations
        return DeploymentGroup(resource_name, opts=opts, __props__=__props__)
    def translate_output_property(self, prop):
        return tables._CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop

    def translate_input_property(self, prop):
        return tables._SNAKE_TO_CAMEL_CASE_TABLE.get(prop) or prop

