@@ -70,7 +70,7 @@ const bridge = new CfnBridge(stack, 'Bridge', {
7070Same Configuration in an example L2:
7171
7272``` ts
73- const vpcInterface = mediaconnect .VpcInterface .create ({
73+ const vpcInterface = mediaconnect .VpcInterface .define ({
7474 vpcInterfaceName: ' my-vpc-interface' ,
7575 role: role ,
7676 securityGroups: [securityGroup ],
@@ -243,6 +243,7 @@ Property Interface for Flow:
243243FlowProps {
244244 /**
245245 * Flow Name
246+ * @default - auto-generated
246247 */
247248 flowName ?: string ;
248249
@@ -401,30 +402,116 @@ flow.grants.actions(fn, 'mediaconnect:UpdateFlow');
401402
402403##### Flow Source Types
403404
404- MediaConnect supports multiple source types for ingesting content into a flow:
405+ MediaConnect supports multiple source types for ingesting content into a flow. The examples below use ` NetworkConfiguration.publicNetwork() ` for simplicity, but all protocol-based sources can also use ` NetworkConfiguration.vpc() ` with a VPC interface for private connectivity.
405406
406- ###### SRT Listener Source
407+ ###### RTP
408+
409+ RTP (Real-time Transport Protocol) is a standard protocol for delivering audio and video over IP networks.
410+
411+ ``` ts
412+ new mediaconnect .Flow (stack , ' MyFlow' , {
413+ source: mediaconnect .SourceConfiguration .rtp ({
414+ flowSourceName: ' rtp-source' ,
415+ port: 5000 ,
416+ network: mediaconnect .NetworkConfiguration .publicNetwork (' 203.0.113.0/24' ),
417+ }),
418+ });
419+ ```
420+
421+ ###### RTP-FEC
422+
423+ RTP with Forward Error Correction adds redundancy to recover lost packets without retransmission. Use this when contributing via RTP and you need packet recovery.
424+
425+ ``` ts
426+ new mediaconnect .Flow (stack , ' MyFlow' , {
427+ source: mediaconnect .SourceConfiguration .rtpFec ({
428+ flowSourceName: ' rtp-fec-source' ,
429+ port: 5000 ,
430+ network: mediaconnect .NetworkConfiguration .publicNetwork (' 203.0.113.0/24' ),
431+ }),
432+ });
433+ ```
434+
435+ ###### SRT Listener
436+
437+ SRT (Secure Reliable Transport) in listener mode configures MediaConnect to listen on a specific port for incoming content. The upstream device connects to MediaConnect as a caller.
407438
408439``` ts
409440new mediaconnect .Flow (stack , ' MyFlow' , {
410441 source: mediaconnect .SourceConfiguration .srtListener ({
411- flowSourceName: ' live-encoder-source' ,
412- description: ' Live encoder feed' ,
442+ flowSourceName: ' srt-listener-source' ,
413443 port: 5000 ,
414444 minLatency: Duration .millis (2000 ),
415445 network: mediaconnect .NetworkConfiguration .publicNetwork (' 203.0.113.0/24' ),
416446 }),
417447});
418448```
419449
450+ ###### SRT Caller
451+
452+ SRT in caller mode configures MediaConnect to connect to a remote SRT listener. Use this when the source device is listening for incoming connections rather than pushing content.
453+
454+ ``` ts
455+ new mediaconnect .Flow (stack , ' MyFlow' , {
456+ source: mediaconnect .SourceConfiguration .srtCaller ({
457+ flowSourceName: ' srt-caller-source' ,
458+ sourceListenerAddress: ' 198.51.100.10' ,
459+ sourceListenerPort: 5000 ,
460+ minLatency: Duration .millis (2000 ),
461+ network: mediaconnect .NetworkConfiguration .publicNetwork (' 203.0.113.0/24' ),
462+ }),
463+ });
464+ ```
465+
466+ ###### RIST
467+
468+ RIST (Reliable Internet Stream Transport) provides reliable video transport with packet recovery.
469+
470+ ``` ts
471+ new mediaconnect .Flow (stack , ' MyFlow' , {
472+ source: mediaconnect .SourceConfiguration .rist ({
473+ flowSourceName: ' rist-source' ,
474+ port: 5000 ,
475+ maxLatency: Duration .millis (2000 ),
476+ network: mediaconnect .NetworkConfiguration .publicNetwork (' 203.0.113.0/24' ),
477+ }),
478+ });
479+ ```
480+
481+ ###### Zixi Push
482+
483+ Zixi Push uses the Zixi protocol for reliable video transport. Content is pushed to MediaConnect from a Zixi-compatible component upstream.
484+
485+ ``` ts
486+ new mediaconnect .Flow (stack , ' MyFlow' , {
487+ source: mediaconnect .SourceConfiguration .zixiPush ({
488+ flowSourceName: ' zixi-source' ,
489+ maxLatency: Duration .millis (2000 ),
490+ network: mediaconnect .NetworkConfiguration .publicNetwork (' 203.0.113.0/24' ),
491+ }),
492+ });
493+ ```
494+
495+ ###### Router Source
496+
497+ Use a router source when the flow's source comes from a MediaConnect Router rather than a direct connection.
498+
499+ ``` ts
500+ new mediaconnect .Flow (stack , ' MyFlow' , {
501+ source: mediaconnect .SourceConfiguration .router (),
502+ });
503+ ```
504+
420505###### VPC Source
421506
507+ Use a VPC-based source when you need a connection between a flow and your Amazon VPC.
508+
422509``` ts
423510declare const securityGroup: ec2 .ISecurityGroup ;
424511declare const subnet: ec2 .ISubnet ;
425512declare const role: iam .IRole ;
426513
427- const vpcInterface = mediaconnect .VpcInterface .create ({
514+ const vpcInterface = mediaconnect .VpcInterface .define ({
428515 vpcInterfaceName: ' my-vpc-interface' ,
429516 role: role ,
430517 securityGroups: [securityGroup ],
@@ -434,7 +521,6 @@ const vpcInterface = mediaconnect.VpcInterface.create({
434521new mediaconnect .Flow (stack , ' MyFlow' , {
435522 source: mediaconnect .SourceConfiguration .rist ({
436523 flowSourceName: ' vpc-source' ,
437- description: ' VPC-based source' ,
438524 port: 5000 ,
439525 maxLatency: Duration .millis (2000 ),
440526 network: mediaconnect .NetworkConfiguration .vpc (vpcInterface ),
@@ -443,10 +529,11 @@ new mediaconnect.Flow(stack, 'MyFlow', {
443529});
444530```
445531
446- ###### Entitled Source (From Another AWS Account)
532+ ###### Entitled Source
533+
534+ Entitlements allow you to subscribe to content from another AWS account.
447535
448536``` ts
449- // Import an entitlement from another AWS account
450537const entitlement = mediaconnect .FlowEntitlement .fromFlowEntitlementArn (
451538 stack , ' ImportedEntitlement' ,
452539 ' arn:aws:mediaconnect:us-west-2:111122223333:entitlement:1-11111111111111111111111111111111:MyEntitlement' ,
@@ -459,6 +546,32 @@ new mediaconnect.Flow(stack, 'MyFlow', {
459546});
460547```
461548
549+ ###### Gateway Bridge Source
550+
551+ Use a gateway bridge source when ingesting content from on-premises equipment through a MediaConnect gateway and bridge.
552+
553+ ``` ts
554+ declare const bridge: mediaconnect .IBridge ;
555+ declare const role: iam .IRole ;
556+ declare const securityGroup: ec2 .ISecurityGroup ;
557+ declare const subnet: ec2 .ISubnet ;
558+
559+ const vpcInterface = mediaconnect .VpcInterface .define ({
560+ vpcInterfaceName: ' bridge-interface' ,
561+ role: role ,
562+ securityGroups: [securityGroup ],
563+ subnet: subnet ,
564+ });
565+
566+ new mediaconnect .Flow (stack , ' MyFlow' , {
567+ source: mediaconnect .SourceConfiguration .gatewayBridge ({
568+ bridge: bridge ,
569+ vpcInterface: vpcInterface ,
570+ }),
571+ vpcInterfaces: [vpcInterface ],
572+ });
573+ ```
574+
462575#### AWS Elemental MediaConnect Flow Source
463576
464577A FlowSource (` AWS::MediaConnect::FlowSource ` ) is a standalone resource used to add secondary
@@ -534,14 +647,14 @@ For further information refer to [our documentation](https://docs.aws.amazon.com
534647
535648##### Creating VPC Interfaces
536649
537- VPC interfaces are created using the ` VpcInterface.create () ` factory method and can be reused across multiple flows and bridges:
650+ VPC interfaces are created using the ` VpcInterface.define () ` factory method and can be reused across multiple flows and bridges:
538651
539652``` ts
540653declare const role: iam .IRole ;
541654declare const securityGroup: ec2 .ISecurityGroup ;
542655declare const subnet: ec2 .ISubnet ;
543656
544- const vpcInterface = mediaconnect .VpcInterface .create ({
657+ const vpcInterface = mediaconnect .VpcInterface .define ({
545658 vpcInterfaceName: ' my-vpc-interface' ,
546659 role: role ,
547660 securityGroups: [securityGroup ],
@@ -559,7 +672,7 @@ declare const securityGroup: ec2.ISecurityGroup;
559672declare const subnet: ec2 .ISubnet ;
560673
561674// ENA (Elastic Network Adapter) - Standard performance
562- const enaInterface = mediaconnect .VpcInterface .create ({
675+ const enaInterface = mediaconnect .VpcInterface .define ({
563676 vpcInterfaceName: ' ena-interface' ,
564677 role: role ,
565678 securityGroups: [securityGroup ],
@@ -568,7 +681,7 @@ const enaInterface = mediaconnect.VpcInterface.create({
568681});
569682
570683// EFA (Elastic Fabric Adapter) - Required for CDI workflows
571- const efaInterface = mediaconnect .VpcInterface .create ({
684+ const efaInterface = mediaconnect .VpcInterface .define ({
572685 vpcInterfaceName: ' efa-interface' ,
573686 role: role ,
574687 securityGroups: [securityGroup ],
@@ -586,7 +699,7 @@ declare const role: iam.IRole;
586699declare const securityGroup: ec2 .ISecurityGroup ;
587700declare const subnet: ec2 .ISubnet ;
588701
589- const vpcInterface = mediaconnect .VpcInterface .create ({
702+ const vpcInterface = mediaconnect .VpcInterface .fromNetworkInterfaces ({
590703 vpcInterfaceName: ' existing-interface' ,
591704 role: role ,
592705 securityGroups: [securityGroup ],
@@ -595,11 +708,6 @@ const vpcInterface = mediaconnect.VpcInterface.create({
595708});
596709```
597710
598- ** Note:** You cannot specify both ` networkInterfaceType ` and
599- ` networkInterfaceIds ` . Use ` networkInterfaceType ` to let MediaConnect
600- create interfaces automatically, or ` networkInterfaceIds ` to use
601- existing interfaces.
602-
603711##### Using VPC Interfaces with Flows
604712
605713VPC interfaces enable flows to use VPC-based sources and outputs:
@@ -609,7 +717,7 @@ declare const role: iam.IRole;
609717declare const securityGroup: ec2 .ISecurityGroup ;
610718declare const subnet: ec2 .ISubnet ;
611719
612- const vpcInterface = mediaconnect .VpcInterface .create ({
720+ const vpcInterface = mediaconnect .VpcInterface .define ({
613721 vpcInterfaceName: ' flow-vpc-interface' ,
614722 role: role ,
615723 securityGroups: [securityGroup ],
@@ -651,10 +759,13 @@ new mediaconnect.Bridge(stack, 'EgressBridge', {
651759});
652760```
653761
654- Property Interface for VpcInterface:
762+ Property Interfaces for VpcInterface:
655763
656764``` ts
657- VpcInterfaceProps {
765+ /**
766+ * Props for VpcInterface.define() — creates new network interfaces
767+ */
768+ VpcInterfaceDefineProps {
658769 /**
659770 * Unique name for the VPC interface
660771 */
@@ -676,16 +787,40 @@ VpcInterfaceProps {
676787 subnet : ISubnet ;
677788
678789 /**
679- * Pre-created network interface IDs
680- * @default - MediaConnect creates network interfaces automatically
790+ * Network interface type (ENA or EFA)
791+ * @default NetworkInterface.ENA
681792 */
682- networkInterfaceIds ?: string [];
793+ networkInterfaceType ?: NetworkInterface ;
794+ }
683795
796+ /**
797+ * Props for VpcInterface.fromNetworkInterfaces() — uses existing ENIs
798+ */
799+ VpcInterfaceFromNetworkInterfacesProps {
684800 /**
685- * Network interface type (ENA or EFA)
686- * @default - Default network interface type
801+ * Unique name for the VPC interface
687802 */
688- networkInterfaceType ?: NetworkInterface ;
803+ name : string ;
804+
805+ /**
806+ * IAM role that MediaConnect assumes to create ENIs in your account
807+ */
808+ role : IRole ;
809+
810+ /**
811+ * Security groups to apply to the ENI
812+ */
813+ securityGroups : ISecurityGroup [];
814+
815+ /**
816+ * Subnet where the ENI will be created (must be in the same AZ as the flow)
817+ */
818+ subnet : ISubnet ;
819+
820+ /**
821+ * Pre-created network interface IDs
822+ */
823+ networkInterfaceIds : string [];
689824}
690825```
691826
@@ -802,6 +937,7 @@ Property Interface for Gateway:
802937GatewayProps {
803938 /**
804939 * Gateway Name
940+ * @default - auto-generated
805941 */
806942 gatewayName ?: string ;
807943
@@ -853,6 +989,7 @@ Property Interface for Bridge:
853989BridgeProps {
854990 /**
855991 * Bridge Name
992+ * @default - auto-generated
856993 */
857994 bridgeName ?: string ;
858995
0 commit comments