// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: MIT-0 data "aws_secretsmanager_secret" "mq-secret" { name = "${var.APP}-${var.COMPONENT}-mq" } data "aws_secretsmanager_secret_version" "mq-secret-version" { secret_id = data.aws_secretsmanager_secret.mq-secret.id } resource "aws_kms_key" "mq_key" { description = "${var.APP}-${var.COMPONENT}-${var.AWS_REGION}-mq-kms_key" enable_key_rotation = true tags = { Terraform = "true" Environment = var.ENV Name = "${var.APP}-${var.COMPONENT}-${var.AWS_REGION}-mq-kms_key" } } resource "aws_mq_broker" "mq_broker" { broker_name = "${var.APP}-${var.COMPONENT}-${var.AWS_REGION}-mq-broker" engine_type = var.ENGINE_TYPE engine_version = var.ENGINE_VERSION host_instance_type = var.MQ_INSTANCE_TYPE subnet_ids = var.SUBNET_IDS deployment_mode = "ACTIVE_STANDBY_MULTI_AZ" storage_type = "efs" security_groups = [var.MQ_SECURITY_GROUP_ID] apply_immediately = true auto_minor_version_upgrade = true encryption_options { kms_key_id = aws_kms_key.mq_key.arn use_aws_owned_key = false } user { username = "mqadmin" password = data.aws_secretsmanager_secret_version.mq-secret-version.secret_string console_access = true } logs { audit = true general = true } tags = { Industry = "GFS" Program = "AppRotation" Application = var.APP Component = var.COMPONENT Environment = var.ENV } } locals { MQCredentials = { username = "mqadmin" password = data.aws_secretsmanager_secret_version.mq-secret-version.secret_string endpoint = "failover:${aws_mq_broker.mq_broker.instances[0].endpoints[0]},${aws_mq_broker.mq_broker.instances[1].endpoints[0]}" arn = aws_mq_broker.mq_broker.arn id = aws_mq_broker.mq_broker.id } } module "secret-mq" { source = "../secret" NAME = "${var.APP}-${var.COMPONENT}-${var.AWS_REGION}-mq" VALUE = jsonencode(local.MQCredentials) AWS_BACKUP_REGION = var.AWS_BACKUP_REGION } resource "aws_lb_target_group" "mq-target-group-1" { name = "${var.APP == "trade-matching" ? "tm" : "sm"}-${var.COMPONENT == "in-gateway" ? "in" : "out"}-${var.AWS_REGION}-mq-1-tg" // name = "${var.APP_SHORT}-${var.COMPONENT_SHORT}-${var.AWS_REGION}-mq-1-tg" port = 61617 protocol = "TLS" target_type = "ip" vpc_id = var.VPC_ID health_check { port = 8162 protocol = "TCP" } } resource "aws_lb_target_group_attachment" "mq-target-group-1-attachment-active" { target_group_arn = aws_lb_target_group.mq-target-group-1.arn target_id = aws_mq_broker.mq_broker.instances[0].ip_address port = 61617 } resource "aws_lb_target_group_attachment" "mq-target-group-1-attachment-standby" { target_group_arn = aws_lb_target_group.mq-target-group-1.arn target_id = aws_mq_broker.mq_broker.instances[1].ip_address port = 61617 } resource "aws_lb_target_group" "mq-target-group-2" { name = "${var.APP == "trade-matching" ? "tm" : "sm"}-${var.COMPONENT == "in-gateway" ? "in" : "out"}-${var.AWS_REGION}-mq-2-tg" // name = "${var.APP_SHORT}-${var.COMPONENT_SHORT}-${var.AWS_REGION}-mq-2-tg" port = 61614 protocol = "TLS" target_type = "ip" vpc_id = var.VPC_ID health_check { port = 8162 protocol = "TCP" } } resource "aws_lb_target_group_attachment" "mq-target-group-2-attachment-active" { target_group_arn = aws_lb_target_group.mq-target-group-2.arn target_id = aws_mq_broker.mq_broker.instances[0].ip_address port = 61614 } resource "aws_lb_target_group_attachment" "mq-target-group-2-attachment-standby" { target_group_arn = aws_lb_target_group.mq-target-group-2.arn target_id = aws_mq_broker.mq_broker.instances[1].ip_address port = 61614 } //module "log-bucket" { // source = "../bucket" // // AWS_REGION = var.AWS_REGION // AWS_PRIMARY_REGION = var.AWS_REGION // AWS_SECONDARY_REGION = var.AWS_BACKUP_REGION // NAME = "${var.APP == "trade-matching" ? "tm" : "sm"}-${var.COMPONENT == "in-gateway" ? "in" : "out"}-${var.AWS_REGION}-mq-nlb-log-bucket" // SUFFIX = var.ENV //} data "aws_elb_service_account" "main" {} data "aws_caller_identity" "current" {} resource "aws_s3_bucket" "log_bucket" { bucket = "${var.APP_SHORT}-${var.COMPONENT_SHORT}-${var.AWS_REGION}-mq-nlb-log-bucket-${var.ENV}" acl = "private" force_destroy = true versioning { enabled = true } server_side_encryption_configuration { rule { apply_server_side_encryption_by_default { sse_algorithm = "aws:kms" } } } // logging { // target_bucket = "${var.APP == "trade-matching" ? "tm" : "sm"}-${var.COMPONENT == "in-gateway" ? "in" : "out"}-${var.AWS_REGION}-mq-nlb-log-bucket-${var.ENV}-log" // target_prefix = "log/${var.APP == "trade-matching" ? "tm" : "sm"}-${var.COMPONENT == "in-gateway" ? "in" : "out"}-${var.AWS_REGION}-mq-nlb-log-bucket-${var.ENV}" // } policy = <