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 havemulticastSupport
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 providerdefaultTags
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 providerdefaultTags
configuration block.
Timeouts
create
- (Default10M
)delete
- (Default10M
)
Import
awsEc2TransitGatewayMulticastDomain
can be imported by using the EC2 Transit Gateway Multicast Domain identifier, e.g.,