Broker Args
Provides an Amazon MQ broker resource. This resources also manages users for the broker.
For more information on Amazon MQ, see Amazon MQ documentation. 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. NOTE: Changes to an MQ Broker can occur when you change a parameter, such asconfiguration
oruser
, 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 theapply_immediately
flag to instruct the service to apply the change immediately (see documentation below). Usingapply_immediately
can result in a brief downtime as the broker reboots.
Example Usage
Basic Example
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
const example = new aws.mq.Broker("example", {
brokerName: "example",
configuration: {
id: test.id,
revision: test.latestRevision,
},
engineType: "ActiveMQ",
engineVersion: "5.17.6",
hostInstanceType: "mq.t2.micro",
securityGroups: [testAwsSecurityGroup.id],
users: [{
username: "ExampleUser",
password: "MindTheGap",
}],
});
import pulumi
import pulumi_aws as aws
example = aws.mq.Broker("example",
broker_name="example",
configuration={
"id": test["id"],
"revision": test["latestRevision"],
},
engine_type="ActiveMQ",
engine_version="5.17.6",
host_instance_type="mq.t2.micro",
security_groups=[test_aws_security_group["id"]],
users=[{
"username": "ExampleUser",
"password": "MindTheGap",
}])
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Aws = Pulumi.Aws;
return await Deployment.RunAsync(() =>
{
var example = new Aws.Mq.Broker("example", new()
{
BrokerName = "example",
Configuration = new Aws.Mq.Inputs.BrokerConfigurationArgs
{
Id = test.Id,
Revision = test.LatestRevision,
},
EngineType = "ActiveMQ",
EngineVersion = "5.17.6",
HostInstanceType = "mq.t2.micro",
SecurityGroups = new[]
{
testAwsSecurityGroup.Id,
},
Users = new[]
{
new Aws.Mq.Inputs.BrokerUserArgs
{
Username = "ExampleUser",
Password = "MindTheGap",
},
},
});
});
package main
import (
"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/mq"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := mq.NewBroker(ctx, "example", &mq.BrokerArgs{
BrokerName: pulumi.String("example"),
Configuration: &mq.BrokerConfigurationArgs{
Id: pulumi.Any(test.Id),
Revision: pulumi.Any(test.LatestRevision),
},
EngineType: pulumi.String("ActiveMQ"),
EngineVersion: pulumi.String("5.17.6"),
HostInstanceType: pulumi.String("mq.t2.micro"),
SecurityGroups: pulumi.StringArray{
testAwsSecurityGroup.Id,
},
Users: mq.BrokerUserArray{
&mq.BrokerUserArgs{
Username: pulumi.String("ExampleUser"),
Password: pulumi.String("MindTheGap"),
},
},
})
if err != nil {
return err
}
return nil
})
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.mq.Broker;
import com.pulumi.aws.mq.BrokerArgs;
import com.pulumi.aws.mq.inputs.BrokerConfigurationArgs;
import com.pulumi.aws.mq.inputs.BrokerUserArgs;
import java.util.List;
import java.util.ArrayList;
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 Broker("example", BrokerArgs.builder()
.brokerName("example")
.configuration(BrokerConfigurationArgs.builder()
.id(test.id())
.revision(test.latestRevision())
.build())
.engineType("ActiveMQ")
.engineVersion("5.17.6")
.hostInstanceType("mq.t2.micro")
.securityGroups(testAwsSecurityGroup.id())
.users(BrokerUserArgs.builder()
.username("ExampleUser")
.password("MindTheGap")
.build())
.build());
}
}
resources:
example:
type: aws:mq:Broker
properties:
brokerName: example
configuration:
id: ${test.id}
revision: ${test.latestRevision}
engineType: ActiveMQ
engineVersion: 5.17.6
hostInstanceType: mq.t2.micro
securityGroups:
- ${testAwsSecurityGroup.id}
users:
- username: ExampleUser
password: MindTheGap
High-throughput Optimized Example
This example shows the use of EBS storage for high-throughput optimized performance.
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
const example = new aws.mq.Broker("example", {
brokerName: "example",
configuration: {
id: test.id,
revision: test.latestRevision,
},
engineType: "ActiveMQ",
engineVersion: "5.17.6",
storageType: "ebs",
hostInstanceType: "mq.m5.large",
securityGroups: [testAwsSecurityGroup.id],
users: [{
username: "ExampleUser",
password: "MindTheGap",
}],
});
import pulumi
import pulumi_aws as aws
example = aws.mq.Broker("example",
broker_name="example",
configuration={
"id": test["id"],
"revision": test["latestRevision"],
},
engine_type="ActiveMQ",
engine_version="5.17.6",
storage_type="ebs",
host_instance_type="mq.m5.large",
security_groups=[test_aws_security_group["id"]],
users=[{
"username": "ExampleUser",
"password": "MindTheGap",
}])
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Aws = Pulumi.Aws;
return await Deployment.RunAsync(() =>
{
var example = new Aws.Mq.Broker("example", new()
{
BrokerName = "example",
Configuration = new Aws.Mq.Inputs.BrokerConfigurationArgs
{
Id = test.Id,
Revision = test.LatestRevision,
},
EngineType = "ActiveMQ",
EngineVersion = "5.17.6",
StorageType = "ebs",
HostInstanceType = "mq.m5.large",
SecurityGroups = new[]
{
testAwsSecurityGroup.Id,
},
Users = new[]
{
new Aws.Mq.Inputs.BrokerUserArgs
{
Username = "ExampleUser",
Password = "MindTheGap",
},
},
});
});
package main
import (
"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/mq"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := mq.NewBroker(ctx, "example", &mq.BrokerArgs{
BrokerName: pulumi.String("example"),
Configuration: &mq.BrokerConfigurationArgs{
Id: pulumi.Any(test.Id),
Revision: pulumi.Any(test.LatestRevision),
},
EngineType: pulumi.String("ActiveMQ"),
EngineVersion: pulumi.String("5.17.6"),
StorageType: pulumi.String("ebs"),
HostInstanceType: pulumi.String("mq.m5.large"),
SecurityGroups: pulumi.StringArray{
testAwsSecurityGroup.Id,
},
Users: mq.BrokerUserArray{
&mq.BrokerUserArgs{
Username: pulumi.String("ExampleUser"),
Password: pulumi.String("MindTheGap"),
},
},
})
if err != nil {
return err
}
return nil
})
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.mq.Broker;
import com.pulumi.aws.mq.BrokerArgs;
import com.pulumi.aws.mq.inputs.BrokerConfigurationArgs;
import com.pulumi.aws.mq.inputs.BrokerUserArgs;
import java.util.List;
import java.util.ArrayList;
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 Broker("example", BrokerArgs.builder()
.brokerName("example")
.configuration(BrokerConfigurationArgs.builder()
.id(test.id())
.revision(test.latestRevision())
.build())
.engineType("ActiveMQ")
.engineVersion("5.17.6")
.storageType("ebs")
.hostInstanceType("mq.m5.large")
.securityGroups(testAwsSecurityGroup.id())
.users(BrokerUserArgs.builder()
.username("ExampleUser")
.password("MindTheGap")
.build())
.build());
}
}
resources:
example:
type: aws:mq:Broker
properties:
brokerName: example
configuration:
id: ${test.id}
revision: ${test.latestRevision}
engineType: ActiveMQ
engineVersion: 5.17.6
storageType: ebs
hostInstanceType: mq.m5.large
securityGroups:
- ${testAwsSecurityGroup.id}
users:
- username: ExampleUser
password: MindTheGap
Cross-Region Data Replication
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
const examplePrimary = new aws.mq.Broker("example_primary", {
applyImmediately: true,
brokerName: "example_primary",
engineType: "ActiveMQ",
engineVersion: "5.17.6",
hostInstanceType: "mq.m5.large",
securityGroups: [examplePrimaryAwsSecurityGroup.id],
deploymentMode: "ACTIVE_STANDBY_MULTI_AZ",
users: [
{
username: "ExampleUser",
password: "MindTheGap",
},
{
username: "ExampleReplicationUser",
password: "Example12345",
replicationUser: true,
},
],
});
const example = new aws.mq.Broker("example", {
applyImmediately: true,
brokerName: "example",
engineType: "ActiveMQ",
engineVersion: "5.17.6",
hostInstanceType: "mq.m5.large",
securityGroups: [exampleAwsSecurityGroup.id],
deploymentMode: "ACTIVE_STANDBY_MULTI_AZ",
dataReplicationMode: "CRDR",
dataReplicationPrimaryBrokerArn: primary.arn,
users: [
{
username: "ExampleUser",
password: "MindTheGap",
},
{
username: "ExampleReplicationUser",
password: "Example12345",
replicationUser: true,
},
],
});
import pulumi
import pulumi_aws as aws
example_primary = aws.mq.Broker("example_primary",
apply_immediately=True,
broker_name="example_primary",
engine_type="ActiveMQ",
engine_version="5.17.6",
host_instance_type="mq.m5.large",
security_groups=[example_primary_aws_security_group["id"]],
deployment_mode="ACTIVE_STANDBY_MULTI_AZ",
users=[
{
"username": "ExampleUser",
"password": "MindTheGap",
},
{
"username": "ExampleReplicationUser",
"password": "Example12345",
"replication_user": True,
},
])
example = aws.mq.Broker("example",
apply_immediately=True,
broker_name="example",
engine_type="ActiveMQ",
engine_version="5.17.6",
host_instance_type="mq.m5.large",
security_groups=[example_aws_security_group["id"]],
deployment_mode="ACTIVE_STANDBY_MULTI_AZ",
data_replication_mode="CRDR",
data_replication_primary_broker_arn=primary["arn"],
users=[
{
"username": "ExampleUser",
"password": "MindTheGap",
},
{
"username": "ExampleReplicationUser",
"password": "Example12345",
"replication_user": True,
},
])
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Aws = Pulumi.Aws;
return await Deployment.RunAsync(() =>
{
var examplePrimary = new Aws.Mq.Broker("example_primary", new()
{
ApplyImmediately = true,
BrokerName = "example_primary",
EngineType = "ActiveMQ",
EngineVersion = "5.17.6",
HostInstanceType = "mq.m5.large",
SecurityGroups = new[]
{
examplePrimaryAwsSecurityGroup.Id,
},
DeploymentMode = "ACTIVE_STANDBY_MULTI_AZ",
Users = new[]
{
new Aws.Mq.Inputs.BrokerUserArgs
{
Username = "ExampleUser",
Password = "MindTheGap",
},
new Aws.Mq.Inputs.BrokerUserArgs
{
Username = "ExampleReplicationUser",
Password = "Example12345",
ReplicationUser = true,
},
},
});
var example = new Aws.Mq.Broker("example", new()
{
ApplyImmediately = true,
BrokerName = "example",
EngineType = "ActiveMQ",
EngineVersion = "5.17.6",
HostInstanceType = "mq.m5.large",
SecurityGroups = new[]
{
exampleAwsSecurityGroup.Id,
},
DeploymentMode = "ACTIVE_STANDBY_MULTI_AZ",
DataReplicationMode = "CRDR",
DataReplicationPrimaryBrokerArn = primary.Arn,
Users = new[]
{
new Aws.Mq.Inputs.BrokerUserArgs
{
Username = "ExampleUser",
Password = "MindTheGap",
},
new Aws.Mq.Inputs.BrokerUserArgs
{
Username = "ExampleReplicationUser",
Password = "Example12345",
ReplicationUser = true,
},
},
});
});
package main
import (
"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/mq"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := mq.NewBroker(ctx, "example_primary", &mq.BrokerArgs{
ApplyImmediately: pulumi.Bool(true),
BrokerName: pulumi.String("example_primary"),
EngineType: pulumi.String("ActiveMQ"),
EngineVersion: pulumi.String("5.17.6"),
HostInstanceType: pulumi.String("mq.m5.large"),
SecurityGroups: pulumi.StringArray{
examplePrimaryAwsSecurityGroup.Id,
},
DeploymentMode: pulumi.String("ACTIVE_STANDBY_MULTI_AZ"),
Users: mq.BrokerUserArray{
&mq.BrokerUserArgs{
Username: pulumi.String("ExampleUser"),
Password: pulumi.String("MindTheGap"),
},
&mq.BrokerUserArgs{
Username: pulumi.String("ExampleReplicationUser"),
Password: pulumi.String("Example12345"),
ReplicationUser: pulumi.Bool(true),
},
},
})
if err != nil {
return err
}
_, err = mq.NewBroker(ctx, "example", &mq.BrokerArgs{
ApplyImmediately: pulumi.Bool(true),
BrokerName: pulumi.String("example"),
EngineType: pulumi.String("ActiveMQ"),
EngineVersion: pulumi.String("5.17.6"),
HostInstanceType: pulumi.String("mq.m5.large"),
SecurityGroups: pulumi.StringArray{
exampleAwsSecurityGroup.Id,
},
DeploymentMode: pulumi.String("ACTIVE_STANDBY_MULTI_AZ"),
DataReplicationMode: pulumi.String("CRDR"),
DataReplicationPrimaryBrokerArn: pulumi.Any(primary.Arn),
Users: mq.BrokerUserArray{
&mq.BrokerUserArgs{
Username: pulumi.String("ExampleUser"),
Password: pulumi.String("MindTheGap"),
},
&mq.BrokerUserArgs{
Username: pulumi.String("ExampleReplicationUser"),
Password: pulumi.String("Example12345"),
ReplicationUser: pulumi.Bool(true),
},
},
})
if err != nil {
return err
}
return nil
})
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.mq.Broker;
import com.pulumi.aws.mq.BrokerArgs;
import com.pulumi.aws.mq.inputs.BrokerUserArgs;
import java.util.List;
import java.util.ArrayList;
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 examplePrimary = new Broker("examplePrimary", BrokerArgs.builder()
.applyImmediately(true)
.brokerName("example_primary")
.engineType("ActiveMQ")
.engineVersion("5.17.6")
.hostInstanceType("mq.m5.large")
.securityGroups(examplePrimaryAwsSecurityGroup.id())
.deploymentMode("ACTIVE_STANDBY_MULTI_AZ")
.users(
BrokerUserArgs.builder()
.username("ExampleUser")
.password("MindTheGap")
.build(),
BrokerUserArgs.builder()
.username("ExampleReplicationUser")
.password("Example12345")
.replicationUser(true)
.build())
.build());
var example = new Broker("example", BrokerArgs.builder()
.applyImmediately(true)
.brokerName("example")
.engineType("ActiveMQ")
.engineVersion("5.17.6")
.hostInstanceType("mq.m5.large")
.securityGroups(exampleAwsSecurityGroup.id())
.deploymentMode("ACTIVE_STANDBY_MULTI_AZ")
.dataReplicationMode("CRDR")
.dataReplicationPrimaryBrokerArn(primary.arn())
.users(
BrokerUserArgs.builder()
.username("ExampleUser")
.password("MindTheGap")
.build(),
BrokerUserArgs.builder()
.username("ExampleReplicationUser")
.password("Example12345")
.replicationUser(true)
.build())
.build());
}
}
resources:
examplePrimary:
type: aws:mq:Broker
name: example_primary
properties:
applyImmediately: true
brokerName: example_primary
engineType: ActiveMQ
engineVersion: 5.17.6
hostInstanceType: mq.m5.large
securityGroups:
- ${examplePrimaryAwsSecurityGroup.id}
deploymentMode: ACTIVE_STANDBY_MULTI_AZ
users:
- username: ExampleUser
password: MindTheGap
- username: ExampleReplicationUser
password: Example12345
replicationUser: true
example:
type: aws:mq:Broker
properties:
applyImmediately: true
brokerName: example
engineType: ActiveMQ
engineVersion: 5.17.6
hostInstanceType: mq.m5.large
securityGroups:
- ${exampleAwsSecurityGroup.id}
deploymentMode: ACTIVE_STANDBY_MULTI_AZ
dataReplicationMode: CRDR
dataReplicationPrimaryBrokerArn: ${primary.arn}
users:
- username: ExampleUser
password: MindTheGap
- username: ExampleReplicationUser
password: Example12345
replicationUser: true
See the AWS MQ documentation on cross-region data replication for additional details.
Import
Using pulumi import
, import MQ Brokers using their broker id. For example:
$ pulumi import aws:mq/broker:Broker example a1b2c3d4-d5f6-7777-8888-9999aaaabbbbcccc
Constructors
Properties
Specifies whether any broker modifications are applied immediately, or during the next maintenance window. Default is false
.
Authentication strategy used to secure the broker. Valid values are simple
and ldap
. ldap
is not supported for engine_type
RabbitMQ
.
Whether to automatically upgrade to new minor versions of brokers as Amazon MQ makes releases available.
Name of the broker.
Configuration block for broker configuration. Applies to engine_type
of ActiveMQ
and RabbitMQ
only. Detailed below.
Defines whether this broker is a part of a data replication pair. Valid values are CRDR
and NONE
.
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 data_replication_mode
is CRDR
.
Deployment mode of the broker. Valid values are SINGLE_INSTANCE
, ACTIVE_STANDBY_MULTI_AZ
, and CLUSTER_MULTI_AZ
. Default is SINGLE_INSTANCE
.
Configuration block containing encryption options. Detailed below.
Type of broker engine. Valid values are ActiveMQ
and RabbitMQ
.
Version of the broker engine. See the AmazonMQ Broker Engine docs for supported versions. For example, 5.17.6
.
Broker's instance type. For example, mq.t3.micro
, mq.m5.large
.
Configuration block for the LDAP server used to authenticate and authorize connections to the broker. Not supported for engine_type
RabbitMQ
. Detailed below. (Currently, AWS may not process changes to LDAP server metadata.)
Configuration block for the logging configuration of the broker. Detailed below.
Configuration block for the maintenance window start time. Detailed below.
Whether to enable connections from applications outside of the VPC that hosts the broker's subnets.
List of security group IDs assigned to the broker.
Storage type of the broker. For engine_type
ActiveMQ
, the valid values are efs
and ebs
, and the AWS-default is efs
. For engine_type
RabbitMQ
, only ebs
is supported. When using ebs
, only the mq.m5
broker instance type family is supported.
Configuration block for broker users. For engine_type
of RabbitMQ
, Amazon MQ does not return broker users preventing this resource from making user updates and drift detection. Detailed below. The following arguments are optional: