AmazonMQ RabbitMQ Cfhighlander Component

AWS has announced AmazonMQ now supports RabbitMQ. We now have a highlander component to provision a fully managed RabbitMQ broker, either clustered or a single node. No more painful hosting and management of Rabbit on ECS or EKS. Music to our ears!

The component is quite simple, unlike ActiveMQ, RabbitMQ only needs a broker and a security group defined in cloudformation. RabbitMQ can only create one set of credentials on creation, the default master username is administrator, the default master password is randomly generated by a custom resource. Both of these values are stored in ssm parameter store under /rabbitmq/${EnvironmentName}/"). This can be over-ridden via config.

Base configuration simply requires a VPCId for the security group and some subnets for the broker to be placed in. This will provision a single node cluster running on an mq.t3.micro, ideal for dev or low traffic environments.

  Component name: 'rabbitmq', template: 'amazonmq-rabbitmq@0.1.0' do
    parameter name: 'VPCId', value: 'vpc.VPCId'
    parameter name: 'SubnetIds', value: 'vpc.PersistenceSubnets'
  end

Alternatively, with a few extra parameters, we can provision a fully managed three node cluster, ideal for production or heavy workloads. One thing to note is when running a three node cluster, the minimum instance size is an mq.m5.large.

  Component name: 'rabbitmq', template: 'amazonmq-rabbitmq@0.1.0' do
    parameter name: 'VPCId', value: 'vpc.VPCId'
    parameter name: 'SubnetIds', value: 'vpc.PersistenceSubnets'
    parameter name: 'HostInstanceType', value: 'mq.m5.large'
    parameter name: 'DeploymentMode', value: 'CLUSTER_MULTI_AZ'
  end

The AMQPs endpoint is outputted and exported in the template under AmqpEndpoints and ${EnvironmentName}-rabbitmq-AmqpEndpoints. The UI endpoint is retrievable through the AWS console

Alerting functionality is now supported within guardian 0.6.3


Source: https://github.com/theonestack/hl-component-amazonmq-rabbitmq