MulticastDomain

class MulticastDomain : KotlinCustomResource

Manages an EC2 Transit Gateway Multicast Domain.

Example Usage

package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.AwsFunctions;
import com.pulumi.aws.inputs.GetAvailabilityZonesArgs;
import com.pulumi.aws.ec2.Ec2Functions;
import com.pulumi.aws.ec2.inputs.GetAmiArgs;
import com.pulumi.aws.ec2.Vpc;
import com.pulumi.aws.ec2.VpcArgs;
import com.pulumi.aws.ec2.Subnet;
import com.pulumi.aws.ec2.SubnetArgs;
import com.pulumi.aws.ec2.Instance;
import com.pulumi.aws.ec2.InstanceArgs;
import com.pulumi.aws.ec2transitgateway.TransitGateway;
import com.pulumi.aws.ec2transitgateway.TransitGatewayArgs;
import com.pulumi.aws.ec2transitgateway.VpcAttachment;
import com.pulumi.aws.ec2transitgateway.VpcAttachmentArgs;
import com.pulumi.aws.ec2transitgateway.MulticastDomain;
import com.pulumi.aws.ec2transitgateway.MulticastDomainArgs;
import com.pulumi.aws.ec2transitgateway.MulticastDomainAssociation;
import com.pulumi.aws.ec2transitgateway.MulticastDomainAssociationArgs;
import com.pulumi.aws.ec2transitgateway.MulticastGroupSource;
import com.pulumi.aws.ec2transitgateway.MulticastGroupSourceArgs;
import com.pulumi.aws.ec2transitgateway.MulticastGroupMember;
import com.pulumi.aws.ec2transitgateway.MulticastGroupMemberArgs;
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) {
final var available = AwsFunctions.getAvailabilityZones(GetAvailabilityZonesArgs.builder()
.state("available")
.build());
final var amazonLinux = Ec2Functions.getAmi(GetAmiArgs.builder()
.mostRecent(true)
.owners("amazon")
.filters(
GetAmiFilterArgs.builder()
.name("name")
.values("amzn-ami-hvm-*-x86_64-gp2")
.build(),
GetAmiFilterArgs.builder()
.name("owner-alias")
.values("amazon")
.build())
.build());
var vpc1 = new Vpc("vpc1", VpcArgs.builder()
.cidrBlock("10.0.0.0/16")
.build());
var vpc2 = new Vpc("vpc2", VpcArgs.builder()
.cidrBlock("10.1.0.0/16")
.build());
var subnet1 = new Subnet("subnet1", SubnetArgs.builder()
.vpcId(vpc1.id())
.cidrBlock("10.0.1.0/24")
.availabilityZone(available.applyValue(getAvailabilityZonesResult -> getAvailabilityZonesResult.names()[0]))
.build());
var subnet2 = new Subnet("subnet2", SubnetArgs.builder()
.vpcId(vpc1.id())
.cidrBlock("10.0.2.0/24")
.availabilityZone(available.applyValue(getAvailabilityZonesResult -> getAvailabilityZonesResult.names()[1]))
.build());
var subnet3 = new Subnet("subnet3", SubnetArgs.builder()
.vpcId(vpc2.id())
.cidrBlock("10.1.1.0/24")
.availabilityZone(available.applyValue(getAvailabilityZonesResult -> getAvailabilityZonesResult.names()[0]))
.build());
var instance1 = new Instance("instance1", InstanceArgs.builder()
.ami(amazonLinux.applyValue(getAmiResult -> getAmiResult.id()))
.instanceType("t2.micro")
.subnetId(subnet1.id())
.build());
var instance2 = new Instance("instance2", InstanceArgs.builder()
.ami(amazonLinux.applyValue(getAmiResult -> getAmiResult.id()))
.instanceType("t2.micro")
.subnetId(subnet2.id())
.build());
var instance3 = new Instance("instance3", InstanceArgs.builder()
.ami(amazonLinux.applyValue(getAmiResult -> getAmiResult.id()))
.instanceType("t2.micro")
.subnetId(subnet3.id())
.build());
var tgw = new TransitGateway("tgw", TransitGatewayArgs.builder()
.multicastSupport("enable")
.build());
var attachment1 = new VpcAttachment("attachment1", VpcAttachmentArgs.builder()
.subnetIds(
subnet1.id(),
subnet2.id())
.transitGatewayId(tgw.id())
.vpcId(vpc1.id())
.build());
var attachment2 = new VpcAttachment("attachment2", VpcAttachmentArgs.builder()
.subnetIds(subnet3.id())
.transitGatewayId(tgw.id())
.vpcId(vpc2.id())
.build());
var domain = new MulticastDomain("domain", MulticastDomainArgs.builder()
.transitGatewayId(tgw.id())
.staticSourcesSupport("enable")
.tags(Map.of("Name", "Transit_Gateway_Multicast_Domain_Example"))
.build());
var association3 = new MulticastDomainAssociation("association3", MulticastDomainAssociationArgs.builder()
.subnetId(subnet3.id())
.transitGatewayAttachmentId(attachment2.id())
.transitGatewayMulticastDomainId(domain.id())
.build());
var source = new MulticastGroupSource("source", MulticastGroupSourceArgs.builder()
.groupIpAddress("224.0.0.1")
.networkInterfaceId(instance3.primaryNetworkInterfaceId())
.transitGatewayMulticastDomainId(association3.transitGatewayMulticastDomainId())
.build());
var association1 = new MulticastDomainAssociation("association1", MulticastDomainAssociationArgs.builder()
.subnetId(subnet1.id())
.transitGatewayAttachmentId(attachment1.id())
.transitGatewayMulticastDomainId(domain.id())
.build());
var association2 = new MulticastDomainAssociation("association2", MulticastDomainAssociationArgs.builder()
.subnetId(subnet2.id())
.transitGatewayAttachmentId(attachment2.id())
.transitGatewayMulticastDomainId(domain.id())
.build());
var member1 = new MulticastGroupMember("member1", MulticastGroupMemberArgs.builder()
.groupIpAddress("224.0.0.1")
.networkInterfaceId(instance1.primaryNetworkInterfaceId())
.transitGatewayMulticastDomainId(association1.transitGatewayMulticastDomainId())
.build());
var member2 = new MulticastGroupMember("member2", MulticastGroupMemberArgs.builder()
.groupIpAddress("224.0.0.1")
.networkInterfaceId(instance2.primaryNetworkInterfaceId())
.transitGatewayMulticastDomainId(association1.transitGatewayMulticastDomainId())
.build());
}
}

