Skip to content

Resource: awsEc2TransitGatewayMulticastDomain

Manages an EC2 Transit Gateway Multicast Domain.

Example Usage

/*Provider bindings are generated by running cdktf get.
See https://cdk.tf/provider-generation for more details.*/
import * as aws from "./.gen/providers/aws";
const awsEc2TransitGatewayTgw = new aws.ec2TransitGateway.Ec2TransitGateway(
  this,
  "tgw",
  {
    multicastSupport: "enable",
  }
);
const awsEc2TransitGatewayMulticastDomainDomain =
  new aws.ec2TransitGatewayMulticastDomain.Ec2TransitGatewayMulticastDomain(
    this,
    "domain",
    {
      staticSourcesSupport: "enable",
      tags: {
        Name: "Transit_Gateway_Multicast_Domain_Example",
      },
      transitGatewayId: awsEc2TransitGatewayTgw.id,
    }
  );
const awsVpcVpc1 = new aws.vpc.Vpc(this, "vpc1", {
  cidrBlock: "10.0.0.0/16",
});
const awsVpcVpc2 = new aws.vpc.Vpc(this, "vpc2", {
  cidrBlock: "10.1.0.0/16",
});
const dataAwsAmiAmazonLinux = new aws.dataAwsAmi.DataAwsAmi(
  this,
  "amazon_linux",
  {
    filter: [
      {
        name: "name",
        values: ["amzn-ami-hvm-*-x86_64-gp2"],
      },
      {
        name: "owner-alias",
        values: ["amazon"],
      },
    ],
    mostRecent: true,
    owners: ["amazon"],
  }
);
const dataAwsAvailabilityZonesAvailable =
  new aws.dataAwsAvailabilityZones.DataAwsAvailabilityZones(this, "available", {
    state: "available",
  });
const awsSubnetSubnet1 = new aws.subnet.Subnet(this, "subnet1", {
  availabilityZone: `\${${dataAwsAvailabilityZonesAvailable.names.fqn}[0]}`,
  cidrBlock: "10.0.1.0/24",
  vpcId: awsVpcVpc1.id,
});
const awsSubnetSubnet2 = new aws.subnet.Subnet(this, "subnet2", {
  availabilityZone: `\${${dataAwsAvailabilityZonesAvailable.names.fqn}[1]}`,
  cidrBlock: "10.0.2.0/24",
  vpcId: awsVpcVpc1.id,
});
const awsSubnetSubnet3 = new aws.subnet.Subnet(this, "subnet3", {
  availabilityZone: `\${${dataAwsAvailabilityZonesAvailable.names.fqn}[0]}`,
  cidrBlock: "10.1.1.0/24",
  vpcId: awsVpcVpc2.id,
});
const awsEc2TransitGatewayVpcAttachmentAttachment1 =
  new aws.ec2TransitGatewayVpcAttachment.Ec2TransitGatewayVpcAttachment(
    this,
    "attachment1",
    {
      subnetIds: [awsSubnetSubnet1.id, awsSubnetSubnet2.id],
      transitGatewayId: awsEc2TransitGatewayTgw.id,
      vpcId: awsVpcVpc1.id,
    }
  );
const awsEc2TransitGatewayVpcAttachmentAttachment2 =
  new aws.ec2TransitGatewayVpcAttachment.Ec2TransitGatewayVpcAttachment(
    this,
    "attachment2",
    {
      subnetIds: [awsSubnetSubnet3.id],
      transitGatewayId: awsEc2TransitGatewayTgw.id,
      vpcId: awsVpcVpc2.id,
    }
  );
const awsInstanceInstance1 = new aws.instance.Instance(this, "instance1", {
  ami: dataAwsAmiAmazonLinux.id,
  instanceType: "t2.micro",
  subnetId: awsSubnetSubnet1.id,
});
const awsInstanceInstance2 = new aws.instance.Instance(this, "instance2", {
  ami: dataAwsAmiAmazonLinux.id,
  instanceType: "t2.micro",
  subnetId: awsSubnetSubnet2.id,
});
const awsInstanceInstance3 = new aws.instance.Instance(this, "instance3", {
  ami: dataAwsAmiAmazonLinux.id,
  instanceType: "t2.micro",
  subnetId: awsSubnetSubnet3.id,
});
const awsEc2TransitGatewayMulticastDomainAssociationAssociation1 =
  new aws.ec2TransitGatewayMulticastDomainAssociation.Ec2TransitGatewayMulticastDomainAssociation(
    this,
    "association1",
    {
      subnetId: awsSubnetSubnet1.id,
      transitGatewayAttachmentId:
        awsEc2TransitGatewayVpcAttachmentAttachment1.id,
      transitGatewayMulticastDomainId:
        awsEc2TransitGatewayMulticastDomainDomain.id,
    }
  );
