@aws-cdk/aws-mediaconnect-alpha 2.270.0-alpha.0 → 2.272.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.jsii CHANGED
@@ -8,7 +8,7 @@
8
8
  "url": "https://aws.amazon.com"
9
9
  },
10
10
  "dependencies": {
11
- "aws-cdk-lib": "^2.270.0",
11
+ "aws-cdk-lib": "^2.272.0",
12
12
  "constructs": "^10.5.0"
13
13
  },
14
14
  "dependencyClosure": {
@@ -1819,6 +1819,19 @@
1819
1819
  }
1820
1820
  }
1821
1821
  },
1822
+ "aws-cdk-lib.aws_eventsv2": {
1823
+ "targets": {
1824
+ "dotnet": {
1825
+ "namespace": "Amazon.CDK.AWS.EventsV2"
1826
+ },
1827
+ "java": {
1828
+ "package": "software.amazon.awscdk.services.eventsv2"
1829
+ },
1830
+ "python": {
1831
+ "module": "aws_cdk.aws_eventsv2"
1832
+ }
1833
+ }
1834
+ },
1822
1835
  "aws-cdk-lib.aws_evidently": {
1823
1836
  "targets": {
1824
1837
  "dotnet": {
@@ -2053,6 +2066,19 @@
2053
2066
  }
2054
2067
  }
2055
2068
  },
2069
+ "aws-cdk-lib.aws_healthagent": {
2070
+ "targets": {
2071
+ "dotnet": {
2072
+ "namespace": "Amazon.CDK.AWS.HealthAgent"
2073
+ },
2074
+ "java": {
2075
+ "package": "software.amazon.awscdk.services.healthagent"
2076
+ },
2077
+ "python": {
2078
+ "module": "aws_cdk.aws_healthagent"
2079
+ }
2080
+ }
2081
+ },
2056
2082
  "aws-cdk-lib.aws_healthimaging": {
2057
2083
  "targets": {
2058
2084
  "dotnet": {
@@ -2937,6 +2963,19 @@
2937
2963
  }
2938
2964
  }
2939
2965
  },
2966
+ "aws-cdk-lib.aws_networkmonitor": {
2967
+ "targets": {
2968
+ "dotnet": {
2969
+ "namespace": "Amazon.CDK.AWS.NetworkMonitor"
2970
+ },
2971
+ "java": {
2972
+ "package": "software.amazon.awscdk.services.networkmonitor"
2973
+ },
2974
+ "python": {
2975
+ "module": "aws_cdk.aws_networkmonitor"
2976
+ }
2977
+ }
2978
+ },
2940
2979
  "aws-cdk-lib.aws_nimblestudio": {
2941
2980
  "targets": {
2942
2981
  "dotnet": {
@@ -6412,6 +6451,22 @@
6412
6451
  }
6413
6452
  }
6414
6453
  },
6454
+ "aws-cdk-lib.interfaces.aws_eventsv2": {
6455
+ "targets": {
6456
+ "dotnet": {
6457
+ "namespace": "Amazon.CDK.Interfaces.EventsV2"
6458
+ },
6459
+ "go": {
6460
+ "packageName": "interfacesawseventsv2"
6461
+ },
6462
+ "java": {
6463
+ "package": "software.amazon.awscdk.interfaces.eventsv2"
6464
+ },
6465
+ "python": {
6466
+ "module": "aws_cdk.interfaces.aws_eventsv2"
6467
+ }
6468
+ }
6469
+ },
6415
6470
  "aws-cdk-lib.interfaces.aws_evidently": {
6416
6471
  "targets": {
6417
6472
  "dotnet": {
@@ -6684,6 +6739,22 @@
6684
6739
  }
6685
6740
  }
6686
6741
  },
6742
+ "aws-cdk-lib.interfaces.aws_healthagent": {
6743
+ "targets": {
6744
+ "dotnet": {
6745
+ "namespace": "Amazon.CDK.Interfaces.HealthAgent"
6746
+ },
6747
+ "go": {
6748
+ "packageName": "interfacesawshealthagent"
6749
+ },
6750
+ "java": {
6751
+ "package": "software.amazon.awscdk.interfaces.healthagent"
6752
+ },
6753
+ "python": {
6754
+ "module": "aws_cdk.interfaces.aws_healthagent"
6755
+ }
6756
+ }
6757
+ },
6687
6758
  "aws-cdk-lib.interfaces.aws_healthimaging": {
6688
6759
  "targets": {
6689
6760
  "dotnet": {
@@ -7708,6 +7779,22 @@
7708
7779
  }
7709
7780
  }
7710
7781
  },
7782
+ "aws-cdk-lib.interfaces.aws_networkmonitor": {
7783
+ "targets": {
7784
+ "dotnet": {
7785
+ "namespace": "Amazon.CDK.Interfaces.NetworkMonitor"
7786
+ },
7787
+ "go": {
7788
+ "packageName": "interfacesawsnetworkmonitor"
7789
+ },
7790
+ "java": {
7791
+ "package": "software.amazon.awscdk.interfaces.networkmonitor"
7792
+ },
7793
+ "python": {
7794
+ "module": "aws_cdk.interfaces.aws_networkmonitor"
7795
+ }
7796
+ }
7797
+ },
7711
7798
  "aws-cdk-lib.interfaces.aws_nimblestudio": {
7712
7799
  "targets": {
7713
7800
  "dotnet": {
@@ -8060,6 +8147,22 @@
8060
8147
  }
8061
8148
  }
8062
8149
  },