Import

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

$ pulumi import aws:ec2transitgateway/multicastDomain:MulticastDomain example tgw-mcast-domain-12345

Properties

Link copied to clipboard
val arn: Output<String>

EC2 Transit Gateway Multicast Domain Amazon Resource Name (ARN).

Link copied to clipboard

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.

Link copied to clipboard
val id: Output<String>
Link copied to clipboard
val igmpv2Support: Output<String>?

Whether to enable Internet Group Management Protocol (IGMP) version 2 for the EC2 Transit Gateway Multicast Domain. Valid values: disable, enable. Default value: disable.

Link copied to clipboard
val ownerId: Output<String>

Identifier of the AWS account that owns the EC2 Transit Gateway Multicast Domain.

Link copied to clipboard
val pulumiChildResources: Set<KotlinResource>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard

Whether to enable support for statically configuring multicast group sources for the EC2 Transit Gateway Multicast Domain. Valid values: disable, enable. Default value: disable.

Link copied to clipboard
val tags: Output<Map<String, String>>?

Key-value tags for the EC2 Transit Gateway Multicast Domain. If configured with a provider default_tags configuration block present, tags with matching keys will overwrite those defined at the provider-level.

Link copied to clipboard
val tagsAll: Output<Map<String, String>>

A map of tags assigned to the resource, including those inherited from the provider default_tags configuration block.

Link copied to clipboard

EC2 Transit Gateway identifier. The EC2 Transit Gateway must have multicast_support enabled.

Link copied to clipboard
val urn: Output<String>