new aws.ec2TransitGatewayMulticastDomainAssociation.Ec2TransitGatewayMulticastDomainAssociation(
  this,
  "association2",
  {
    subnetId: awsSubnetSubnet2.id,
    transitGatewayAttachmentId: awsEc2TransitGatewayVpcAttachmentAttachment2.id,
    transitGatewayMulticastDomainId:
      awsEc2TransitGatewayMulticastDomainDomain.id,
  }
);
const awsEc2TransitGatewayMulticastDomainAssociationAssociation3 =
  new aws.ec2TransitGatewayMulticastDomainAssociation.Ec2TransitGatewayMulticastDomainAssociation(
    this,
    "association3",
    {
      subnetId: awsSubnetSubnet3.id,
      transitGatewayAttachmentId:
        awsEc2TransitGatewayVpcAttachmentAttachment2.id,
      transitGatewayMulticastDomainId:
        awsEc2TransitGatewayMulticastDomainDomain.id,
    }
  );
new aws.ec2TransitGatewayMulticastGroupMember.Ec2TransitGatewayMulticastGroupMember(
  this,
  "member1",
  {
    groupIpAddress: "224.0.0.1",
    networkInterfaceId: awsInstanceInstance1.primaryNetworkInterfaceId,
    transitGatewayMulticastDomainId:
      awsEc2TransitGatewayMulticastDomainAssociationAssociation1.transitGatewayMulticastDomainId,
  }
);
new aws.ec2TransitGatewayMulticastGroupMember.Ec2TransitGatewayMulticastGroupMember(
  this,
  "member2",
  {
    groupIpAddress: "224.0.0.1",
    networkInterfaceId: awsInstanceInstance2.primaryNetworkInterfaceId,
    transitGatewayMulticastDomainId:
      awsEc2TransitGatewayMulticastDomainAssociationAssociation1.transitGatewayMulticastDomainId,
  }
);
new aws.ec2TransitGatewayMulticastGroupSource.Ec2TransitGatewayMulticastGroupSource(
  this,
  "source",
  {
    groupIpAddress: "224.0.0.1",
    networkInterfaceId: awsInstanceInstance3.primaryNetworkInterfaceId,
    transitGatewayMulticastDomainId:
      awsEc2TransitGatewayMulticastDomainAssociationAssociation3.transitGatewayMulticastDomainId,
  }
);

Argument Reference

The following arguments are supported:

  • transitGatewayId - (Required) EC2 Transit Gateway identifier. The EC2 Transit Gateway must have multicastSupport enabled.
  • autoAcceptSharedAssociations - (Optional) Whether to automatically accept cross-account subnet associations that are associated with the EC2 Transit Gateway Multicast Domain. Valid values: disable, enable. Default value: disable.
  • igmpv2Support - (Optional) Whether to enable Internet Group Management Protocol (IGMP) version 2 for the EC2 Transit Gateway Multicast Domain. Valid values: disable, enable. Default value: disable.
  • staticSourcesSupport - (Optional) Whether to enable support for statically configuring multicast group sources for the EC2 Transit Gateway Multicast Domain. Valid values: disable, enable. Default value: disable.
  • tags - (Optional) Key-value tags for the EC2 Transit Gateway Multicast Domain. If configured with a provider defaultTags configuration block present, tags with matching keys will overwrite those defined at the provider-level.

Attributes Reference

In addition to all arguments above, the following attributes are exported:

  • id - EC2 Transit Gateway Multicast Domain identifier.
  • arn - EC2 Transit Gateway Multicast Domain Amazon Resource Name (ARN).
  • ownerId - Identifier of the AWS account that owns the EC2 Transit Gateway Multicast Domain.
  • tagsAll - A map of tags assigned to the resource, including those inherited from the provider defaultTags configuration block.

Timeouts

Configuration options:

  • create - (Default 10M)
  • delete - (Default 10M)

Import

awsEc2TransitGatewayMulticastDomain can be imported by using the EC2 Transit Gateway Multicast Domain identifier, e.g.,

terraform import aws_ec2_transit_gateway_multicast_domain.example tgw-mcast-domain-12345