github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/mq/broker.go (about)

     1  // Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT.
     2  // *** WARNING: Do not edit by hand unless you're certain you know what you are doing! ***
     3  
     4  package mq
     5  
     6  import (
     7  	"context"
     8  	"reflect"
     9  
    10  	"errors"
    11  	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal"
    12  	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    13  )
    14  
    15  // Provides an Amazon MQ broker resource. This resources also manages users for the broker.
    16  //
    17  // > For more information on Amazon MQ, see [Amazon MQ documentation](https://docs.aws.amazon.com/amazon-mq/latest/developer-guide/welcome.html).
    18  //
    19  // > **NOTE:** Amazon MQ currently places limits on **RabbitMQ** brokers. For example, a RabbitMQ broker cannot have: instances with an associated IP address of an ENI attached to the broker, an associated LDAP server to authenticate and authorize broker connections, storage type `EFS`, or audit logging. Although this resource allows you to create RabbitMQ users, RabbitMQ users cannot have console access or groups. Also, Amazon MQ does not return information about RabbitMQ users so drift detection is not possible.
    20  //
    21  // > **NOTE:** Changes to an MQ Broker can occur when you change a parameter, such as `configuration` or `user`, and are reflected in the next maintenance window. Because of this, the provider may report a difference in its planning phase because a modification has not yet taken place. You can use the `applyImmediately` flag to instruct the service to apply the change immediately (see documentation below). Using `applyImmediately` can result in a brief downtime as the broker reboots.
    22  //
    23  // ## Example Usage
    24  //
    25  // ### Basic Example
    26  //
    27  // <!--Start PulumiCodeChooser -->
    28  // ```go
    29  // package main
    30  //
    31  // import (
    32  //
    33  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/mq"
    34  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    35  //
    36  // )
    37  //
    38  //	func main() {
    39  //		pulumi.Run(func(ctx *pulumi.Context) error {
    40  //			_, err := mq.NewBroker(ctx, "example", &mq.BrokerArgs{
    41  //				BrokerName: pulumi.String("example"),
    42  //				Configuration: &mq.BrokerConfigurationArgs{
    43  //					Id:       pulumi.Any(test.Id),
    44  //					Revision: pulumi.Any(test.LatestRevision),
    45  //				},
    46  //				EngineType:       pulumi.String("ActiveMQ"),
    47  //				EngineVersion:    pulumi.String("5.17.6"),
    48  //				HostInstanceType: pulumi.String("mq.t2.micro"),
    49  //				SecurityGroups: pulumi.StringArray{
    50  //					testAwsSecurityGroup.Id,
    51  //				},
    52  //				Users: mq.BrokerUserArray{
    53  //					&mq.BrokerUserArgs{
    54  //						Username: pulumi.String("ExampleUser"),
    55  //						Password: pulumi.String("MindTheGap"),
    56  //					},
    57  //				},
    58  //			})
    59  //			if err != nil {
    60  //				return err
    61  //			}
    62  //			return nil
    63  //		})
    64  //	}
    65  //
    66  // ```
    67  // <!--End PulumiCodeChooser -->
    68  //
    69  // ### High-throughput Optimized Example
    70  //
    71  // This example shows the use of EBS storage for high-throughput optimized performance.
    72  //
    73  // <!--Start PulumiCodeChooser -->
    74  // ```go
    75  // package main
    76  //
    77  // import (
    78  //
    79  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/mq"
    80  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    81  //
    82  // )
    83  //
    84  //	func main() {
    85  //		pulumi.Run(func(ctx *pulumi.Context) error {
    86  //			_, err := mq.NewBroker(ctx, "example", &mq.BrokerArgs{
    87  //				BrokerName: pulumi.String("example"),
    88  //				Configuration: &mq.BrokerConfigurationArgs{
    89  //					Id:       pulumi.Any(test.Id),
    90  //					Revision: pulumi.Any(test.LatestRevision),
    91  //				},
    92  //				EngineType:       pulumi.String("ActiveMQ"),
    93  //				EngineVersion:    pulumi.String("5.17.6"),
    94  //				StorageType:      pulumi.String("ebs"),
    95  //				HostInstanceType: pulumi.String("mq.m5.large"),
    96  //				SecurityGroups: pulumi.StringArray{
    97  //					testAwsSecurityGroup.Id,
    98  //				},
    99  //				Users: mq.BrokerUserArray{
   100  //					&mq.BrokerUserArgs{
   101  //						Username: pulumi.String("ExampleUser"),
   102  //						Password: pulumi.String("MindTheGap"),
   103  //					},
   104  //				},
   105  //			})
   106  //			if err != nil {
   107  //				return err
   108  //			}
   109  //			return nil
   110  //		})
   111  //	}
   112  //
   113  // ```
   114  // <!--End PulumiCodeChooser -->
   115  //
   116  // ### Cross-Region Data Replication
   117  //
   118  // <!--Start PulumiCodeChooser -->
   119  // ```go
   120  // package main
   121  //
   122  // import (
   123  //
   124  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/mq"
   125  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
   126  //
   127  // )
   128  //
   129  //	func main() {
   130  //		pulumi.Run(func(ctx *pulumi.Context) error {
   131  //			_, err := mq.NewBroker(ctx, "example_primary", &mq.BrokerArgs{
   132  //				ApplyImmediately: pulumi.Bool(true),
   133  //				BrokerName:       pulumi.String("example_primary"),
   134  //				EngineType:       pulumi.String("ActiveMQ"),
   135  //				EngineVersion:    pulumi.String("5.17.6"),
   136  //				HostInstanceType: pulumi.String("mq.m5.large"),
   137  //				SecurityGroups: pulumi.StringArray{
   138  //					examplePrimaryAwsSecurityGroup.Id,
   139  //				},
   140  //				DeploymentMode: pulumi.String("ACTIVE_STANDBY_MULTI_AZ"),
   141  //				Users: mq.BrokerUserArray{
   142  //					&mq.BrokerUserArgs{
   143  //						Username: pulumi.String("ExampleUser"),
   144  //						Password: pulumi.String("MindTheGap"),
   145  //					},
   146  //					&mq.BrokerUserArgs{
   147  //						Username:        pulumi.String("ExampleReplicationUser"),
   148  //						Password:        pulumi.String("Example12345"),
   149  //						ReplicationUser: pulumi.Bool(true),
   150  //					},
   151  //				},
   152  //			})
   153  //			if err != nil {
   154  //				return err
   155  //			}
   156  //			_, err = mq.NewBroker(ctx, "example", &mq.BrokerArgs{
   157  //				ApplyImmediately: pulumi.Bool(true),
   158  //				BrokerName:       pulumi.String("example"),
   159  //				EngineType:       pulumi.String("ActiveMQ"),
   160  //				EngineVersion:    pulumi.String("5.17.6"),
   161  //				HostInstanceType: pulumi.String("mq.m5.large"),
   162  //				SecurityGroups: pulumi.StringArray{
   163  //					exampleAwsSecurityGroup.Id,
   164  //				},
   165  //				DeploymentMode:                  pulumi.String("ACTIVE_STANDBY_MULTI_AZ"),
   166  //				DataReplicationMode:             pulumi.String("CRDR"),
   167  //				DataReplicationPrimaryBrokerArn: pulumi.Any(primary.Arn),
   168  //				Users: mq.BrokerUserArray{
   169  //					&mq.BrokerUserArgs{
   170  //						Username: pulumi.String("ExampleUser"),
   171  //						Password: pulumi.String("MindTheGap"),
   172  //					},
   173  //					&mq.BrokerUserArgs{
   174  //						Username:        pulumi.String("ExampleReplicationUser"),
   175  //						Password:        pulumi.String("Example12345"),
   176  //						ReplicationUser: pulumi.Bool(true),
   177  //					},
   178  //				},
   179  //			})
   180  //			if err != nil {
   181  //				return err
   182  //			}
   183  //			return nil
   184  //		})
   185  //	}
   186  //
   187  // ```
   188  // <!--End PulumiCodeChooser -->
   189  //
   190  // See the [AWS MQ documentation](https://docs.aws.amazon.com/amazon-mq/latest/developer-guide/crdr-for-active-mq.html) on cross-region data replication for additional details.
   191  //
   192  // ## Import
   193  //
   194  // Using `pulumi import`, import MQ Brokers using their broker id. For example:
   195  //
   196  // ```sh
   197  // $ pulumi import aws:mq/broker:Broker example a1b2c3d4-d5f6-7777-8888-9999aaaabbbbcccc
   198  // ```
   199  type Broker struct {
   200  	pulumi.CustomResourceState
   201  
   202  	// Specifies whether any broker modifications are applied immediately, or during the next maintenance window. Default is `false`.
   203  	ApplyImmediately pulumi.BoolPtrOutput `pulumi:"applyImmediately"`
   204  	// ARN of the broker.
   205  	Arn pulumi.StringOutput `pulumi:"arn"`
   206  	// Authentication strategy used to secure the broker. Valid values are `simple` and `ldap`. `ldap` is not supported for `engineType` `RabbitMQ`.
   207  	AuthenticationStrategy pulumi.StringOutput `pulumi:"authenticationStrategy"`
   208  	// Whether to automatically upgrade to new minor versions of brokers as Amazon MQ makes releases available.
   209  	AutoMinorVersionUpgrade pulumi.BoolPtrOutput `pulumi:"autoMinorVersionUpgrade"`
   210  	// Name of the broker.
   211  	BrokerName pulumi.StringOutput `pulumi:"brokerName"`
   212  	// Configuration block for broker configuration. Applies to `engineType` of `ActiveMQ` and `RabbitMQ` only. Detailed below.
   213  	Configuration BrokerConfigurationOutput `pulumi:"configuration"`
   214  	// Defines whether this broker is a part of a data replication pair. Valid values are `CRDR` and `NONE`.
   215  	DataReplicationMode pulumi.StringOutput `pulumi:"dataReplicationMode"`
   216  	// The Amazon Resource Name (ARN) of the primary broker that is used to replicate data from in a data replication pair, and is applied to the replica broker. Must be set when `dataReplicationMode` is `CRDR`.
   217  	DataReplicationPrimaryBrokerArn pulumi.StringPtrOutput `pulumi:"dataReplicationPrimaryBrokerArn"`
   218  	// Deployment mode of the broker. Valid values are `SINGLE_INSTANCE`, `ACTIVE_STANDBY_MULTI_AZ`, and `CLUSTER_MULTI_AZ`. Default is `SINGLE_INSTANCE`.
   219  	DeploymentMode pulumi.StringPtrOutput `pulumi:"deploymentMode"`
   220  	// Configuration block containing encryption options. Detailed below.
   221  	EncryptionOptions BrokerEncryptionOptionsPtrOutput `pulumi:"encryptionOptions"`
   222  	// Type of broker engine. Valid values are `ActiveMQ` and `RabbitMQ`.
   223  	EngineType pulumi.StringOutput `pulumi:"engineType"`
   224  	// Version of the broker engine. See the [AmazonMQ Broker Engine docs](https://docs.aws.amazon.com/amazon-mq/latest/developer-guide/broker-engine.html) for supported versions. For example, `5.17.6`.
   225  	EngineVersion pulumi.StringOutput `pulumi:"engineVersion"`
   226  	// Broker's instance type. For example, `mq.t3.micro`, `mq.m5.large`.
   227  	HostInstanceType pulumi.StringOutput `pulumi:"hostInstanceType"`
   228  	// List of information about allocated brokers (both active & standby).
   229  	Instances BrokerInstanceArrayOutput `pulumi:"instances"`
   230  	// Configuration block for the LDAP server used to authenticate and authorize connections to the broker. Not supported for `engineType` `RabbitMQ`. Detailed below. (Currently, AWS may not process changes to LDAP server metadata.)
   231  	LdapServerMetadata BrokerLdapServerMetadataPtrOutput `pulumi:"ldapServerMetadata"`
   232  	// Configuration block for the logging configuration of the broker. Detailed below.
   233  	Logs BrokerLogsPtrOutput `pulumi:"logs"`
   234  	// Configuration block for the maintenance window start time. Detailed below.
   235  	MaintenanceWindowStartTime BrokerMaintenanceWindowStartTimeOutput `pulumi:"maintenanceWindowStartTime"`
   236  	// (Optional) The data replication mode that will be applied after reboot.
   237  	PendingDataReplicationMode pulumi.StringOutput `pulumi:"pendingDataReplicationMode"`
   238  	// Whether to enable connections from applications outside of the VPC that hosts the broker's subnets.
   239  	PubliclyAccessible pulumi.BoolPtrOutput `pulumi:"publiclyAccessible"`
   240  	// List of security group IDs assigned to the broker.
   241  	SecurityGroups pulumi.StringArrayOutput `pulumi:"securityGroups"`
   242  	// Storage type of the broker. For `engineType` `ActiveMQ`, the valid values are `efs` and `ebs`, and the AWS-default is `efs`. For `engineType` `RabbitMQ`, only `ebs` is supported. When using `ebs`, only the `mq.m5` broker instance type family is supported.
   243  	StorageType pulumi.StringOutput `pulumi:"storageType"`
   244  	// List of subnet IDs in which to launch the broker. A `SINGLE_INSTANCE` deployment requires one subnet. An `ACTIVE_STANDBY_MULTI_AZ` deployment requires multiple subnets.
   245  	SubnetIds pulumi.StringArrayOutput `pulumi:"subnetIds"`
   246  	// Map of tags to assign to the broker. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   247  	Tags pulumi.StringMapOutput `pulumi:"tags"`
   248  	// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   249  	//
   250  	// Deprecated: Please use `tags` instead.
   251  	TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"`
   252  	// Configuration block for broker users. For `engineType` of `RabbitMQ`, Amazon MQ does not return broker users preventing this resource from making user updates and drift detection. Detailed below.
   253  	//
   254  	// The following arguments are optional:
   255  	Users BrokerUserArrayOutput `pulumi:"users"`
   256  }
   257  
   258  // NewBroker registers a new resource with the given unique name, arguments, and options.
   259  func NewBroker(ctx *pulumi.Context,
   260  	name string, args *BrokerArgs, opts ...pulumi.ResourceOption) (*Broker, error) {
   261  	if args == nil {
   262  		return nil, errors.New("missing one or more required arguments")
   263  	}
   264  
   265  	if args.EngineType == nil {
   266  		return nil, errors.New("invalid value for required argument 'EngineType'")
   267  	}
   268  	if args.EngineVersion == nil {
   269  		return nil, errors.New("invalid value for required argument 'EngineVersion'")
   270  	}
   271  	if args.HostInstanceType == nil {
   272  		return nil, errors.New("invalid value for required argument 'HostInstanceType'")
   273  	}
   274  	if args.Users == nil {
   275  		return nil, errors.New("invalid value for required argument 'Users'")
   276  	}
   277  	opts = internal.PkgResourceDefaultOpts(opts)
   278  	var resource Broker
   279  	err := ctx.RegisterResource("aws:mq/broker:Broker", name, args, &resource, opts...)
   280  	if err != nil {
   281  		return nil, err
   282  	}
   283  	return &resource, nil
   284  }
   285  
   286  // GetBroker gets an existing Broker resource's state with the given name, ID, and optional
   287  // state properties that are used to uniquely qualify the lookup (nil if not required).
   288  func GetBroker(ctx *pulumi.Context,
   289  	name string, id pulumi.IDInput, state *BrokerState, opts ...pulumi.ResourceOption) (*Broker, error) {
   290  	var resource Broker
   291  	err := ctx.ReadResource("aws:mq/broker:Broker", name, id, state, &resource, opts...)
   292  	if err != nil {
   293  		return nil, err
   294  	}
   295  	return &resource, nil
   296  }
   297  
   298  // Input properties used for looking up and filtering Broker resources.
   299  type brokerState struct {
   300  	// Specifies whether any broker modifications are applied immediately, or during the next maintenance window. Default is `false`.
   301  	ApplyImmediately *bool `pulumi:"applyImmediately"`
   302  	// ARN of the broker.
   303  	Arn *string `pulumi:"arn"`
   304  	// Authentication strategy used to secure the broker. Valid values are `simple` and `ldap`. `ldap` is not supported for `engineType` `RabbitMQ`.
   305  	AuthenticationStrategy *string `pulumi:"authenticationStrategy"`
   306  	// Whether to automatically upgrade to new minor versions of brokers as Amazon MQ makes releases available.
   307  	AutoMinorVersionUpgrade *bool `pulumi:"autoMinorVersionUpgrade"`
   308  	// Name of the broker.
   309  	BrokerName *string `pulumi:"brokerName"`
   310  	// Configuration block for broker configuration. Applies to `engineType` of `ActiveMQ` and `RabbitMQ` only. Detailed below.
   311  	Configuration *BrokerConfiguration `pulumi:"configuration"`
   312  	// Defines whether this broker is a part of a data replication pair. Valid values are `CRDR` and `NONE`.
   313  	DataReplicationMode *string `pulumi:"dataReplicationMode"`
   314  	// The Amazon Resource Name (ARN) of the primary broker that is used to replicate data from in a data replication pair, and is applied to the replica broker. Must be set when `dataReplicationMode` is `CRDR`.
   315  	DataReplicationPrimaryBrokerArn *string `pulumi:"dataReplicationPrimaryBrokerArn"`
   316  	// Deployment mode of the broker. Valid values are `SINGLE_INSTANCE`, `ACTIVE_STANDBY_MULTI_AZ`, and `CLUSTER_MULTI_AZ`. Default is `SINGLE_INSTANCE`.
   317  	DeploymentMode *string `pulumi:"deploymentMode"`
   318  	// Configuration block containing encryption options. Detailed below.
   319  	EncryptionOptions *BrokerEncryptionOptions `pulumi:"encryptionOptions"`
   320  	// Type of broker engine. Valid values are `ActiveMQ` and `RabbitMQ`.
   321  	EngineType *string `pulumi:"engineType"`
   322  	// Version of the broker engine. See the [AmazonMQ Broker Engine docs](https://docs.aws.amazon.com/amazon-mq/latest/developer-guide/broker-engine.html) for supported versions. For example, `5.17.6`.
   323  	EngineVersion *string `pulumi:"engineVersion"`
   324  	// Broker's instance type. For example, `mq.t3.micro`, `mq.m5.large`.
   325  	HostInstanceType *string `pulumi:"hostInstanceType"`
   326  	// List of information about allocated brokers (both active & standby).
   327  	Instances []BrokerInstance `pulumi:"instances"`
   328  	// Configuration block for the LDAP server used to authenticate and authorize connections to the broker. Not supported for `engineType` `RabbitMQ`. Detailed below. (Currently, AWS may not process changes to LDAP server metadata.)
   329  	LdapServerMetadata *BrokerLdapServerMetadata `pulumi:"ldapServerMetadata"`
   330  	// Configuration block for the logging configuration of the broker. Detailed below.
   331  	Logs *BrokerLogs `pulumi:"logs"`
   332  	// Configuration block for the maintenance window start time. Detailed below.
   333  	MaintenanceWindowStartTime *BrokerMaintenanceWindowStartTime `pulumi:"maintenanceWindowStartTime"`
   334  	// (Optional) The data replication mode that will be applied after reboot.
   335  	PendingDataReplicationMode *string `pulumi:"pendingDataReplicationMode"`
   336  	// Whether to enable connections from applications outside of the VPC that hosts the broker's subnets.
   337  	PubliclyAccessible *bool `pulumi:"publiclyAccessible"`
   338  	// List of security group IDs assigned to the broker.
   339  	SecurityGroups []string `pulumi:"securityGroups"`
   340  	// Storage type of the broker. For `engineType` `ActiveMQ`, the valid values are `efs` and `ebs`, and the AWS-default is `efs`. For `engineType` `RabbitMQ`, only `ebs` is supported. When using `ebs`, only the `mq.m5` broker instance type family is supported.
   341  	StorageType *string `pulumi:"storageType"`
   342  	// List of subnet IDs in which to launch the broker. A `SINGLE_INSTANCE` deployment requires one subnet. An `ACTIVE_STANDBY_MULTI_AZ` deployment requires multiple subnets.
   343  	SubnetIds []string `pulumi:"subnetIds"`
   344  	// Map of tags to assign to the broker. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   345  	Tags map[string]string `pulumi:"tags"`
   346  	// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   347  	//
   348  	// Deprecated: Please use `tags` instead.
   349  	TagsAll map[string]string `pulumi:"tagsAll"`
   350  	// Configuration block for broker users. For `engineType` of `RabbitMQ`, Amazon MQ does not return broker users preventing this resource from making user updates and drift detection. Detailed below.
   351  	//
   352  	// The following arguments are optional:
   353  	Users []BrokerUser `pulumi:"users"`
   354  }
   355  
   356  type BrokerState struct {
   357  	// Specifies whether any broker modifications are applied immediately, or during the next maintenance window. Default is `false`.
   358  	ApplyImmediately pulumi.BoolPtrInput
   359  	// ARN of the broker.
   360  	Arn pulumi.StringPtrInput
   361  	// Authentication strategy used to secure the broker. Valid values are `simple` and `ldap`. `ldap` is not supported for `engineType` `RabbitMQ`.
   362  	AuthenticationStrategy pulumi.StringPtrInput
   363  	// Whether to automatically upgrade to new minor versions of brokers as Amazon MQ makes releases available.
   364  	AutoMinorVersionUpgrade pulumi.BoolPtrInput
   365  	// Name of the broker.
   366  	BrokerName pulumi.StringPtrInput
   367  	// Configuration block for broker configuration. Applies to `engineType` of `ActiveMQ` and `RabbitMQ` only. Detailed below.
   368  	Configuration BrokerConfigurationPtrInput
   369  	// Defines whether this broker is a part of a data replication pair. Valid values are `CRDR` and `NONE`.
   370  	DataReplicationMode pulumi.StringPtrInput
   371  	// The Amazon Resource Name (ARN) of the primary broker that is used to replicate data from in a data replication pair, and is applied to the replica broker. Must be set when `dataReplicationMode` is `CRDR`.
   372  	DataReplicationPrimaryBrokerArn pulumi.StringPtrInput
   373  	// Deployment mode of the broker. Valid values are `SINGLE_INSTANCE`, `ACTIVE_STANDBY_MULTI_AZ`, and `CLUSTER_MULTI_AZ`. Default is `SINGLE_INSTANCE`.
   374  	DeploymentMode pulumi.StringPtrInput
   375  	// Configuration block containing encryption options. Detailed below.
   376  	EncryptionOptions BrokerEncryptionOptionsPtrInput
   377  	// Type of broker engine. Valid values are `ActiveMQ` and `RabbitMQ`.
   378  	EngineType pulumi.StringPtrInput
   379  	// Version of the broker engine. See the [AmazonMQ Broker Engine docs](https://docs.aws.amazon.com/amazon-mq/latest/developer-guide/broker-engine.html) for supported versions. For example, `5.17.6`.
   380  	EngineVersion pulumi.StringPtrInput
   381  	// Broker's instance type. For example, `mq.t3.micro`, `mq.m5.large`.
   382  	HostInstanceType pulumi.StringPtrInput
   383  	// List of information about allocated brokers (both active & standby).
   384  	Instances BrokerInstanceArrayInput
   385  	// Configuration block for the LDAP server used to authenticate and authorize connections to the broker. Not supported for `engineType` `RabbitMQ`. Detailed below. (Currently, AWS may not process changes to LDAP server metadata.)
   386  	LdapServerMetadata BrokerLdapServerMetadataPtrInput
   387  	// Configuration block for the logging configuration of the broker. Detailed below.
   388  	Logs BrokerLogsPtrInput
   389  	// Configuration block for the maintenance window start time. Detailed below.
   390  	MaintenanceWindowStartTime BrokerMaintenanceWindowStartTimePtrInput
   391  	// (Optional) The data replication mode that will be applied after reboot.
   392  	PendingDataReplicationMode pulumi.StringPtrInput
   393  	// Whether to enable connections from applications outside of the VPC that hosts the broker's subnets.
   394  	PubliclyAccessible pulumi.BoolPtrInput
   395  	// List of security group IDs assigned to the broker.
   396  	SecurityGroups pulumi.StringArrayInput
   397  	// Storage type of the broker. For `engineType` `ActiveMQ`, the valid values are `efs` and `ebs`, and the AWS-default is `efs`. For `engineType` `RabbitMQ`, only `ebs` is supported. When using `ebs`, only the `mq.m5` broker instance type family is supported.
   398  	StorageType pulumi.StringPtrInput
   399  	// List of subnet IDs in which to launch the broker. A `SINGLE_INSTANCE` deployment requires one subnet. An `ACTIVE_STANDBY_MULTI_AZ` deployment requires multiple subnets.
   400  	SubnetIds pulumi.StringArrayInput
   401  	// Map of tags to assign to the broker. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   402  	Tags pulumi.StringMapInput
   403  	// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   404  	//
   405  	// Deprecated: Please use `tags` instead.
   406  	TagsAll pulumi.StringMapInput
   407  	// Configuration block for broker users. For `engineType` of `RabbitMQ`, Amazon MQ does not return broker users preventing this resource from making user updates and drift detection. Detailed below.
   408  	//
   409  	// The following arguments are optional:
   410  	Users BrokerUserArrayInput
   411  }
   412  
   413  func (BrokerState) ElementType() reflect.Type {
   414  	return reflect.TypeOf((*brokerState)(nil)).Elem()
   415  }
   416  
   417  type brokerArgs struct {
   418  	// Specifies whether any broker modifications are applied immediately, or during the next maintenance window. Default is `false`.
   419  	ApplyImmediately *bool `pulumi:"applyImmediately"`
   420  	// Authentication strategy used to secure the broker. Valid values are `simple` and `ldap`. `ldap` is not supported for `engineType` `RabbitMQ`.
   421  	AuthenticationStrategy *string `pulumi:"authenticationStrategy"`
   422  	// Whether to automatically upgrade to new minor versions of brokers as Amazon MQ makes releases available.
   423  	AutoMinorVersionUpgrade *bool `pulumi:"autoMinorVersionUpgrade"`
   424  	// Name of the broker.
   425  	BrokerName *string `pulumi:"brokerName"`
   426  	// Configuration block for broker configuration. Applies to `engineType` of `ActiveMQ` and `RabbitMQ` only. Detailed below.
   427  	Configuration *BrokerConfiguration `pulumi:"configuration"`
   428  	// Defines whether this broker is a part of a data replication pair. Valid values are `CRDR` and `NONE`.
   429  	DataReplicationMode *string `pulumi:"dataReplicationMode"`
   430  	// The Amazon Resource Name (ARN) of the primary broker that is used to replicate data from in a data replication pair, and is applied to the replica broker. Must be set when `dataReplicationMode` is `CRDR`.
   431  	DataReplicationPrimaryBrokerArn *string `pulumi:"dataReplicationPrimaryBrokerArn"`
   432  	// Deployment mode of the broker. Valid values are `SINGLE_INSTANCE`, `ACTIVE_STANDBY_MULTI_AZ`, and `CLUSTER_MULTI_AZ`. Default is `SINGLE_INSTANCE`.
   433  	DeploymentMode *string `pulumi:"deploymentMode"`
   434  	// Configuration block containing encryption options. Detailed below.
   435  	EncryptionOptions *BrokerEncryptionOptions `pulumi:"encryptionOptions"`
   436  	// Type of broker engine. Valid values are `ActiveMQ` and `RabbitMQ`.
   437  	EngineType string `pulumi:"engineType"`
   438  	// Version of the broker engine. See the [AmazonMQ Broker Engine docs](https://docs.aws.amazon.com/amazon-mq/latest/developer-guide/broker-engine.html) for supported versions. For example, `5.17.6`.
   439  	EngineVersion string `pulumi:"engineVersion"`
   440  	// Broker's instance type. For example, `mq.t3.micro`, `mq.m5.large`.
   441  	HostInstanceType string `pulumi:"hostInstanceType"`
   442  	// Configuration block for the LDAP server used to authenticate and authorize connections to the broker. Not supported for `engineType` `RabbitMQ`. Detailed below. (Currently, AWS may not process changes to LDAP server metadata.)
   443  	LdapServerMetadata *BrokerLdapServerMetadata `pulumi:"ldapServerMetadata"`
   444  	// Configuration block for the logging configuration of the broker. Detailed below.
   445  	Logs *BrokerLogs `pulumi:"logs"`
   446  	// Configuration block for the maintenance window start time. Detailed below.
   447  	MaintenanceWindowStartTime *BrokerMaintenanceWindowStartTime `pulumi:"maintenanceWindowStartTime"`
   448  	// Whether to enable connections from applications outside of the VPC that hosts the broker's subnets.
   449  	PubliclyAccessible *bool `pulumi:"publiclyAccessible"`
   450  	// List of security group IDs assigned to the broker.
   451  	SecurityGroups []string `pulumi:"securityGroups"`
   452  	// Storage type of the broker. For `engineType` `ActiveMQ`, the valid values are `efs` and `ebs`, and the AWS-default is `efs`. For `engineType` `RabbitMQ`, only `ebs` is supported. When using `ebs`, only the `mq.m5` broker instance type family is supported.
   453  	StorageType *string `pulumi:"storageType"`
   454  	// List of subnet IDs in which to launch the broker. A `SINGLE_INSTANCE` deployment requires one subnet. An `ACTIVE_STANDBY_MULTI_AZ` deployment requires multiple subnets.
   455  	SubnetIds []string `pulumi:"subnetIds"`
   456  	// Map of tags to assign to the broker. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   457  	Tags map[string]string `pulumi:"tags"`
   458  	// Configuration block for broker users. For `engineType` of `RabbitMQ`, Amazon MQ does not return broker users preventing this resource from making user updates and drift detection. Detailed below.
   459  	//
   460  	// The following arguments are optional:
   461  	Users []BrokerUser `pulumi:"users"`
   462  }
   463  
   464  // The set of arguments for constructing a Broker resource.
   465  type BrokerArgs struct {
   466  	// Specifies whether any broker modifications are applied immediately, or during the next maintenance window. Default is `false`.
   467  	ApplyImmediately pulumi.BoolPtrInput
   468  	// Authentication strategy used to secure the broker. Valid values are `simple` and `ldap`. `ldap` is not supported for `engineType` `RabbitMQ`.
   469  	AuthenticationStrategy pulumi.StringPtrInput
   470  	// Whether to automatically upgrade to new minor versions of brokers as Amazon MQ makes releases available.
   471  	AutoMinorVersionUpgrade pulumi.BoolPtrInput
   472  	// Name of the broker.
   473  	BrokerName pulumi.StringPtrInput
   474  	// Configuration block for broker configuration. Applies to `engineType` of `ActiveMQ` and `RabbitMQ` only. Detailed below.
   475  	Configuration BrokerConfigurationPtrInput
   476  	// Defines whether this broker is a part of a data replication pair. Valid values are `CRDR` and `NONE`.
   477  	DataReplicationMode pulumi.StringPtrInput
   478  	// The Amazon Resource Name (ARN) of the primary broker that is used to replicate data from in a data replication pair, and is applied to the replica broker. Must be set when `dataReplicationMode` is `CRDR`.
   479  	DataReplicationPrimaryBrokerArn pulumi.StringPtrInput
   480  	// Deployment mode of the broker. Valid values are `SINGLE_INSTANCE`, `ACTIVE_STANDBY_MULTI_AZ`, and `CLUSTER_MULTI_AZ`. Default is `SINGLE_INSTANCE`.
   481  	DeploymentMode pulumi.StringPtrInput
   482  	// Configuration block containing encryption options. Detailed below.
   483  	EncryptionOptions BrokerEncryptionOptionsPtrInput
   484  	// Type of broker engine. Valid values are `ActiveMQ` and `RabbitMQ`.
   485  	EngineType pulumi.StringInput
   486  	// Version of the broker engine. See the [AmazonMQ Broker Engine docs](https://docs.aws.amazon.com/amazon-mq/latest/developer-guide/broker-engine.html) for supported versions. For example, `5.17.6`.
   487  	EngineVersion pulumi.StringInput
   488  	// Broker's instance type. For example, `mq.t3.micro`, `mq.m5.large`.
   489  	HostInstanceType pulumi.StringInput
   490  	// Configuration block for the LDAP server used to authenticate and authorize connections to the broker. Not supported for `engineType` `RabbitMQ`. Detailed below. (Currently, AWS may not process changes to LDAP server metadata.)
   491  	LdapServerMetadata BrokerLdapServerMetadataPtrInput
   492  	// Configuration block for the logging configuration of the broker. Detailed below.
   493  	Logs BrokerLogsPtrInput
   494  	// Configuration block for the maintenance window start time. Detailed below.
   495  	MaintenanceWindowStartTime BrokerMaintenanceWindowStartTimePtrInput
   496  	// Whether to enable connections from applications outside of the VPC that hosts the broker's subnets.
   497  	PubliclyAccessible pulumi.BoolPtrInput
   498  	// List of security group IDs assigned to the broker.
   499  	SecurityGroups pulumi.StringArrayInput
   500  	// Storage type of the broker. For `engineType` `ActiveMQ`, the valid values are `efs` and `ebs`, and the AWS-default is `efs`. For `engineType` `RabbitMQ`, only `ebs` is supported. When using `ebs`, only the `mq.m5` broker instance type family is supported.
   501  	StorageType pulumi.StringPtrInput
   502  	// List of subnet IDs in which to launch the broker. A `SINGLE_INSTANCE` deployment requires one subnet. An `ACTIVE_STANDBY_MULTI_AZ` deployment requires multiple subnets.
   503  	SubnetIds pulumi.StringArrayInput
   504  	// Map of tags to assign to the broker. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   505  	Tags pulumi.StringMapInput
   506  	// Configuration block for broker users. For `engineType` of `RabbitMQ`, Amazon MQ does not return broker users preventing this resource from making user updates and drift detection. Detailed below.
   507  	//
   508  	// The following arguments are optional:
   509  	Users BrokerUserArrayInput
   510  }
   511  
   512  func (BrokerArgs) ElementType() reflect.Type {
   513  	return reflect.TypeOf((*brokerArgs)(nil)).Elem()
   514  }
   515  
   516  type BrokerInput interface {
   517  	pulumi.Input
   518  
   519  	ToBrokerOutput() BrokerOutput
   520  	ToBrokerOutputWithContext(ctx context.Context) BrokerOutput
   521  }
   522  
   523  func (*Broker) ElementType() reflect.Type {
   524  	return reflect.TypeOf((**Broker)(nil)).Elem()
   525  }
   526  
   527  func (i *Broker) ToBrokerOutput() BrokerOutput {
   528  	return i.ToBrokerOutputWithContext(context.Background())
   529  }
   530  
   531  func (i *Broker) ToBrokerOutputWithContext(ctx context.Context) BrokerOutput {
   532  	return pulumi.ToOutputWithContext(ctx, i).(BrokerOutput)
   533  }
   534  
   535  // BrokerArrayInput is an input type that accepts BrokerArray and BrokerArrayOutput values.
   536  // You can construct a concrete instance of `BrokerArrayInput` via:
   537  //
   538  //	BrokerArray{ BrokerArgs{...} }
   539  type BrokerArrayInput interface {
   540  	pulumi.Input
   541  
   542  	ToBrokerArrayOutput() BrokerArrayOutput
   543  	ToBrokerArrayOutputWithContext(context.Context) BrokerArrayOutput
   544  }
   545  
   546  type BrokerArray []BrokerInput
   547  
   548  func (BrokerArray) ElementType() reflect.Type {
   549  	return reflect.TypeOf((*[]*Broker)(nil)).Elem()
   550  }
   551  
   552  func (i BrokerArray) ToBrokerArrayOutput() BrokerArrayOutput {
   553  	return i.ToBrokerArrayOutputWithContext(context.Background())
   554  }
   555  
   556  func (i BrokerArray) ToBrokerArrayOutputWithContext(ctx context.Context) BrokerArrayOutput {
   557  	return pulumi.ToOutputWithContext(ctx, i).(BrokerArrayOutput)
   558  }
   559  
   560  // BrokerMapInput is an input type that accepts BrokerMap and BrokerMapOutput values.
   561  // You can construct a concrete instance of `BrokerMapInput` via:
   562  //
   563  //	BrokerMap{ "key": BrokerArgs{...} }
   564  type BrokerMapInput interface {
   565  	pulumi.Input
   566  
   567  	ToBrokerMapOutput() BrokerMapOutput
   568  	ToBrokerMapOutputWithContext(context.Context) BrokerMapOutput
   569  }
   570  
   571  type BrokerMap map[string]BrokerInput
   572  
   573  func (BrokerMap) ElementType() reflect.Type {
   574  	return reflect.TypeOf((*map[string]*Broker)(nil)).Elem()
   575  }
   576  
   577  func (i BrokerMap) ToBrokerMapOutput() BrokerMapOutput {
   578  	return i.ToBrokerMapOutputWithContext(context.Background())
   579  }
   580  
   581  func (i BrokerMap) ToBrokerMapOutputWithContext(ctx context.Context) BrokerMapOutput {
   582  	return pulumi.ToOutputWithContext(ctx, i).(BrokerMapOutput)
   583  }
   584  
   585  type BrokerOutput struct{ *pulumi.OutputState }
   586  
   587  func (BrokerOutput) ElementType() reflect.Type {
   588  	return reflect.TypeOf((**Broker)(nil)).Elem()
   589  }
   590  
   591  func (o BrokerOutput) ToBrokerOutput() BrokerOutput {
   592  	return o
   593  }
   594  
   595  func (o BrokerOutput) ToBrokerOutputWithContext(ctx context.Context) BrokerOutput {
   596  	return o
   597  }
   598  
   599  // Specifies whether any broker modifications are applied immediately, or during the next maintenance window. Default is `false`.
   600  func (o BrokerOutput) ApplyImmediately() pulumi.BoolPtrOutput {
   601  	return o.ApplyT(func(v *Broker) pulumi.BoolPtrOutput { return v.ApplyImmediately }).(pulumi.BoolPtrOutput)
   602  }
   603  
   604  // ARN of the broker.
   605  func (o BrokerOutput) Arn() pulumi.StringOutput {
   606  	return o.ApplyT(func(v *Broker) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput)
   607  }
   608  
   609  // Authentication strategy used to secure the broker. Valid values are `simple` and `ldap`. `ldap` is not supported for `engineType` `RabbitMQ`.
   610  func (o BrokerOutput) AuthenticationStrategy() pulumi.StringOutput {
   611  	return o.ApplyT(func(v *Broker) pulumi.StringOutput { return v.AuthenticationStrategy }).(pulumi.StringOutput)
   612  }
   613  
   614  // Whether to automatically upgrade to new minor versions of brokers as Amazon MQ makes releases available.
   615  func (o BrokerOutput) AutoMinorVersionUpgrade() pulumi.BoolPtrOutput {
   616  	return o.ApplyT(func(v *Broker) pulumi.BoolPtrOutput { return v.AutoMinorVersionUpgrade }).(pulumi.BoolPtrOutput)
   617  }
   618  
   619  // Name of the broker.
   620  func (o BrokerOutput) BrokerName() pulumi.StringOutput {
   621  	return o.ApplyT(func(v *Broker) pulumi.StringOutput { return v.BrokerName }).(pulumi.StringOutput)
   622  }
   623  
   624  // Configuration block for broker configuration. Applies to `engineType` of `ActiveMQ` and `RabbitMQ` only. Detailed below.
   625  func (o BrokerOutput) Configuration() BrokerConfigurationOutput {
   626  	return o.ApplyT(func(v *Broker) BrokerConfigurationOutput { return v.Configuration }).(BrokerConfigurationOutput)
   627  }
   628  
   629  // Defines whether this broker is a part of a data replication pair. Valid values are `CRDR` and `NONE`.
   630  func (o BrokerOutput) DataReplicationMode() pulumi.StringOutput {
   631  	return o.ApplyT(func(v *Broker) pulumi.StringOutput { return v.DataReplicationMode }).(pulumi.StringOutput)
   632  }
   633  
   634  // The Amazon Resource Name (ARN) of the primary broker that is used to replicate data from in a data replication pair, and is applied to the replica broker. Must be set when `dataReplicationMode` is `CRDR`.
   635  func (o BrokerOutput) DataReplicationPrimaryBrokerArn() pulumi.StringPtrOutput {
   636  	return o.ApplyT(func(v *Broker) pulumi.StringPtrOutput { return v.DataReplicationPrimaryBrokerArn }).(pulumi.StringPtrOutput)
   637  }
   638  
   639  // Deployment mode of the broker. Valid values are `SINGLE_INSTANCE`, `ACTIVE_STANDBY_MULTI_AZ`, and `CLUSTER_MULTI_AZ`. Default is `SINGLE_INSTANCE`.
   640  func (o BrokerOutput) DeploymentMode() pulumi.StringPtrOutput {
   641  	return o.ApplyT(func(v *Broker) pulumi.StringPtrOutput { return v.DeploymentMode }).(pulumi.StringPtrOutput)
   642  }
   643  
   644  // Configuration block containing encryption options. Detailed below.
   645  func (o BrokerOutput) EncryptionOptions() BrokerEncryptionOptionsPtrOutput {
   646  	return o.ApplyT(func(v *Broker) BrokerEncryptionOptionsPtrOutput { return v.EncryptionOptions }).(BrokerEncryptionOptionsPtrOutput)
   647  }
   648  
   649  // Type of broker engine. Valid values are `ActiveMQ` and `RabbitMQ`.
   650  func (o BrokerOutput) EngineType() pulumi.StringOutput {
   651  	return o.ApplyT(func(v *Broker) pulumi.StringOutput { return v.EngineType }).(pulumi.StringOutput)
   652  }
   653  
   654  // Version of the broker engine. See the [AmazonMQ Broker Engine docs](https://docs.aws.amazon.com/amazon-mq/latest/developer-guide/broker-engine.html) for supported versions. For example, `5.17.6`.
   655  func (o BrokerOutput) EngineVersion() pulumi.StringOutput {
   656  	return o.ApplyT(func(v *Broker) pulumi.StringOutput { return v.EngineVersion }).(pulumi.StringOutput)
   657  }
   658  
   659  // Broker's instance type. For example, `mq.t3.micro`, `mq.m5.large`.
   660  func (o BrokerOutput) HostInstanceType() pulumi.StringOutput {
   661  	return o.ApplyT(func(v *Broker) pulumi.StringOutput { return v.HostInstanceType }).(pulumi.StringOutput)
   662  }
   663  
   664  // List of information about allocated brokers (both active & standby).
   665  func (o BrokerOutput) Instances() BrokerInstanceArrayOutput {
   666  	return o.ApplyT(func(v *Broker) BrokerInstanceArrayOutput { return v.Instances }).(BrokerInstanceArrayOutput)
   667  }
   668  
   669  // Configuration block for the LDAP server used to authenticate and authorize connections to the broker. Not supported for `engineType` `RabbitMQ`. Detailed below. (Currently, AWS may not process changes to LDAP server metadata.)
   670  func (o BrokerOutput) LdapServerMetadata() BrokerLdapServerMetadataPtrOutput {
   671  	return o.ApplyT(func(v *Broker) BrokerLdapServerMetadataPtrOutput { return v.LdapServerMetadata }).(BrokerLdapServerMetadataPtrOutput)
   672  }
   673  
   674  // Configuration block for the logging configuration of the broker. Detailed below.
   675  func (o BrokerOutput) Logs() BrokerLogsPtrOutput {
   676  	return o.ApplyT(func(v *Broker) BrokerLogsPtrOutput { return v.Logs }).(BrokerLogsPtrOutput)
   677  }
   678  
   679  // Configuration block for the maintenance window start time. Detailed below.
   680  func (o BrokerOutput) MaintenanceWindowStartTime() BrokerMaintenanceWindowStartTimeOutput {
   681  	return o.ApplyT(func(v *Broker) BrokerMaintenanceWindowStartTimeOutput { return v.MaintenanceWindowStartTime }).(BrokerMaintenanceWindowStartTimeOutput)
   682  }
   683  
   684  // (Optional) The data replication mode that will be applied after reboot.
   685  func (o BrokerOutput) PendingDataReplicationMode() pulumi.StringOutput {
   686  	return o.ApplyT(func(v *Broker) pulumi.StringOutput { return v.PendingDataReplicationMode }).(pulumi.StringOutput)
   687  }
   688  
   689  // Whether to enable connections from applications outside of the VPC that hosts the broker's subnets.
   690  func (o BrokerOutput) PubliclyAccessible() pulumi.BoolPtrOutput {
   691  	return o.ApplyT(func(v *Broker) pulumi.BoolPtrOutput { return v.PubliclyAccessible }).(pulumi.BoolPtrOutput)
   692  }
   693  
   694  // List of security group IDs assigned to the broker.
   695  func (o BrokerOutput) SecurityGroups() pulumi.StringArrayOutput {
   696  	return o.ApplyT(func(v *Broker) pulumi.StringArrayOutput { return v.SecurityGroups }).(pulumi.StringArrayOutput)
   697  }
   698  
   699  // Storage type of the broker. For `engineType` `ActiveMQ`, the valid values are `efs` and `ebs`, and the AWS-default is `efs`. For `engineType` `RabbitMQ`, only `ebs` is supported. When using `ebs`, only the `mq.m5` broker instance type family is supported.
   700  func (o BrokerOutput) StorageType() pulumi.StringOutput {
   701  	return o.ApplyT(func(v *Broker) pulumi.StringOutput { return v.StorageType }).(pulumi.StringOutput)
   702  }
   703  
   704  // List of subnet IDs in which to launch the broker. A `SINGLE_INSTANCE` deployment requires one subnet. An `ACTIVE_STANDBY_MULTI_AZ` deployment requires multiple subnets.
   705  func (o BrokerOutput) SubnetIds() pulumi.StringArrayOutput {
   706  	return o.ApplyT(func(v *Broker) pulumi.StringArrayOutput { return v.SubnetIds }).(pulumi.StringArrayOutput)
   707  }
   708  
   709  // Map of tags to assign to the broker. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   710  func (o BrokerOutput) Tags() pulumi.StringMapOutput {
   711  	return o.ApplyT(func(v *Broker) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput)
   712  }
   713  
   714  // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   715  //
   716  // Deprecated: Please use `tags` instead.
   717  func (o BrokerOutput) TagsAll() pulumi.StringMapOutput {
   718  	return o.ApplyT(func(v *Broker) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput)
   719  }
   720  
   721  // Configuration block for broker users. For `engineType` of `RabbitMQ`, Amazon MQ does not return broker users preventing this resource from making user updates and drift detection. Detailed below.
   722  //
   723  // The following arguments are optional:
   724  func (o BrokerOutput) Users() BrokerUserArrayOutput {
   725  	return o.ApplyT(func(v *Broker) BrokerUserArrayOutput { return v.Users }).(BrokerUserArrayOutput)
   726  }
   727  
   728  type BrokerArrayOutput struct{ *pulumi.OutputState }
   729  
   730  func (BrokerArrayOutput) ElementType() reflect.Type {
   731  	return reflect.TypeOf((*[]*Broker)(nil)).Elem()
   732  }
   733  
   734  func (o BrokerArrayOutput) ToBrokerArrayOutput() BrokerArrayOutput {
   735  	return o
   736  }
   737  
   738  func (o BrokerArrayOutput) ToBrokerArrayOutputWithContext(ctx context.Context) BrokerArrayOutput {
   739  	return o
   740  }
   741  
   742  func (o BrokerArrayOutput) Index(i pulumi.IntInput) BrokerOutput {
   743  	return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Broker {
   744  		return vs[0].([]*Broker)[vs[1].(int)]
   745  	}).(BrokerOutput)
   746  }
   747  
   748  type BrokerMapOutput struct{ *pulumi.OutputState }
   749  
   750  func (BrokerMapOutput) ElementType() reflect.Type {
   751  	return reflect.TypeOf((*map[string]*Broker)(nil)).Elem()
   752  }
   753  
   754  func (o BrokerMapOutput) ToBrokerMapOutput() BrokerMapOutput {
   755  	return o
   756  }
   757  
   758  func (o BrokerMapOutput) ToBrokerMapOutputWithContext(ctx context.Context) BrokerMapOutput {
   759  	return o
   760  }
   761  
   762  func (o BrokerMapOutput) MapIndex(k pulumi.StringInput) BrokerOutput {
   763  	return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Broker {
   764  		return vs[0].(map[string]*Broker)[vs[1].(string)]
   765  	}).(BrokerOutput)
   766  }
   767  
   768  func init() {
   769  	pulumi.RegisterInputType(reflect.TypeOf((*BrokerInput)(nil)).Elem(), &Broker{})
   770  	pulumi.RegisterInputType(reflect.TypeOf((*BrokerArrayInput)(nil)).Elem(), BrokerArray{})
   771  	pulumi.RegisterInputType(reflect.TypeOf((*BrokerMapInput)(nil)).Elem(), BrokerMap{})
   772  	pulumi.RegisterOutputType(BrokerOutput{})
   773  	pulumi.RegisterOutputType(BrokerArrayOutput{})
   774  	pulumi.RegisterOutputType(BrokerMapOutput{})
   775  }