8150
+ "aws-cdk-lib.interfaces.aws_pi": {
8151
+ "targets": {
8152
+ "dotnet": {
8153
+ "namespace": "Amazon.CDK.Interfaces.PI"
8154
+ },
8155
+ "go": {
8156
+ "packageName": "interfacesawspi"
8157
+ },
8158
+ "java": {
8159
+ "package": "software.amazon.awscdk.interfaces.pi"
8160
+ },
8161
+ "python": {
8162
+ "module": "aws_cdk.interfaces.aws_pi"
8163
+ }
8164
+ }
8165
+ },
8063
8166
  "aws-cdk-lib.interfaces.aws_pinpoint": {
8064
8167
  "targets": {
8065
8168
  "dotnet": {
@@ -9613,7 +9716,7 @@
9613
9716
  },
9614
9717
  "name": "@aws-cdk/aws-mediaconnect-alpha",
9615
9718
  "readme": {
9616
- "markdown": "# AWS::MediaConnect Construct Library\n<!--BEGIN STABILITY BANNER-->\n\n---\n\n![cdk-constructs: Experimental](https://img.shields.io/badge/cdk--constructs-experimental-important.svg?style=for-the-badge)\n\n> The APIs of higher level constructs in this module are experimental and under active development.\n> They are subject to non-backward compatible changes or removal in any future version. These are\n> not subject to the [Semantic Versioning](https://semver.org/) model and breaking changes will be\n> announced in the release notes. This means that while you may use them, you may need to update\n> your source code when upgrading to a newer version of this package.\n\n---\n\n<!--END STABILITY BANNER-->\n\n\n## AWS Elemental MediaConnect\n\nAWS Elemental MediaConnect is a high-quality transport service for live video. It provides the reliability and security of satellite and fiber-optic combined with the flexibility, agility, and economics of IP-based networks. MediaConnect enables you to build mission-critical live video workflows in a fraction of the time and cost of satellite or fiber services.\n\nThis package contains constructs for working with AWS Elemental MediaConnect, allowing you to define Flows, Bridges, Gateways, Router Inputs, Router Outputs, and Router Network Interfaces for transporting live video streams.\n\nFor further information on AWS Elemental MediaConnect, see [the documentation](https://aws.amazon.com/mediaconnect/).\n\n## Table of Contents\n\n- [Router Resources](#router-resources)\n - [Router Network Interfaces](#router-network-interfaces)\n - [Router Inputs](#router-inputs)\n - [Router Outputs](#router-outputs)\n- [Flows](#flows)\n - [Creating a Flow](#creating-a-flow)\n - [Flow Sources](#flow-sources)\n - [VPC Interfaces](#vpc-interfaces)\n - [Media Streams](#media-streams)\n - [Flow Sizes](#flow-sizes)\n- [Gateways](#gateways)\n - [Creating a Gateway](#creating-a-gateway)\n - [Importing an Existing Gateway](#importing-an-existing-gateway)\n- [Bridges](#bridges)\n - [Creating a Bridge](#creating-a-bridge)\n - [Bridge Sources](#bridge-sources)\n - [Bridge Outputs](#bridge-outputs)\n- [Encryption](#encryption)\n- [CloudWatch Metrics](#cloudwatch-metrics)\n- [Public CIDR warnings](#public-cidr-warnings)\n\n## Router Resources\n\nMediaConnect routers provide high-performance, low-latency video routing capabilities for building complex live video workflows. Router resources include network interfaces, inputs, and outputs.\n\n### How Router Resources Relate\n\nRouter resources work together in a pipeline:\n\n- A **RouterNetworkInterface** defines the network connectivity (public internet or VPC). Required for standard protocol-based inputs and outputs, but not needed when connecting to MediaLive inputs or MediaConnect flows directly.\n- A **RouterInput** is the entry point — it receives video from a source via a protocol (RTP, SRT, RIST), or from a MediaConnect flow.\n- A **RouterOutput** is the exit point — it sends video to a destination via a protocol, to a MediaLive input, or to a MediaConnect flow.\n\nA typical camera-to-cloud workflow looks like:\n\n```text\nCamera → RouterNetworkInterface → RouterInput (SRT) → [Router] → RouterOutput (MediaLive) → MediaLive Channel\n```\n\nThe router sits in the middle, routing content from inputs to outputs. You can have many outputs per input — for example, one camera feed going to both a MediaLive channel and a MediaConnect flow simultaneously.\n\n### End-to-End Example: SRT Source to MediaLive\n\nHere's a complete example showing how to connect an SRT source through a router to MediaLive:\n\n```ts\ndeclare const stack: Stack;\ndeclare const mediaLiveInput: medialive.IInput;\n\n// 1. A public network interface for the SRT input\nconst networkInterface = new RouterNetworkInterface(stack, 'NetworkInterface', {\n routerNetworkInterfaceName: 'camera-network',\n configuration: RouterNetworkConfiguration.publicNetwork({\n cidr: ['203.0.113.0/24'],\n }),\n});\n\n// 2. A router input receiving SRT from an upstream encoder\nconst input = new RouterInput(stack, 'Input', {\n routerInputName: 'camera-input',\n maximumBitrate: Bitrate.mbps(10),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterInputTier.INPUT_20,\n configuration: RouterInputConfiguration.standard({\n networkInterface,\n protocol: RouterInputProtocol.srtListener({\n port: 9000,\n minimumLatency: Duration.millis(200),\n }),\n }),\n});\n\n// 3. A router output delivering to MediaLive\nconst output = new RouterOutput(stack, 'Output', {\n routerOutputName: 'medialive-output',\n maximumBitrate: Bitrate.mbps(10),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterOutputTier.OUTPUT_20,\n configuration: RouterOutputConfiguration.mediaLiveInput({\n input: mediaLiveInput,\n pipeline: MediaLivePipeline.PIPELINE_0,\n }),\n});\n```\n\nThis gives you a complete pipeline: the encoder pushes SRT to the network interface, the router receives it as an input, and the router output delivers it to MediaLive. For routing rules — including how bitrate affects which outputs can receive which inputs — see the [documentation](https://docs.aws.amazon.com/mediaconnect/latest/ug/using-router-control-panel.html).\n\n### Router Network Interfaces\n\nNetwork interfaces define the network connectivity for router inputs and outputs:\n\n#### Public Network Interface\n\n```ts\ndeclare const stack: Stack;\n\nconst publicInterface = new RouterNetworkInterface(stack, 'PublicInterface', {\n routerNetworkInterfaceName: 'public-interface',\n configuration: RouterNetworkConfiguration.publicNetwork({\n cidr: ['203.0.113.0/24'],\n }),\n});\n```\n\n#### Private Network Interface\n\n```ts\ndeclare const stack: Stack;\ndeclare const securityGroup: ec2.ISecurityGroup;\ndeclare const subnet: ec2.ISubnet;\n\nconst privateInterface = new RouterNetworkInterface(stack, 'PrivateInterface', {\n routerNetworkInterfaceName: 'private-interface',\n configuration: RouterNetworkConfiguration.vpc({\n securityGroups: [securityGroup],\n subnet: subnet,\n }),\n});\n```\n\n### Router Inputs\n\nRouter inputs receive live video streams from various sources and make them available for routing:\n\n#### Standard Input with RTP Protocol\n\n```ts\ndeclare const stack: Stack;\ndeclare const networkInterface: RouterNetworkInterface;\n\nconst input = new RouterInput(stack, 'RtpInput', {\n routerInputName: 'rtp-input',\n maximumBitrate: Bitrate.mbps(10),\n routingScope: RoutingScope.REGIONAL,\n // tier defaults to RouterInputTier.INPUT_20 (lowest cost)\n configuration: RouterInputConfiguration.standard({\n networkInterface: networkInterface,\n protocol: RouterInputProtocol.rtp({\n port: 5000,\n }),\n }),\n});\n```\n\n#### Failover Input Configuration\n\n```ts\ndeclare const stack: Stack;\ndeclare const networkInterface: RouterNetworkInterface;\n\nconst input = new RouterInput(stack, 'FailoverInput', {\n routerInputName: 'failover-input',\n maximumBitrate: Bitrate.mbps(10),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterInputTier.INPUT_50,\n configuration: RouterInputConfiguration.failover({\n networkInterface: networkInterface,\n protocols: [\n RouterInputProtocol.rist({\n port: 5000,\n recoveryLatency: Duration.millis(1000),\n }),\n RouterInputProtocol.rist({\n port: 5002, // Must not be consecutive with primary port\n recoveryLatency: Duration.millis(1000),\n }),\n ],\n sourcePriority: SourcePriorityConfig.primarySecondary(PrimarySource.FIRST_SOURCE),\n }),\n});\n```\n\n#### MediaLive Channel Input\n\nConnect a router input to a MediaLive channel. The `outputName` must match the name of an output configured in the channel's MediaConnect Router output group.\n\n```ts\ndeclare const stack: Stack;\ndeclare const mediaLiveChannel: medialive.IChannel;\n\nconst input = new RouterInput(stack, 'ChannelInput', {\n routerInputName: 'channel-input',\n maximumBitrate: Bitrate.mbps(20),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterInputTier.INPUT_50,\n configuration: RouterInputConfiguration.mediaLiveChannel({\n channel: mediaLiveChannel,\n outputName: 'router-ts',\n pipeline: MediaLivePipeline.PIPELINE_0,\n }),\n});\n```\n\n> **Tip:** For full examples of wiring a MediaLive channel to a MediaConnect Router (including\n> transit encryption), see the [MediaLive L2 README — MediaConnect Router section](./../aws-medialive-alpha/README.md#aws-elemental-mediaconnect-router).\n\n```ts\ndeclare const stack: Stack;\ndeclare const mediaLiveChannel: medialive.IChannel;\ndeclare const transitSecret: Secret; // must hold the same value as the channel's MediaConnectRouterSettings.shared() secret\n\nconst input = new RouterInput(stack, 'ChannelInput', {\n routerInputName: 'channel-input',\n maximumBitrate: Bitrate.mbps(20),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterInputTier.INPUT_50,\n configuration: RouterInputConfiguration.mediaLiveChannel({\n channel: mediaLiveChannel,\n outputName: 'router-ts',\n pipeline: MediaLivePipeline.PIPELINE_0,\n sourceTransitDecryption: { secret: transitSecret },\n }),\n});\n```\n\nOr prepare a router input for a MediaLive connection without specifying the channel (requires explicit availability zone):\n\n```ts\ndeclare const stack: Stack;\n\nconst input = new RouterInput(stack, 'ChannelInputNoConnection', {\n routerInputName: 'channel-input-no-connection',\n maximumBitrate: Bitrate.mbps(20),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterInputTier.INPUT_50,\n configuration: RouterInputConfiguration.mediaLiveChannelWithoutConnection({\n availabilityZone: 'us-east-1a',\n }),\n});\n```\n\n#### MediaConnect Flow Input\n\nConnect a router input to an existing MediaConnect flow:\n\n```ts\ndeclare const stack: Stack;\ndeclare const flow: Flow;\ndeclare const flowOutput: FlowOutput;\n\nconst input = new RouterInput(stack, 'FlowInput', {\n routerInputName: 'flow-input',\n maximumBitrate: Bitrate.mbps(20),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterInputTier.INPUT_50,\n configuration: RouterInputConfiguration.mediaConnectFlow({\n flow: flow,\n flowOutput: flowOutput,\n }),\n});\n```\n\nOr prepare a router input for a flow connection without specifying the flow (requires explicit availability zone):\n\n```ts\ndeclare const stack: Stack;\n\nconst input = new RouterInput(stack, 'FlowInputNoConnection', {\n routerInputName: 'flow-input-no-connection',\n maximumBitrate: Bitrate.mbps(20),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterInputTier.INPUT_50,\n configuration: RouterInputConfiguration.mediaConnectFlowWithoutConnection({\n availabilityZone: 'us-east-1a',\n }),\n});\n```\n\n### Router Outputs\n\nRouter outputs send video streams to various destinations including standard protocols, MediaLive inputs, and MediaConnect flows:\n\n#### Standard Output with SRT Protocol\n\n```ts\ndeclare const stack: Stack;\ndeclare const networkInterface: RouterNetworkInterface;\n\nconst output = new RouterOutput(stack, 'SrtOutput', {\n routerOutputName: 'srt-output',\n maximumBitrate: Bitrate.mbps(10),\n routingScope: RoutingScope.REGIONAL,\n // tier defaults to RouterOutputTier.OUTPUT_20 (lowest cost)\n configuration: RouterOutputConfiguration.standard({\n protocol: RouterOutputProtocol.srtListener({\n port: 9001,\n minimumLatency: Duration.millis(200),\n }),\n networkInterface: networkInterface,\n }),\n});\n```\n\n> **Note:** The `tier` property defaults to the lowest (and cheapest) tier: `INPUT_20` for Router Inputs and `OUTPUT_20` for Router Outputs. The construct validates that `maximumBitrate` does not exceed the tier's capacity (20, 50, or 100 Mbps) at synth time. Per the [documentation](https://docs.aws.amazon.com/mediaconnect/latest/ug/using-router-control-panel.html), if an input is 20 Mbps you can't route it to an output set up for less than 20 Mbps.\n\n#### MediaLive Output\n\nConnect a router output to a MediaLive input (the input must be a MediaConnect Router type):\n\n```ts\ndeclare const stack: Stack;\ndeclare const mediaLiveInput: medialive.IInput;\n\nconst output = new RouterOutput(stack, 'MediaLiveOutput', {\n routerOutputName: 'medialive-output',\n maximumBitrate: Bitrate.mbps(15),\n routingScope: RoutingScope.GLOBAL,\n tier: RouterOutputTier.OUTPUT_50,\n configuration: RouterOutputConfiguration.mediaLiveInput({\n input: mediaLiveInput,\n pipeline: MediaLivePipeline.PIPELINE_0,\n }),\n});\n```\n\nOr prepare a router output for a MediaLive connection without specifying the input (requires explicit availability zone):\n\n```ts\ndeclare const stack: Stack;\n\nconst output = new RouterOutput(stack, 'MediaLiveOutputNoConnection', {\n routerOutputName: 'medialive-output-no-connection',\n maximumBitrate: Bitrate.mbps(15),\n routingScope: RoutingScope.GLOBAL,\n tier: RouterOutputTier.OUTPUT_50,\n configuration: RouterOutputConfiguration.mediaLiveInputWithoutConnection({\n availabilityZone: 'us-east-1a',\n }),\n});\n```\n\n#### MediaConnect Flow Output\n\nConnect a router output to an existing MediaConnect flow:\n\n```ts\ndeclare const stack: Stack;\ndeclare const flow: Flow;\n\nconst output = new RouterOutput(stack, 'FlowOutput', {\n routerOutputName: 'flow-output',\n maximumBitrate: Bitrate.mbps(20),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterOutputTier.OUTPUT_100,\n configuration: RouterOutputConfiguration.mediaConnectFlow({\n flow: flow,\n }),\n});\n```\n\nOr prepare a router output for a flow connection without specifying the flow (requires explicit availability zone):\n\n```ts\ndeclare const stack: Stack;\n\nconst output = new RouterOutput(stack, 'FlowOutputNoConnection', {\n routerOutputName: 'flow-output-no-connection',\n maximumBitrate: Bitrate.mbps(20),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterOutputTier.OUTPUT_100,\n configuration: RouterOutputConfiguration.mediaConnectFlowWithoutConnection({\n availabilityZone: 'us-east-1a',\n }),\n});\n```\n\n#### Output with Encryption\n\n```ts\ndeclare const stack: Stack;\ndeclare const networkInterface: RouterNetworkInterface;\ndeclare const role: iam.IRole;\ndeclare const secret: secretsmanager.ISecret;\n\nconst output = new RouterOutput(stack, 'EncryptedOutput', {\n routerOutputName: 'encrypted-output',\n maximumBitrate: Bitrate.mbps(10),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterOutputTier.OUTPUT_50,\n configuration: RouterOutputConfiguration.standard({\n protocol: RouterOutputProtocol.srtCaller({\n destinationAddress: '203.0.113.100',\n destinationPort: 9001,\n minimumLatency: Duration.millis(200),\n encryptionConfiguration: { role, secret },\n }),\n networkInterface: networkInterface,\n }),\n});\n```\n\n## Flows\n\nA MediaConnect flow represents a transport stream connection between a source and one or more outputs. Flows are the primary resource for transporting live video content.\n\n### Creating a Flow\n\nThe following example creates a basic MediaConnect flow with an RTP source:\n\n```ts\ndeclare const stack: Stack;\n\nconst flow = new Flow(stack, 'MyFlow', {\n flowName: 'my-live-stream',\n source: SourceConfiguration.rtp({\n flowSourceName: 'my-source',\n port: 5000,\n network: NetworkConfiguration.publicNetwork('203.0.113.0/24'),\n }),\n});\n```\n\n### Flow Sources\n\nMediaConnect 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.\n\n#### SRT Listener Source\n\nSRT (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.\n\n```ts\ndeclare const stack: Stack;\n\nconst flow = new Flow(stack, 'MyFlow', {\n source: SourceConfiguration.srtListener({\n flowSourceName: 'live-encoder-source',\n description: 'Live encoder feed',\n port: 5000,\n minLatency: Duration.millis(2000),\n network: NetworkConfiguration.publicNetwork('203.0.113.0/24'),\n }),\n});\n```\n\n#### SRT Caller Source\n\nSRT 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.\n\n```ts\ndeclare const stack: Stack;\n\nconst flow = new Flow(stack, 'MyFlow', {\n source: SourceConfiguration.srtCaller({\n flowSourceName: 'remote-source',\n sourceListenerAddress: '203.0.113.50',\n sourceListenerPort: 5000,\n minLatency: Duration.millis(200),\n }),\n});\n```\n\n#### RTP Source\n\nRTP (Real-time Transport Protocol) is a standard protocol for delivering audio and video over IP networks.\n\n```ts\ndeclare const stack: Stack;\n\nconst flow = new Flow(stack, 'MyFlow', {\n source: SourceConfiguration.rtp({\n flowSourceName: 'rtp-source',\n port: 5000,\n network: NetworkConfiguration.publicNetwork('203.0.113.0/24'),\n }),\n});\n```\n\n#### RTP-FEC Source\n\nRTP with Forward Error Correction adds redundancy to recover lost packets without retransmission. Use this when contributing via RTP and you need packet recovery.\n\n```ts\ndeclare const stack: Stack;\n\nconst flow = new Flow(stack, 'MyFlow', {\n source: SourceConfiguration.rtpFec({\n flowSourceName: 'rtp-fec-source',\n port: 5000,\n network: NetworkConfiguration.publicNetwork('203.0.113.0/24'),\n }),\n});\n```\n\n#### RIST Source\n\nRIST (Reliable Internet Stream Transport) provides reliable video transport with packet recovery.\n\n```ts\ndeclare const stack: Stack;\n\nconst flow = new Flow(stack, 'MyFlow', {\n source: SourceConfiguration.rist({\n flowSourceName: 'rist-source',\n port: 5000,\n maxLatency: Duration.millis(2000),\n network: NetworkConfiguration.publicNetwork('203.0.113.0/24'),\n }),\n});\n```\n\n#### Zixi Push Source\n\nZixi Push uses the Zixi protocol for reliable video transport. Content is pushed to MediaConnect from a Zixi-compatible component upstream.\n\n```ts\ndeclare const stack: Stack;\n\nconst flow = new Flow(stack, 'MyFlow', {\n source: SourceConfiguration.zixiPush({\n flowSourceName: 'zixi-source',\n maxLatency: Duration.millis(2000),\n network: NetworkConfiguration.publicNetwork('203.0.113.0/24'),\n }),\n});\n```\n\n> Zixi Push ports are assigned by MediaConnect: 2088 for public sources, 2090-2099 for VPC sources. See [Source port assignments](https://docs.aws.amazon.com/mediaconnect/latest/ug/source-ports.html).\n\n#### Router Source\n\nUse a router source when the flow's source comes from a MediaConnect Router rather than a direct connection.\n\n```ts\ndeclare const stack: Stack;\n\nconst flow = new Flow(stack, 'MyFlow', {\n source: SourceConfiguration.router(),\n});\n```\n\n#### VPC Source\n\nUse a VPC-based source when you need a connection between a flow and your Amazon VPC. This enables private connectivity for receiving content from on-premises equipment via AWS Direct Connect or VPN, or from other AWS services running in your VPC.\n\n```ts\ndeclare const stack: Stack;\ndeclare const securityGroup: ec2.ISecurityGroup;\ndeclare const subnet: ec2.ISubnet;\ndeclare const role: iam.IRole;\n\nconst vpcInterface = VpcInterface.define({\n vpcInterfaceName: 'my-vpc-interface',\n role: role,\n securityGroups: [securityGroup],\n subnet: subnet,\n});\n\nconst flow = new Flow(stack, 'MyFlow', {\n source: SourceConfiguration.rist({\n flowSourceName: 'vpc-source',\n description: 'VPC-based source',\n port: 5000,\n maxLatency: Duration.millis(2000),\n network: NetworkConfiguration.vpc(vpcInterface),\n }),\n vpcInterfaces: [vpcInterface],\n});\n```\n\n#### Entitled Source (From Another AWS Account)\n\nEntitlements allow you to subscribe to content from another AWS account. The entitlement is created by the content originator in their AWS account, and you import it using the entitlement ARN they provide.\n\n```ts\ndeclare const stack: Stack;\n\n// Import an entitlement from another AWS account\nconst entitlement = FlowEntitlement.fromFlowEntitlementArn(stack, 'ImportedEntitlement',\n 'arn:aws:mediaconnect:us-west-2:111122223333:entitlement:1-11111111111111111111111111111111:MyEntitlement',\n);\n\nconst flow = new Flow(stack, 'MyFlow', {\n source: SourceConfiguration.entitlement({\n entitlement: entitlement,\n }),\n});\n```\n\n#### Gateway Bridge Source\n\nUse a gateway bridge source when ingesting content from on-premises equipment through a MediaConnect gateway and bridge. Gateways define the network infrastructure that bridges use to transport video between on-premises and cloud environments.\n\n```ts\ndeclare const stack: Stack;\ndeclare const bridge: Bridge;\ndeclare const role: iam.IRole;\ndeclare const securityGroup: ec2.ISecurityGroup;\ndeclare const subnet: ec2.ISubnet;\n\nconst vpcInterface = VpcInterface.define({\n vpcInterfaceName: 'bridge-interface',\n role: role,\n securityGroups: [securityGroup],\n subnet: subnet,\n});\n\nconst flow = new Flow(stack, 'MyFlow', {\n source: SourceConfiguration.gatewayBridge({\n bridge: bridge,\n vpcInterface: vpcInterface,\n }),\n vpcInterfaces: [vpcInterface],\n});\n```\n\n### VPC Interfaces\n\nVPC interfaces allow MediaConnect to send or receive content within your VPC. Create VPC interfaces using `VpcInterface.define()` and add them to the flow's `vpcInterfaces` array. The same interface can then be referenced in sources and outputs:\n\n```ts\ndeclare const stack: Stack;\ndeclare const role: iam.IRole;\ndeclare const securityGroup: ec2.ISecurityGroup;\ndeclare const subnet: ec2.ISubnet;\n\n// Create VPC interface\nconst vpcInterface = VpcInterface.define({\n vpcInterfaceName: 'my-vpc-interface',\n role: role,\n securityGroups: [securityGroup],\n subnet: subnet,\n networkInterfaceType: NetworkInterface.ENA,\n});\n\n// Add to flow and reference in source\nconst flow = new Flow(stack, 'MyFlow', {\n vpcInterfaces: [vpcInterface], // Declare at flow level\n source: SourceConfiguration.rist({\n flowSourceName: 'vpc-source',\n port: 5000,\n maxLatency: Duration.millis(2000),\n network: NetworkConfiguration.vpc(vpcInterface), // Reference in source\n }),\n});\n```\n\n#### CDI and JPEG XS with EFA Interfaces\n\nFor high-performance CDI or JPEG XS workflows, use EFA (Elastic Fabric Adapter) interfaces. Note that flows can have a maximum of 1 EFA interface:\n\n```ts\ndeclare const stack: Stack;\ndeclare const role: iam.IRole;\ndeclare const securityGroup: ec2.ISecurityGroup;\ndeclare const subnet: ec2.ISubnet;\n\nconst efaInterface = VpcInterface.define({\n vpcInterfaceName: 'efa-interface',\n role: role,\n securityGroups: [securityGroup],\n subnet: subnet,\n networkInterfaceType: NetworkInterface.EFA, // Required for CDI\n});\n\nconst videoStream = MediaStream.video({\n mediaStreamId: 1,\n mediaStreamName: 'video',\n videoFormat: MediaVideoFormat.HD_1080P,\n fmtp: {\n exactFramerate: Framerate.FPS_29_97,\n par: PixelAspectRatio.SQUARE,\n },\n});\n\nconst flow = new Flow(stack, 'MyCdiFlow', {\n flowSize: FlowSize.LARGE_4X, // Required for CDI and JPEG XS\n vpcInterfaces: [efaInterface],\n mediaStreams: [videoStream],\n source: SourceConfiguration.cdi({\n flowSourceName: 'cdi-source',\n vpcInterface: efaInterface,\n port: 5000,\n maxSyncBuffer: 100,\n mediaStreamSourceConfigurations: [{\n encoding: Encoding.RAW,\n mediaStream: videoStream,\n }],\n }),\n});\n```\n\n#### JPEG XS with Redundant Interfaces\n\nJPEG XS requires exactly 2 input interfaces per media stream for redundancy. Typically one EFA and one ENA interface:\n\n```ts\ndeclare const stack: Stack;\ndeclare const role: iam.IRole;\ndeclare const sg1: ec2.ISecurityGroup;\ndeclare const sg2: ec2.ISecurityGroup;\ndeclare const subnet: ec2.ISubnet;\n\nconst efaInterface = VpcInterface.define({\n vpcInterfaceName: 'efa-interface',\n role: role,\n securityGroups: [sg1],\n subnet: subnet,\n networkInterfaceType: NetworkInterface.EFA,\n});\n\nconst enaInterface = VpcInterface.define({\n vpcInterfaceName: 'ena-interface',\n role: role,\n securityGroups: [sg2],\n subnet: subnet,\n networkInterfaceType: NetworkInterface.ENA,\n});\n\nconst videoStream = MediaStream.video({\n mediaStreamId: 1,\n mediaStreamName: 'video',\n videoFormat: MediaVideoFormat.UHD_2160P,\n fmtp: {\n exactFramerate: Framerate.FPS_59_94,\n par: PixelAspectRatio.SQUARE,\n colorimetry: Colorimetry.BT2020,\n videoRange: VideoRange.FULL,\n scanMode: ScanMode.PROGRESSIVE,\n tcs: Tcs.PQ,\n },\n});\n\nconst flow = new Flow(stack, 'MyJpegXsFlow', {\n flowSize: FlowSize.LARGE_4X, // Required for JPEG XS\n vpcInterfaces: [efaInterface, enaInterface],\n mediaStreams: [videoStream],\n source: SourceConfiguration.jpegXs({\n flowSourceName: 'jpegxs-source',\n maxSyncBuffer: 100,\n mediaStreamSourceConfigurations: [{\n encoding: Encoding.JXSV,\n port: 5000,\n inputInterface: [efaInterface, enaInterface], // 2 interfaces for redundancy\n mediaStream: videoStream,\n }],\n }),\n});\n```\n\n### Media Streams\n\nMedia streams represent individual components of your content (video, audio, ancillary data) for ST 2110 JPEG XS or CDI workflows. Create media streams using the static factory methods and add them to the flow's `mediaStreams` array:\n\n```ts\ndeclare const stack: Stack;\n\n// Create media streams\nconst videoStream = MediaStream.video({\n mediaStreamId: 1,\n mediaStreamName: 'video-stream',\n videoFormat: MediaVideoFormat.HD_1080P,\n fmtp: {\n colorimetry: Colorimetry.BT709,\n exactFramerate: Framerate.FPS_29_97,\n par: PixelAspectRatio.SQUARE,\n videoRange: VideoRange.NARROW,\n scanMode: ScanMode.PROGRESSIVE,\n tcs: Tcs.SDR,\n },\n});\n\nconst audioStream = MediaStream.audio({\n mediaStreamId: 2,\n mediaStreamName: 'audio-stream',\n channelOrder: AudioStreamOrderOptions.STANDARD_STEREO,\n});\n\n// Add to flow\nconst flow = new Flow(stack, 'MyFlow', {\n source: SourceConfiguration.router(),\n mediaStreams: [videoStream, audioStream], // Declare at flow level\n});\n```\n\n#### Audio Channel Order\n\nFor audio media streams, use the `AudioStreamOrderOptions` enum to specify the SMPTE 2110-30 channel order:\n\n```ts\n// Available channel order options\nAudioStreamOrderOptions.MONO // SMPTE2110.(M)\nAudioStreamOrderOptions.DUAL_MONO // SMPTE2110.(DM)\nAudioStreamOrderOptions.STANDARD_STEREO // SMPTE2110.(ST)\nAudioStreamOrderOptions.LTRT_MATRIX_STEREO // SMPTE2110.(LtRt)\nAudioStreamOrderOptions.SURROUND_5_1 // SMPTE2110.(51)\nAudioStreamOrderOptions.SURROUND_7_1 // SMPTE2110.(71)\nAudioStreamOrderOptions.SURROUND_22_2 // SMPTE2110.(222)\nAudioStreamOrderOptions.ONE_SDI_AUDIO_GROUP // SMPTE2110.(SGRP)\n\n// Example with 5.1 surround\nconst surroundAudio = MediaStream.audio({\n mediaStreamId: 3,\n mediaStreamName: 'surround-audio',\n channelOrder: AudioStreamOrderOptions.SURROUND_5_1,\n});\n```\n\nMedia streams can be referenced in source configurations (for CDI and JPEG XS) and output configurations.\n\n### Flow Sizes\n\nMediaConnect offers three flow sizes that determine feature support:\n\n| Flow Size | Transport Streams | NDI | CDI / JPEG XS |\n|-----------|------------------|-----|---------------|\n| `MEDIUM` (default) | ✅ | ❌ | ❌ |\n| `LARGE` | ✅ | ✅ | ❌ |\n| `LARGE_4X` | ❌ | ❌ | ✅ |\n\nThis table maps each `FlowSize` to the capabilities the construct validates. For output counts, throughput limits, and other per-size details, see [Flow sizes and capabilities](https://docs.aws.amazon.com/mediaconnect/latest/ug/flow-sizes-capabilities.html).\n\nThe construct validates flow size constraints at synthesis time based on the source protocol and NDI configuration:\n\n- `MEDIUM` supports transport stream protocols (RTP, SRT, RIST, etc.) but not NDI or CDI\n- `LARGE` supports transport streams and NDI, and is required when NDI is enabled\n- `LARGE_4X` is required for CDI and JPEG XS protocols, and does not support transport streams or NDI\n\nThese are mutually exclusive — CDI/JPEG XS and NDI cannot coexist on the same flow because they require different flow sizes.\n\n```ts\ndeclare const stack: Stack;\ndeclare const ndiVpcInterface: VpcInterfaceConfig;\ndeclare const efaInterface: VpcInterfaceConfig;\ndeclare const videoStream: MediaStream;\n\n// NDI requires LARGE, an encoding profile, and at least one discovery server\nnew Flow(stack, 'NdiFlow', {\n flowSize: FlowSize.LARGE,\n ndiConfig: {\n ndiState: State.ENABLED,\n ndiDiscoveryServers: [{\n discoveryServerAddress: '10.0.0.10',\n vpcInterface: ndiVpcInterface,\n }],\n },\n encodingConfig: {\n encodingProfile: EncodingProfile.CONTRIBUTION_H264_DEFAULT,\n },\n source: SourceConfiguration.ndi({\n flowSourceName: 'ndi-source',\n }),\n});\n\n// CDI and JPEG XS require LARGE_4X\nnew Flow(stack, 'CdiFlow', {\n flowSize: FlowSize.LARGE_4X,\n vpcInterfaces: [efaInterface],\n mediaStreams: [videoStream],\n source: SourceConfiguration.cdi({\n flowSourceName: 'cdi-source',\n vpcInterface: efaInterface,\n port: 5000,\n maxSyncBuffer: 100,\n mediaStreamSourceConfigurations: [{\n encoding: Encoding.RAW,\n mediaStream: videoStream,\n }],\n }),\n});\n```\n\nFor more information, see [Flow sizes and capabilities](https://docs.aws.amazon.com/mediaconnect/latest/ug/flow-sizes-capabilities.html).\n\n## Gateways\n\nMediaConnect Gateways enable the deployment of on-premises resources for transporting live video to and from the AWS Cloud. Gateways are required for creating bridges.\n\n### Creating a Gateway\n\n```ts\ndeclare const stack: Stack;\n\nconst productionNetwork = GatewayNetwork.define({\n cidrBlock: '192.168.1.0/24',\n name: 'production-network',\n});\n\nconst gateway = new Gateway(stack, 'MyGateway', {\n gatewayName: 'my-gateway',\n egressCidrBlocks: ['10.0.0.0/16'],\n networks: [productionNetwork],\n});\n```\n\n### Importing an Existing Gateway\n\n```ts\ndeclare const stack: Stack;\n\nconst gateway = Gateway.fromGatewayArn(stack, 'ImportedGateway',\n 'arn:aws:mediaconnect:us-west-2:123456789012:gateway:1-XXXXXX',\n);\n```\n\n## Bridges\n\nMediaConnect bridges enable you to interconnect on-premises equipment with cloud-based workflows. Bridges support both ingress (on-premises to cloud) and egress (cloud to on-premises) scenarios.\n\n### Creating a Bridge\n\n#### Ingress Bridge (On-premises to Cloud)\n\nAn ingress bridge receives content from on-premises equipment and makes it available in the cloud:\n\n```ts\ndeclare const stack: Stack;\n\nconst productionNetwork = GatewayNetwork.define({\n cidrBlock: '192.168.1.0/24',\n name: 'production-network',\n});\n\nconst gateway = new Gateway(stack, 'MyGateway', {\n gatewayName: 'my-gateway',\n egressCidrBlocks: ['10.0.0.0/16'],\n networks: [productionNetwork],\n});\n\nconst ingressBridge = new Bridge(stack, 'MyIngressBridge', {\n bridgeName: 'my-ingress-bridge',\n config: BridgeConfiguration.ingress({\n maxBitrate: Bitrate.mbps(10),\n maxOutputs: 2,\n networkSources: [{\n name: 'on-prem-source',\n source: {\n protocol: BridgeProtocol.RTP,\n network: productionNetwork,\n multicastIp: '239.1.1.1',\n port: 5000,\n },\n }],\n }),\n gateway: gateway,\n});\n```\n\n#### Egress Bridge (Cloud to On-premises)\n\nAn egress bridge sends content from MediaConnect flows to on-premises equipment:\n\n```ts\ndeclare const stack: Stack;\ndeclare const gateway: Gateway;\ndeclare const flow: Flow;\ndeclare const vpcInterface: VpcInterfaceConfig;\ndeclare const productionNetwork: GatewayNetwork;\n\nconst egressBridge = new Bridge(stack, 'MyEgressBridge', {\n bridgeName: 'my-egress-bridge',\n config: BridgeConfiguration.egress({\n maxBitrate: Bitrate.mbps(10),\n flowSources: [{\n name: 'cloud-source',\n source: {\n flow: flow,\n vpcInterface: vpcInterface,\n },\n }],\n networkOutputs: [{\n name: 'on-prem-output',\n output: BridgeOutputConfiguration.network({\n ipAddress: '192.168.1.200',\n port: 5001,\n network: productionNetwork,\n protocol: BridgeProtocol.RTP,\n ttl: 50,\n }),\n }],\n }),\n gateway: gateway,\n});\n```\n\n### Bridge Sources\n\nFor failover scenarios, you can add additional sources to an existing bridge using the `BridgeSource` construct:\n\n```ts\ndeclare const stack: Stack;\ndeclare const bridge: Bridge;\ndeclare const flow: Flow;\n\n// Add a flow source to an egress bridge (requires failover to be enabled)\nconst additionalSource = new BridgeSource(stack, 'AdditionalSource', {\n bridgeSourceName: 'backup-source',\n bridge: bridge,\n source: BridgeSourceConfiguration.flow({\n flow: flow,\n }),\n});\n```\n\n### Bridge Outputs\n\nBridge outputs are configured as part of the bridge configuration for egress bridges. They define where content exits the bridge to on-premises equipment.\n\n```ts\ndeclare const productionNetwork: GatewayNetwork;\n\nconst networkConfig = BridgeOutputConfiguration.network({\n ipAddress: '192.168.1.200',\n port: 5001,\n network: productionNetwork,\n protocol: BridgeProtocol.RTP,\n ttl: 50,\n});\n\nconst namedOutput = { name: 'on-prem-output', output: networkConfig };\n```\n\n## Encryption\n\nMediaConnect supports encryption for sources, outputs, and entitlements. This package provides type-safe encryption configuration structs that match the encryption requirements for different protocols.\n\n### Encryption Types\n\nMediaConnect supports two types of encryption:\n\n1. **Static Key Encryption** - Used for Zixi Push/Pull protocols and entitlements\n2. **SRT Password Encryption** - Used for SRT Listener and SRT Caller protocols\n\nNote: CFN exposes only `static-key` and `srt-password` for flow output encryption today; SPEKE is not currently part of the surface.\n\n**Auto-created IAM role.** Every encryption struct accepts an optional `role`. Omit it and the consuming construct creates a scoped role for you: trust policy for `mediaconnect.amazonaws.com` with `aws:SourceAccount` + `aws:SourceArn` conditions (confused-deputy protection), and just enough permission to read the provided secret (including `kms:Decrypt` when the secret uses a customer-managed KMS key).\n\n**Providing your own role.** If you supply a `role`, it's used as-is — the construct does **not** grant it any permissions. You must grant it the necessary permissions yourself. Provide your own role when you need stricter control or a shared identity.\n\n**Trust-policy scope: flows vs. routers.** When the L2 auto-creates a role, it also pins `aws:SourceArn` to the consuming resource:\n\n- **Flows** — the trust policy pins the flow ARN (`arn:...:flow:*:<flow-name>`). The `*` wildcards the service-assigned id segment; the flow name is fixed at create time.\n- **Routers** — the trust policy can only pin a wildcarded ARN (`arn:...:routerInput:*` / `arn:...:routerOutput:*`). Router I/O ARNs use a service-generated id segment that is unknown at synth time, and using the live ARN attribute would create a CloudFormation dependency cycle (role → router → role). If you need per-resource pinning, supply your own `role` with a trust condition that pins the exact ARN — you can compute it from the resource's `routerInputId` / `routerOutputId` after first deploy and apply it on a follow-up deploy.\n\n### Static Key Encryption\n\nUse a static-key encryption struct for Zixi protocols and entitlements. This requires an encryption algorithm (AES128, AES192, or AES256). Pass it inline where the construct asks for it:\n\n```ts\ndeclare const stack: Stack;\ndeclare const flow: Flow;\ndeclare const role: iam.IRole;\ndeclare const secret: secretsmanager.ISecret;\n\nnew FlowEntitlement(stack, 'MyEntitlement', {\n flow,\n subscribers: ['111122223333'],\n description: 'Grant partner access to live feed',\n encryption: {\n role,\n secret,\n algorithm: EncryptionAlgorithm.AES256,\n },\n});\n```\n\n### SRT Password Encryption\n\nSRT protocols take an encryption struct with just `role` and `secret` — no algorithm:\n\n```ts\ndeclare const stack: Stack;\ndeclare const flow: Flow;\ndeclare const role: iam.IRole;\ndeclare const secret: secretsmanager.ISecret;\n\nnew FlowOutput(stack, 'SrtOutput', {\n flow,\n output: OutputConfiguration.srtCaller({\n destination: '203.0.113.100',\n port: 7000,\n encryption: { role, secret },\n }),\n});\n```\n\n### Using Encryption with Sources\n\nApply encryption when configuring flow sources:\n\n```ts\ndeclare const stack: Stack;\ndeclare const role: iam.IRole;\ndeclare const secret: secretsmanager.ISecret;\n\n// SRT Listener source with encryption\nconst flow = new Flow(stack, 'MyFlow', {\n source: SourceConfiguration.srtListener({\n flowSourceName: 'encrypted-source',\n port: 5000,\n network: NetworkConfiguration.publicNetwork('203.0.113.0/24'),\n decryption: { role, secret },\n }),\n});\n\n// Zixi Push source with encryption\nconst flow2 = new Flow(stack, 'MyFlow2', {\n source: SourceConfiguration.zixiPush({\n flowSourceName: 'encrypted-zixi-source',\n maxLatency: Duration.millis(2000),\n network: NetworkConfiguration.publicNetwork('203.0.113.0/24'),\n decryption: {\n role,\n secret,\n algorithm: EncryptionAlgorithm.AES256,\n },\n }),\n});\n```\n\n### Using Encryption with Outputs\n\nApply encryption when configuring flow outputs:\n\n```ts\ndeclare const stack: Stack;\ndeclare const flow: Flow;\ndeclare const role: iam.IRole;\ndeclare const secret: secretsmanager.ISecret;\n\n// SRT Caller output with encryption\nconst output = new FlowOutput(stack, 'EncryptedOutput', {\n flow: flow,\n description: 'Encrypted SRT output',\n output: OutputConfiguration.srtCaller({\n destination: '203.0.113.100',\n port: 7000,\n encryption: { role, secret },\n }),\n});\n```\n\n### Using Encryption with Entitlements\n\nEntitlements use static key encryption:\n\n```ts\ndeclare const stack: Stack;\ndeclare const flow: Flow;\ndeclare const role: iam.IRole;\ndeclare const secret: secretsmanager.ISecret;\n\nconst entitlement = new FlowEntitlement(stack, 'MyEntitlement', {\n flow: flow,\n description: 'Grant partner access to live feed',\n subscribers: ['111122223333'],\n encryption: {\n role,\n secret,\n algorithm: EncryptionAlgorithm.AES256,\n },\n});\n```\n\n### Router Transit Encryption\n\nWhen integrating flows with routers, use transit encryption to secure the connection between the flow and router:\n\n```ts\ndeclare const stack: Stack;\ndeclare const flow: Flow;\ndeclare const role: iam.IRole;\ndeclare const secret: secretsmanager.ISecret;\ndeclare const existingRouterOutput: RouterOutput;\n\n// Flow output to router with transit encryption\nconst routerOutput = new FlowOutput(stack, 'RouterOutput', {\n flow: flow,\n output: OutputConfiguration.router({\n encryption: { role, secret },\n }),\n});\n\n// Flow source from router with transit encryption\nconst flowFromRouter = new Flow(stack, 'FlowFromRouter', {\n source: SourceConfiguration.router({\n routerOutput: existingRouterOutput,\n decryption: { role, secret },\n }),\n});\n```\n\n### Router SRT Encryption\n\nRouter outputs using SRT protocols use `RouterSrtEncryption` for encryption:\n\n```ts\ndeclare const stack: Stack;\ndeclare const networkInterface: RouterNetworkInterface;\ndeclare const role: iam.IRole;\ndeclare const secret: secretsmanager.ISecret;\n\nconst output = new RouterOutput(stack, 'EncryptedSrtOutput', {\n routerOutputName: 'encrypted-srt-output',\n maximumBitrate: Bitrate.mbps(10),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterOutputTier.OUTPUT_50,\n configuration: RouterOutputConfiguration.standard({\n protocol: RouterOutputProtocol.srtCaller({\n destinationAddress: '203.0.113.100',\n destinationPort: 9001,\n minimumLatency: Duration.millis(200),\n encryptionConfiguration: { role, secret },\n }),\n networkInterface: networkInterface,\n }),\n});\n```\n\nNote: `RouterSrtEncryption` is distinct from `SrtPasswordEncryption` (used on flow sources/outputs) — router outputs use a simpler CFN shape without a `keyType` discriminator.\n\n## CloudWatch Metrics\n\nFlows and Bridges expose CloudWatch metric helpers for monitoring. You can create alarms and dashboards using these metrics:\n\n```ts\ndeclare const flow: Flow;\ndeclare const stack: Stack;\n\n// Create a CloudWatch alarm on source bitrate\nconst alarm = flow.metricSourceBitrate().createAlarm(stack, 'LowBitrate', {\n threshold: 1000000,\n evaluationPeriods: 1,\n});\n\n// Monitor unrecovered packets\nflow.metricSourceNotRecoveredPackets().createAlarm(stack, 'PacketLoss', {\n threshold: 100,\n evaluationPeriods: 2,\n});\n\n// Track total packets with custom options\nconst totalPackets = flow.metricSourceTotalPackets({\n statistic: 'sum',\n period: Duration.minutes(5),\n});\n```\n\n### Flow metrics\n\n- `metricSourceBitrate()` - Bitrate of content ingested into the flow (average)\n- `metricSourceNotRecoveredPackets()` - Packets lost in transit that were not recovered by error correction (sum)\n- `metricSourceTotalPackets()` - Total packets received by the flow sources (sum)\n- `metricSourceSelected()` - Indicates which source is being used under Failover mode (max; 1 = active, 0 = standby)\n- `metricSourceConnected()` - Source connection state for Zixi, SRT, and RIST (min; 1 = connected, 0 = disconnected)\n- `metricSourceDisconnections()` - Number of times the source transitioned from connected to disconnected (sum)\n- `metricSourceDroppedPackets()` - Packets lost before any error correction took place (sum)\n- `metricSourcePacketLossPercent()` - Percentage of packets lost during transit, even if they were recovered (average)\n- `metricSourceRoundTripTime()` - Round-trip time to the source for RIST, Zixi, and SRT (average, milliseconds)\n- `metricSourceJitter()` - Current network jitter of the source (average, milliseconds)\n- `metric(metricName)` - Create a custom metric by name\n\n### Bridge metrics\n\nBridge metrics are dimensioned by `BridgeARN`. The underlying CloudWatch metric name is chosen automatically based on whether the bridge is ingress or egress.\n\n- `metricSourceBitrate(bridgeSourceName)` - Bitrate of a specific bridge source (average)\n- `metricSourcePacketLossPercent(bridgeSourceName)` - Percentage of packets lost on a specific bridge source (average)\n- `metricFailoverSwitches()` - Total number of times the bridge switches between sources under `FAILOVER` failover mode (sum)\n- `metric(metricName)` - Create a custom metric by name\n\n### Router Input metrics\n\nRouter input metrics are dimensioned by `RouterInputARN`.\n\n- `metricBitrate()` - Bitrate of the router input's payload (average)\n- `metricNotRecoveredPackets()` - Packets lost in transit that were not recovered by error correction (sum)\n- `metricTotalPackets()` - Total number of packets received by the router input (sum)\n- `metricConnected()` - Connection state for SRT sources (min; 1 = connected, 0 = disconnected)\n- `metricContinuityCounterErrors()` - Continuity counter errors in the transport stream (sum)\n- `metricLatency()` - Recovery latency of the input stream for RIST, SRT, and RTP-FEC (average, milliseconds)\n- `metricFailoverSwitches()` - Total times the router input switched sources under Failover mode (sum)\n- `metric(metricName)` - Create a custom metric by name\n\n### Router Output metrics\n\nRouter output metrics are dimensioned by `RouterOutputARN`.\n\n- `metricBitrate()` - Bitrate of the router output's payload (average)\n- `metricTotalPackets()` - Total number of packets sent by the router output (sum)\n- `metricConnected()` - Connection state for SRT outputs (min; 1 = connected, 0 = disconnected)\n- `metricArqRequests()` - Retransmitted packets requested through ARQ for RIST and SRT outputs (sum)\n- `metric(metricName)` - Create a custom metric by name\n\n### Gateway metrics\n\nGateway metrics are dimensioned by `GatewayARN`. Pass extra dimensions such as `NetworkName`, `InstanceId`, or `BridgeSourceName` via `props.dimensionsMap` to narrow to a specific network, appliance, or bridge source.\n\n- `metricEgressBridgeTotalPackets()` - Total packets sent from egress bridges hosted on the gateway (sum)\n- `metricEgressBridgeDroppedPackets()` - Packets dropped by egress bridges hosted on the gateway (sum)\n- `metricIngressBridgeTotalPackets()` - Total packets received by ingress bridges hosted on the gateway (sum)\n- `metricIngressBridgeDroppedPackets()` - Packets dropped by ingress bridges hosted on the gateway (sum)\n- `metric(metricName)` - Create a custom metric by name (e.g. `IngressBridgeBitRate`, `EgressBridgeBitRate`, `IngressBridgeSourcePacketLossPercent`)\n\nPair the total + dropped helpers to build a dropped-packet percentage chart — for example, divide `metricEgressBridgeDroppedPackets()` by `metricEgressBridgeTotalPackets()` in a math expression.\n\nAll metrics support standard CloudWatch metric options for customizing period, statistic, and dimensions.\n\n## Public CIDR warnings\n\nSeveral constructs accept CIDR ranges that determine who can contribute content or pull outputs. Passing an open range (`0.0.0.0/0` or any `/0` prefix) makes the resource reachable from anywhere on the public internet, which is rarely what you want. The module emits synthesis-time warnings when it detects an open range on:\n\n- `GatewayProps.egressCidrBlocks`\n- `NetworkConfiguration.publicNetwork(cidr)` used on flow sources\n- `cidrAllowList` on Zixi Push / Zixi Pull / SRT Listener flow outputs\n- `RouterNetworkConfiguration.publicNetwork({ cidr })`\n\nRestrict each range to the narrowest set of addresses that actually need access.\n"
9719
+ "markdown": "# AWS::MediaConnect Construct Library\n<!--BEGIN STABILITY BANNER-->\n\n---\n\n![cdk-constructs: Experimental](https://img.shields.io/badge/cdk--constructs-experimental-important.svg?style=for-the-badge)\n\n> The APIs of higher level constructs in this module are experimental and under active development.\n> They are subject to non-backward compatible changes or removal in any future version. These are\n> not subject to the [Semantic Versioning](https://semver.org/) model and breaking changes will be\n> announced in the release notes. This means that while you may use them, you may need to update\n> your source code when upgrading to a newer version of this package.\n\n---\n\n<!--END STABILITY BANNER-->\n\n\n## AWS Elemental MediaConnect\n\nAWS Elemental MediaConnect is a high-quality transport service for live video. It provides the reliability and security of satellite and fiber-optic combined with the flexibility, agility, and economics of IP-based networks. MediaConnect enables you to build mission-critical live video workflows in a fraction of the time and cost of satellite or fiber services.\n\nThis package contains constructs for working with AWS Elemental MediaConnect, allowing you to define Flows, Bridges, Gateways, Router Inputs, Router Outputs, and Router Network Interfaces for transporting live video streams.\n\nFor further information on AWS Elemental MediaConnect, see [the documentation](https://aws.amazon.com/mediaconnect/).\n\n## Table of Contents\n\n- [Router Resources](#router-resources)\n - [Router Network Interfaces](#router-network-interfaces)\n - [Router Inputs](#router-inputs)\n - [Router Outputs](#router-outputs)\n- [Flows](#flows)\n - [Creating a Flow](#creating-a-flow)\n - [Flow Sources](#flow-sources)\n - [VPC Interfaces](#vpc-interfaces)\n - [Media Streams](#media-streams)\n - [Flow Sizes](#flow-sizes)\n- [Gateways](#gateways)\n - [Creating a Gateway](#creating-a-gateway)\n - [Importing an Existing Gateway](#importing-an-existing-gateway)\n- [Bridges](#bridges)\n - [Creating a Bridge](#creating-a-bridge)\n - [Bridge Sources](#bridge-sources)\n - [Bridge Outputs](#bridge-outputs)\n- [Encryption](#encryption)\n- [CloudWatch Metrics](#cloudwatch-metrics)\n- [Public CIDR warnings](#public-cidr-warnings)\n\n## Router Resources\n\nMediaConnect routers provide high-performance, low-latency video routing capabilities for building complex live video workflows. Router resources include network interfaces, inputs, and outputs.\n\n### How Router Resources Relate\n\nRouter resources work together in a pipeline:\n\n- A **RouterNetworkInterface** defines the network connectivity (public internet or VPC). Required for standard protocol-based inputs and outputs, but not needed when connecting to MediaLive inputs or MediaConnect flows directly.\n- A **RouterInput** is the entry point — it receives video from a source via a protocol (RTP, SRT, RIST), or from a MediaConnect flow.\n- A **RouterOutput** is the exit point — it sends video to a destination via a protocol, to a MediaLive input, or to a MediaConnect flow.\n\nA typical camera-to-cloud workflow looks like:\n\n```text\nCamera → RouterNetworkInterface → RouterInput (SRT) → [Router] → RouterOutput (MediaLive) → MediaLive Channel\n```\n\nThe router sits in the middle, routing content from inputs to outputs. You can have many outputs per input — for example, one camera feed going to both a MediaLive channel and a MediaConnect flow simultaneously.\n\n### End-to-End Example: SRT Source to MediaLive\n\nHere's a complete example showing how to connect an SRT source through a router to MediaLive:\n\n```ts\ndeclare const stack: Stack;\ndeclare const mediaLiveInput: medialive.IInput;\n\n// 1. A public network interface for the SRT input\nconst networkInterface = new RouterNetworkInterface(stack, 'NetworkInterface', {\n routerNetworkInterfaceName: 'camera-network',\n configuration: RouterNetworkConfiguration.publicNetwork({\n cidr: ['203.0.113.0/24'],\n }),\n});\n\n// 2. A router input receiving SRT from an upstream encoder\nconst input = new RouterInput(stack, 'Input', {\n routerInputName: 'camera-input',\n maximumBitrate: Bitrate.mbps(10),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterInputTier.INPUT_20,\n configuration: RouterInputConfiguration.standard({\n networkInterface,\n protocol: RouterInputProtocol.srtListener({\n port: 9000,\n minimumLatency: Duration.millis(200),\n }),\n }),\n});\n\n// 3. A router output delivering to MediaLive\nconst output = new RouterOutput(stack, 'Output', {\n routerOutputName: 'medialive-output',\n maximumBitrate: Bitrate.mbps(10),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterOutputTier.OUTPUT_20,\n configuration: RouterOutputConfiguration.mediaLiveInput({\n input: mediaLiveInput,\n pipeline: MediaLivePipeline.PIPELINE_0,\n }),\n});\n```\n\nThis gives you a complete pipeline: the encoder pushes SRT to the network interface, the router receives it as an input, and the router output delivers it to MediaLive. For routing rules — including how bitrate affects which outputs can receive which inputs — see the [documentation](https://docs.aws.amazon.com/mediaconnect/latest/ug/using-router-control-panel.html).\n\n### Router Network Interfaces\n\nNetwork interfaces define the network connectivity for router inputs and outputs:\n\n#### Public Network Interface\n\n```ts\ndeclare const stack: Stack;\n\nconst publicInterface = new RouterNetworkInterface(stack, 'PublicInterface', {\n routerNetworkInterfaceName: 'public-interface',\n configuration: RouterNetworkConfiguration.publicNetwork({\n cidr: ['203.0.113.0/24'],\n }),\n});\n```\n\n#### Private Network Interface\n\n```ts\ndeclare const stack: Stack;\ndeclare const securityGroup: ec2.ISecurityGroup;\ndeclare const subnet: ec2.ISubnet;\n\nconst privateInterface = new RouterNetworkInterface(stack, 'PrivateInterface', {\n routerNetworkInterfaceName: 'private-interface',\n configuration: RouterNetworkConfiguration.vpc({\n securityGroups: [securityGroup],\n subnet: subnet,\n }),\n});\n```\n\n### Router Inputs\n\nRouter inputs receive live video streams from various sources and make them available for routing:\n\n#### Standard Input with RTP Protocol\n\n```ts\ndeclare const stack: Stack;\ndeclare const networkInterface: RouterNetworkInterface;\n\nconst input = new RouterInput(stack, 'RtpInput', {\n routerInputName: 'rtp-input',\n maximumBitrate: Bitrate.mbps(10),\n routingScope: RoutingScope.REGIONAL,\n // tier defaults to RouterInputTier.INPUT_20 (lowest cost)\n configuration: RouterInputConfiguration.standard({\n networkInterface: networkInterface,\n protocol: RouterInputProtocol.rtp({\n port: 5000,\n }),\n }),\n});\n```\n\n#### Failover Input Configuration\n\n```ts\ndeclare const stack: Stack;\ndeclare const networkInterface: RouterNetworkInterface;\n\nconst input = new RouterInput(stack, 'FailoverInput', {\n routerInputName: 'failover-input',\n maximumBitrate: Bitrate.mbps(10),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterInputTier.INPUT_20,\n configuration: RouterInputConfiguration.failover({\n networkInterface: networkInterface,\n protocols: [\n RouterInputProtocol.rist({\n port: 5000,\n recoveryLatency: Duration.millis(1000),\n }),\n RouterInputProtocol.rist({\n port: 5002, // Must not be consecutive with primary port\n recoveryLatency: Duration.millis(1000),\n }),\n ],\n sourcePriority: SourcePriorityConfig.primarySecondary(PrimarySource.FIRST_SOURCE),\n }),\n});\n```\n\n#### MediaLive Channel Input\n\nConnect a router input to a MediaLive channel. The `outputName` must match the name of an output configured in the channel's MediaConnect Router output group.\n\n```ts\ndeclare const stack: Stack;\ndeclare const mediaLiveChannel: medialive.IChannel;\n\nconst input = new RouterInput(stack, 'ChannelInput', {\n routerInputName: 'channel-input',\n maximumBitrate: Bitrate.mbps(20),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterInputTier.INPUT_20,\n configuration: RouterInputConfiguration.mediaLiveChannel({\n channel: mediaLiveChannel,\n outputName: 'router-ts',\n pipeline: MediaLivePipeline.PIPELINE_0,\n }),\n});\n```\n\n> **Tip:** For full examples of wiring a MediaLive channel to a MediaConnect Router (including\n> transit encryption), see the [MediaLive L2 README — MediaConnect Router section](./../aws-medialive-alpha/README.md#aws-elemental-mediaconnect-router).\n\n```ts\ndeclare const stack: Stack;\ndeclare const mediaLiveChannel: medialive.IChannel;\ndeclare const transitSecret: Secret; // must hold the same value as the channel's MediaConnectRouterSettings.shared() secret\n\nconst input = new RouterInput(stack, 'ChannelInput', {\n routerInputName: 'channel-input',\n maximumBitrate: Bitrate.mbps(20),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterInputTier.INPUT_20,\n configuration: RouterInputConfiguration.mediaLiveChannel({\n channel: mediaLiveChannel,\n outputName: 'router-ts',\n pipeline: MediaLivePipeline.PIPELINE_0,\n sourceTransitDecryption: { secret: transitSecret },\n }),\n});\n```\n\nOr prepare a router input for a MediaLive connection without specifying the channel (requires explicit availability zone):\n\n```ts\ndeclare const stack: Stack;\n\nconst input = new RouterInput(stack, 'ChannelInputNoConnection', {\n routerInputName: 'channel-input-no-connection',\n maximumBitrate: Bitrate.mbps(20),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterInputTier.INPUT_20,\n configuration: RouterInputConfiguration.mediaLiveChannelWithoutConnection({\n availabilityZone: 'us-east-1a',\n }),\n});\n```\n\n#### MediaConnect Flow Input\n\nConnect a router input to an existing MediaConnect flow:\n\n```ts\ndeclare const stack: Stack;\ndeclare const flow: Flow;\ndeclare const flowOutput: FlowOutput;\n\nconst input = new RouterInput(stack, 'FlowInput', {\n routerInputName: 'flow-input',\n maximumBitrate: Bitrate.mbps(20),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterInputTier.INPUT_20,\n configuration: RouterInputConfiguration.mediaConnectFlow({\n flow: flow,\n flowOutput: flowOutput,\n }),\n});\n```\n\nOr prepare a router input for a flow connection without specifying the flow (requires explicit availability zone):\n\n```ts\ndeclare const stack: Stack;\n\nconst input = new RouterInput(stack, 'FlowInputNoConnection', {\n routerInputName: 'flow-input-no-connection',\n maximumBitrate: Bitrate.mbps(20),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterInputTier.INPUT_20,\n configuration: RouterInputConfiguration.mediaConnectFlowWithoutConnection({\n availabilityZone: 'us-east-1a',\n }),\n});\n```\n\n### Router Outputs\n\nRouter outputs send video streams to various destinations including standard protocols, MediaLive inputs, and MediaConnect flows:\n\n#### Standard Output with SRT Protocol\n\n```ts\ndeclare const stack: Stack;\ndeclare const networkInterface: RouterNetworkInterface;\n\nconst output = new RouterOutput(stack, 'SrtOutput', {\n routerOutputName: 'srt-output',\n maximumBitrate: Bitrate.mbps(10),\n routingScope: RoutingScope.REGIONAL,\n // tier defaults to RouterOutputTier.OUTPUT_20 (lowest cost)\n configuration: RouterOutputConfiguration.standard({\n protocol: RouterOutputProtocol.srtListener({\n port: 9001,\n minimumLatency: Duration.millis(200),\n }),\n networkInterface: networkInterface,\n }),\n});\n```\n\n> **Note:** The `tier` property defaults to the lowest (and cheapest) tier: `INPUT_20` for Router Inputs and `OUTPUT_20` for Router Outputs. The construct validates that `maximumBitrate` does not exceed the tier's capacity (20, 50, or 100 Mbps) at synth time. Per the [documentation](https://docs.aws.amazon.com/mediaconnect/latest/ug/using-router-control-panel.html), if an input is 20 Mbps you can't route it to an output set up for less than 20 Mbps.\n\n#### MediaLive Output\n\nConnect a router output to a MediaLive input (the input must be a MediaConnect Router type):\n\n```ts\ndeclare const stack: Stack;\ndeclare const mediaLiveInput: medialive.IInput;\n\nconst output = new RouterOutput(stack, 'MediaLiveOutput', {\n routerOutputName: 'medialive-output',\n maximumBitrate: Bitrate.mbps(15),\n routingScope: RoutingScope.GLOBAL,\n tier: RouterOutputTier.OUTPUT_20,\n configuration: RouterOutputConfiguration.mediaLiveInput({\n input: mediaLiveInput,\n pipeline: MediaLivePipeline.PIPELINE_0,\n }),\n});\n```\n\nOr prepare a router output for a MediaLive connection without specifying the input (requires explicit availability zone):\n\n```ts\ndeclare const stack: Stack;\n\nconst output = new RouterOutput(stack, 'MediaLiveOutputNoConnection', {\n routerOutputName: 'medialive-output-no-connection',\n maximumBitrate: Bitrate.mbps(15),\n routingScope: RoutingScope.GLOBAL,\n tier: RouterOutputTier.OUTPUT_20,\n configuration: RouterOutputConfiguration.mediaLiveInputWithoutConnection({\n availabilityZone: 'us-east-1a',\n }),\n});\n```\n\n#### MediaConnect Flow Output\n\nConnect a router output to an existing MediaConnect flow:\n\n```ts\ndeclare const stack: Stack;\ndeclare const flow: Flow;\n\nconst output = new RouterOutput(stack, 'FlowOutput', {\n routerOutputName: 'flow-output',\n maximumBitrate: Bitrate.mbps(20),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterOutputTier.OUTPUT_20,\n configuration: RouterOutputConfiguration.mediaConnectFlow({\n flow: flow,\n }),\n});\n```\n\nOr prepare a router output for a flow connection without specifying the flow (requires explicit availability zone):\n\n```ts\ndeclare const stack: Stack;\n\nconst output = new RouterOutput(stack, 'FlowOutputNoConnection', {\n routerOutputName: 'flow-output-no-connection',\n maximumBitrate: Bitrate.mbps(20),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterOutputTier.OUTPUT_20,\n configuration: RouterOutputConfiguration.mediaConnectFlowWithoutConnection({\n availabilityZone: 'us-east-1a',\n }),\n});\n```\n\n#### Output with Encryption\n\n```ts\ndeclare const stack: Stack;\ndeclare const networkInterface: RouterNetworkInterface;\ndeclare const role: iam.IRole;\ndeclare const secret: secretsmanager.ISecret;\n\nconst output = new RouterOutput(stack, 'EncryptedOutput', {\n routerOutputName: 'encrypted-output',\n maximumBitrate: Bitrate.mbps(10),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterOutputTier.OUTPUT_20,\n configuration: RouterOutputConfiguration.standard({\n protocol: RouterOutputProtocol.srtCaller({\n destinationAddress: '203.0.113.100',\n destinationPort: 9001,\n minimumLatency: Duration.millis(200),\n encryptionConfiguration: { role, secret },\n }),\n networkInterface: networkInterface,\n }),\n});\n```\n\n## Flows\n\nA MediaConnect flow represents a transport stream connection between a source and one or more outputs. Flows are the primary resource for transporting live video content.\n\n### Creating a Flow\n\nThe following example creates a basic MediaConnect flow with an RTP source:\n\n```ts\ndeclare const stack: Stack;\n\nconst flow = new Flow(stack, 'MyFlow', {\n flowName: 'my-live-stream',\n source: SourceConfiguration.rtp({\n flowSourceName: 'my-source',\n port: 5000,\n network: NetworkConfiguration.publicNetwork('203.0.113.0/24'),\n }),\n});\n```\n\n### Flow Sources\n\nMediaConnect 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.\n\n#### SRT Listener Source\n\nSRT (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.\n\n```ts\ndeclare const stack: Stack;\n\nconst flow = new Flow(stack, 'MyFlow', {\n source: SourceConfiguration.srtListener({\n flowSourceName: 'live-encoder-source',\n description: 'Live encoder feed',\n port: 5000,\n minLatency: Duration.millis(2000),\n network: NetworkConfiguration.publicNetwork('203.0.113.0/24'),\n }),\n});\n```\n\n#### SRT Caller Source\n\nSRT 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.\n\n```ts\ndeclare const stack: Stack;\n\nconst flow = new Flow(stack, 'MyFlow', {\n source: SourceConfiguration.srtCaller({\n flowSourceName: 'remote-source',\n sourceListenerAddress: '203.0.113.50',\n sourceListenerPort: 5000,\n minLatency: Duration.millis(200),\n }),\n});\n```\n\n#### RTP Source\n\nRTP (Real-time Transport Protocol) is a standard protocol for delivering audio and video over IP networks.\n\n```ts\ndeclare const stack: Stack;\n\nconst flow = new Flow(stack, 'MyFlow', {\n source: SourceConfiguration.rtp({\n flowSourceName: 'rtp-source',\n port: 5000,\n network: NetworkConfiguration.publicNetwork('203.0.113.0/24'),\n }),\n});\n```\n\n#### RTP-FEC Source\n\nRTP with Forward Error Correction adds redundancy to recover lost packets without retransmission. Use this when contributing via RTP and you need packet recovery.\n\n```ts\ndeclare const stack: Stack;\n\nconst flow = new Flow(stack, 'MyFlow', {\n source: SourceConfiguration.rtpFec({\n flowSourceName: 'rtp-fec-source',\n port: 5000,\n network: NetworkConfiguration.publicNetwork('203.0.113.0/24'),\n }),\n});\n```\n\n#### RIST Source\n\nRIST (Reliable Internet Stream Transport) provides reliable video transport with packet recovery.\n\n```ts\ndeclare const stack: Stack;\n\nconst flow = new Flow(stack, 'MyFlow', {\n source: SourceConfiguration.rist({\n flowSourceName: 'rist-source',\n port: 5000,\n maxLatency: Duration.millis(2000),\n network: NetworkConfiguration.publicNetwork('203.0.113.0/24'),\n }),\n});\n```\n\n#### Zixi Push Source\n\nZixi Push uses the Zixi protocol for reliable video transport. Content is pushed to MediaConnect from a Zixi-compatible component upstream.\n\n```ts\ndeclare const stack: Stack;\n\nconst flow = new Flow(stack, 'MyFlow', {\n source: SourceConfiguration.zixiPush({\n flowSourceName: 'zixi-source',\n maxLatency: Duration.millis(2000),\n network: NetworkConfiguration.publicNetwork('203.0.113.0/24'),\n }),\n});\n```\n\n> Zixi Push ports are assigned by MediaConnect: 2088 for public sources, 2090-2099 for VPC sources. See [Source port assignments](https://docs.aws.amazon.com/mediaconnect/latest/ug/source-ports.html).\n\n#### Router Source\n\nUse a router source when the flow's source comes from a MediaConnect Router rather than a direct connection.\n\n```ts\ndeclare const stack: Stack;\n\nconst flow = new Flow(stack, 'MyFlow', {\n source: SourceConfiguration.router(),\n});\n```\n\n#### VPC Source\n\nUse a VPC-based source when you need a connection between a flow and your Amazon VPC. This enables private connectivity for receiving content from on-premises equipment via AWS Direct Connect or VPN, or from other AWS services running in your VPC.\n\n```ts\ndeclare const stack: Stack;\ndeclare const securityGroup: ec2.ISecurityGroup;\ndeclare const subnet: ec2.ISubnet;\ndeclare const role: iam.IRole;\n\nconst vpcInterface = VpcInterface.define({\n vpcInterfaceName: 'my-vpc-interface',\n role: role,\n securityGroups: [securityGroup],\n subnet: subnet,\n});\n\nconst flow = new Flow(stack, 'MyFlow', {\n source: SourceConfiguration.rist({\n flowSourceName: 'vpc-source',\n description: 'VPC-based source',\n port: 5000,\n maxLatency: Duration.millis(2000),\n network: NetworkConfiguration.vpc(vpcInterface),\n }),\n vpcInterfaces: [vpcInterface],\n});\n```\n\n#### Entitled Source (From Another AWS Account)\n\nEntitlements allow you to subscribe to content from another AWS account. The entitlement is created by the content originator in their AWS account, and you import it using the entitlement ARN they provide.\n\n```ts\ndeclare const stack: Stack;\n\n// Import an entitlement from another AWS account\nconst entitlement = FlowEntitlement.fromFlowEntitlementArn(stack, 'ImportedEntitlement',\n 'arn:aws:mediaconnect:us-west-2:111122223333:entitlement:1-11111111111111111111111111111111:MyEntitlement',\n);\n\nconst flow = new Flow(stack, 'MyFlow', {\n source: SourceConfiguration.entitlement({\n entitlement: entitlement,\n }),\n});\n```\n\n#### Gateway Bridge Source\n\nUse a gateway bridge source when ingesting content from on-premises equipment through a MediaConnect gateway and bridge. Gateways define the network infrastructure that bridges use to transport video between on-premises and cloud environments.\n\n```ts\ndeclare const stack: Stack;\ndeclare const bridge: Bridge;\ndeclare const role: iam.IRole;\ndeclare const securityGroup: ec2.ISecurityGroup;\ndeclare const subnet: ec2.ISubnet;\n\nconst vpcInterface = VpcInterface.define({\n vpcInterfaceName: 'bridge-interface',\n role: role,\n securityGroups: [securityGroup],\n subnet: subnet,\n});\n\nconst flow = new Flow(stack, 'MyFlow', {\n source: SourceConfiguration.gatewayBridge({\n bridge: bridge,\n vpcInterface: vpcInterface,\n }),\n vpcInterfaces: [vpcInterface],\n});\n```\n\n### VPC Interfaces\n\nVPC interfaces allow MediaConnect to send or receive content within your VPC. Create VPC interfaces using `VpcInterface.define()` and add them to the flow's `vpcInterfaces` array. The same interface can then be referenced in sources and outputs:\n\n```ts\ndeclare const stack: Stack;\ndeclare const role: iam.IRole;\ndeclare const securityGroup: ec2.ISecurityGroup;\ndeclare const subnet: ec2.ISubnet;\n\n// Create VPC interface\nconst vpcInterface = VpcInterface.define({\n vpcInterfaceName: 'my-vpc-interface',\n role: role,\n securityGroups: [securityGroup],\n subnet: subnet,\n networkInterfaceType: NetworkInterface.ENA,\n});\n\n// Add to flow and reference in source\nconst flow = new Flow(stack, 'MyFlow', {\n vpcInterfaces: [vpcInterface], // Declare at flow level\n source: SourceConfiguration.rist({\n flowSourceName: 'vpc-source',\n port: 5000,\n maxLatency: Duration.millis(2000),\n network: NetworkConfiguration.vpc(vpcInterface), // Reference in source\n }),\n});\n```\n\n#### CDI and JPEG XS with EFA Interfaces\n\nFor high-performance CDI or JPEG XS workflows, use EFA (Elastic Fabric Adapter) interfaces. Note that flows can have a maximum of 1 EFA interface:\n\n```ts\ndeclare const stack: Stack;\ndeclare const role: iam.IRole;\ndeclare const securityGroup: ec2.ISecurityGroup;\ndeclare const subnet: ec2.ISubnet;\n\nconst efaInterface = VpcInterface.define({\n vpcInterfaceName: 'efa-interface',\n role: role,\n securityGroups: [securityGroup],\n subnet: subnet,\n networkInterfaceType: NetworkInterface.EFA, // Required for CDI\n});\n\nconst videoStream = MediaStream.video({\n mediaStreamId: 1,\n mediaStreamName: 'video',\n videoFormat: MediaVideoFormat.HD_1080P,\n fmtp: {\n exactFramerate: Framerate.FPS_29_97,\n par: PixelAspectRatio.SQUARE,\n },\n});\n\nconst flow = new Flow(stack, 'MyCdiFlow', {\n flowSize: FlowSize.LARGE_4X, // Required for CDI and JPEG XS\n vpcInterfaces: [efaInterface],\n mediaStreams: [videoStream],\n source: SourceConfiguration.cdi({\n flowSourceName: 'cdi-source',\n vpcInterface: efaInterface,\n port: 5000,\n maxSyncBuffer: 100,\n mediaStreamSourceConfigurations: [{\n encoding: Encoding.RAW,\n mediaStream: videoStream,\n }],\n }),\n});\n```\n\n#### JPEG XS with Redundant Interfaces\n\nJPEG XS requires exactly 2 input interfaces per media stream for redundancy. Typically one EFA and one ENA interface:\n\n```ts\ndeclare const stack: Stack;\ndeclare const role: iam.IRole;\ndeclare const sg1: ec2.ISecurityGroup;\ndeclare const sg2: ec2.ISecurityGroup;\ndeclare const subnet: ec2.ISubnet;\n\nconst efaInterface = VpcInterface.define({\n vpcInterfaceName: 'efa-interface',\n role: role,\n securityGroups: [sg1],\n subnet: subnet,\n networkInterfaceType: NetworkInterface.EFA,\n});\n\nconst enaInterface = VpcInterface.define({\n vpcInterfaceName: 'ena-interface',\n role: role,\n securityGroups: [sg2],\n subnet: subnet,\n networkInterfaceType: NetworkInterface.ENA,\n});\n\nconst videoStream = MediaStream.video({\n mediaStreamId: 1,\n mediaStreamName: 'video',\n videoFormat: MediaVideoFormat.UHD_2160P,\n fmtp: {\n exactFramerate: Framerate.FPS_59_94,\n par: PixelAspectRatio.SQUARE,\n colorimetry: Colorimetry.BT2020,\n videoRange: VideoRange.FULL,\n scanMode: ScanMode.PROGRESSIVE,\n tcs: Tcs.PQ,\n },\n});\n\nconst flow = new Flow(stack, 'MyJpegXsFlow', {\n flowSize: FlowSize.LARGE_4X, // Required for JPEG XS\n vpcInterfaces: [efaInterface, enaInterface],\n mediaStreams: [videoStream],\n source: SourceConfiguration.jpegXs({\n flowSourceName: 'jpegxs-source',\n maxSyncBuffer: 100,\n mediaStreamSourceConfigurations: [{\n encoding: Encoding.JXSV,\n port: 5000,\n inputInterface: [efaInterface, enaInterface], // 2 interfaces for redundancy\n mediaStream: videoStream,\n }],\n }),\n});\n```\n\n### Media Streams\n\nMedia streams represent individual components of your content (video, audio, ancillary data) for ST 2110 JPEG XS or CDI workflows. Create media streams using the static factory methods and add them to the flow's `mediaStreams` array:\n\n```ts\ndeclare const stack: Stack;\n\n// Create media streams\nconst videoStream = MediaStream.video({\n mediaStreamId: 1,\n mediaStreamName: 'video-stream',\n videoFormat: MediaVideoFormat.HD_1080P,\n fmtp: {\n colorimetry: Colorimetry.BT709,\n exactFramerate: Framerate.FPS_29_97,\n par: PixelAspectRatio.SQUARE,\n videoRange: VideoRange.NARROW,\n scanMode: ScanMode.PROGRESSIVE,\n tcs: Tcs.SDR,\n },\n});\n\nconst audioStream = MediaStream.audio({\n mediaStreamId: 2,\n mediaStreamName: 'audio-stream',\n channelOrder: AudioStreamOrderOptions.STANDARD_STEREO,\n});\n\n// Add to flow\nconst flow = new Flow(stack, 'MyFlow', {\n source: SourceConfiguration.router(),\n mediaStreams: [videoStream, audioStream], // Declare at flow level\n});\n```\n\n#### Audio Channel Order\n\nFor audio media streams, use the `AudioStreamOrderOptions` enum to specify the SMPTE 2110-30 channel order:\n\n```ts\n// Available channel order options\nAudioStreamOrderOptions.MONO // SMPTE2110.(M)\nAudioStreamOrderOptions.DUAL_MONO // SMPTE2110.(DM)\nAudioStreamOrderOptions.STANDARD_STEREO // SMPTE2110.(ST)\nAudioStreamOrderOptions.LTRT_MATRIX_STEREO // SMPTE2110.(LtRt)\nAudioStreamOrderOptions.SURROUND_5_1 // SMPTE2110.(51)\nAudioStreamOrderOptions.SURROUND_7_1 // SMPTE2110.(71)\nAudioStreamOrderOptions.SURROUND_22_2 // SMPTE2110.(222)\nAudioStreamOrderOptions.ONE_SDI_AUDIO_GROUP // SMPTE2110.(SGRP)\n\n// Example with 5.1 surround\nconst surroundAudio = MediaStream.audio({\n mediaStreamId: 3,\n mediaStreamName: 'surround-audio',\n channelOrder: AudioStreamOrderOptions.SURROUND_5_1,\n});\n```\n\nMedia streams can be referenced in source configurations (for CDI and JPEG XS) and output configurations.\n\n### Flow Sizes\n\nMediaConnect offers three flow sizes that determine feature support:\n\n| Flow Size | Transport Streams | NDI | CDI / JPEG XS |\n|-----------|------------------|-----|---------------|\n| `MEDIUM` (default) | ✅ | ❌ | ❌ |\n| `LARGE` | ✅ | ✅ | ❌ |\n| `LARGE_4X` | ❌ | ❌ | ✅ |\n\nThis table maps each `FlowSize` to the capabilities the construct validates. For output counts, throughput limits, and other per-size details, see [Flow sizes and capabilities](https://docs.aws.amazon.com/mediaconnect/latest/ug/flow-sizes-capabilities.html).\n\nThe construct validates flow size constraints at synthesis time based on the source protocol and NDI configuration:\n\n- `MEDIUM` supports transport stream protocols (RTP, SRT, RIST, etc.) but not NDI or CDI\n- `LARGE` supports transport streams and NDI, and is required when NDI is enabled\n- `LARGE_4X` is required for CDI and JPEG XS protocols, and does not support transport streams or NDI\n\nThese are mutually exclusive — CDI/JPEG XS and NDI cannot coexist on the same flow because they require different flow sizes.\n\n```ts\ndeclare const stack: Stack;\ndeclare const ndiVpcInterface: VpcInterfaceConfig;\ndeclare const efaInterface: VpcInterfaceConfig;\ndeclare const videoStream: MediaStream;\n\n// NDI requires LARGE, an encoding profile, and at least one discovery server\nnew Flow(stack, 'NdiFlow', {\n flowSize: FlowSize.LARGE,\n ndiConfig: {\n ndiState: State.ENABLED,\n ndiDiscoveryServers: [{\n discoveryServerAddress: '10.0.0.10',\n vpcInterface: ndiVpcInterface,\n }],\n },\n encodingConfig: {\n encodingProfile: EncodingProfile.CONTRIBUTION_H264_DEFAULT,\n },\n source: SourceConfiguration.ndi({\n flowSourceName: 'ndi-source',\n }),\n});\n\n// CDI and JPEG XS require LARGE_4X\nnew Flow(stack, 'CdiFlow', {\n flowSize: FlowSize.LARGE_4X,\n vpcInterfaces: [efaInterface],\n mediaStreams: [videoStream],\n source: SourceConfiguration.cdi({\n flowSourceName: 'cdi-source',\n vpcInterface: efaInterface,\n port: 5000,\n maxSyncBuffer: 100,\n mediaStreamSourceConfigurations: [{\n encoding: Encoding.RAW,\n mediaStream: videoStream,\n }],\n }),\n});\n```\n\nFor more information, see [Flow sizes and capabilities](https://docs.aws.amazon.com/mediaconnect/latest/ug/flow-sizes-capabilities.html).\n\n## Gateways\n\nMediaConnect Gateways enable the deployment of on-premises resources for transporting live video to and from the AWS Cloud. Gateways are required for creating bridges.\n\n### Creating a Gateway\n\n```ts\ndeclare const stack: Stack;\n\nconst productionNetwork = GatewayNetwork.define({\n cidrBlock: '192.168.1.0/24',\n name: 'production-network',\n});\n\nconst gateway = new Gateway(stack, 'MyGateway', {\n gatewayName: 'my-gateway',\n egressCidrBlocks: ['10.0.0.0/16'],\n networks: [productionNetwork],\n});\n```\n\n### Importing an Existing Gateway\n\n```ts\ndeclare const stack: Stack;\n\nconst gateway = Gateway.fromGatewayArn(stack, 'ImportedGateway',\n 'arn:aws:mediaconnect:us-west-2:123456789012:gateway:1-XXXXXX',\n);\n```\n\n## Bridges\n\nMediaConnect bridges enable you to interconnect on-premises equipment with cloud-based workflows. Bridges support both ingress (on-premises to cloud) and egress (cloud to on-premises) scenarios.\n\n### Creating a Bridge\n\n#### Ingress Bridge (On-premises to Cloud)\n\nAn ingress bridge receives content from on-premises equipment and makes it available in the cloud:\n\n```ts\ndeclare const stack: Stack;\n\nconst productionNetwork = GatewayNetwork.define({\n cidrBlock: '192.168.1.0/24',\n name: 'production-network',\n});\n\nconst gateway = new Gateway(stack, 'MyGateway', {\n gatewayName: 'my-gateway',\n egressCidrBlocks: ['10.0.0.0/16'],\n networks: [productionNetwork],\n});\n\nconst ingressBridge = new Bridge(stack, 'MyIngressBridge', {\n bridgeName: 'my-ingress-bridge',\n config: BridgeConfiguration.ingress({\n maxBitrate: Bitrate.mbps(10),\n maxOutputs: 2,\n networkSources: [{\n name: 'on-prem-source',\n source: {\n protocol: BridgeProtocol.RTP,\n network: productionNetwork,\n multicastIp: '239.1.1.1',\n port: 5000,\n },\n }],\n }),\n gateway: gateway,\n});\n```\n\n#### Egress Bridge (Cloud to On-premises)\n\nAn egress bridge sends content from MediaConnect flows to on-premises equipment:\n\n```ts\ndeclare const stack: Stack;\ndeclare const gateway: Gateway;\ndeclare const flow: Flow;\ndeclare const vpcInterface: VpcInterfaceConfig;\ndeclare const productionNetwork: GatewayNetwork;\n\nconst egressBridge = new Bridge(stack, 'MyEgressBridge', {\n bridgeName: 'my-egress-bridge',\n config: BridgeConfiguration.egress({\n maxBitrate: Bitrate.mbps(10),\n flowSources: [{\n name: 'cloud-source',\n source: {\n flow: flow,\n vpcInterface: vpcInterface,\n },\n }],\n networkOutputs: [{\n name: 'on-prem-output',\n output: BridgeOutputConfiguration.network({\n ipAddress: '192.168.1.200',\n port: 5001,\n network: productionNetwork,\n protocol: BridgeProtocol.RTP,\n ttl: 50,\n }),\n }],\n }),\n gateway: gateway,\n});\n```\n\n### Bridge Sources\n\nFor failover scenarios, you can add additional sources to an existing bridge using the `BridgeSource` construct:\n\n```ts\ndeclare const stack: Stack;\ndeclare const bridge: Bridge;\ndeclare const flow: Flow;\n\n// Add a flow source to an egress bridge (requires failover to be enabled)\nconst additionalSource = new BridgeSource(stack, 'AdditionalSource', {\n bridgeSourceName: 'backup-source',\n bridge: bridge,\n source: BridgeSourceConfiguration.flow({\n flow: flow,\n }),\n});\n```\n\n### Bridge Outputs\n\nBridge outputs are configured as part of the bridge configuration for egress bridges. They define where content exits the bridge to on-premises equipment.\n\n```ts\ndeclare const productionNetwork: GatewayNetwork;\n\nconst networkConfig = BridgeOutputConfiguration.network({\n ipAddress: '192.168.1.200',\n port: 5001,\n network: productionNetwork,\n protocol: BridgeProtocol.RTP,\n ttl: 50,\n});\n\nconst namedOutput = { name: 'on-prem-output', output: networkConfig };\n```\n\n## Encryption\n\nMediaConnect supports encryption for sources, outputs, and entitlements. This package provides type-safe encryption configuration structs that match the encryption requirements for different protocols.\n\n### Encryption Types\n\nMediaConnect supports two types of encryption:\n\n1. **Static Key Encryption** - Used for Zixi Push/Pull protocols and entitlements\n2. **SRT Password Encryption** - Used for SRT Listener and SRT Caller protocols\n\nNote: CFN exposes only `static-key` and `srt-password` for flow output encryption today; SPEKE is not currently part of the surface.\n\n**Auto-created IAM role.** Every encryption struct accepts an optional `role`. Omit it and the consuming construct creates a scoped role for you: trust policy for `mediaconnect.amazonaws.com` with `aws:SourceAccount` + `aws:SourceArn` conditions (confused-deputy protection), and just enough permission to read the provided secret (including `kms:Decrypt` when the secret uses a customer-managed KMS key).\n\n**Providing your own role.** If you supply a `role`, it's used as-is — the construct does **not** grant it any permissions. You must grant it the necessary permissions yourself. Provide your own role when you need stricter control or a shared identity.\n\n**Trust-policy scope: flows vs. routers.** When the L2 auto-creates a role, it also pins `aws:SourceArn` to the consuming resource:\n\n- **Flows** — the trust policy pins the flow ARN (`arn:...:flow:*:<flow-name>`). The `*` wildcards the service-assigned id segment; the flow name is fixed at create time.\n- **Routers** — the trust policy can only pin a wildcarded ARN (`arn:...:routerInput:*` / `arn:...:routerOutput:*`). Router I/O ARNs use a service-generated id segment that is unknown at synth time, and using the live ARN attribute would create a CloudFormation dependency cycle (role → router → role). If you need per-resource pinning, supply your own `role` with a trust condition that pins the exact ARN — you can compute it from the resource's `routerInputId` / `routerOutputId` after first deploy and apply it on a follow-up deploy.\n\n### Static Key Encryption\n\nUse a static-key encryption struct for Zixi protocols and entitlements. This requires an encryption algorithm (AES128, AES192, or AES256). Pass it inline where the construct asks for it:\n\n```ts\ndeclare const stack: Stack;\ndeclare const flow: Flow;\ndeclare const role: iam.IRole;\ndeclare const secret: secretsmanager.ISecret;\n\nnew FlowEntitlement(stack, 'MyEntitlement', {\n flow,\n subscribers: ['111122223333'],\n description: 'Grant partner access to live feed',\n encryption: {\n role,\n secret,\n algorithm: EncryptionAlgorithm.AES256,\n },\n});\n```\n\n### SRT Password Encryption\n\nSRT protocols take an encryption struct with just `role` and `secret` — no algorithm:\n\n```ts\ndeclare const stack: Stack;\ndeclare const flow: Flow;\ndeclare const role: iam.IRole;\ndeclare const secret: secretsmanager.ISecret;\n\nnew FlowOutput(stack, 'SrtOutput', {\n flow,\n output: OutputConfiguration.srtCaller({\n destination: '203.0.113.100',\n port: 7000,\n encryption: { role, secret },\n }),\n});\n```\n\n### Using Encryption with Sources\n\nApply encryption when configuring flow sources:\n\n```ts\ndeclare const stack: Stack;\ndeclare const role: iam.IRole;\ndeclare const secret: secretsmanager.ISecret;\n\n// SRT Listener source with encryption\nconst flow = new Flow(stack, 'MyFlow', {\n source: SourceConfiguration.srtListener({\n flowSourceName: 'encrypted-source',\n port: 5000,\n network: NetworkConfiguration.publicNetwork('203.0.113.0/24'),\n decryption: { role, secret },\n }),\n});\n\n// Zixi Push source with encryption\nconst flow2 = new Flow(stack, 'MyFlow2', {\n source: SourceConfiguration.zixiPush({\n flowSourceName: 'encrypted-zixi-source',\n maxLatency: Duration.millis(2000),\n network: NetworkConfiguration.publicNetwork('203.0.113.0/24'),\n decryption: {\n role,\n secret,\n algorithm: EncryptionAlgorithm.AES256,\n },\n }),\n});\n```\n\n### Using Encryption with Outputs\n\nApply encryption when configuring flow outputs:\n\n```ts\ndeclare const stack: Stack;\ndeclare const flow: Flow;\ndeclare const role: iam.IRole;\ndeclare const secret: secretsmanager.ISecret;\n\n// SRT Caller output with encryption\nconst output = new FlowOutput(stack, 'EncryptedOutput', {\n flow: flow,\n description: 'Encrypted SRT output',\n output: OutputConfiguration.srtCaller({\n destination: '203.0.113.100',\n port: 7000,\n encryption: { role, secret },\n }),\n});\n```\n\n### Using Encryption with Entitlements\n\nEntitlements use static key encryption:\n\n```ts\ndeclare const stack: Stack;\ndeclare const flow: Flow;\ndeclare const role: iam.IRole;\ndeclare const secret: secretsmanager.ISecret;\n\nconst entitlement = new FlowEntitlement(stack, 'MyEntitlement', {\n flow: flow,\n description: 'Grant partner access to live feed',\n subscribers: ['111122223333'],\n encryption: {\n role,\n secret,\n algorithm: EncryptionAlgorithm.AES256,\n },\n});\n```\n\n### Router Transit Encryption\n\nWhen integrating flows with routers, use transit encryption to secure the connection between the flow and router:\n\n```ts\ndeclare const stack: Stack;\ndeclare const flow: Flow;\ndeclare const role: iam.IRole;\ndeclare const secret: secretsmanager.ISecret;\ndeclare const existingRouterOutput: RouterOutput;\n\n// Flow output to router with transit encryption\nconst routerOutput = new FlowOutput(stack, 'RouterOutput', {\n flow: flow,\n output: OutputConfiguration.router({\n encryption: { role, secret },\n }),\n});\n\n// Flow source from router with transit encryption\nconst flowFromRouter = new Flow(stack, 'FlowFromRouter', {\n source: SourceConfiguration.router({\n routerOutput: existingRouterOutput,\n decryption: { role, secret },\n }),\n});\n```\n\n### Router SRT Encryption\n\nRouter outputs using SRT protocols use `RouterSrtEncryption` for encryption:\n\n```ts\ndeclare const stack: Stack;\ndeclare const networkInterface: RouterNetworkInterface;\ndeclare const role: iam.IRole;\ndeclare const secret: secretsmanager.ISecret;\n\nconst output = new RouterOutput(stack, 'EncryptedSrtOutput', {\n routerOutputName: 'encrypted-srt-output',\n maximumBitrate: Bitrate.mbps(10),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterOutputTier.OUTPUT_20,\n configuration: RouterOutputConfiguration.standard({\n protocol: RouterOutputProtocol.srtCaller({\n destinationAddress: '203.0.113.100',\n destinationPort: 9001,\n minimumLatency: Duration.millis(200),\n encryptionConfiguration: { role, secret },\n }),\n networkInterface: networkInterface,\n }),\n});\n```\n\nNote: `RouterSrtEncryption` is distinct from `SrtPasswordEncryption` (used on flow sources/outputs) — router outputs use a simpler CFN shape without a `keyType` discriminator.\n\n## CloudWatch Metrics\n\nFlows and Bridges expose CloudWatch metric helpers for monitoring. You can create alarms and dashboards using these metrics:\n\n```ts\ndeclare const flow: Flow;\ndeclare const stack: Stack;\n\n// Create a CloudWatch alarm on source bitrate\nconst alarm = flow.metricSourceBitrate().createAlarm(stack, 'LowBitrate', {\n threshold: 1000000,\n evaluationPeriods: 1,\n});\n\n// Monitor unrecovered packets\nflow.metricSourceNotRecoveredPackets().createAlarm(stack, 'PacketLoss', {\n threshold: 100,\n evaluationPeriods: 2,\n});\n\n// Track total packets with custom options\nconst totalPackets = flow.metricSourceTotalPackets({\n statistic: 'sum',\n period: Duration.minutes(5),\n});\n```\n\n### Flow metrics\n\n- `metricSourceBitrate()` - Bitrate of content ingested into the flow (average)\n- `metricSourceNotRecoveredPackets()` - Packets lost in transit that were not recovered by error correction (sum)\n- `metricSourceTotalPackets()` - Total packets received by the flow sources (sum)\n- `metricSourceSelected()` - Indicates which source is being used under Failover mode (max; 1 = active, 0 = standby)\n- `metricSourceConnected()` - Source connection state for Zixi, SRT, and RIST (min; 1 = connected, 0 = disconnected)\n- `metricSourceDisconnections()` - Number of times the source transitioned from connected to disconnected (sum)\n- `metricSourceDroppedPackets()` - Packets lost before any error correction took place (sum)\n- `metricSourcePacketLossPercent()` - Percentage of packets lost during transit, even if they were recovered (average)\n- `metricSourceRoundTripTime()` - Round-trip time to the source for RIST, Zixi, and SRT (average, milliseconds)\n- `metricSourceJitter()` - Current network jitter of the source (average, milliseconds)\n- `metric(metricName)` - Create a custom metric by name\n\n### Bridge metrics\n\nBridge metrics are dimensioned by `BridgeARN`. The underlying CloudWatch metric name is chosen automatically based on whether the bridge is ingress or egress.\n\n- `metricSourceBitrate(bridgeSourceName)` - Bitrate of a specific bridge source (average)\n- `metricSourcePacketLossPercent(bridgeSourceName)` - Percentage of packets lost on a specific bridge source (average)\n- `metricFailoverSwitches()` - Total number of times the bridge switches between sources under `FAILOVER` failover mode (sum)\n- `metric(metricName)` - Create a custom metric by name\n\n### Router Input metrics\n\nRouter input metrics are dimensioned by `RouterInputARN`.\n\n- `metricBitrate()` - Bitrate of the router input's payload (average)\n- `metricNotRecoveredPackets()` - Packets lost in transit that were not recovered by error correction (sum)\n- `metricTotalPackets()` - Total number of packets received by the router input (sum)\n- `metricConnected()` - Connection state for SRT sources (min; 1 = connected, 0 = disconnected)\n- `metricContinuityCounterErrors()` - Continuity counter errors in the transport stream (sum)\n- `metricLatency()` - Recovery latency of the input stream for RIST, SRT, and RTP-FEC (average, milliseconds)\n- `metricFailoverSwitches()` - Total times the router input switched sources under Failover mode (sum)\n- `metric(metricName)` - Create a custom metric by name\n\n### Router Output metrics\n\nRouter output metrics are dimensioned by `RouterOutputARN`.\n\n- `metricBitrate()` - Bitrate of the router output's payload (average)\n- `metricTotalPackets()` - Total number of packets sent by the router output (sum)\n- `metricConnected()` - Connection state for SRT outputs (min; 1 = connected, 0 = disconnected)\n- `metricArqRequests()` - Retransmitted packets requested through ARQ for RIST and SRT outputs (sum)\n- `metric(metricName)` - Create a custom metric by name\n\n### Gateway metrics\n\nGateway metrics are dimensioned by `GatewayARN`. Pass extra dimensions such as `NetworkName`, `InstanceId`, or `BridgeSourceName` via `props.dimensionsMap` to narrow to a specific network, appliance, or bridge source.\n\n- `metricEgressBridgeTotalPackets()` - Total packets sent from egress bridges hosted on the gateway (sum)\n- `metricEgressBridgeDroppedPackets()` - Packets dropped by egress bridges hosted on the gateway (sum)\n- `metricIngressBridgeTotalPackets()` - Total packets received by ingress bridges hosted on the gateway (sum)\n- `metricIngressBridgeDroppedPackets()` - Packets dropped by ingress bridges hosted on the gateway (sum)\n- `metric(metricName)` - Create a custom metric by name (e.g. `IngressBridgeBitRate`, `EgressBridgeBitRate`, `IngressBridgeSourcePacketLossPercent`)\n\nPair the total + dropped helpers to build a dropped-packet percentage chart — for example, divide `metricEgressBridgeDroppedPackets()` by `metricEgressBridgeTotalPackets()` in a math expression.\n\nAll metrics support standard CloudWatch metric options for customizing period, statistic, and dimensions.\n\n## Public CIDR warnings\n\nSeveral constructs accept CIDR ranges that determine who can contribute content or pull outputs. Passing an open range (`0.0.0.0/0` or any `/0` prefix) makes the resource reachable from anywhere on the public internet, which is rarely what you want. The module emits synthesis-time warnings when it detects an open range on:\n\n- `GatewayProps.egressCidrBlocks`\n- `NetworkConfiguration.publicNetwork(cidr)` used on flow sources\n- `cidrAllowList` on Zixi Push / Zixi Pull / SRT Listener flow outputs\n- `RouterNetworkConfiguration.publicNetwork({ cidr })`\n\nRestrict each range to the narrowest set of addresses that actually need access.\n"
9617
9720
  },
9618
9721
  "repository": {
9619
9722
  "directory": "packages/@aws-cdk/aws-mediaconnect-alpha",
@@ -12780,7 +12883,7 @@
12780
12883
  "docs": {
12781
12884
  "stability": "experimental",
12782
12885
  "summary": "Properties for failover Router Input configuration.",
12783
- "example": "declare const stack: Stack;\ndeclare const networkInterface: RouterNetworkInterface;\n\nconst input = new RouterInput(stack, 'FailoverInput', {\n routerInputName: 'failover-input',\n maximumBitrate: Bitrate.mbps(10),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterInputTier.INPUT_50,\n configuration: RouterInputConfiguration.failover({\n networkInterface: networkInterface,\n protocols: [\n RouterInputProtocol.rist({\n port: 5000,\n recoveryLatency: Duration.millis(1000),\n }),\n RouterInputProtocol.rist({\n port: 5002, // Must not be consecutive with primary port\n recoveryLatency: Duration.millis(1000),\n }),\n ],\n sourcePriority: SourcePriorityConfig.primarySecondary(PrimarySource.FIRST_SOURCE),\n }),\n});",
12886
+ "example": "declare const stack: Stack;\ndeclare const networkInterface: RouterNetworkInterface;\n\nconst input = new RouterInput(stack, 'FailoverInput', {\n routerInputName: 'failover-input',\n maximumBitrate: Bitrate.mbps(10),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterInputTier.INPUT_20,\n configuration: RouterInputConfiguration.failover({\n networkInterface: networkInterface,\n protocols: [\n RouterInputProtocol.rist({\n port: 5000,\n recoveryLatency: Duration.millis(1000),\n }),\n RouterInputProtocol.rist({\n port: 5002, // Must not be consecutive with primary port\n recoveryLatency: Duration.millis(1000),\n }),\n ],\n sourcePriority: SourcePriorityConfig.primarySecondary(PrimarySource.FIRST_SOURCE),\n }),\n});",
12784
12887
  "custom": {
12785
12888
  "exampleMetadata": "infused"
12786
12889
  }
@@ -12789,7 +12892,7 @@
12789
12892
  "kind": "interface",
12790
12893
  "locationInModule": {
12791
12894
  "filename": "lib/router-input.ts",
12792
- "line": 725
12895
+ "line": 727
12793
12896
  },
12794
12897
  "name": "FailoverConfigurationProps",
12795
12898
  "properties": [
@@ -12802,7 +12905,7 @@
12802
12905
  "immutable": true,
12803
12906
  "locationInModule": {
12804
12907
  "filename": "lib/router-input.ts",
12805
- "line": 727
12908
+ "line": 729
12806
12909
  },
12807
12910
  "name": "networkInterface",
12808
12911
  "type": {
@@ -12818,7 +12921,7 @@
12818
12921
  "immutable": true,
12819
12922
  "locationInModule": {
12820
12923
  "filename": "lib/router-input.ts",
12821
- "line": 729
12924
+ "line": 731
12822
12925
  },
12823
12926
  "name": "protocols",
12824
12927
  "type": {
@@ -12840,7 +12943,7 @@
12840
12943
  "immutable": true,
12841
12944
  "locationInModule": {
12842
12945
  "filename": "lib/router-input.ts",
12843
- "line": 741
12946
+ "line": 743
12844
12947
  },
12845
12948
  "name": "availabilityZone",
12846
12949
  "optional": true,
@@ -12858,7 +12961,7 @@
12858
12961
  "immutable": true,
12859
12962
  "locationInModule": {
12860
12963
  "filename": "lib/router-input.ts",
12861
- "line": 735
12964
+ "line": 737
12862
12965
  },
12863
12966
  "name": "sourcePriority",
12864
12967
  "optional": true,
@@ -15478,7 +15581,7 @@
15478
15581
  "kind": "enum",
15479
15582
  "locationInModule": {
15480
15583
  "filename": "lib/router-input.ts",
15481
- "line": 331
15584
+ "line": 333
15482
15585
  },
15483
15586
  "members": [
15484
15587
  {
@@ -18116,7 +18219,7 @@
18116
18219
  "kind": "interface",
18117
18220
  "locationInModule": {
18118
18221
  "filename": "lib/router-output.ts",
18119
- "line": 80
18222
+ "line": 81
18120
18223
  },
18121
18224
  "methods": [
18122
18225
  {
@@ -18128,7 +18231,7 @@
18128
18231
  },
18129
18232
  "locationInModule": {
18130
18233
  "filename": "lib/router-output.ts",
18131
- "line": 130
18234
+ "line": 131
18132
18235
  },
18133
18236
  "name": "metric",
18134
18237
  "parameters": [
@@ -18162,7 +18265,7 @@
18162
18265
  },
18163
18266
  "locationInModule": {
18164
18267
  "filename": "lib/router-output.ts",
18165
- "line": 156
18268
+ "line": 157
18166
18269
  },
18167
18270
  "name": "metricArqRequests",
18168
18271
  "parameters": [
@@ -18189,7 +18292,7 @@
18189
18292
  },
18190
18293
  "locationInModule": {
18191
18294
  "filename": "lib/router-output.ts",
18192
- "line": 136
18295
+ "line": 137
18193
18296
  },
18194
18297
  "name": "metricBitrate",
18195
18298
  "parameters": [
@@ -18217,7 +18320,7 @@
18217
18320
  },
18218
18321
  "locationInModule": {
18219
18322
  "filename": "lib/router-output.ts",
18220
- "line": 148
18323
+ "line": 149
18221
18324
  },
18222
18325
  "name": "metricConnected",
18223
18326
  "parameters": [
@@ -18244,7 +18347,7 @@
18244
18347
  },
18245
18348
  "locationInModule": {
18246
18349
  "filename": "lib/router-output.ts",
18247
- "line": 142
18350
+ "line": 143
18248
18351
  },
18249
18352
  "name": "metricTotalPackets",
18250
18353
  "parameters": [
@@ -18277,7 +18380,7 @@
18277
18380
  "immutable": true,
18278
18381
  "locationInModule": {
18279
18382
  "filename": "lib/router-output.ts",
18280
- "line": 107
18383
+ "line": 108
18281
18384
  },
18282
18385
  "name": "ipAddress",
18283
18386
  "type": {
@@ -18296,7 +18399,7 @@
18296
18399
  "immutable": true,
18297
18400
  "locationInModule": {
18298
18401
  "filename": "lib/router-output.ts",
18299
- "line": 93
18402
+ "line": 94
18300
18403
  },
18301
18404
  "name": "routerOutputArn",
18302
18405
  "type": {
@@ -18315,7 +18418,7 @@
18315
18418
  "immutable": true,
18316
18419
  "locationInModule": {
18317
18420
  "filename": "lib/router-output.ts",
18318
- "line": 100
18421
+ "line": 101
18319
18422
  },
18320
18423
  "name": "routerOutputId",
18321
18424
  "type": {
@@ -18334,7 +18437,7 @@
18334
18437
  "immutable": true,
18335
18438
  "locationInModule": {
18336
18439
  "filename": "lib/router-output.ts",
18337
- "line": 86
18440
+ "line": 87
18338
18441
  },
18339
18442
  "name": "routerOutputName",
18340
18443
  "type": {
@@ -18353,7 +18456,7 @@
18353
18456
  "immutable": true,
18354
18457
  "locationInModule": {
18355
18458
  "filename": "lib/router-output.ts",
18356
- "line": 114
18459
+ "line": 115
18357
18460
  },
18358
18461
  "name": "createdAt",
18359
18462
  "optional": true,
@@ -18373,7 +18476,7 @@
18373
18476
  "immutable": true,
18374
18477
  "locationInModule": {
18375
18478
  "filename": "lib/router-output.ts",
18376
- "line": 121
18479
+ "line": 122
18377
18480
  },
18378
18481
  "name": "updatedAt",
18379
18482
  "optional": true,
@@ -18590,7 +18693,7 @@
18590
18693
  "kind": "interface",
18591
18694
  "locationInModule": {
18592
18695
  "filename": "lib/router-input.ts",
18593
- "line": 251
18696
+ "line": 252
18594
18697
  },
18595
18698
  "name": "MaintenanceConfiguration",
18596
18699
  "properties": [
@@ -18603,7 +18706,7 @@
18603
18706
  "immutable": true,
18604
18707
  "locationInModule": {
18605
18708
  "filename": "lib/router-input.ts",
18606
- "line": 253
18709
+ "line": 254
18607
18710
  },
18608
18711
  "name": "day",
18609
18712
  "type": {
@@ -18619,7 +18722,7 @@
18619
18722
  "immutable": true,
18620
18723
  "locationInModule": {
18621
18724
  "filename": "lib/router-input.ts",
18622
- "line": 255
18725
+ "line": 256
18623
18726
  },
18624
18727
  "name": "time",
18625
18728
  "type": {
@@ -18757,7 +18860,7 @@
18757
18860
  "docs": {
18758
18861
  "stability": "experimental",
18759
18862
  "summary": "Properties for MediaConnect Flow Router Input configuration.",
18760
- "example": "declare const stack: Stack;\ndeclare const flow: Flow;\ndeclare const flowOutput: FlowOutput;\n\nconst input = new RouterInput(stack, 'FlowInput', {\n routerInputName: 'flow-input',\n maximumBitrate: Bitrate.mbps(20),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterInputTier.INPUT_50,\n configuration: RouterInputConfiguration.mediaConnectFlow({\n flow: flow,\n flowOutput: flowOutput,\n }),\n});",
18863
+ "example": "declare const stack: Stack;\ndeclare const flow: Flow;\ndeclare const flowOutput: FlowOutput;\n\nconst input = new RouterInput(stack, 'FlowInput', {\n routerInputName: 'flow-input',\n maximumBitrate: Bitrate.mbps(20),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterInputTier.INPUT_20,\n configuration: RouterInputConfiguration.mediaConnectFlow({\n flow: flow,\n flowOutput: flowOutput,\n }),\n});",
18761
18864
  "custom": {
18762
18865
  "exampleMetadata": "infused"
18763
18866
  }
@@ -18766,7 +18869,7 @@
18766
18869
  "kind": "interface",
18767
18870
  "locationInModule": {
18768
18871
  "filename": "lib/router-input.ts",
18769
- "line": 765
18872
+ "line": 767
18770
18873
  },
18771
18874
  "name": "MediaConnectFlowConfigurationProps",
18772
18875
  "properties": [
@@ -18779,7 +18882,7 @@
18779
18882
  "immutable": true,
18780
18883
  "locationInModule": {
18781
18884
  "filename": "lib/router-input.ts",
18782
- "line": 767
18885
+ "line": 769
18783
18886
  },
18784
18887
  "name": "flow",
18785
18888
  "type": {
@@ -18795,7 +18898,7 @@
18795
18898
  "immutable": true,
18796
18899
  "locationInModule": {
18797
18900
  "filename": "lib/router-input.ts",
18798
- "line": 769
18901
+ "line": 771
18799
18902
  },
18800
18903
  "name": "flowOutput",
18801
18904
  "type": {
@@ -18812,7 +18915,7 @@
18812
18915
  "immutable": true,
18813
18916
  "locationInModule": {
18814
18917
  "filename": "lib/router-input.ts",
18815
- "line": 774
18918
+ "line": 776
18816
18919
  },
18817
18920
  "name": "sourceTransitDecryption",
18818
18921
  "optional": true,
@@ -18829,7 +18932,7 @@
18829
18932
  "docs": {
18830
18933
  "stability": "experimental",
18831
18934
  "summary": "Properties for MediaConnect Flow Router Input configuration - without a connection.",
18832
- "example": "declare const stack: Stack;\n\nconst input = new RouterInput(stack, 'FlowInputNoConnection', {\n routerInputName: 'flow-input-no-connection',\n maximumBitrate: Bitrate.mbps(20),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterInputTier.INPUT_50,\n configuration: RouterInputConfiguration.mediaConnectFlowWithoutConnection({\n availabilityZone: 'us-east-1a',\n }),\n});",
18935
+ "example": "declare const stack: Stack;\n\nconst input = new RouterInput(stack, 'FlowInputNoConnection', {\n routerInputName: 'flow-input-no-connection',\n maximumBitrate: Bitrate.mbps(20),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterInputTier.INPUT_20,\n configuration: RouterInputConfiguration.mediaConnectFlowWithoutConnection({\n availabilityZone: 'us-east-1a',\n }),\n});",
18833
18936
  "custom": {
18834
18937
  "exampleMetadata": "infused"
18835
18938
  }
@@ -18838,7 +18941,7 @@
18838
18941
  "kind": "interface",
18839
18942
  "locationInModule": {
18840
18943
  "filename": "lib/router-input.ts",
18841
- "line": 780
18944
+ "line": 782
18842
18945
  },
18843
18946
  "name": "MediaConnectFlowConfigurationWithoutConnectionProps",
18844
18947
  "properties": [
@@ -18851,7 +18954,7 @@
18851
18954
  "immutable": true,
18852
18955
  "locationInModule": {
18853
18956
  "filename": "lib/router-input.ts",
18854
- "line": 784
18957
+ "line": 786
18855
18958
  },
18856
18959
  "name": "availabilityZone",
18857
18960
  "type": {
@@ -18868,7 +18971,7 @@
18868
18971
  "immutable": true,
18869
18972
  "locationInModule": {
18870
18973
  "filename": "lib/router-input.ts",
18871
- "line": 789
18974
+ "line": 791
18872
18975
  },
18873
18976
  "name": "sourceTransitDecryption",
18874
18977
  "optional": true,
@@ -18885,7 +18988,7 @@
18885
18988
  "docs": {
18886
18989
  "stability": "experimental",
18887
18990
  "summary": "Properties for MediaConnect Flow Router Output configuration with specific flow connection.",
18888
- "example": "declare const stack: Stack;\ndeclare const flow: Flow;\n\nconst output = new RouterOutput(stack, 'FlowOutput', {\n routerOutputName: 'flow-output',\n maximumBitrate: Bitrate.mbps(20),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterOutputTier.OUTPUT_100,\n configuration: RouterOutputConfiguration.mediaConnectFlow({\n flow: flow,\n }),\n});",
18991
+ "example": "declare const stack: Stack;\ndeclare const flow: Flow;\n\nconst output = new RouterOutput(stack, 'FlowOutput', {\n routerOutputName: 'flow-output',\n maximumBitrate: Bitrate.mbps(20),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterOutputTier.OUTPUT_20,\n configuration: RouterOutputConfiguration.mediaConnectFlow({\n flow: flow,\n }),\n});",
18889
18992
  "custom": {
18890
18993
  "exampleMetadata": "infused"
18891
18994
  }
@@ -18894,7 +18997,7 @@
18894
18997
  "kind": "interface",
18895
18998
  "locationInModule": {
18896
18999
  "filename": "lib/router-output.ts",
18897
- "line": 508
19000
+ "line": 510
18898
19001
  },
18899
19002
  "name": "MediaConnectFlowConnectionProps",
18900
19003
  "properties": [
@@ -18907,7 +19010,7 @@
18907
19010
  "immutable": true,
18908
19011
  "locationInModule": {
18909
19012
  "filename": "lib/router-output.ts",
18910
- "line": 510
19013
+ "line": 512
18911
19014
  },
18912
19015
  "name": "flow",
18913
19016
  "type": {
@@ -18924,7 +19027,7 @@
18924
19027
  "immutable": true,
18925
19028
  "locationInModule": {
18926
19029
  "filename": "lib/router-output.ts",
18927
- "line": 515
19030
+ "line": 517
18928
19031
  },
18929
19032
  "name": "destinationTransitEncryption",
18930
19033
  "optional": true,
@@ -18941,7 +19044,7 @@
18941
19044
  "docs": {
18942
19045
  "stability": "experimental",
18943
19046
  "summary": "Properties for MediaConnect Flow Router Output configuration without specific flow connection.",
18944
- "example": "declare const stack: Stack;\n\nconst output = new RouterOutput(stack, 'FlowOutputNoConnection', {\n routerOutputName: 'flow-output-no-connection',\n maximumBitrate: Bitrate.mbps(20),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterOutputTier.OUTPUT_100,\n configuration: RouterOutputConfiguration.mediaConnectFlowWithoutConnection({\n availabilityZone: 'us-east-1a',\n }),\n});",
19047
+ "example": "declare const stack: Stack;\n\nconst output = new RouterOutput(stack, 'FlowOutputNoConnection', {\n routerOutputName: 'flow-output-no-connection',\n maximumBitrate: Bitrate.mbps(20),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterOutputTier.OUTPUT_20,\n configuration: RouterOutputConfiguration.mediaConnectFlowWithoutConnection({\n availabilityZone: 'us-east-1a',\n }),\n});",
18945
19048
  "custom": {
18946
19049
  "exampleMetadata": "infused"
18947
19050
  }
@@ -18950,7 +19053,7 @@
18950
19053
  "kind": "interface",
18951
19054
  "locationInModule": {
18952
19055
  "filename": "lib/router-output.ts",
18953
- "line": 521
19056
+ "line": 523
18954
19057
  },
18955
19058
  "name": "MediaConnectFlowNoConnectionProps",
18956
19059
  "properties": [
@@ -18963,7 +19066,7 @@
18963
19066
  "immutable": true,
18964
19067
  "locationInModule": {
18965
19068
  "filename": "lib/router-output.ts",
18966
- "line": 523
19069
+ "line": 525
18967
19070
  },
18968
19071
  "name": "availabilityZone",
18969
19072
  "type": {
@@ -18980,7 +19083,7 @@
18980
19083
  "immutable": true,
18981
19084
  "locationInModule": {
18982
19085
  "filename": "lib/router-output.ts",
18983
- "line": 528
19086
+ "line": 530
18984
19087
  },
18985
19088
  "name": "destinationTransitEncryption",
18986
19089
  "optional": true,
@@ -18998,7 +19101,7 @@
18998
19101
  "remarks": "Use this when the MediaLive channel already exists and you want to ingest\nfrom one of its outputs immediately.",
18999
19102
  "stability": "experimental",
19000
19103
  "summary": "Properties for MediaLive Channel Router Input configuration.",
19001
- "example": "declare const stack: Stack;\ndeclare const mediaLiveChannel: medialive.IChannel;\n\nconst input = new RouterInput(stack, 'ChannelInput', {\n routerInputName: 'channel-input',\n maximumBitrate: Bitrate.mbps(20),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterInputTier.INPUT_50,\n configuration: RouterInputConfiguration.mediaLiveChannel({\n channel: mediaLiveChannel,\n outputName: 'router-ts',\n pipeline: MediaLivePipeline.PIPELINE_0,\n }),\n});",
19104
+ "example": "declare const stack: Stack;\ndeclare const mediaLiveChannel: medialive.IChannel;\n\nconst input = new RouterInput(stack, 'ChannelInput', {\n routerInputName: 'channel-input',\n maximumBitrate: Bitrate.mbps(20),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterInputTier.INPUT_20,\n configuration: RouterInputConfiguration.mediaLiveChannel({\n channel: mediaLiveChannel,\n outputName: 'router-ts',\n pipeline: MediaLivePipeline.PIPELINE_0,\n }),\n});",
19002
19105
  "custom": {
19003
19106
  "exampleMetadata": "infused"
19004
19107
  }
@@ -19007,7 +19110,7 @@
19007
19110
  "kind": "interface",
19008
19111
  "locationInModule": {
19009
19112
  "filename": "lib/router-input.ts",
19010
- "line": 798
19113
+ "line": 800
19011
19114
  },
19012
19115
  "name": "MediaLiveChannelConfigurationProps",
19013
19116
  "properties": [
@@ -19020,7 +19123,7 @@
19020
19123
  "immutable": true,
19021
19124
  "locationInModule": {
19022
19125
  "filename": "lib/router-input.ts",
19023
- "line": 802
19126
+ "line": 804
19024
19127
  },
19025
19128
  "name": "channel",
19026
19129
  "type": {
@@ -19036,7 +19139,7 @@
19036
19139
  "immutable": true,
19037
19140
  "locationInModule": {
19038
19141
  "filename": "lib/router-input.ts",
19039
- "line": 808
19142
+ "line": 810
19040
19143
  },
19041
19144
  "name": "outputName",
19042
19145
  "type": {
@@ -19052,7 +19155,7 @@
19052
19155
  "immutable": true,
19053
19156
  "locationInModule": {
19054
19157
  "filename": "lib/router-input.ts",
19055
- "line": 813
19158
+ "line": 815
19056
19159
  },
19057
19160
  "name": "pipeline",
19058
19161
  "type": {
@@ -19070,7 +19173,7 @@
19070
19173
  "immutable": true,
19071
19174
  "locationInModule": {
19072
19175
  "filename": "lib/router-input.ts",
19073
- "line": 821
19176
+ "line": 823
19074
19177
  },
19075
19178
  "name": "sourceTransitDecryption",
19076
19179
  "optional": true,
@@ -19088,7 +19191,7 @@
19088
19191
  "remarks": "Use this when you want to set up the router input before the target MediaLive channel exists.",
19089
19192
  "stability": "experimental",
19090
19193
  "summary": "Properties for MediaLive Channel Router Input configuration without a specific channel connection.",
19091
- "example": "declare const stack: Stack;\n\nconst input = new RouterInput(stack, 'ChannelInputNoConnection', {\n routerInputName: 'channel-input-no-connection',\n maximumBitrate: Bitrate.mbps(20),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterInputTier.INPUT_50,\n configuration: RouterInputConfiguration.mediaLiveChannelWithoutConnection({\n availabilityZone: 'us-east-1a',\n }),\n});",
19194
+ "example": "declare const stack: Stack;\n\nconst input = new RouterInput(stack, 'ChannelInputNoConnection', {\n routerInputName: 'channel-input-no-connection',\n maximumBitrate: Bitrate.mbps(20),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterInputTier.INPUT_20,\n configuration: RouterInputConfiguration.mediaLiveChannelWithoutConnection({\n availabilityZone: 'us-east-1a',\n }),\n});",
19092
19195
  "custom": {
19093
19196
  "exampleMetadata": "infused"
19094
19197
  }
@@ -19097,7 +19200,7 @@
19097
19200
  "kind": "interface",
19098
19201
  "locationInModule": {
19099
19202
  "filename": "lib/router-input.ts",
19100
- "line": 829
19203
+ "line": 831
19101
19204
  },
19102
19205
  "name": "MediaLiveChannelConfigurationWithoutConnectionProps",
19103
19206
  "properties": [
@@ -19110,7 +19213,7 @@
19110
19213
  "immutable": true,
19111
19214
  "locationInModule": {
19112
19215
  "filename": "lib/router-input.ts",
19113
- "line": 833
19216
+ "line": 835
19114
19217
  },
19115
19218
  "name": "availabilityZone",
19116
19219
  "type": {
@@ -19127,7 +19230,7 @@
19127
19230
  "immutable": true,
19128
19231
  "locationInModule": {
19129
19232
  "filename": "lib/router-input.ts",
19130
- "line": 840
19233
+ "line": 842
19131
19234
  },
19132
19235
  "name": "sourceTransitDecryption",
19133
19236
  "optional": true,
@@ -19153,7 +19256,7 @@
19153
19256
  "kind": "interface",
19154
19257
  "locationInModule": {
19155
19258
  "filename": "lib/router-output.ts",
19156
- "line": 478
19259
+ "line": 480
19157
19260
  },
19158
19261
  "name": "MediaLiveInputConnectionProps",
19159
19262
  "properties": [
@@ -19166,7 +19269,7 @@
19166
19269
  "immutable": true,
19167
19270
  "locationInModule": {
19168
19271
  "filename": "lib/router-output.ts",
19169
- "line": 482
19272
+ "line": 484
19170
19273
  },
19171
19274
  "name": "input",
19172
19275
  "type": {
@@ -19182,7 +19285,7 @@
19182
19285
  "immutable": true,
19183
19286
  "locationInModule": {
19184
19287
  "filename": "lib/router-output.ts",
19185
- "line": 484
19288
+ "line": 486
19186
19289
  },
19187
19290
  "name": "pipeline",
19188
19291
  "type": {
@@ -19199,7 +19302,7 @@
19199
19302
  "immutable": true,
19200
19303
  "locationInModule": {
19201
19304
  "filename": "lib/router-output.ts",
19202
- "line": 489
19305
+ "line": 491
19203
19306
  },
19204
19307
  "name": "destinationTransitEncryption",
19205
19308
  "optional": true,
@@ -19216,7 +19319,7 @@
19216
19319
  "docs": {
19217
19320
  "stability": "experimental",
19218
19321
  "summary": "Properties for MediaLive Router Output configuration without specific input connection.",
19219
- "example": "declare const stack: Stack;\n\nconst output = new RouterOutput(stack, 'MediaLiveOutputNoConnection', {\n routerOutputName: 'medialive-output-no-connection',\n maximumBitrate: Bitrate.mbps(15),\n routingScope: RoutingScope.GLOBAL,\n tier: RouterOutputTier.OUTPUT_50,\n configuration: RouterOutputConfiguration.mediaLiveInputWithoutConnection({\n availabilityZone: 'us-east-1a',\n }),\n});",
19322
+ "example": "declare const stack: Stack;\n\nconst output = new RouterOutput(stack, 'MediaLiveOutputNoConnection', {\n routerOutputName: 'medialive-output-no-connection',\n maximumBitrate: Bitrate.mbps(15),\n routingScope: RoutingScope.GLOBAL,\n tier: RouterOutputTier.OUTPUT_20,\n configuration: RouterOutputConfiguration.mediaLiveInputWithoutConnection({\n availabilityZone: 'us-east-1a',\n }),\n});",
19220
19323
  "custom": {
19221
19324
  "exampleMetadata": "infused"
19222
19325
  }
@@ -19225,7 +19328,7 @@
19225
19328
  "kind": "interface",
19226
19329
  "locationInModule": {
19227
19330
  "filename": "lib/router-output.ts",
19228
- "line": 495
19331
+ "line": 497
19229
19332
  },
19230
19333
  "name": "MediaLiveNoInputConnectionProps",
19231
19334
  "properties": [
@@ -19238,7 +19341,7 @@
19238
19341
  "immutable": true,
19239
19342
  "locationInModule": {
19240
19343
  "filename": "lib/router-output.ts",
19241
- "line": 497
19344
+ "line": 499
19242
19345
  },
19243
19346
  "name": "availabilityZone",
19244
19347
  "type": {
@@ -19255,7 +19358,7 @@
19255
19358
  "immutable": true,
19256
19359
  "locationInModule": {
19257
19360
  "filename": "lib/router-output.ts",
19258
- "line": 502
19361
+ "line": 504
19259
19362
  },
19260
19363
  "name": "destinationTransitEncryption",
19261
19364
  "optional": true,
@@ -19271,7 +19374,7 @@
19271
19374
  "docs": {
19272
19375
  "stability": "experimental",
19273
19376
  "summary": "MediaLive pipeline options.",
19274
- "example": "declare const stack: Stack;\ndeclare const mediaLiveChannel: medialive.IChannel;\ndeclare const transitSecret: Secret; // must hold the same value as the channel's MediaConnectRouterSettings.shared() secret\n\nconst input = new RouterInput(stack, 'ChannelInput', {\n routerInputName: 'channel-input',\n maximumBitrate: Bitrate.mbps(20),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterInputTier.INPUT_50,\n configuration: RouterInputConfiguration.mediaLiveChannel({\n channel: mediaLiveChannel,\n outputName: 'router-ts',\n pipeline: MediaLivePipeline.PIPELINE_0,\n sourceTransitDecryption: { secret: transitSecret },\n }),\n});",
19377
+ "example": "declare const stack: Stack;\ndeclare const mediaLiveChannel: medialive.IChannel;\ndeclare const transitSecret: Secret; // must hold the same value as the channel's MediaConnectRouterSettings.shared() secret\n\nconst input = new RouterInput(stack, 'ChannelInput', {\n routerInputName: 'channel-input',\n maximumBitrate: Bitrate.mbps(20),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterInputTier.INPUT_20,\n configuration: RouterInputConfiguration.mediaLiveChannel({\n channel: mediaLiveChannel,\n outputName: 'router-ts',\n pipeline: MediaLivePipeline.PIPELINE_0,\n sourceTransitDecryption: { secret: transitSecret },\n }),\n});",
19275
19378
  "custom": {
19276
19379
  "exampleMetadata": "infused"
19277
19380
  }
@@ -20015,7 +20118,7 @@
20015
20118
  "kind": "interface",
20016
20119
  "locationInModule": {
20017
20120
  "filename": "lib/router-input.ts",
20018
- "line": 747
20121
+ "line": 749
20019
20122
  },
20020
20123
  "name": "MergeConfigurationProps",
20021
20124
  "properties": [
@@ -20028,7 +20131,7 @@
20028
20131
  "immutable": true,
20029
20132
  "locationInModule": {
20030
20133
  "filename": "lib/router-input.ts",
20031
- "line": 753
20134
+ "line": 755
20032
20135
  },
20033
20136
  "name": "mergeRecoveryWindow",
20034
20137
  "type": {
@@ -20044,7 +20147,7 @@
20044
20147
  "immutable": true,
20045
20148
  "locationInModule": {
20046
20149
  "filename": "lib/router-input.ts",
20047
- "line": 749
20150
+ "line": 751
20048
20151
  },
20049
20152
  "name": "networkInterface",
20050
20153
  "type": {
@@ -20060,7 +20163,7 @@
20060
20163
  "immutable": true,
20061
20164
  "locationInModule": {
20062
20165
  "filename": "lib/router-input.ts",
20063
- "line": 751
20166
+ "line": 753
20064
20167
  },
20065
20168
  "name": "protocols",
20066
20169
  "type": {
@@ -20082,7 +20185,7 @@
20082
20185
  "immutable": true,
20083
20186
  "locationInModule": {
20084
20187
  "filename": "lib/router-input.ts",
20085
- "line": 759
20188
+ "line": 761
20086
20189
  },
20087
20190
  "name": "availabilityZone",
20088
20191
  "optional": true,
@@ -20995,7 +21098,7 @@
20995
21098
  "docs": {
20996
21099
  "stability": "experimental",
20997
21100
  "summary": "Identifies which protocol in a failover configuration's protocols array is primary.",
20998
- "example": "declare const stack: Stack;\ndeclare const networkInterface: RouterNetworkInterface;\n\nconst input = new RouterInput(stack, 'FailoverInput', {\n routerInputName: 'failover-input',\n maximumBitrate: Bitrate.mbps(10),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterInputTier.INPUT_50,\n configuration: RouterInputConfiguration.failover({\n networkInterface: networkInterface,\n protocols: [\n RouterInputProtocol.rist({\n port: 5000,\n recoveryLatency: Duration.millis(1000),\n }),\n RouterInputProtocol.rist({\n port: 5002, // Must not be consecutive with primary port\n recoveryLatency: Duration.millis(1000),\n }),\n ],\n sourcePriority: SourcePriorityConfig.primarySecondary(PrimarySource.FIRST_SOURCE),\n }),\n});",
21101
+ "example": "declare const stack: Stack;\ndeclare const networkInterface: RouterNetworkInterface;\n\nconst input = new RouterInput(stack, 'FailoverInput', {\n routerInputName: 'failover-input',\n maximumBitrate: Bitrate.mbps(10),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterInputTier.INPUT_20,\n configuration: RouterInputConfiguration.failover({\n networkInterface: networkInterface,\n protocols: [\n RouterInputProtocol.rist({\n port: 5000,\n recoveryLatency: Duration.millis(1000),\n }),\n RouterInputProtocol.rist({\n port: 5002, // Must not be consecutive with primary port\n recoveryLatency: Duration.millis(1000),\n }),\n ],\n sourcePriority: SourcePriorityConfig.primarySecondary(PrimarySource.FIRST_SOURCE),\n }),\n});",
20999
21102
  "custom": {
21000
21103
  "exampleMetadata": "infused"
21001
21104
  }
@@ -21004,7 +21107,7 @@
21004
21107
  "kind": "enum",
21005
21108
  "locationInModule": {
21006
21109
  "filename": "lib/router-input.ts",
21007
- "line": 341
21110
+ "line": 343
21008
21111
  },
21009
21112
  "members": [
21010
21113
  {
@@ -21108,7 +21211,7 @@
21108
21211
  "kind": "interface",
21109
21212
  "locationInModule": {
21110
21213
  "filename": "lib/router-output.ts",
21111
- "line": 242
21214
+ "line": 244
21112
21215
  },
21113
21216
  "name": "RistOutputProtocolProps",
21114
21217
  "properties": [
@@ -21121,7 +21224,7 @@
21121
21224
  "immutable": true,
21122
21225
  "locationInModule": {
21123
21226
  "filename": "lib/router-output.ts",
21124
- "line": 244
21227
+ "line": 246
21125
21228
  },
21126
21229
  "name": "destinationAddress",
21127
21230
  "type": {
@@ -21137,7 +21240,7 @@
21137
21240
  "immutable": true,
21138
21241
  "locationInModule": {
21139
21242
  "filename": "lib/router-output.ts",
21140
- "line": 246
21243
+ "line": 248
21141
21244
  },
21142
21245
  "name": "port",
21143
21246
  "type": {
@@ -21153,7 +21256,7 @@
21153
21256
  "docs": {
21154
21257
  "stability": "experimental",
21155
21258
  "summary": "Properties for RIST protocol configuration.",
21156
- "example": "declare const stack: Stack;\ndeclare const networkInterface: RouterNetworkInterface;\n\nconst input = new RouterInput(stack, 'FailoverInput', {\n routerInputName: 'failover-input',\n maximumBitrate: Bitrate.mbps(10),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterInputTier.INPUT_50,\n configuration: RouterInputConfiguration.failover({\n networkInterface: networkInterface,\n protocols: [\n RouterInputProtocol.rist({\n port: 5000,\n recoveryLatency: Duration.millis(1000),\n }),\n RouterInputProtocol.rist({\n port: 5002, // Must not be consecutive with primary port\n recoveryLatency: Duration.millis(1000),\n }),\n ],\n sourcePriority: SourcePriorityConfig.primarySecondary(PrimarySource.FIRST_SOURCE),\n }),\n});",
21259
+ "example": "declare const stack: Stack;\ndeclare const networkInterface: RouterNetworkInterface;\n\nconst input = new RouterInput(stack, 'FailoverInput', {\n routerInputName: 'failover-input',\n maximumBitrate: Bitrate.mbps(10),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterInputTier.INPUT_20,\n configuration: RouterInputConfiguration.failover({\n networkInterface: networkInterface,\n protocols: [\n RouterInputProtocol.rist({\n port: 5000,\n recoveryLatency: Duration.millis(1000),\n }),\n RouterInputProtocol.rist({\n port: 5002, // Must not be consecutive with primary port\n recoveryLatency: Duration.millis(1000),\n }),\n ],\n sourcePriority: SourcePriorityConfig.primarySecondary(PrimarySource.FIRST_SOURCE),\n }),\n});",
21157
21260
  "custom": {
21158
21261
  "exampleMetadata": "infused"
21159
21262
  }
@@ -21162,7 +21265,7 @@
21162
21265
  "kind": "interface",
21163
21266
  "locationInModule": {
21164
21267
  "filename": "lib/router-input.ts",
21165
- "line": 410
21268
+ "line": 412
21166
21269
  },
21167
21270
  "name": "RistProtocolProps",
21168
21271
  "properties": [
@@ -21175,7 +21278,7 @@
21175
21278
  "immutable": true,
21176
21279
  "locationInModule": {
21177
21280
  "filename": "lib/router-input.ts",
21178
- "line": 412
21281
+ "line": 414
21179
21282
  },
21180
21283
  "name": "port",
21181
21284
  "type": {
@@ -21191,7 +21294,7 @@
21191
21294
  "immutable": true,
21192
21295
  "locationInModule": {
21193
21296
  "filename": "lib/router-input.ts",
21194
- "line": 414
21297
+ "line": 416
21195
21298
  },
21196
21299
  "name": "recoveryLatency",
21197
21300
  "type": {
@@ -21207,7 +21310,7 @@
21207
21310
  "docs": {
21208
21311
  "stability": "experimental",
21209
21312
  "summary": "Defines an AWS Elemental MediaConnect Router Input.",
21210
- "example": "declare const stack: Stack;\ndeclare const mediaLiveChannel: medialive.IChannel;\n\nconst input = new RouterInput(stack, 'ChannelInput', {\n routerInputName: 'channel-input',\n maximumBitrate: Bitrate.mbps(20),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterInputTier.INPUT_50,\n configuration: RouterInputConfiguration.mediaLiveChannel({\n channel: mediaLiveChannel,\n outputName: 'router-ts',\n pipeline: MediaLivePipeline.PIPELINE_0,\n }),\n});",
21313
+ "example": "declare const stack: Stack;\ndeclare const mediaLiveChannel: medialive.IChannel;\n\nconst input = new RouterInput(stack, 'ChannelInput', {\n routerInputName: 'channel-input',\n maximumBitrate: Bitrate.mbps(20),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterInputTier.INPUT_20,\n configuration: RouterInputConfiguration.mediaLiveChannel({\n channel: mediaLiveChannel,\n outputName: 'router-ts',\n pipeline: MediaLivePipeline.PIPELINE_0,\n }),\n});",
21211
21314
  "custom": {
21212
21315
  "exampleMetadata": "infused"
21213
21316
  }
@@ -21219,7 +21322,7 @@
21219
21322
  },
21220
21323
  "locationInModule": {
21221
21324
  "filename": "lib/router-input.ts",
21222
- "line": 1380
21325
+ "line": 1382
21223
21326
  },
21224
21327
  "parameters": [
21225
21328
  {
@@ -21248,7 +21351,7 @@
21248
21351
  "kind": "class",
21249
21352
  "locationInModule": {
21250
21353
  "filename": "lib/router-input.ts",
21251
- "line": 1282
21354
+ "line": 1284
21252
21355
  },
21253
21356
  "methods": [
21254
21357
  {
@@ -21260,7 +21363,7 @@
21260
21363
  },
21261
21364
  "locationInModule": {
21262
21365
  "filename": "lib/router-input.ts",
21263
- "line": 1298
21366
+ "line": 1300
21264
21367
  },
21265
21368
  "name": "fromRouterInputArn",
21266
21369
  "parameters": [
@@ -21308,7 +21411,7 @@
21308
21411
  },
21309
21412
  "locationInModule": {
21310
21413
  "filename": "lib/router-input.ts",
21311
- "line": 1313
21414
+ "line": 1315
21312
21415
  },
21313
21416
  "name": "fromRouterInputAttributes",
21314
21417
  "parameters": [
@@ -21354,7 +21457,7 @@
21354
21457
  },
21355
21458
  "locationInModule": {
21356
21459
  "filename": "lib/router-input.ts",
21357
- "line": 1182
21460
+ "line": 1184
21358
21461
  },
21359
21462
  "name": "metric",
21360
21463
  "overrides": "@aws-cdk/aws-mediaconnect-alpha.IRouterInput",
@@ -21386,7 +21489,7 @@
21386
21489
  },
21387
21490
  "locationInModule": {
21388
21491
  "filename": "lib/router-input.ts",
21389
- "line": 1197
21492
+ "line": 1199
21390
21493
  },
21391
21494
  "name": "metricBitrate",
21392
21495
  "overrides": "@aws-cdk/aws-mediaconnect-alpha.IRouterInput",
@@ -21413,7 +21516,7 @@
21413
21516
  },
21414
21517
  "locationInModule": {
21415
21518
  "filename": "lib/router-input.ts",
21416
- "line": 1233
21519
+ "line": 1235
21417
21520
  },
21418
21521
  "name": "metricConnected",
21419
21522
  "overrides": "@aws-cdk/aws-mediaconnect-alpha.IRouterInput",
@@ -21439,7 +21542,7 @@
21439
21542
  },
21440
21543
  "locationInModule": {
21441
21544
  "filename": "lib/router-input.ts",
21442
- "line": 1245
21545
+ "line": 1247
21443
21546
  },
21444
21547
  "name": "metricContinuityCounterErrors",
21445
21548
  "overrides": "@aws-cdk/aws-mediaconnect-alpha.IRouterInput",
@@ -21465,7 +21568,7 @@
21465
21568
  },
21466
21569
  "locationInModule": {
21467
21570
  "filename": "lib/router-input.ts",
21468
- "line": 1269
21571
+ "line": 1271
21469
21572
  },
21470
21573
  "name": "metricFailoverSwitches",
21471
21574
  "overrides": "@aws-cdk/aws-mediaconnect-alpha.IRouterInput",
@@ -21492,7 +21595,7 @@
21492
21595
  },
21493
21596
  "locationInModule": {
21494
21597
  "filename": "lib/router-input.ts",
21495
- "line": 1257
21598
+ "line": 1259
21496
21599
  },
21497
21600
  "name": "metricLatency",
21498
21601
  "overrides": "@aws-cdk/aws-mediaconnect-alpha.IRouterInput",
@@ -21518,7 +21621,7 @@
21518
21621
  },
21519
21622
  "locationInModule": {
21520
21623
  "filename": "lib/router-input.ts",
21521
- "line": 1209
21624
+ "line": 1211
21522
21625
  },
21523
21626
  "name": "metricNotRecoveredPackets",
21524
21627
  "overrides": "@aws-cdk/aws-mediaconnect-alpha.IRouterInput",
@@ -21544,7 +21647,7 @@
21544
21647
  },
21545
21648
  "locationInModule": {
21546
21649
  "filename": "lib/router-input.ts",
21547
- "line": 1221
21650
+ "line": 1223
21548
21651
  },
21549
21652
  "name": "metricTotalPackets",
21550
21653
  "overrides": "@aws-cdk/aws-mediaconnect-alpha.IRouterInput",
@@ -21575,7 +21678,7 @@
21575
21678
  "immutable": true,
21576
21679
  "locationInModule": {
21577
21680
  "filename": "lib/router-input.ts",
21578
- "line": 1285
21681
+ "line": 1287
21579
21682
  },
21580
21683
  "name": "PROPERTY_INJECTION_ID",
21581
21684
  "static": true,
@@ -21592,7 +21695,7 @@
21592
21695
  "immutable": true,
21593
21696
  "locationInModule": {
21594
21697
  "filename": "lib/router-input.ts",
21595
- "line": 1369
21698
+ "line": 1371
21596
21699
  },
21597
21700
  "name": "endpoints",
21598
21701
  "overrides": "@aws-cdk/aws-mediaconnect-alpha.IRouterInput",
@@ -21613,7 +21716,7 @@
21613
21716
  "immutable": true,
21614
21717
  "locationInModule": {
21615
21718
  "filename": "lib/router-input.ts",
21616
- "line": 1367
21719
+ "line": 1369
21617
21720
  },
21618
21721
  "name": "grants",
21619
21722
  "overrides": "@aws-cdk/aws-mediaconnect-alpha.IRouterInput",
@@ -21629,7 +21732,7 @@
21629
21732
  "immutable": true,
21630
21733
  "locationInModule": {
21631
21734
  "filename": "lib/router-input.ts",
21632
- "line": 1362
21735
+ "line": 1364
21633
21736
  },
21634
21737
  "name": "ipAddress",
21635
21738
  "overrides": "@aws-cdk/aws-mediaconnect-alpha.IRouterInput",
@@ -21645,7 +21748,7 @@
21645
21748
  "immutable": true,
21646
21749
  "locationInModule": {
21647
21750
  "filename": "lib/router-input.ts",
21648
- "line": 1360
21751
+ "line": 1362
21649
21752
  },
21650
21753
  "name": "routerInputArn",
21651
21754
  "overrides": "@aws-cdk/aws-mediaconnect-alpha.IRouterInput",
@@ -21661,7 +21764,7 @@
21661
21764
  "immutable": true,
21662
21765
  "locationInModule": {
21663
21766
  "filename": "lib/router-input.ts",
21664
- "line": 1361
21767
+ "line": 1363
21665
21768
  },
21666
21769
  "name": "routerInputId",
21667
21770
  "overrides": "@aws-cdk/aws-mediaconnect-alpha.IRouterInput",
@@ -21678,7 +21781,7 @@
21678
21781
  "immutable": true,
21679
21782
  "locationInModule": {
21680
21783
  "filename": "lib/router-input.ts",
21681
- "line": 1175
21784
+ "line": 1177
21682
21785
  },
21683
21786
  "name": "routerInputRef",
21684
21787
  "overrides": "aws-cdk-lib.interfaces.aws_mediaconnect.IRouterInputRef",
@@ -21694,7 +21797,7 @@
21694
21797
  "immutable": true,
21695
21798
  "locationInModule": {
21696
21799
  "filename": "lib/router-input.ts",
21697
- "line": 1363
21800
+ "line": 1365
21698
21801
  },
21699
21802
  "name": "createdAt",
21700
21803
  "optional": true,
@@ -21712,7 +21815,7 @@
21712
21815
  "immutable": true,
21713
21816
  "locationInModule": {
21714
21817
  "filename": "lib/router-input.ts",
21715
- "line": 1366
21818
+ "line": 1368
21716
21819
  },
21717
21820
  "name": "transitEncryptionSecret",
21718
21821
  "optional": true,
@@ -21729,7 +21832,7 @@
21729
21832
  "immutable": true,
21730
21833
  "locationInModule": {
21731
21834
  "filename": "lib/router-input.ts",
21732
- "line": 1364
21835
+ "line": 1366
21733
21836
  },
21734
21837
  "name": "updatedAt",
21735
21838
  "optional": true,
@@ -21756,7 +21859,7 @@
21756
21859
  "kind": "interface",
21757
21860
  "locationInModule": {
21758
21861
  "filename": "lib/router-input.ts",
21759
- "line": 307
21862
+ "line": 309
21760
21863
  },
21761
21864
  "name": "RouterInputAttributes",
21762
21865
  "properties": [
@@ -21769,7 +21872,7 @@
21769
21872
  "immutable": true,
21770
21873
  "locationInModule": {
21771
21874
  "filename": "lib/router-input.ts",
21772
- "line": 311
21875
+ "line": 313
21773
21876
  },
21774
21877
  "name": "routerInputArn",
21775
21878
  "type": {
@@ -21786,7 +21889,7 @@
21786
21889
  "immutable": true,
21787
21890
  "locationInModule": {
21788
21891
  "filename": "lib/router-input.ts",
21789
- "line": 325
21892
+ "line": 327
21790
21893
  },
21791
21894
  "name": "ipAddress",
21792
21895
  "optional": true,
@@ -21804,7 +21907,7 @@
21804
21907
  "immutable": true,
21805
21908
  "locationInModule": {
21806
21909
  "filename": "lib/router-input.ts",
21807
- "line": 318
21910
+ "line": 320
21808
21911
  },
21809
21912
  "name": "routerInputId",
21810
21913
  "optional": true,
@@ -21821,7 +21924,7 @@
21821
21924
  "docs": {
21822
21925
  "stability": "experimental",
21823
21926
  "summary": "Factory class for creating Router Input configurations.",
21824
- "example": "declare const stack: Stack;\ndeclare const mediaLiveChannel: medialive.IChannel;\n\nconst input = new RouterInput(stack, 'ChannelInput', {\n routerInputName: 'channel-input',\n maximumBitrate: Bitrate.mbps(20),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterInputTier.INPUT_50,\n configuration: RouterInputConfiguration.mediaLiveChannel({\n channel: mediaLiveChannel,\n outputName: 'router-ts',\n pipeline: MediaLivePipeline.PIPELINE_0,\n }),\n});",
21927
+ "example": "declare const stack: Stack;\ndeclare const mediaLiveChannel: medialive.IChannel;\n\nconst input = new RouterInput(stack, 'ChannelInput', {\n routerInputName: 'channel-input',\n maximumBitrate: Bitrate.mbps(20),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterInputTier.INPUT_20,\n configuration: RouterInputConfiguration.mediaLiveChannel({\n channel: mediaLiveChannel,\n outputName: 'router-ts',\n pipeline: MediaLivePipeline.PIPELINE_0,\n }),\n});",
21825
21928
  "custom": {
21826
21929
  "exampleMetadata": "infused"
21827
21930
  }
@@ -21835,7 +21938,7 @@
21835
21938
  "kind": "class",
21836
21939
  "locationInModule": {
21837
21940
  "filename": "lib/router-input.ts",
21838
- "line": 846
21941
+ "line": 848
21839
21942
  },
21840
21943
  "methods": [
21841
21944
  {
@@ -21849,7 +21952,7 @@
21849
21952
  },
21850
21953
  "locationInModule": {
21851
21954
  "filename": "lib/router-input.ts",
21852
- "line": 862
21955
+ "line": 864
21853
21956
  },
21854
21957
  "name": "failover",
21855
21958
  "parameters": [
@@ -21879,7 +21982,7 @@
21879
21982
  },
21880
21983
  "locationInModule": {
21881
21984
  "filename": "lib/router-input.ts",
21882
- "line": 911
21985
+ "line": 913
21883
21986
  },
21884
21987
  "name": "mediaConnectFlow",
21885
21988
  "parameters": [
@@ -21908,7 +22011,7 @@
21908
22011
  },
21909
22012
  "locationInModule": {
21910
22013
  "filename": "lib/router-input.ts",
21911
- "line": 899
22014
+ "line": 901
21912
22015
  },
21913
22016
  "name": "mediaConnectFlowWithoutConnection",
21914
22017
  "parameters": [
@@ -21938,7 +22041,7 @@
21938
22041
  },
21939
22042
  "locationInModule": {
21940
22043
  "filename": "lib/router-input.ts",
21941
- "line": 928
22044
+ "line": 930
21942
22045
  },
21943
22046
  "name": "mediaLiveChannel",
21944
22047
  "parameters": [
@@ -21968,7 +22071,7 @@
21968
22071
  },
21969
22072
  "locationInModule": {
21970
22073
  "filename": "lib/router-input.ts",
21971
- "line": 945
22074
+ "line": 947
21972
22075
  },
21973
22076
  "name": "mediaLiveChannelWithoutConnection",
21974
22077
  "parameters": [
@@ -22000,7 +22103,7 @@
22000
22103
  },
22001
22104
  "locationInModule": {
22002
22105
  "filename": "lib/router-input.ts",
22003
- "line": 879
22106
+ "line": 881
22004
22107
  },
22005
22108
  "name": "merge",
22006
22109
  "parameters": [
@@ -22029,7 +22132,7 @@
22029
22132
  },
22030
22133
  "locationInModule": {
22031
22134
  "filename": "lib/router-input.ts",
22032
- "line": 852
22135
+ "line": 854
22033
22136
  },
22034
22137
  "name": "standard",
22035
22138
  "parameters": [
@@ -22293,7 +22396,7 @@
22293
22396
  "docs": {
22294
22397
  "stability": "experimental",
22295
22398
  "summary": "Properties for creating a Router Input.",
22296
- "example": "declare const stack: Stack;\ndeclare const mediaLiveChannel: medialive.IChannel;\n\nconst input = new RouterInput(stack, 'ChannelInput', {\n routerInputName: 'channel-input',\n maximumBitrate: Bitrate.mbps(20),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterInputTier.INPUT_50,\n configuration: RouterInputConfiguration.mediaLiveChannel({\n channel: mediaLiveChannel,\n outputName: 'router-ts',\n pipeline: MediaLivePipeline.PIPELINE_0,\n }),\n});",
22399
+ "example": "declare const stack: Stack;\ndeclare const mediaLiveChannel: medialive.IChannel;\n\nconst input = new RouterInput(stack, 'ChannelInput', {\n routerInputName: 'channel-input',\n maximumBitrate: Bitrate.mbps(20),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterInputTier.INPUT_20,\n configuration: RouterInputConfiguration.mediaLiveChannel({\n channel: mediaLiveChannel,\n outputName: 'router-ts',\n pipeline: MediaLivePipeline.PIPELINE_0,\n }),\n});",
22297
22400
  "custom": {
22298
22401
  "exampleMetadata": "infused"
22299
22402
  }
@@ -22302,7 +22405,7 @@
22302
22405
  "kind": "interface",
22303
22406
  "locationInModule": {
22304
22407
  "filename": "lib/router-input.ts",
22305
- "line": 261
22408
+ "line": 262
22306
22409
  },
22307
22410
  "name": "RouterInputProps",
22308
22411
  "properties": [
@@ -22315,7 +22418,7 @@
22315
22418
  "immutable": true,
22316
22419
  "locationInModule": {
22317
22420
  "filename": "lib/router-input.ts",
22318
- "line": 277
22421
+ "line": 279
22319
22422
  },
22320
22423
  "name": "configuration",
22321
22424
  "type": {
@@ -22325,13 +22428,14 @@
22325
22428
  {
22326
22429
  "abstract": true,
22327
22430
  "docs": {
22431
+ "remarks": "Must fall within the limits of the selected `tier`.",
22328
22432
  "stability": "experimental",
22329
22433
  "summary": "The maximum bitrate for the router input."
22330
22434
  },
22331
22435
  "immutable": true,
22332
22436
  "locationInModule": {
22333
22437
  "filename": "lib/router-input.ts",
22334
- "line": 268
22438
+ "line": 269
22335
22439
  },
22336
22440
  "name": "maximumBitrate",
22337
22441
  "type": {
@@ -22347,7 +22451,7 @@
22347
22451
  "immutable": true,
22348
22452
  "locationInModule": {
22349
22453
  "filename": "lib/router-input.ts",
22350
- "line": 270
22454
+ "line": 271
22351
22455
  },
22352
22456
  "name": "routingScope",
22353
22457
  "type": {
@@ -22364,7 +22468,7 @@
22364
22468
  "immutable": true,
22365
22469
  "locationInModule": {
22366
22470
  "filename": "lib/router-input.ts",
22367
- "line": 282
22471
+ "line": 284
22368
22472
  },
22369
22473
  "name": "maintenanceConfiguration",
22370
22474
  "optional": true,
@@ -22382,7 +22486,7 @@
22382
22486
  "immutable": true,
22383
22487
  "locationInModule": {
22384
22488
  "filename": "lib/router-input.ts",
22385
- "line": 287
22489
+ "line": 289
22386
22490
  },
22387
22491
  "name": "regionName",
22388
22492
  "optional": true,
@@ -22400,7 +22504,7 @@
22400
22504
  "immutable": true,
22401
22505
  "locationInModule": {
22402
22506
  "filename": "lib/router-input.ts",
22403
- "line": 266
22507
+ "line": 267
22404
22508
  },
22405
22509
  "name": "routerInputName",
22406
22510
  "optional": true,
@@ -22418,7 +22522,7 @@
22418
22522
  "immutable": true,
22419
22523
  "locationInModule": {
22420
22524
  "filename": "lib/router-input.ts",
22421
- "line": 292
22525
+ "line": 294
22422
22526
  },
22423
22527
  "name": "tags",
22424
22528
  "optional": true,
@@ -22435,13 +22539,14 @@
22435
22539
  "abstract": true,
22436
22540
  "docs": {
22437
22541
  "default": "RouterInputTier.INPUT_20",
22542
+ "remarks": "The tier determines the capacity limits, performance characteristics,\nand associated costs; `maximumBitrate` must fall within its limits.",
22438
22543
  "stability": "experimental",
22439
- "summary": "Select a tier based on your maximum bitrate requirements."
22544
+ "summary": "Tier for this input."
22440
22545
  },
22441
22546
  "immutable": true,
22442
22547
  "locationInModule": {
22443
22548
  "filename": "lib/router-input.ts",
22444
- "line": 275
22549
+ "line": 277
22445
22550
  },
22446
22551
  "name": "tier",
22447
22552
  "optional": true,
@@ -22460,7 +22565,7 @@
22460
22565
  "immutable": true,
22461
22566
  "locationInModule": {
22462
22567
  "filename": "lib/router-input.ts",
22463
- "line": 301
22568
+ "line": 303
22464
22569
  },
22465
22570
  "name": "transitEncryption",
22466
22571
  "optional": true,
@@ -22485,7 +22590,7 @@
22485
22590
  "kind": "class",
22486
22591
  "locationInModule": {
22487
22592
  "filename": "lib/router-input.ts",
22488
- "line": 468
22593
+ "line": 470
22489
22594
  },
22490
22595
  "methods": [
22491
22596
  {
@@ -22496,7 +22601,7 @@
22496
22601
  },
22497
22602
  "locationInModule": {
22498
22603
  "filename": "lib/router-input.ts",
22499
- "line": 489
22604
+ "line": 491
22500
22605
  },
22501
22606
  "name": "rist",
22502
22607
  "parameters": [
@@ -22525,7 +22630,7 @@
22525
22630
  },
22526
22631
  "locationInModule": {
22527
22632
  "filename": "lib/router-input.ts",
22528
- "line": 474
22633
+ "line": 476
22529
22634
  },
22530
22635
  "name": "rtp",
22531
22636
  "parameters": [
@@ -22554,7 +22659,7 @@
22554
22659
  },
22555
22660
  "locationInModule": {
22556
22661
  "filename": "lib/router-input.ts",
22557
- "line": 519
22662
+ "line": 521
22558
22663
  },
22559
22664
  "name": "srtCaller",
22560
22665
  "parameters": [
@@ -22583,7 +22688,7 @@
22583
22688
  },
22584
22689
  "locationInModule": {
22585
22690
  "filename": "lib/router-input.ts",
22586
- "line": 504
22691
+ "line": 506
22587
22692
  },
22588
22693
  "name": "srtListener",
22589
22694
  "parameters": [
@@ -22761,9 +22866,10 @@
22761
22866
  "@aws-cdk/aws-mediaconnect-alpha.RouterInputTier": {
22762
22867
  "assembly": "@aws-cdk/aws-mediaconnect-alpha",
22763
22868
  "docs": {
22869
+ "remarks": "The tier determines the capacity limits, performance characteristics,\nand associated costs. The `maximumBitrate` must fall within the limits of the selected tier.",
22764
22870
  "stability": "experimental",
22765
- "summary": "Routing tier based on your maximum bitrate requirements.",
22766
- "example": "declare const stack: Stack;\ndeclare const mediaLiveChannel: medialive.IChannel;\ndeclare const transitSecret: Secret; // must hold the same value as the channel's MediaConnectRouterSettings.shared() secret\n\nconst input = new RouterInput(stack, 'ChannelInput', {\n routerInputName: 'channel-input',\n maximumBitrate: Bitrate.mbps(20),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterInputTier.INPUT_50,\n configuration: RouterInputConfiguration.mediaLiveChannel({\n channel: mediaLiveChannel,\n outputName: 'router-ts',\n pipeline: MediaLivePipeline.PIPELINE_0,\n sourceTransitDecryption: { secret: transitSecret },\n }),\n});",
22871
+ "summary": "Tier for a router input.",
22872
+ "example": "declare const stack: Stack;\ndeclare const mediaLiveChannel: medialive.IChannel;\ndeclare const transitSecret: Secret; // must hold the same value as the channel's MediaConnectRouterSettings.shared() secret\n\nconst input = new RouterInput(stack, 'ChannelInput', {\n routerInputName: 'channel-input',\n maximumBitrate: Bitrate.mbps(20),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterInputTier.INPUT_20,\n configuration: RouterInputConfiguration.mediaLiveChannel({\n channel: mediaLiveChannel,\n outputName: 'router-ts',\n pipeline: MediaLivePipeline.PIPELINE_0,\n sourceTransitDecryption: { secret: transitSecret },\n }),\n});",
22767
22873
  "custom": {
22768
22874
  "exampleMetadata": "infused"
22769
22875
  }
@@ -22772,7 +22878,7 @@
22772
22878
  "kind": "class",
22773
22879
  "locationInModule": {
22774
22880
  "filename": "lib/router-input.ts",
22775
- "line": 223
22881
+ "line": 224
22776
22882
  },
22777
22883
  "methods": [
22778
22884
  {
@@ -22782,7 +22888,7 @@
22782
22888
  },
22783
22889
  "locationInModule": {
22784
22890
  "filename": "lib/router-input.ts",
22785
- "line": 235
22891
+ "line": 236
22786
22892
  },
22787
22893
  "name": "of",
22788
22894
  "parameters": [
@@ -22810,7 +22916,7 @@
22810
22916
  },
22811
22917
  "locationInModule": {
22812
22918
  "filename": "lib/router-input.ts",
22813
- "line": 243
22919
+ "line": 244
22814
22920
  },
22815
22921
  "name": "toString",
22816
22922
  "returns": {
@@ -22831,7 +22937,7 @@
22831
22937
  "immutable": true,
22832
22938
  "locationInModule": {
22833
22939
  "filename": "lib/router-input.ts",
22834
- "line": 225
22940
+ "line": 226
22835
22941
  },
22836
22942
  "name": "INPUT_100",
22837
22943
  "static": true,
@@ -22848,7 +22954,7 @@
22848
22954
  "immutable": true,
22849
22955
  "locationInModule": {
22850
22956
  "filename": "lib/router-input.ts",
22851
- "line": 229
22957
+ "line": 230
22852
22958
  },
22853
22959
  "name": "INPUT_20",
22854
22960
  "static": true,
@@ -22865,7 +22971,7 @@
22865
22971
  "immutable": true,
22866
22972
  "locationInModule": {
22867
22973
  "filename": "lib/router-input.ts",
22868
- "line": 227
22974
+ "line": 228
22869
22975
  },
22870
22976
  "name": "INPUT_50",
22871
22977
  "static": true,
@@ -22881,7 +22987,7 @@
22881
22987
  "immutable": true,
22882
22988
  "locationInModule": {
22883
22989
  "filename": "lib/router-input.ts",
22884
- "line": 240
22990
+ "line": 241
22885
22991
  },
22886
22992
  "name": "value",
22887
22993
  "type": {
@@ -23398,7 +23504,7 @@
23398
23504
  },
23399
23505
  "locationInModule": {
23400
23506
  "filename": "lib/router-output.ts",
23401
- "line": 903
23507
+ "line": 905
23402
23508
  },
23403
23509
  "parameters": [
23404
23510
  {
@@ -23427,7 +23533,7 @@
23427
23533
  "kind": "class",
23428
23534
  "locationInModule": {
23429
23535
  "filename": "lib/router-output.ts",
23430
- "line": 823
23536
+ "line": 825
23431
23537
  },
23432
23538
  "methods": [
23433
23539
  {
@@ -23439,7 +23545,7 @@
23439
23545
  },
23440
23546
  "locationInModule": {
23441
23547
  "filename": "lib/router-output.ts",
23442
- "line": 840
23548
+ "line": 842
23443
23549
  },
23444
23550
  "name": "fromRouterOutputArn",
23445
23551
  "parameters": [
@@ -23487,7 +23593,7 @@
23487
23593
  },
23488
23594
  "locationInModule": {
23489
23595
  "filename": "lib/router-output.ts",
23490
- "line": 854
23596
+ "line": 856
23491
23597
  },
23492
23598
  "name": "fromRouterOutputAttributes",
23493
23599
  "parameters": [
@@ -23533,7 +23639,7 @@
23533
23639
  },
23534
23640
  "locationInModule": {
23535
23641
  "filename": "lib/router-output.ts",
23536
- "line": 759
23642
+ "line": 761
23537
23643
  },
23538
23644
  "name": "metric",
23539
23645
  "overrides": "@aws-cdk/aws-mediaconnect-alpha.IRouterOutput",
@@ -23566,7 +23672,7 @@
23566
23672
  },
23567
23673
  "locationInModule": {
23568
23674
  "filename": "lib/router-output.ts",
23569
- "line": 810
23675
+ "line": 812
23570
23676
  },
23571
23677
  "name": "metricArqRequests",
23572
23678
  "overrides": "@aws-cdk/aws-mediaconnect-alpha.IRouterOutput",
@@ -23592,7 +23698,7 @@
23592
23698
  },
23593
23699
  "locationInModule": {
23594
23700
  "filename": "lib/router-output.ts",
23595
- "line": 774
23701
+ "line": 776
23596
23702
  },
23597
23703
  "name": "metricBitrate",
23598
23704
  "overrides": "@aws-cdk/aws-mediaconnect-alpha.IRouterOutput",
@@ -23619,7 +23725,7 @@
23619
23725
  },
23620
23726
  "locationInModule": {
23621
23727
  "filename": "lib/router-output.ts",
23622
- "line": 798
23728
+ "line": 800
23623
23729
  },
23624
23730
  "name": "metricConnected",
23625
23731
  "overrides": "@aws-cdk/aws-mediaconnect-alpha.IRouterOutput",
@@ -23645,7 +23751,7 @@
23645
23751
  },
23646
23752
  "locationInModule": {
23647
23753
  "filename": "lib/router-output.ts",
23648
- "line": 786
23754
+ "line": 788
23649
23755
  },
23650
23756
  "name": "metricTotalPackets",
23651
23757
  "overrides": "@aws-cdk/aws-mediaconnect-alpha.IRouterOutput",
@@ -23676,7 +23782,7 @@
23676
23782
  "immutable": true,
23677
23783
  "locationInModule": {
23678
23784
  "filename": "lib/router-output.ts",
23679
- "line": 826
23785
+ "line": 828
23680
23786
  },
23681
23787
  "name": "PROPERTY_INJECTION_ID",
23682
23788
  "static": true,
@@ -23692,7 +23798,7 @@
23692
23798
  "immutable": true,
23693
23799
  "locationInModule": {
23694
23800
  "filename": "lib/router-output.ts",
23695
- "line": 899
23801
+ "line": 901
23696
23802
  },
23697
23803
  "name": "ipAddress",
23698
23804
  "overrides": "@aws-cdk/aws-mediaconnect-alpha.IRouterOutput",
@@ -23708,7 +23814,7 @@
23708
23814
  "immutable": true,
23709
23815
  "locationInModule": {
23710
23816
  "filename": "lib/router-output.ts",
23711
- "line": 896
23817
+ "line": 898
23712
23818
  },
23713
23819
  "name": "routerOutputArn",
23714
23820
  "overrides": "@aws-cdk/aws-mediaconnect-alpha.IRouterOutput",
@@ -23724,7 +23830,7 @@
23724
23830
  "immutable": true,
23725
23831
  "locationInModule": {
23726
23832
  "filename": "lib/router-output.ts",
23727
- "line": 898
23833
+ "line": 900
23728
23834
  },
23729
23835
  "name": "routerOutputId",
23730
23836
  "overrides": "@aws-cdk/aws-mediaconnect-alpha.IRouterOutput",
@@ -23740,7 +23846,7 @@
23740
23846
  "immutable": true,
23741
23847
  "locationInModule": {
23742
23848
  "filename": "lib/router-output.ts",
23743
- "line": 897
23849
+ "line": 899
23744
23850
  },
23745
23851
  "name": "routerOutputName",
23746
23852
  "overrides": "@aws-cdk/aws-mediaconnect-alpha.IRouterOutput",
@@ -23757,7 +23863,7 @@
23757
23863
  "immutable": true,
23758
23864
  "locationInModule": {
23759
23865
  "filename": "lib/router-output.ts",
23760
- "line": 752
23866
+ "line": 754
23761
23867
  },
23762
23868
  "name": "routerOutputRef",
23763
23869
  "overrides": "aws-cdk-lib.interfaces.aws_mediaconnect.IRouterOutputRef",
@@ -23773,7 +23879,7 @@
23773
23879
  "immutable": true,
23774
23880
  "locationInModule": {
23775
23881
  "filename": "lib/router-output.ts",
23776
- "line": 900
23882
+ "line": 902
23777
23883
  },
23778
23884
  "name": "createdAt",
23779
23885
  "optional": true,
@@ -23790,7 +23896,7 @@
23790
23896
  "immutable": true,
23791
23897
  "locationInModule": {
23792
23898
  "filename": "lib/router-output.ts",
23793
- "line": 901
23899
+ "line": 903
23794
23900
  },
23795
23901
  "name": "updatedAt",
23796
23902
  "optional": true,
@@ -23817,7 +23923,7 @@
23817
23923
  "kind": "interface",
23818
23924
  "locationInModule": {
23819
23925
  "filename": "lib/router-output.ts",
23820
- "line": 200
23926
+ "line": 202
23821
23927
  },
23822
23928
  "name": "RouterOutputAttributes",
23823
23929
  "properties": [
@@ -23830,7 +23936,7 @@
23830
23936
  "immutable": true,
23831
23937
  "locationInModule": {
23832
23938
  "filename": "lib/router-output.ts",
23833
- "line": 204
23939
+ "line": 206
23834
23940
  },
23835
23941
  "name": "routerOutputArn",
23836
23942
  "type": {
@@ -23847,7 +23953,7 @@
23847
23953
  "immutable": true,
23848
23954
  "locationInModule": {
23849
23955
  "filename": "lib/router-output.ts",
23850
- "line": 221
23956
+ "line": 223
23851
23957
  },
23852
23958
  "name": "routerOutputId",
23853
23959
  "optional": true,
@@ -23866,7 +23972,7 @@
23866
23972
  "immutable": true,
23867
23973
  "locationInModule": {
23868
23974
  "filename": "lib/router-output.ts",
23869
- "line": 214
23975
+ "line": 216
23870
23976
  },
23871
23977
  "name": "routerOutputName",
23872
23978
  "optional": true,
@@ -23897,7 +24003,7 @@
23897
24003
  "kind": "class",
23898
24004
  "locationInModule": {
23899
24005
  "filename": "lib/router-output.ts",
23900
- "line": 534
24006
+ "line": 536
23901
24007
  },
23902
24008
  "methods": [
23903
24009
  {
@@ -23910,7 +24016,7 @@
23910
24016
  },
23911
24017
  "locationInModule": {
23912
24018
  "filename": "lib/router-output.ts",
23913
- "line": 602
24019
+ "line": 604
23914
24020
  },
23915
24021
  "name": "mediaConnectFlow",
23916
24022
  "parameters": [
@@ -23941,7 +24047,7 @@
23941
24047
  },
23942
24048
  "locationInModule": {
23943
24049
  "filename": "lib/router-output.ts",
23944
- "line": 623
24050
+ "line": 625
23945
24051
  },
23946
24052
  "name": "mediaConnectFlowWithoutConnection",
23947
24053
  "parameters": [
@@ -23970,7 +24076,7 @@
23970
24076
  },
23971
24077
  "locationInModule": {
23972
24078
  "filename": "lib/router-output.ts",
23973
- "line": 564
24079
+ "line": 566
23974
24080
  },
23975
24081
  "name": "mediaLiveInput",
23976
24082
  "parameters": [
@@ -23999,7 +24105,7 @@
23999
24105
  },
24000
24106
  "locationInModule": {
24001
24107
  "filename": "lib/router-output.ts",
24002
- "line": 579
24108
+ "line": 581
24003
24109
  },
24004
24110
  "name": "mediaLiveInputWithoutConnection",
24005
24111
  "parameters": [
@@ -24029,7 +24135,7 @@
24029
24135
  },
24030
24136
  "locationInModule": {
24031
24137
  "filename": "lib/router-output.ts",
24032
- "line": 553
24138
+ "line": 555
24033
24139
  },
24034
24140
  "name": "standard",
24035
24141
  "parameters": [
@@ -24069,7 +24175,7 @@
24069
24175
  "kind": "interface",
24070
24176
  "locationInModule": {
24071
24177
  "filename": "lib/router-output.ts",
24072
- "line": 162
24178
+ "line": 163
24073
24179
  },
24074
24180
  "name": "RouterOutputProps",
24075
24181
  "properties": [
@@ -24082,7 +24188,7 @@
24082
24188
  "immutable": true,
24083
24189
  "locationInModule": {
24084
24190
  "filename": "lib/router-output.ts",
24085
- "line": 179
24191
+ "line": 181
24086
24192
  },
24087
24193
  "name": "configuration",
24088
24194
  "type": {
@@ -24092,13 +24198,14 @@
24092
24198
  {
24093
24199
  "abstract": true,
24094
24200
  "docs": {
24201
+ "remarks": "Must fall within the limits of the selected `tier`.",
24095
24202
  "stability": "experimental",
24096
24203
  "summary": "The maximum bitrate for the router output."
24097
24204
  },
24098
24205
  "immutable": true,
24099
24206
  "locationInModule": {
24100
24207
  "filename": "lib/router-output.ts",
24101
- "line": 169
24208
+ "line": 170
24102
24209
  },
24103
24210
  "name": "maximumBitrate",
24104
24211
  "type": {
@@ -24114,7 +24221,7 @@
24114
24221
  "immutable": true,
24115
24222
  "locationInModule": {
24116
24223
  "filename": "lib/router-output.ts",
24117
- "line": 171
24224
+ "line": 172
24118
24225
  },
24119
24226
  "name": "routingScope",
24120
24227
  "type": {
@@ -24131,7 +24238,7 @@
24131
24238
  "immutable": true,
24132
24239
  "locationInModule": {
24133
24240
  "filename": "lib/router-output.ts",
24134
- "line": 184
24241
+ "line": 186
24135
24242
  },
24136
24243
  "name": "maintenanceConfiguration",
24137
24244
  "optional": true,
@@ -24149,7 +24256,7 @@
24149
24256
  "immutable": true,
24150
24257
  "locationInModule": {
24151
24258
  "filename": "lib/router-output.ts",
24152
- "line": 189
24259
+ "line": 191
24153
24260
  },
24154
24261
  "name": "regionName",
24155
24262
  "optional": true,
@@ -24167,7 +24274,7 @@
24167
24274
  "immutable": true,
24168
24275
  "locationInModule": {
24169
24276
  "filename": "lib/router-output.ts",
24170
- "line": 167
24277
+ "line": 168
24171
24278
  },
24172
24279
  "name": "routerOutputName",
24173
24280
  "optional": true,
@@ -24185,7 +24292,7 @@
24185
24292
  "immutable": true,
24186
24293
  "locationInModule": {
24187
24294
  "filename": "lib/router-output.ts",
24188
- "line": 194
24295
+ "line": 196
24189
24296
  },
24190
24297
  "name": "tags",
24191
24298
  "optional": true,
@@ -24202,13 +24309,14 @@
24202
24309
  "abstract": true,
24203
24310
  "docs": {
24204
24311
  "default": "RouterOutputTier.OUTPUT_20",
24312
+ "remarks": "The tier determines the capacity limits, performance characteristics,\nand associated costs; `maximumBitrate` must fall within its limits.",
24205
24313
  "stability": "experimental",
24206
- "summary": "Routing tier that determines the maximum bitrate (in Mbps) for this output."
24314
+ "summary": "Tier for this output."
24207
24315
  },
24208
24316
  "immutable": true,
24209
24317
  "locationInModule": {
24210
24318
  "filename": "lib/router-output.ts",
24211
- "line": 177
24319
+ "line": 179
24212
24320
  },
24213
24321
  "name": "tier",
24214
24322
  "optional": true,
@@ -24234,7 +24342,7 @@
24234
24342
  "kind": "class",
24235
24343
  "locationInModule": {
24236
24344
  "filename": "lib/router-output.ts",
24237
- "line": 291
24345
+ "line": 293
24238
24346
  },
24239
24347
  "methods": [
24240
24348
  {
@@ -24246,7 +24354,7 @@
24246
24354
  },
24247
24355
  "locationInModule": {
24248
24356
  "filename": "lib/router-output.ts",
24249
- "line": 329
24357
+ "line": 331
24250
24358
  },
24251
24359
  "name": "rist",
24252
24360
  "parameters": [
@@ -24276,7 +24384,7 @@
24276
24384
  },
24277
24385
  "locationInModule": {
24278
24386
  "filename": "lib/router-output.ts",
24279
- "line": 305
24387
+ "line": 307
24280
24388
  },
24281
24389
  "name": "rtp",
24282
24390
  "parameters": [
@@ -24306,7 +24414,7 @@
24306
24414
  },
24307
24415
  "locationInModule": {
24308
24416
  "filename": "lib/router-output.ts",
24309
- "line": 376
24417
+ "line": 378
24310
24418
  },
24311
24419
  "name": "srtCaller",
24312
24420
  "parameters": [
@@ -24336,7 +24444,7 @@
24336
24444
  },
24337
24445
  "locationInModule": {
24338
24446
  "filename": "lib/router-output.ts",
24339
- "line": 352
24447
+ "line": 354
24340
24448
  },
24341
24449
  "name": "srtListener",
24342
24450
  "parameters": [
@@ -24514,9 +24622,10 @@
24514
24622
  "@aws-cdk/aws-mediaconnect-alpha.RouterOutputTier": {
24515
24623
  "assembly": "@aws-cdk/aws-mediaconnect-alpha",
24516
24624
  "docs": {
24625
+ "remarks": "The tier determines the capacity limits, performance characteristics,\nand associated costs. The `maximumBitrate` must fall within the limits of the selected tier.",
24517
24626
  "stability": "experimental",
24518
- "summary": "Routing tier that determines the maximum bitrate (in Mbps) for a Router Output.",
24519
- "example": "declare const stack: Stack;\ndeclare const mediaLiveInput: medialive.IInput;\n\nconst output = new RouterOutput(stack, 'MediaLiveOutput', {\n routerOutputName: 'medialive-output',\n maximumBitrate: Bitrate.mbps(15),\n routingScope: RoutingScope.GLOBAL,\n tier: RouterOutputTier.OUTPUT_50,\n configuration: RouterOutputConfiguration.mediaLiveInput({\n input: mediaLiveInput,\n pipeline: MediaLivePipeline.PIPELINE_0,\n }),\n});",
24627
+ "summary": "Tier for a router output.",
24628
+ "example": "declare const stack: Stack;\ndeclare const mediaLiveInput: medialive.IInput;\n\nconst output = new RouterOutput(stack, 'MediaLiveOutput', {\n routerOutputName: 'medialive-output',\n maximumBitrate: Bitrate.mbps(15),\n routingScope: RoutingScope.GLOBAL,\n tier: RouterOutputTier.OUTPUT_20,\n configuration: RouterOutputConfiguration.mediaLiveInput({\n input: mediaLiveInput,\n pipeline: MediaLivePipeline.PIPELINE_0,\n }),\n});",
24520
24629
  "custom": {
24521
24630
  "exampleMetadata": "infused"
24522
24631
  }
@@ -24525,7 +24634,7 @@
24525
24634
  "kind": "class",
24526
24635
  "locationInModule": {
24527
24636
  "filename": "lib/router-output.ts",
24528
- "line": 52
24637
+ "line": 53
24529
24638
  },
24530
24639
  "methods": [
24531
24640
  {
@@ -24535,7 +24644,7 @@
24535
24644
  },
24536
24645
  "locationInModule": {
24537
24646
  "filename": "lib/router-output.ts",
24538
- "line": 64
24647
+ "line": 65
24539
24648
  },
24540
24649
  "name": "of",
24541
24650
  "parameters": [
@@ -24563,7 +24672,7 @@
24563
24672
  },
24564
24673
  "locationInModule": {
24565
24674
  "filename": "lib/router-output.ts",
24566
- "line": 72
24675
+ "line": 73
24567
24676
  },
24568
24677
  "name": "toString",
24569
24678
  "returns": {
@@ -24584,7 +24693,7 @@
24584
24693
  "immutable": true,
24585
24694
  "locationInModule": {
24586
24695
  "filename": "lib/router-output.ts",
24587
- "line": 54
24696
+ "line": 55
24588
24697
  },
24589
24698
  "name": "OUTPUT_100",
24590
24699
  "static": true,
@@ -24601,7 +24710,7 @@
24601
24710
  "immutable": true,
24602
24711
  "locationInModule": {
24603
24712
  "filename": "lib/router-output.ts",
24604
- "line": 58
24713
+ "line": 59
24605
24714
  },
24606
24715
  "name": "OUTPUT_20",
24607
24716
  "static": true,
@@ -24618,7 +24727,7 @@
24618
24727
  "immutable": true,
24619
24728
  "locationInModule": {
24620
24729
  "filename": "lib/router-output.ts",
24621
- "line": 56
24730
+ "line": 57
24622
24731
  },
24623
24732
  "name": "OUTPUT_50",
24624
24733
  "static": true,
@@ -24634,7 +24743,7 @@
24634
24743
  "immutable": true,
24635
24744
  "locationInModule": {
24636
24745
  "filename": "lib/router-output.ts",
24637
- "line": 69
24746
+ "line": 70
24638
24747
  },
24639
24748
  "name": "value",
24640
24749
  "type": {
@@ -24710,7 +24819,7 @@
24710
24819
  "see": "https://docs.aws.amazon.com/mediaconnect/latest/ug/cross-service-confused-deputy-prevention.html",
24711
24820
  "stability": "experimental",
24712
24821
  "summary": "SRT encryption configuration for router inputs and outputs (SRT Listener and SRT Caller).",
24713
- "example": "declare const stack: Stack;\ndeclare const networkInterface: RouterNetworkInterface;\ndeclare const role: iam.IRole;\ndeclare const secret: secretsmanager.ISecret;\n\nconst output = new RouterOutput(stack, 'EncryptedOutput', {\n routerOutputName: 'encrypted-output',\n maximumBitrate: Bitrate.mbps(10),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterOutputTier.OUTPUT_50,\n configuration: RouterOutputConfiguration.standard({\n protocol: RouterOutputProtocol.srtCaller({\n destinationAddress: '203.0.113.100',\n destinationPort: 9001,\n minimumLatency: Duration.millis(200),\n encryptionConfiguration: { role, secret },\n }),\n networkInterface: networkInterface,\n }),\n});",
24822
+ "example": "declare const stack: Stack;\ndeclare const networkInterface: RouterNetworkInterface;\ndeclare const role: iam.IRole;\ndeclare const secret: secretsmanager.ISecret;\n\nconst output = new RouterOutput(stack, 'EncryptedOutput', {\n routerOutputName: 'encrypted-output',\n maximumBitrate: Bitrate.mbps(10),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterOutputTier.OUTPUT_20,\n configuration: RouterOutputConfiguration.standard({\n protocol: RouterOutputProtocol.srtCaller({\n destinationAddress: '203.0.113.100',\n destinationPort: 9001,\n minimumLatency: Duration.millis(200),\n encryptionConfiguration: { role, secret },\n }),\n networkInterface: networkInterface,\n }),\n});",
24714
24823
  "custom": {
24715
24824
  "exampleMetadata": "infused"
24716
24825
  }
@@ -24806,7 +24915,7 @@
24806
24915
  "docs": {
24807
24916
  "stability": "experimental",
24808
24917
  "summary": "Routing scope for the Router Input.",
24809
- "example": "declare const stack: Stack;\ndeclare const mediaLiveChannel: medialive.IChannel;\n\nconst input = new RouterInput(stack, 'ChannelInput', {\n routerInputName: 'channel-input',\n maximumBitrate: Bitrate.mbps(20),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterInputTier.INPUT_50,\n configuration: RouterInputConfiguration.mediaLiveChannel({\n channel: mediaLiveChannel,\n outputName: 'router-ts',\n pipeline: MediaLivePipeline.PIPELINE_0,\n }),\n});",
24918
+ "example": "declare const stack: Stack;\ndeclare const mediaLiveChannel: medialive.IChannel;\n\nconst input = new RouterInput(stack, 'ChannelInput', {\n routerInputName: 'channel-input',\n maximumBitrate: Bitrate.mbps(20),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterInputTier.INPUT_20,\n configuration: RouterInputConfiguration.mediaLiveChannel({\n channel: mediaLiveChannel,\n outputName: 'router-ts',\n pipeline: MediaLivePipeline.PIPELINE_0,\n }),\n});",
24810
24919
  "custom": {
24811
24920
  "exampleMetadata": "infused"
24812
24921
  }
@@ -25045,7 +25154,7 @@
25045
25154
  "kind": "interface",
25046
25155
  "locationInModule": {
25047
25156
  "filename": "lib/router-output.ts",
25048
- "line": 227
25157
+ "line": 229
25049
25158
  },
25050
25159
  "name": "RtpOutputProtocolProps",
25051
25160
  "properties": [
@@ -25058,7 +25167,7 @@
25058
25167
  "immutable": true,
25059
25168
  "locationInModule": {
25060
25169
  "filename": "lib/router-output.ts",
25061
- "line": 229
25170
+ "line": 231
25062
25171
  },
25063
25172
  "name": "destinationAddress",
25064
25173
  "type": {
@@ -25074,7 +25183,7 @@
25074
25183
  "immutable": true,
25075
25184
  "locationInModule": {
25076
25185
  "filename": "lib/router-output.ts",
25077
- "line": 231
25186
+ "line": 233
25078
25187
  },
25079
25188
  "name": "port",
25080
25189
  "type": {
@@ -25091,7 +25200,7 @@
25091
25200
  "immutable": true,
25092
25201
  "locationInModule": {
25093
25202
  "filename": "lib/router-output.ts",
25094
- "line": 236
25203
+ "line": 238
25095
25204
  },
25096
25205
  "name": "forwardErrorCorrection",
25097
25206
  "optional": true,
@@ -25117,7 +25226,7 @@
25117
25226
  "kind": "interface",
25118
25227
  "locationInModule": {
25119
25228
  "filename": "lib/router-input.ts",
25120
- "line": 397
25229
+ "line": 399
25121
25230
  },
25122
25231
  "name": "RtpProtocolProps",
25123
25232
  "properties": [
@@ -25130,7 +25239,7 @@
25130
25239
  "immutable": true,
25131
25240
  "locationInModule": {
25132
25241
  "filename": "lib/router-input.ts",
25133
- "line": 399
25242
+ "line": 401
25134
25243
  },
25135
25244
  "name": "port",
25136
25245
  "type": {
@@ -25147,7 +25256,7 @@
25147
25256
  "immutable": true,
25148
25257
  "locationInModule": {
25149
25258
  "filename": "lib/router-input.ts",
25150
- "line": 404
25259
+ "line": 406
25151
25260
  },
25152
25261
  "name": "forwardErrorCorrection",
25153
25262
  "optional": true,
@@ -26100,7 +26209,7 @@
26100
26209
  "docs": {
26101
26210
  "stability": "experimental",
26102
26211
  "summary": "Source priority configuration for failover Router Input configurations.",
26103
- "example": "declare const stack: Stack;\ndeclare const networkInterface: RouterNetworkInterface;\n\nconst input = new RouterInput(stack, 'FailoverInput', {\n routerInputName: 'failover-input',\n maximumBitrate: Bitrate.mbps(10),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterInputTier.INPUT_50,\n configuration: RouterInputConfiguration.failover({\n networkInterface: networkInterface,\n protocols: [\n RouterInputProtocol.rist({\n port: 5000,\n recoveryLatency: Duration.millis(1000),\n }),\n RouterInputProtocol.rist({\n port: 5002, // Must not be consecutive with primary port\n recoveryLatency: Duration.millis(1000),\n }),\n ],\n sourcePriority: SourcePriorityConfig.primarySecondary(PrimarySource.FIRST_SOURCE),\n }),\n});",
26212
+ "example": "declare const stack: Stack;\ndeclare const networkInterface: RouterNetworkInterface;\n\nconst input = new RouterInput(stack, 'FailoverInput', {\n routerInputName: 'failover-input',\n maximumBitrate: Bitrate.mbps(10),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterInputTier.INPUT_20,\n configuration: RouterInputConfiguration.failover({\n networkInterface: networkInterface,\n protocols: [\n RouterInputProtocol.rist({\n port: 5000,\n recoveryLatency: Duration.millis(1000),\n }),\n RouterInputProtocol.rist({\n port: 5002, // Must not be consecutive with primary port\n recoveryLatency: Duration.millis(1000),\n }),\n ],\n sourcePriority: SourcePriorityConfig.primarySecondary(PrimarySource.FIRST_SOURCE),\n }),\n});",
26104
26213
  "custom": {
26105
26214
  "exampleMetadata": "infused"
26106
26215
  }
@@ -26109,7 +26218,7 @@
26109
26218
  "kind": "class",
26110
26219
  "locationInModule": {
26111
26220
  "filename": "lib/router-input.ts",
26112
- "line": 362
26221
+ "line": 364
26113
26222
  },
26114
26223
  "methods": [
26115
26224
  {
@@ -26119,7 +26228,7 @@
26119
26228
  },
26120
26229
  "locationInModule": {
26121
26230
  "filename": "lib/router-input.ts",
26122
- "line": 366
26231
+ "line": 368
26123
26232
  },
26124
26233
  "name": "none",
26125
26234
  "returns": {
@@ -26137,7 +26246,7 @@
26137
26246
  },
26138
26247
  "locationInModule": {
26139
26248
  "filename": "lib/router-input.ts",
26140
- "line": 373
26249
+ "line": 375
26141
26250
  },
26142
26251
  "name": "primarySecondary",
26143
26252
  "parameters": [
@@ -27074,7 +27183,7 @@
27074
27183
  "docs": {
27075
27184
  "stability": "experimental",
27076
27185
  "summary": "Properties for SRT Caller protocol configuration for outputs.",
27077
- "example": "declare const stack: Stack;\ndeclare const networkInterface: RouterNetworkInterface;\ndeclare const role: iam.IRole;\ndeclare const secret: secretsmanager.ISecret;\n\nconst output = new RouterOutput(stack, 'EncryptedOutput', {\n routerOutputName: 'encrypted-output',\n maximumBitrate: Bitrate.mbps(10),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterOutputTier.OUTPUT_50,\n configuration: RouterOutputConfiguration.standard({\n protocol: RouterOutputProtocol.srtCaller({\n destinationAddress: '203.0.113.100',\n destinationPort: 9001,\n minimumLatency: Duration.millis(200),\n encryptionConfiguration: { role, secret },\n }),\n networkInterface: networkInterface,\n }),\n});",
27186
+ "example": "declare const stack: Stack;\ndeclare const networkInterface: RouterNetworkInterface;\ndeclare const role: iam.IRole;\ndeclare const secret: secretsmanager.ISecret;\n\nconst output = new RouterOutput(stack, 'EncryptedOutput', {\n routerOutputName: 'encrypted-output',\n maximumBitrate: Bitrate.mbps(10),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterOutputTier.OUTPUT_20,\n configuration: RouterOutputConfiguration.standard({\n protocol: RouterOutputProtocol.srtCaller({\n destinationAddress: '203.0.113.100',\n destinationPort: 9001,\n minimumLatency: Duration.millis(200),\n encryptionConfiguration: { role, secret },\n }),\n networkInterface: networkInterface,\n }),\n});",
27078
27187
  "custom": {
27079
27188
  "exampleMetadata": "infused"
27080
27189
  }
@@ -27083,7 +27192,7 @@
27083
27192
  "kind": "interface",
27084
27193
  "locationInModule": {
27085
27194
  "filename": "lib/router-output.ts",
27086
- "line": 267
27195
+ "line": 269
27087
27196
  },
27088
27197
  "name": "SrtCallerOutputProtocolProps",
27089
27198
  "properties": [
@@ -27096,7 +27205,7 @@
27096
27205
  "immutable": true,
27097
27206
  "locationInModule": {
27098
27207
  "filename": "lib/router-output.ts",
27099
- "line": 269
27208
+ "line": 271
27100
27209
  },
27101
27210
  "name": "destinationAddress",
27102
27211
  "type": {
@@ -27112,7 +27221,7 @@
27112
27221
  "immutable": true,
27113
27222
  "locationInModule": {
27114
27223
  "filename": "lib/router-output.ts",
27115
- "line": 271
27224
+ "line": 273
27116
27225
  },
27117
27226
  "name": "destinationPort",
27118
27227
  "type": {
@@ -27128,7 +27237,7 @@
27128
27237
  "immutable": true,
27129
27238
  "locationInModule": {
27130
27239
  "filename": "lib/router-output.ts",
27131
- "line": 273
27240
+ "line": 275
27132
27241
  },
27133
27242
  "name": "minimumLatency",
27134
27243
  "type": {
@@ -27145,7 +27254,7 @@
27145
27254
  "immutable": true,
27146
27255
  "locationInModule": {
27147
27256
  "filename": "lib/router-output.ts",
27148
- "line": 283
27257
+ "line": 285
27149
27258
  },
27150
27259
  "name": "encryptionConfiguration",
27151
27260
  "optional": true,
@@ -27163,7 +27272,7 @@
27163
27272
  "immutable": true,
27164
27273
  "locationInModule": {
27165
27274
  "filename": "lib/router-output.ts",
27166
- "line": 278
27275
+ "line": 280
27167
27276
  },
27168
27277
  "name": "streamId",
27169
27278
  "optional": true,
@@ -27189,7 +27298,7 @@
27189
27298
  "kind": "interface",
27190
27299
  "locationInModule": {
27191
27300
  "filename": "lib/router-input.ts",
27192
- "line": 435
27301
+ "line": 437
27193
27302
  },
27194
27303
  "name": "SrtCallerProtocolProps",
27195
27304
  "properties": [
@@ -27202,7 +27311,7 @@
27202
27311
  "immutable": true,
27203
27312
  "locationInModule": {
27204
27313
  "filename": "lib/router-input.ts",
27205
- "line": 441
27314
+ "line": 443
27206
27315
  },
27207
27316
  "name": "minimumLatency",
27208
27317
  "type": {
@@ -27218,7 +27327,7 @@
27218
27327
  "immutable": true,
27219
27328
  "locationInModule": {
27220
27329
  "filename": "lib/router-input.ts",
27221
- "line": 437
27330
+ "line": 439
27222
27331
  },
27223
27332
  "name": "sourceAddress",
27224
27333
  "type": {
@@ -27234,7 +27343,7 @@
27234
27343
  "immutable": true,
27235
27344
  "locationInModule": {
27236
27345
  "filename": "lib/router-input.ts",
27237
- "line": 439
27346
+ "line": 441
27238
27347
  },
27239
27348
  "name": "sourcePort",
27240
27349
  "type": {
@@ -27251,7 +27360,7 @@
27251
27360
  "immutable": true,
27252
27361
  "locationInModule": {
27253
27362
  "filename": "lib/router-input.ts",
27254
- "line": 451
27363
+ "line": 453
27255
27364
  },
27256
27365
  "name": "decryptionConfiguration",
27257
27366
  "optional": true,
@@ -27269,7 +27378,7 @@
27269
27378
  "immutable": true,
27270
27379
  "locationInModule": {
27271
27380
  "filename": "lib/router-input.ts",
27272
- "line": 446
27381
+ "line": 448
27273
27382
  },
27274
27383
  "name": "streamId",
27275
27384
  "optional": true,
@@ -27412,7 +27521,7 @@
27412
27521
  "kind": "interface",
27413
27522
  "locationInModule": {
27414
27523
  "filename": "lib/router-output.ts",
27415
- "line": 252
27524
+ "line": 254
27416
27525
  },
27417
27526
  "name": "SrtListenerOutputProtocolProps",
27418
27527
  "properties": [
@@ -27425,7 +27534,7 @@
27425
27534
  "immutable": true,
27426
27535
  "locationInModule": {
27427
27536
  "filename": "lib/router-output.ts",
27428
- "line": 256
27537
+ "line": 258
27429
27538
  },
27430
27539
  "name": "minimumLatency",
27431
27540
  "type": {
@@ -27441,7 +27550,7 @@
27441
27550
  "immutable": true,
27442
27551
  "locationInModule": {
27443
27552
  "filename": "lib/router-output.ts",
27444
- "line": 254
27553
+ "line": 256
27445
27554
  },
27446
27555
  "name": "port",
27447
27556
  "type": {
@@ -27458,7 +27567,7 @@
27458
27567
  "immutable": true,
27459
27568
  "locationInModule": {
27460
27569
  "filename": "lib/router-output.ts",
27461
- "line": 261
27570
+ "line": 263
27462
27571
  },
27463
27572
  "name": "encryptionConfiguration",
27464
27573
  "optional": true,
@@ -27484,7 +27593,7 @@
27484
27593
  "kind": "interface",
27485
27594
  "locationInModule": {
27486
27595
  "filename": "lib/router-input.ts",
27487
- "line": 420
27596
+ "line": 422
27488
27597
  },
27489
27598
  "name": "SrtListenerProtocolProps",
27490
27599
  "properties": [
@@ -27497,7 +27606,7 @@
27497
27606
  "immutable": true,
27498
27607
  "locationInModule": {
27499
27608
  "filename": "lib/router-input.ts",
27500
- "line": 424
27609
+ "line": 426
27501
27610
  },
27502
27611
  "name": "minimumLatency",
27503
27612
  "type": {
@@ -27513,7 +27622,7 @@
27513
27622
  "immutable": true,
27514
27623
  "locationInModule": {
27515
27624
  "filename": "lib/router-input.ts",
27516
- "line": 422
27625
+ "line": 424
27517
27626
  },
27518
27627
  "name": "port",
27519
27628
  "type": {
@@ -27530,7 +27639,7 @@
27530
27639
  "immutable": true,
27531
27640
  "locationInModule": {
27532
27641
  "filename": "lib/router-input.ts",
27533
- "line": 429
27642
+ "line": 431
27534
27643
  },
27535
27644
  "name": "decryptionConfiguration",
27536
27645
  "optional": true,
@@ -27615,7 +27724,7 @@
27615
27724
  "kind": "interface",
27616
27725
  "locationInModule": {
27617
27726
  "filename": "lib/router-input.ts",
27618
- "line": 709
27727
+ "line": 711
27619
27728
  },
27620
27729
  "name": "StandardConfigurationProps",
27621
27730
  "properties": [
@@ -27628,7 +27737,7 @@
27628
27737
  "immutable": true,
27629
27738
  "locationInModule": {
27630
27739
  "filename": "lib/router-input.ts",
27631
- "line": 711
27740
+ "line": 713
27632
27741
  },
27633
27742
  "name": "networkInterface",
27634
27743
  "type": {
@@ -27644,7 +27753,7 @@
27644
27753
  "immutable": true,
27645
27754
  "locationInModule": {
27646
27755
  "filename": "lib/router-input.ts",
27647
- "line": 713
27756
+ "line": 715
27648
27757
  },
27649
27758
  "name": "protocol",
27650
27759
  "type": {
@@ -27661,7 +27770,7 @@
27661
27770
  "immutable": true,
27662
27771
  "locationInModule": {
27663
27772
  "filename": "lib/router-input.ts",
27664
- "line": 719
27773
+ "line": 721
27665
27774
  },
27666
27775
  "name": "availabilityZone",
27667
27776
  "optional": true,
@@ -27687,7 +27796,7 @@
27687
27796
  "kind": "interface",
27688
27797
  "locationInModule": {
27689
27798
  "filename": "lib/router-output.ts",
27690
- "line": 462
27799
+ "line": 464
27691
27800
  },
27692
27801
  "name": "StandardOutputConfigurationProps",
27693
27802
  "properties": [
@@ -27700,7 +27809,7 @@
27700
27809
  "immutable": true,
27701
27810
  "locationInModule": {
27702
27811
  "filename": "lib/router-output.ts",
27703
- "line": 464
27812
+ "line": 466
27704
27813
  },
27705
27814
  "name": "networkInterface",
27706
27815
  "type": {
@@ -27716,7 +27825,7 @@
27716
27825
  "immutable": true,
27717
27826
  "locationInModule": {
27718
27827
  "filename": "lib/router-output.ts",
27719
- "line": 466
27828
+ "line": 468
27720
27829
  },
27721
27830
  "name": "protocol",
27722
27831
  "type": {
@@ -27733,7 +27842,7 @@
27733
27842
  "immutable": true,
27734
27843
  "locationInModule": {
27735
27844
  "filename": "lib/router-output.ts",
27736
- "line": 472
27845
+ "line": 474
27737
27846
  },
27738
27847
  "name": "availabilityZone",
27739
27848
  "optional": true,
@@ -28094,7 +28203,7 @@
28094
28203
  "see": "https://docs.aws.amazon.com/mediaconnect/latest/ug/cross-service-confused-deputy-prevention.html",
28095
28204
  "stability": "experimental",
28096
28205
  "summary": "Transit encryption configuration for router integrations — securing the link between a router and a flow or a MediaLive channel/input.",
28097
- "example": "declare const stack: Stack;\ndeclare const mediaLiveChannel: medialive.IChannel;\ndeclare const transitSecret: Secret; // must hold the same value as the channel's MediaConnectRouterSettings.shared() secret\n\nconst input = new RouterInput(stack, 'ChannelInput', {\n routerInputName: 'channel-input',\n maximumBitrate: Bitrate.mbps(20),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterInputTier.INPUT_50,\n configuration: RouterInputConfiguration.mediaLiveChannel({\n channel: mediaLiveChannel,\n outputName: 'router-ts',\n pipeline: MediaLivePipeline.PIPELINE_0,\n sourceTransitDecryption: { secret: transitSecret },\n }),\n});",
28206
+ "example": "declare const stack: Stack;\ndeclare const mediaLiveChannel: medialive.IChannel;\ndeclare const transitSecret: Secret; // must hold the same value as the channel's MediaConnectRouterSettings.shared() secret\n\nconst input = new RouterInput(stack, 'ChannelInput', {\n routerInputName: 'channel-input',\n maximumBitrate: Bitrate.mbps(20),\n routingScope: RoutingScope.REGIONAL,\n tier: RouterInputTier.INPUT_20,\n configuration: RouterInputConfiguration.mediaLiveChannel({\n channel: mediaLiveChannel,\n outputName: 'router-ts',\n pipeline: MediaLivePipeline.PIPELINE_0,\n sourceTransitDecryption: { secret: transitSecret },\n }),\n});",
28098
28207
  "custom": {
28099
28208
  "exampleMetadata": "infused"
28100
28209
  }
@@ -29056,6 +29165,6 @@
29056
29165
  "symbolId": "lib/flow-output:ZixiPushOutputConfig"
29057
29166
  }
29058
29167
  },
29059
- "version": "2.270.0-alpha.0",
29168
+ "version": "2.272.0-alpha.0",
29060
29169
  "fingerprint": "**********"
29061
29170
  }