@aws-cdk/aws-mediaconnect-alpha 2.270.0-alpha.0 → 2.271.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.271.0",
12
12
  "constructs": "^10.5.0"
13
13
  },
14
14
  "dependencyClosure": {
@@ -9613,7 +9613,7 @@
9613
9613
  },
9614
9614
  "name": "@aws-cdk/aws-mediaconnect-alpha",
9615
9615
  "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"
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_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
9617
  },
9618
9618
  "repository": {
9619
9619
  "directory": "packages/@aws-cdk/aws-mediaconnect-alpha",
@@ -12780,7 +12780,7 @@
12780
12780
  "docs": {
12781
12781
  "stability": "experimental",
12782
12782
  "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});",
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_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
12784
  "custom": {
12785
12785
  "exampleMetadata": "infused"
12786
12786
  }
@@ -12789,7 +12789,7 @@
12789
12789
  "kind": "interface",
12790
12790
  "locationInModule": {
12791
12791
  "filename": "lib/router-input.ts",
12792
- "line": 725
12792
+ "line": 727
12793
12793
  },
12794
12794
  "name": "FailoverConfigurationProps",
12795
12795
  "properties": [
@@ -12802,7 +12802,7 @@
12802
12802
  "immutable": true,
12803
12803
  "locationInModule": {
12804
12804
  "filename": "lib/router-input.ts",
12805
- "line": 727
12805
+ "line": 729
12806
12806
  },
12807
12807
  "name": "networkInterface",
12808
12808
  "type": {
@@ -12818,7 +12818,7 @@
12818
12818
  "immutable": true,
12819
12819
  "locationInModule": {
12820
12820
  "filename": "lib/router-input.ts",
12821
- "line": 729
12821
+ "line": 731
12822
12822
  },
12823
12823
  "name": "protocols",
12824
12824
  "type": {
@@ -12840,7 +12840,7 @@
12840
12840
  "immutable": true,
12841
12841
  "locationInModule": {
12842
12842
  "filename": "lib/router-input.ts",
12843
- "line": 741
12843
+ "line": 743
12844
12844
  },
12845
12845
  "name": "availabilityZone",
12846
12846
  "optional": true,
@@ -12858,7 +12858,7 @@
12858
12858
  "immutable": true,
12859
12859
  "locationInModule": {
12860
12860
  "filename": "lib/router-input.ts",
12861
- "line": 735
12861
+ "line": 737
12862
12862
  },
12863
12863
  "name": "sourcePriority",
12864
12864
  "optional": true,
@@ -15478,7 +15478,7 @@
15478
15478
  "kind": "enum",
15479
15479
  "locationInModule": {
15480
15480
  "filename": "lib/router-input.ts",
15481
- "line": 331
15481
+ "line": 333
15482
15482
  },
15483
15483
  "members": [
15484
15484
  {
@@ -18116,7 +18116,7 @@
18116
18116
  "kind": "interface",
18117
18117
  "locationInModule": {
18118
18118
  "filename": "lib/router-output.ts",
18119
- "line": 80
18119
+ "line": 81
18120
18120
  },
18121
18121
  "methods": [
18122
18122
  {
@@ -18128,7 +18128,7 @@
18128
18128
  },
18129
18129
  "locationInModule": {
18130
18130
  "filename": "lib/router-output.ts",
18131
- "line": 130
18131
+ "line": 131
18132
18132
  },
18133
18133
  "name": "metric",
18134
18134
  "parameters": [
@@ -18162,7 +18162,7 @@
18162
18162
  },
18163
18163
  "locationInModule": {
18164
18164
  "filename": "lib/router-output.ts",
18165
- "line": 156
18165
+ "line": 157
18166
18166
  },
18167
18167
  "name": "metricArqRequests",
18168
18168
  "parameters": [
@@ -18189,7 +18189,7 @@
18189
18189
  },
18190
18190
  "locationInModule": {
18191
18191
  "filename": "lib/router-output.ts",
18192
- "line": 136
18192
+ "line": 137
18193
18193
  },
18194
18194
  "name": "metricBitrate",
18195
18195
  "parameters": [
@@ -18217,7 +18217,7 @@
18217
18217
  },
18218
18218
  "locationInModule": {
18219
18219
  "filename": "lib/router-output.ts",
18220
- "line": 148
18220
+ "line": 149
18221
18221
  },
18222
18222
  "name": "metricConnected",
18223
18223
  "parameters": [
@@ -18244,7 +18244,7 @@
18244
18244
  },
18245
18245
  "locationInModule": {
18246
18246
  "filename": "lib/router-output.ts",
18247
- "line": 142
18247
+ "line": 143
18248
18248
  },
18249
18249
  "name": "metricTotalPackets",
18250
18250
  "parameters": [
@@ -18277,7 +18277,7 @@
18277
18277
  "immutable": true,
18278
18278
  "locationInModule": {
18279
18279
  "filename": "lib/router-output.ts",
18280
- "line": 107
18280
+ "line": 108
18281
18281
  },
18282
18282
  "name": "ipAddress",
18283
18283
  "type": {
@@ -18296,7 +18296,7 @@
18296
18296
  "immutable": true,
18297
18297
  "locationInModule": {
18298
18298
  "filename": "lib/router-output.ts",
18299
- "line": 93
18299
+ "line": 94
18300
18300
  },
18301
18301
  "name": "routerOutputArn",
18302
18302
  "type": {
@@ -18315,7 +18315,7 @@
18315
18315
  "immutable": true,
18316
18316
  "locationInModule": {
18317
18317
  "filename": "lib/router-output.ts",
18318
- "line": 100
18318
+ "line": 101
18319
18319
  },
18320
18320
  "name": "routerOutputId",
18321
18321
  "type": {
@@ -18334,7 +18334,7 @@
18334
18334
  "immutable": true,
18335
18335
  "locationInModule": {
18336
18336
  "filename": "lib/router-output.ts",
18337
- "line": 86
18337
+ "line": 87
18338
18338
  },
18339
18339
  "name": "routerOutputName",
18340
18340
  "type": {
@@ -18353,7 +18353,7 @@
18353
18353
  "immutable": true,
18354
18354
  "locationInModule": {
18355
18355
  "filename": "lib/router-output.ts",
18356
- "line": 114
18356
+ "line": 115
18357
18357
  },
18358
18358
  "name": "createdAt",
18359
18359
  "optional": true,
@@ -18373,7 +18373,7 @@
18373
18373
  "immutable": true,
18374
18374
  "locationInModule": {
18375
18375
  "filename": "lib/router-output.ts",
18376
- "line": 121
18376
+ "line": 122
18377
18377
  },
18378
18378
  "name": "updatedAt",
18379
18379
  "optional": true,
@@ -18590,7 +18590,7 @@
18590
18590
  "kind": "interface",
18591
18591
  "locationInModule": {
18592
18592
  "filename": "lib/router-input.ts",
18593
- "line": 251
18593
+ "line": 252
18594
18594
  },
18595
18595
  "name": "MaintenanceConfiguration",
18596
18596
  "properties": [
@@ -18603,7 +18603,7 @@
18603
18603
  "immutable": true,
18604
18604
  "locationInModule": {
18605
18605
  "filename": "lib/router-input.ts",
18606
- "line": 253
18606
+ "line": 254
18607
18607
  },
18608
18608
  "name": "day",
18609
18609
  "type": {
@@ -18619,7 +18619,7 @@
18619
18619
  "immutable": true,
18620
18620
  "locationInModule": {
18621
18621
  "filename": "lib/router-input.ts",
18622
- "line": 255
18622
+ "line": 256
18623
18623
  },
18624
18624
  "name": "time",
18625
18625
  "type": {
@@ -18757,7 +18757,7 @@
18757
18757
  "docs": {
18758
18758
  "stability": "experimental",
18759
18759
  "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});",
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_20,\n configuration: RouterInputConfiguration.mediaConnectFlow({\n flow: flow,\n flowOutput: flowOutput,\n }),\n});",
18761
18761
  "custom": {
18762
18762
  "exampleMetadata": "infused"
18763
18763
  }
@@ -18766,7 +18766,7 @@
18766
18766
  "kind": "interface",
18767
18767
  "locationInModule": {
18768
18768
  "filename": "lib/router-input.ts",
18769
- "line": 765
18769
+ "line": 767
18770
18770
  },
18771
18771
  "name": "MediaConnectFlowConfigurationProps",
18772
18772
  "properties": [
@@ -18779,7 +18779,7 @@
18779
18779
  "immutable": true,
18780
18780
  "locationInModule": {
18781
18781
  "filename": "lib/router-input.ts",
18782
- "line": 767
18782
+ "line": 769
18783
18783
  },
18784
18784
  "name": "flow",
18785
18785
  "type": {
@@ -18795,7 +18795,7 @@
18795
18795
  "immutable": true,
18796
18796
  "locationInModule": {
18797
18797
  "filename": "lib/router-input.ts",
18798
- "line": 769
18798
+ "line": 771
18799
18799
  },
18800
18800
  "name": "flowOutput",
18801
18801
  "type": {
@@ -18812,7 +18812,7 @@
18812
18812
  "immutable": true,
18813
18813
  "locationInModule": {
18814
18814
  "filename": "lib/router-input.ts",
18815
- "line": 774
18815
+ "line": 776
18816
18816
  },
18817
18817
  "name": "sourceTransitDecryption",
18818
18818
  "optional": true,
@@ -18829,7 +18829,7 @@
18829
18829
  "docs": {
18830
18830
  "stability": "experimental",
18831
18831
  "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});",
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_20,\n configuration: RouterInputConfiguration.mediaConnectFlowWithoutConnection({\n availabilityZone: 'us-east-1a',\n }),\n});",
18833
18833
  "custom": {
18834
18834
  "exampleMetadata": "infused"
18835
18835
  }
@@ -18838,7 +18838,7 @@
18838
18838
  "kind": "interface",
18839
18839
  "locationInModule": {
18840
18840
  "filename": "lib/router-input.ts",
18841
- "line": 780
18841
+ "line": 782
18842
18842
  },
18843
18843
  "name": "MediaConnectFlowConfigurationWithoutConnectionProps",
18844
18844
  "properties": [
@@ -18851,7 +18851,7 @@
18851
18851
  "immutable": true,
18852
18852
  "locationInModule": {
18853
18853
  "filename": "lib/router-input.ts",
18854
- "line": 784
18854
+ "line": 786
18855
18855
  },
18856
18856
  "name": "availabilityZone",
18857
18857
  "type": {
@@ -18868,7 +18868,7 @@
18868
18868
  "immutable": true,
18869
18869
  "locationInModule": {
18870
18870
  "filename": "lib/router-input.ts",
18871
- "line": 789
18871
+ "line": 791
18872
18872
  },
18873
18873
  "name": "sourceTransitDecryption",
18874
18874
  "optional": true,
@@ -18885,7 +18885,7 @@
18885
18885
  "docs": {
18886
18886
  "stability": "experimental",
18887
18887
  "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});",
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_20,\n configuration: RouterOutputConfiguration.mediaConnectFlow({\n flow: flow,\n }),\n});",
18889
18889
  "custom": {
18890
18890
  "exampleMetadata": "infused"
18891
18891
  }
@@ -18894,7 +18894,7 @@
18894
18894
  "kind": "interface",
18895
18895
  "locationInModule": {
18896
18896
  "filename": "lib/router-output.ts",
18897
- "line": 508
18897
+ "line": 510
18898
18898
  },
18899
18899
  "name": "MediaConnectFlowConnectionProps",
18900
18900
  "properties": [
@@ -18907,7 +18907,7 @@
18907
18907
  "immutable": true,
18908
18908
  "locationInModule": {
18909
18909
  "filename": "lib/router-output.ts",
18910
- "line": 510
18910
+ "line": 512
18911
18911
  },
18912
18912
  "name": "flow",
18913
18913
  "type": {
@@ -18924,7 +18924,7 @@
18924
18924
  "immutable": true,
18925
18925
  "locationInModule": {
18926
18926
  "filename": "lib/router-output.ts",
18927
- "line": 515
18927
+ "line": 517
18928
18928
  },
18929
18929
  "name": "destinationTransitEncryption",
18930
18930
  "optional": true,
@@ -18941,7 +18941,7 @@
18941
18941
  "docs": {
18942
18942
  "stability": "experimental",
18943
18943
  "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});",
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_20,\n configuration: RouterOutputConfiguration.mediaConnectFlowWithoutConnection({\n availabilityZone: 'us-east-1a',\n }),\n});",
18945
18945
  "custom": {
18946
18946
  "exampleMetadata": "infused"
18947
18947
  }
@@ -18950,7 +18950,7 @@
18950
18950
  "kind": "interface",
18951
18951
  "locationInModule": {
18952
18952
  "filename": "lib/router-output.ts",
18953
- "line": 521
18953
+ "line": 523
18954
18954
  },
18955
18955
  "name": "MediaConnectFlowNoConnectionProps",
18956
18956
  "properties": [
@@ -18963,7 +18963,7 @@
18963
18963
  "immutable": true,
18964
18964
  "locationInModule": {
18965
18965
  "filename": "lib/router-output.ts",
18966
- "line": 523
18966
+ "line": 525
18967
18967
  },
18968
18968
  "name": "availabilityZone",
18969
18969
  "type": {
@@ -18980,7 +18980,7 @@
18980
18980
  "immutable": true,
18981
18981
  "locationInModule": {
18982
18982
  "filename": "lib/router-output.ts",
18983
- "line": 528
18983
+ "line": 530
18984
18984
  },
18985
18985
  "name": "destinationTransitEncryption",
18986
18986
  "optional": true,
@@ -18998,7 +18998,7 @@
18998
18998
  "remarks": "Use this when the MediaLive channel already exists and you want to ingest\nfrom one of its outputs immediately.",
18999
18999
  "stability": "experimental",
19000
19000
  "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});",
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_20,\n configuration: RouterInputConfiguration.mediaLiveChannel({\n channel: mediaLiveChannel,\n outputName: 'router-ts',\n pipeline: MediaLivePipeline.PIPELINE_0,\n }),\n});",
19002
19002
  "custom": {
19003
19003
  "exampleMetadata": "infused"
19004
19004
  }
@@ -19007,7 +19007,7 @@
19007
19007
  "kind": "interface",
19008
19008
  "locationInModule": {
19009
19009
  "filename": "lib/router-input.ts",
19010
- "line": 798
19010
+ "line": 800
19011
19011
  },
19012
19012
  "name": "MediaLiveChannelConfigurationProps",
19013
19013
  "properties": [
@@ -19020,7 +19020,7 @@
19020
19020
  "immutable": true,
19021
19021
  "locationInModule": {
19022
19022
  "filename": "lib/router-input.ts",
19023
- "line": 802
19023
+ "line": 804
19024
19024
  },
19025
19025
  "name": "channel",
19026
19026
  "type": {
@@ -19036,7 +19036,7 @@
19036
19036
  "immutable": true,
19037
19037
  "locationInModule": {
19038
19038
  "filename": "lib/router-input.ts",
19039
- "line": 808
19039
+ "line": 810
19040
19040
  },
19041
19041
  "name": "outputName",
19042
19042
  "type": {
@@ -19052,7 +19052,7 @@
19052
19052
  "immutable": true,
19053
19053
  "locationInModule": {
19054
19054
  "filename": "lib/router-input.ts",
19055
- "line": 813
19055
+ "line": 815
19056
19056
  },
19057
19057
  "name": "pipeline",
19058
19058
  "type": {
@@ -19070,7 +19070,7 @@
19070
19070
  "immutable": true,
19071
19071
  "locationInModule": {
19072
19072
  "filename": "lib/router-input.ts",
19073
- "line": 821
19073
+ "line": 823
19074
19074
  },
19075
19075
  "name": "sourceTransitDecryption",
19076
19076
  "optional": true,
@@ -19088,7 +19088,7 @@
19088
19088
  "remarks": "Use this when you want to set up the router input before the target MediaLive channel exists.",
19089
19089
  "stability": "experimental",
19090
19090
  "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});",
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_20,\n configuration: RouterInputConfiguration.mediaLiveChannelWithoutConnection({\n availabilityZone: 'us-east-1a',\n }),\n});",
19092
19092
  "custom": {
19093
19093
  "exampleMetadata": "infused"
19094
19094
  }
@@ -19097,7 +19097,7 @@
19097
19097
  "kind": "interface",
19098
19098
  "locationInModule": {
19099
19099
  "filename": "lib/router-input.ts",
19100
- "line": 829
19100
+ "line": 831
19101
19101
  },
19102
19102
  "name": "MediaLiveChannelConfigurationWithoutConnectionProps",
19103
19103
  "properties": [
@@ -19110,7 +19110,7 @@
19110
19110
  "immutable": true,
19111
19111
  "locationInModule": {
19112
19112
  "filename": "lib/router-input.ts",
19113
- "line": 833
19113
+ "line": 835
19114
19114
  },
19115
19115
  "name": "availabilityZone",
19116
19116
  "type": {
@@ -19127,7 +19127,7 @@
19127
19127
  "immutable": true,
19128
19128
  "locationInModule": {
19129
19129
  "filename": "lib/router-input.ts",
19130
- "line": 840
19130
+ "line": 842
19131
19131
  },
19132
19132
  "name": "sourceTransitDecryption",
19133
19133
  "optional": true,
@@ -19153,7 +19153,7 @@
19153
19153
  "kind": "interface",
19154
19154
  "locationInModule": {
19155
19155
  "filename": "lib/router-output.ts",
19156
- "line": 478
19156
+ "line": 480
19157
19157
  },
19158
19158
  "name": "MediaLiveInputConnectionProps",
19159
19159
  "properties": [
@@ -19166,7 +19166,7 @@
19166
19166
  "immutable": true,
19167
19167
  "locationInModule": {
19168
19168
  "filename": "lib/router-output.ts",
19169
- "line": 482
19169
+ "line": 484
19170
19170
  },
19171
19171
  "name": "input",
19172
19172
  "type": {
@@ -19182,7 +19182,7 @@
19182
19182
  "immutable": true,
19183
19183
  "locationInModule": {
19184
19184
  "filename": "lib/router-output.ts",
19185
- "line": 484
19185
+ "line": 486
19186
19186
  },
19187
19187
  "name": "pipeline",
19188
19188
  "type": {
@@ -19199,7 +19199,7 @@
19199
19199
  "immutable": true,
19200
19200
  "locationInModule": {
19201
19201
  "filename": "lib/router-output.ts",
19202
- "line": 489
19202
+ "line": 491
19203
19203
  },
19204
19204
  "name": "destinationTransitEncryption",
19205
19205
  "optional": true,
@@ -19216,7 +19216,7 @@
19216
19216
  "docs": {
19217
19217
  "stability": "experimental",
19218
19218
  "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});",
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_20,\n configuration: RouterOutputConfiguration.mediaLiveInputWithoutConnection({\n availabilityZone: 'us-east-1a',\n }),\n});",
19220
19220
  "custom": {
19221
19221
  "exampleMetadata": "infused"
19222
19222
  }
@@ -19225,7 +19225,7 @@
19225
19225
  "kind": "interface",
19226
19226
  "locationInModule": {
19227
19227
  "filename": "lib/router-output.ts",
19228
- "line": 495
19228
+ "line": 497
19229
19229
  },
19230
19230
  "name": "MediaLiveNoInputConnectionProps",
19231
19231
  "properties": [
@@ -19238,7 +19238,7 @@
19238
19238
  "immutable": true,
19239
19239
  "locationInModule": {
19240
19240
  "filename": "lib/router-output.ts",
19241
- "line": 497
19241
+ "line": 499
19242
19242
  },
19243
19243
  "name": "availabilityZone",
19244
19244
  "type": {
@@ -19255,7 +19255,7 @@
19255
19255
  "immutable": true,
19256
19256
  "locationInModule": {
19257
19257
  "filename": "lib/router-output.ts",
19258
- "line": 502
19258
+ "line": 504
19259
19259
  },
19260
19260
  "name": "destinationTransitEncryption",
19261
19261
  "optional": true,
@@ -19271,7 +19271,7 @@
19271
19271
  "docs": {
19272
19272
  "stability": "experimental",
19273
19273
  "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});",
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_20,\n configuration: RouterInputConfiguration.mediaLiveChannel({\n channel: mediaLiveChannel,\n outputName: 'router-ts',\n pipeline: MediaLivePipeline.PIPELINE_0,\n sourceTransitDecryption: { secret: transitSecret },\n }),\n});",
19275
19275
  "custom": {
19276
19276
  "exampleMetadata": "infused"
19277
19277
  }
@@ -20015,7 +20015,7 @@
20015
20015
  "kind": "interface",
20016
20016
  "locationInModule": {
20017
20017
  "filename": "lib/router-input.ts",
20018
- "line": 747
20018
+ "line": 749
20019
20019
  },
20020
20020
  "name": "MergeConfigurationProps",
20021
20021
  "properties": [
@@ -20028,7 +20028,7 @@
20028
20028
  "immutable": true,
20029
20029
  "locationInModule": {
20030
20030
  "filename": "lib/router-input.ts",
20031
- "line": 753
20031
+ "line": 755
20032
20032
  },
20033
20033
  "name": "mergeRecoveryWindow",
20034
20034
  "type": {
@@ -20044,7 +20044,7 @@
20044
20044
  "immutable": true,
20045
20045
  "locationInModule": {
20046
20046
  "filename": "lib/router-input.ts",
20047
- "line": 749
20047
+ "line": 751
20048
20048
  },
20049
20049
  "name": "networkInterface",
20050
20050
  "type": {
@@ -20060,7 +20060,7 @@
20060
20060
  "immutable": true,
20061
20061
  "locationInModule": {
20062
20062
  "filename": "lib/router-input.ts",
20063
- "line": 751
20063
+ "line": 753
20064
20064
  },
20065
20065
  "name": "protocols",
20066
20066
  "type": {
@@ -20082,7 +20082,7 @@
20082
20082
  "immutable": true,
20083
20083
  "locationInModule": {
20084
20084
  "filename": "lib/router-input.ts",
20085
- "line": 759
20085
+ "line": 761
20086
20086
  },
20087
20087
  "name": "availabilityZone",
20088
20088
  "optional": true,
@@ -20995,7 +20995,7 @@
20995
20995
  "docs": {
20996
20996
  "stability": "experimental",
20997
20997
  "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});",
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_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
20999
  "custom": {
21000
21000
  "exampleMetadata": "infused"
21001
21001
  }
@@ -21004,7 +21004,7 @@
21004
21004
  "kind": "enum",
21005
21005
  "locationInModule": {
21006
21006
  "filename": "lib/router-input.ts",
21007
- "line": 341
21007
+ "line": 343
21008
21008
  },
21009
21009
  "members": [
21010
21010
  {
@@ -21108,7 +21108,7 @@
21108
21108
  "kind": "interface",
21109
21109
  "locationInModule": {
21110
21110
  "filename": "lib/router-output.ts",
21111
- "line": 242
21111
+ "line": 244
21112
21112
  },
21113
21113
  "name": "RistOutputProtocolProps",
21114
21114
  "properties": [
@@ -21121,7 +21121,7 @@
21121
21121
  "immutable": true,
21122
21122
  "locationInModule": {
21123
21123
  "filename": "lib/router-output.ts",
21124
- "line": 244
21124
+ "line": 246
21125
21125
  },
21126
21126
  "name": "destinationAddress",
21127
21127
  "type": {
@@ -21137,7 +21137,7 @@
21137
21137
  "immutable": true,
21138
21138
  "locationInModule": {
21139
21139
  "filename": "lib/router-output.ts",
21140
- "line": 246
21140
+ "line": 248
21141
21141
  },
21142
21142
  "name": "port",
21143
21143
  "type": {
@@ -21153,7 +21153,7 @@
21153
21153
  "docs": {
21154
21154
  "stability": "experimental",
21155
21155
  "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});",
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_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
21157
  "custom": {
21158
21158
  "exampleMetadata": "infused"
21159
21159
  }
@@ -21162,7 +21162,7 @@
21162
21162
  "kind": "interface",
21163
21163
  "locationInModule": {
21164
21164
  "filename": "lib/router-input.ts",
21165
- "line": 410
21165
+ "line": 412
21166
21166
  },
21167
21167
  "name": "RistProtocolProps",
21168
21168
  "properties": [
@@ -21175,7 +21175,7 @@
21175
21175
  "immutable": true,
21176
21176
  "locationInModule": {
21177
21177
  "filename": "lib/router-input.ts",
21178
- "line": 412
21178
+ "line": 414
21179
21179
  },
21180
21180
  "name": "port",
21181
21181
  "type": {
@@ -21191,7 +21191,7 @@
21191
21191
  "immutable": true,
21192
21192
  "locationInModule": {
21193
21193
  "filename": "lib/router-input.ts",
21194
- "line": 414
21194
+ "line": 416
21195
21195
  },
21196
21196
  "name": "recoveryLatency",
21197
21197
  "type": {
@@ -21207,7 +21207,7 @@
21207
21207
  "docs": {
21208
21208
  "stability": "experimental",
21209
21209
  "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});",
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_20,\n configuration: RouterInputConfiguration.mediaLiveChannel({\n channel: mediaLiveChannel,\n outputName: 'router-ts',\n pipeline: MediaLivePipeline.PIPELINE_0,\n }),\n});",
21211
21211
  "custom": {
21212
21212
  "exampleMetadata": "infused"
21213
21213
  }
@@ -21219,7 +21219,7 @@
21219
21219
  },
21220
21220
  "locationInModule": {
21221
21221
  "filename": "lib/router-input.ts",
21222
- "line": 1380
21222
+ "line": 1382
21223
21223
  },
21224
21224
  "parameters": [
21225
21225
  {
@@ -21248,7 +21248,7 @@
21248
21248
  "kind": "class",
21249
21249
  "locationInModule": {
21250
21250
  "filename": "lib/router-input.ts",
21251
- "line": 1282
21251
+ "line": 1284
21252
21252
  },
21253
21253
  "methods": [
21254
21254
  {
@@ -21260,7 +21260,7 @@
21260
21260
  },
21261
21261
  "locationInModule": {
21262
21262
  "filename": "lib/router-input.ts",
21263
- "line": 1298
21263
+ "line": 1300
21264
21264
  },
21265
21265
  "name": "fromRouterInputArn",
21266
21266
  "parameters": [
@@ -21308,7 +21308,7 @@
21308
21308
  },
21309
21309
  "locationInModule": {
21310
21310
  "filename": "lib/router-input.ts",
21311
- "line": 1313
21311
+ "line": 1315
21312
21312
  },
21313
21313
  "name": "fromRouterInputAttributes",
21314
21314
  "parameters": [
@@ -21354,7 +21354,7 @@
21354
21354
  },
21355
21355
  "locationInModule": {
21356
21356
  "filename": "lib/router-input.ts",
21357
- "line": 1182
21357
+ "line": 1184
21358
21358
  },
21359
21359
  "name": "metric",
21360
21360
  "overrides": "@aws-cdk/aws-mediaconnect-alpha.IRouterInput",
@@ -21386,7 +21386,7 @@
21386
21386
  },
21387
21387
  "locationInModule": {
21388
21388
  "filename": "lib/router-input.ts",
21389
- "line": 1197
21389
+ "line": 1199
21390
21390
  },
21391
21391
  "name": "metricBitrate",
21392
21392
  "overrides": "@aws-cdk/aws-mediaconnect-alpha.IRouterInput",
@@ -21413,7 +21413,7 @@
21413
21413
  },
21414
21414
  "locationInModule": {
21415
21415
  "filename": "lib/router-input.ts",
21416
- "line": 1233
21416
+ "line": 1235
21417
21417
  },
21418
21418
  "name": "metricConnected",
21419
21419
  "overrides": "@aws-cdk/aws-mediaconnect-alpha.IRouterInput",
@@ -21439,7 +21439,7 @@
21439
21439
  },
21440
21440
  "locationInModule": {
21441
21441
  "filename": "lib/router-input.ts",
21442
- "line": 1245
21442
+ "line": 1247
21443
21443
  },
21444
21444
  "name": "metricContinuityCounterErrors",
21445
21445
  "overrides": "@aws-cdk/aws-mediaconnect-alpha.IRouterInput",
@@ -21465,7 +21465,7 @@
21465
21465
  },
21466
21466
  "locationInModule": {
21467
21467
  "filename": "lib/router-input.ts",
21468
- "line": 1269
21468
+ "line": 1271
21469
21469
  },
21470
21470
  "name": "metricFailoverSwitches",
21471
21471
  "overrides": "@aws-cdk/aws-mediaconnect-alpha.IRouterInput",
@@ -21492,7 +21492,7 @@
21492
21492
  },
21493
21493
  "locationInModule": {
21494
21494
  "filename": "lib/router-input.ts",
21495
- "line": 1257
21495
+ "line": 1259
21496
21496
  },
21497
21497
  "name": "metricLatency",
21498
21498
  "overrides": "@aws-cdk/aws-mediaconnect-alpha.IRouterInput",
@@ -21518,7 +21518,7 @@
21518
21518
  },
21519
21519
  "locationInModule": {
21520
21520
  "filename": "lib/router-input.ts",
21521
- "line": 1209
21521
+ "line": 1211
21522
21522
  },
21523
21523
  "name": "metricNotRecoveredPackets",
21524
21524
  "overrides": "@aws-cdk/aws-mediaconnect-alpha.IRouterInput",
@@ -21544,7 +21544,7 @@
21544
21544
  },
21545
21545
  "locationInModule": {
21546
21546
  "filename": "lib/router-input.ts",
21547
- "line": 1221
21547
+ "line": 1223
21548
21548
  },
21549
21549
  "name": "metricTotalPackets",
21550
21550
  "overrides": "@aws-cdk/aws-mediaconnect-alpha.IRouterInput",
@@ -21575,7 +21575,7 @@
21575
21575
  "immutable": true,
21576
21576
  "locationInModule": {
21577
21577
  "filename": "lib/router-input.ts",
21578
- "line": 1285
21578
+ "line": 1287
21579
21579
  },
21580
21580
  "name": "PROPERTY_INJECTION_ID",
21581
21581
  "static": true,
@@ -21592,7 +21592,7 @@
21592
21592
  "immutable": true,
21593
21593
  "locationInModule": {
21594
21594
  "filename": "lib/router-input.ts",
21595
- "line": 1369
21595
+ "line": 1371
21596
21596
  },
21597
21597
  "name": "endpoints",
21598
21598
  "overrides": "@aws-cdk/aws-mediaconnect-alpha.IRouterInput",
@@ -21613,7 +21613,7 @@
21613
21613
  "immutable": true,
21614
21614
  "locationInModule": {
21615
21615
  "filename": "lib/router-input.ts",
21616
- "line": 1367
21616
+ "line": 1369
21617
21617
  },
21618
21618
  "name": "grants",
21619
21619
  "overrides": "@aws-cdk/aws-mediaconnect-alpha.IRouterInput",
@@ -21629,7 +21629,7 @@
21629
21629
  "immutable": true,
21630
21630
  "locationInModule": {
21631
21631
  "filename": "lib/router-input.ts",
21632
- "line": 1362
21632
+ "line": 1364
21633
21633
  },
21634
21634
  "name": "ipAddress",
21635
21635
  "overrides": "@aws-cdk/aws-mediaconnect-alpha.IRouterInput",
@@ -21645,7 +21645,7 @@
21645
21645
  "immutable": true,
21646
21646
  "locationInModule": {
21647
21647
  "filename": "lib/router-input.ts",
21648
- "line": 1360
21648
+ "line": 1362
21649
21649
  },
21650
21650
  "name": "routerInputArn",
21651
21651
  "overrides": "@aws-cdk/aws-mediaconnect-alpha.IRouterInput",
@@ -21661,7 +21661,7 @@
21661
21661
  "immutable": true,
21662
21662
  "locationInModule": {
21663
21663
  "filename": "lib/router-input.ts",
21664
- "line": 1361
21664
+ "line": 1363
21665
21665
  },
21666
21666
  "name": "routerInputId",
21667
21667
  "overrides": "@aws-cdk/aws-mediaconnect-alpha.IRouterInput",
@@ -21678,7 +21678,7 @@
21678
21678
  "immutable": true,
21679
21679
  "locationInModule": {
21680
21680
  "filename": "lib/router-input.ts",
21681
- "line": 1175
21681
+ "line": 1177
21682
21682
  },
21683
21683
  "name": "routerInputRef",
21684
21684
  "overrides": "aws-cdk-lib.interfaces.aws_mediaconnect.IRouterInputRef",
@@ -21694,7 +21694,7 @@
21694
21694
  "immutable": true,
21695
21695
  "locationInModule": {
21696
21696
  "filename": "lib/router-input.ts",
21697
- "line": 1363
21697
+ "line": 1365
21698
21698
  },
21699
21699
  "name": "createdAt",
21700
21700
  "optional": true,
@@ -21712,7 +21712,7 @@
21712
21712
  "immutable": true,
21713
21713
  "locationInModule": {
21714
21714
  "filename": "lib/router-input.ts",
21715
- "line": 1366
21715
+ "line": 1368
21716
21716
  },
21717
21717
  "name": "transitEncryptionSecret",
21718
21718
  "optional": true,
@@ -21729,7 +21729,7 @@
21729
21729
  "immutable": true,
21730
21730
  "locationInModule": {
21731
21731
  "filename": "lib/router-input.ts",
21732
- "line": 1364
21732
+ "line": 1366
21733
21733
  },
21734
21734
  "name": "updatedAt",
21735
21735
  "optional": true,
@@ -21756,7 +21756,7 @@
21756
21756
  "kind": "interface",
21757
21757
  "locationInModule": {
21758
21758
  "filename": "lib/router-input.ts",
21759
- "line": 307
21759
+ "line": 309
21760
21760
  },
21761
21761
  "name": "RouterInputAttributes",
21762
21762
  "properties": [
@@ -21769,7 +21769,7 @@
21769
21769
  "immutable": true,
21770
21770
  "locationInModule": {
21771
21771
  "filename": "lib/router-input.ts",
21772
- "line": 311
21772
+ "line": 313
21773
21773
  },
21774
21774
  "name": "routerInputArn",
21775
21775
  "type": {
@@ -21786,7 +21786,7 @@
21786
21786
  "immutable": true,
21787
21787
  "locationInModule": {
21788
21788
  "filename": "lib/router-input.ts",
21789
- "line": 325
21789
+ "line": 327
21790
21790
  },
21791
21791
  "name": "ipAddress",
21792
21792
  "optional": true,
@@ -21804,7 +21804,7 @@
21804
21804
  "immutable": true,
21805
21805
  "locationInModule": {
21806
21806
  "filename": "lib/router-input.ts",
21807
- "line": 318
21807
+ "line": 320
21808
21808
  },
21809
21809
  "name": "routerInputId",
21810
21810
  "optional": true,
@@ -21821,7 +21821,7 @@
21821
21821
  "docs": {
21822
21822
  "stability": "experimental",
21823
21823
  "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});",
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_20,\n configuration: RouterInputConfiguration.mediaLiveChannel({\n channel: mediaLiveChannel,\n outputName: 'router-ts',\n pipeline: MediaLivePipeline.PIPELINE_0,\n }),\n});",
21825
21825
  "custom": {
21826
21826
  "exampleMetadata": "infused"
21827
21827
  }
@@ -21835,7 +21835,7 @@
21835
21835
  "kind": "class",
21836
21836
  "locationInModule": {
21837
21837
  "filename": "lib/router-input.ts",
21838
- "line": 846
21838
+ "line": 848
21839
21839
  },
21840
21840
  "methods": [
21841
21841
  {
@@ -21849,7 +21849,7 @@
21849
21849
  },
21850
21850
  "locationInModule": {
21851
21851
  "filename": "lib/router-input.ts",
21852
- "line": 862
21852
+ "line": 864
21853
21853
  },
21854
21854
  "name": "failover",
21855
21855
  "parameters": [
@@ -21879,7 +21879,7 @@
21879
21879
  },
21880
21880
  "locationInModule": {
21881
21881
  "filename": "lib/router-input.ts",
21882
- "line": 911
21882
+ "line": 913
21883
21883
  },
21884
21884
  "name": "mediaConnectFlow",
21885
21885
  "parameters": [
@@ -21908,7 +21908,7 @@
21908
21908
  },
21909
21909
  "locationInModule": {
21910
21910
  "filename": "lib/router-input.ts",
21911
- "line": 899
21911
+ "line": 901
21912
21912
  },
21913
21913
  "name": "mediaConnectFlowWithoutConnection",
21914
21914
  "parameters": [
@@ -21938,7 +21938,7 @@
21938
21938
  },
21939
21939
  "locationInModule": {
21940
21940
  "filename": "lib/router-input.ts",
21941
- "line": 928
21941
+ "line": 930
21942
21942
  },
21943
21943
  "name": "mediaLiveChannel",
21944
21944
  "parameters": [
@@ -21968,7 +21968,7 @@
21968
21968
  },
21969
21969
  "locationInModule": {
21970
21970
  "filename": "lib/router-input.ts",
21971
- "line": 945
21971
+ "line": 947
21972
21972
  },
21973
21973
  "name": "mediaLiveChannelWithoutConnection",
21974
21974
  "parameters": [
@@ -22000,7 +22000,7 @@
22000
22000
  },
22001
22001
  "locationInModule": {
22002
22002
  "filename": "lib/router-input.ts",
22003
- "line": 879
22003
+ "line": 881
22004
22004
  },
22005
22005
  "name": "merge",
22006
22006
  "parameters": [
@@ -22029,7 +22029,7 @@
22029
22029
  },
22030
22030
  "locationInModule": {
22031
22031
  "filename": "lib/router-input.ts",
22032
- "line": 852
22032
+ "line": 854
22033
22033
  },
22034
22034
  "name": "standard",
22035
22035
  "parameters": [
@@ -22293,7 +22293,7 @@
22293
22293
  "docs": {
22294
22294
  "stability": "experimental",
22295
22295
  "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});",
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_20,\n configuration: RouterInputConfiguration.mediaLiveChannel({\n channel: mediaLiveChannel,\n outputName: 'router-ts',\n pipeline: MediaLivePipeline.PIPELINE_0,\n }),\n});",
22297
22297
  "custom": {
22298
22298
  "exampleMetadata": "infused"
22299
22299
  }
@@ -22302,7 +22302,7 @@
22302
22302
  "kind": "interface",
22303
22303
  "locationInModule": {
22304
22304
  "filename": "lib/router-input.ts",
22305
- "line": 261
22305
+ "line": 262
22306
22306
  },
22307
22307
  "name": "RouterInputProps",
22308
22308
  "properties": [
@@ -22315,7 +22315,7 @@
22315
22315
  "immutable": true,
22316
22316
  "locationInModule": {
22317
22317
  "filename": "lib/router-input.ts",
22318
- "line": 277
22318
+ "line": 279
22319
22319
  },
22320
22320
  "name": "configuration",
22321
22321
  "type": {
@@ -22325,13 +22325,14 @@
22325
22325
  {
22326
22326
  "abstract": true,
22327
22327
  "docs": {
22328
+ "remarks": "Must fall within the limits of the selected `tier`.",
22328
22329
  "stability": "experimental",
22329
22330
  "summary": "The maximum bitrate for the router input."
22330
22331
  },
22331
22332
  "immutable": true,
22332
22333
  "locationInModule": {
22333
22334
  "filename": "lib/router-input.ts",
22334
- "line": 268
22335
+ "line": 269
22335
22336
  },
22336
22337
  "name": "maximumBitrate",
22337
22338
  "type": {
@@ -22347,7 +22348,7 @@
22347
22348
  "immutable": true,
22348
22349
  "locationInModule": {
22349
22350
  "filename": "lib/router-input.ts",
22350
- "line": 270
22351
+ "line": 271
22351
22352
  },
22352
22353
  "name": "routingScope",
22353
22354
  "type": {
@@ -22364,7 +22365,7 @@
22364
22365
  "immutable": true,
22365
22366
  "locationInModule": {
22366
22367
  "filename": "lib/router-input.ts",
22367
- "line": 282
22368
+ "line": 284
22368
22369
  },
22369
22370
  "name": "maintenanceConfiguration",
22370
22371
  "optional": true,
@@ -22382,7 +22383,7 @@
22382
22383
  "immutable": true,
22383
22384
  "locationInModule": {
22384
22385
  "filename": "lib/router-input.ts",
22385
- "line": 287
22386
+ "line": 289
22386
22387
  },
22387
22388
  "name": "regionName",
22388
22389
  "optional": true,
@@ -22400,7 +22401,7 @@
22400
22401
  "immutable": true,
22401
22402
  "locationInModule": {
22402
22403
  "filename": "lib/router-input.ts",
22403
- "line": 266
22404
+ "line": 267
22404
22405
  },
22405
22406
  "name": "routerInputName",
22406
22407
  "optional": true,
@@ -22418,7 +22419,7 @@
22418
22419
  "immutable": true,
22419
22420
  "locationInModule": {
22420
22421
  "filename": "lib/router-input.ts",
22421
- "line": 292
22422
+ "line": 294
22422
22423
  },
22423
22424
  "name": "tags",
22424
22425
  "optional": true,
@@ -22435,13 +22436,14 @@
22435
22436
  "abstract": true,
22436
22437
  "docs": {
22437
22438
  "default": "RouterInputTier.INPUT_20",
22439
+ "remarks": "The tier determines the capacity limits, performance characteristics,\nand associated costs; `maximumBitrate` must fall within its limits.",
22438
22440
  "stability": "experimental",
22439
- "summary": "Select a tier based on your maximum bitrate requirements."
22441
+ "summary": "Tier for this input."
22440
22442
  },
22441
22443
  "immutable": true,
22442
22444
  "locationInModule": {
22443
22445
  "filename": "lib/router-input.ts",
22444
- "line": 275
22446
+ "line": 277
22445
22447
  },
22446
22448
  "name": "tier",
22447
22449
  "optional": true,
@@ -22460,7 +22462,7 @@
22460
22462
  "immutable": true,
22461
22463
  "locationInModule": {
22462
22464
  "filename": "lib/router-input.ts",
22463
- "line": 301
22465
+ "line": 303
22464
22466
  },
22465
22467
  "name": "transitEncryption",
22466
22468
  "optional": true,
@@ -22485,7 +22487,7 @@
22485
22487
  "kind": "class",
22486
22488
  "locationInModule": {
22487
22489
  "filename": "lib/router-input.ts",
22488
- "line": 468
22490
+ "line": 470
22489
22491
  },
22490
22492
  "methods": [
22491
22493
  {
@@ -22496,7 +22498,7 @@
22496
22498
  },
22497
22499
  "locationInModule": {
22498
22500
  "filename": "lib/router-input.ts",
22499
- "line": 489
22501
+ "line": 491
22500
22502
  },
22501
22503
  "name": "rist",
22502
22504
  "parameters": [
@@ -22525,7 +22527,7 @@
22525
22527
  },
22526
22528
  "locationInModule": {
22527
22529
  "filename": "lib/router-input.ts",
22528
- "line": 474
22530
+ "line": 476
22529
22531
  },
22530
22532
  "name": "rtp",
22531
22533
  "parameters": [
@@ -22554,7 +22556,7 @@
22554
22556
  },
22555
22557
  "locationInModule": {
22556
22558
  "filename": "lib/router-input.ts",
22557
- "line": 519
22559
+ "line": 521
22558
22560
  },
22559
22561
  "name": "srtCaller",
22560
22562
  "parameters": [
@@ -22583,7 +22585,7 @@
22583
22585
  },
22584
22586
  "locationInModule": {
22585
22587
  "filename": "lib/router-input.ts",
22586
- "line": 504
22588
+ "line": 506
22587
22589
  },
22588
22590
  "name": "srtListener",
22589
22591
  "parameters": [
@@ -22761,9 +22763,10 @@
22761
22763
  "@aws-cdk/aws-mediaconnect-alpha.RouterInputTier": {
22762
22764
  "assembly": "@aws-cdk/aws-mediaconnect-alpha",
22763
22765
  "docs": {
22766
+ "remarks": "The tier determines the capacity limits, performance characteristics,\nand associated costs. The `maximumBitrate` must fall within the limits of the selected tier.",
22764
22767
  "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});",
22768
+ "summary": "Tier for a router input.",
22769
+ "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
22770
  "custom": {
22768
22771
  "exampleMetadata": "infused"
22769
22772
  }
@@ -22772,7 +22775,7 @@
22772
22775
  "kind": "class",
22773
22776
  "locationInModule": {
22774
22777
  "filename": "lib/router-input.ts",
22775
- "line": 223
22778
+ "line": 224
22776
22779
  },
22777
22780
  "methods": [
22778
22781
  {
@@ -22782,7 +22785,7 @@
22782
22785
  },
22783
22786
  "locationInModule": {
22784
22787
  "filename": "lib/router-input.ts",
22785
- "line": 235
22788
+ "line": 236
22786
22789
  },
22787
22790
  "name": "of",
22788
22791
  "parameters": [
@@ -22810,7 +22813,7 @@
22810
22813
  },
22811
22814
  "locationInModule": {
22812
22815
  "filename": "lib/router-input.ts",
22813
- "line": 243
22816
+ "line": 244
22814
22817
  },
22815
22818
  "name": "toString",
22816
22819
  "returns": {
@@ -22831,7 +22834,7 @@
22831
22834
  "immutable": true,
22832
22835
  "locationInModule": {
22833
22836
  "filename": "lib/router-input.ts",
22834
- "line": 225
22837
+ "line": 226
22835
22838
  },
22836
22839
  "name": "INPUT_100",
22837
22840
  "static": true,
@@ -22848,7 +22851,7 @@
22848
22851
  "immutable": true,
22849
22852
  "locationInModule": {
22850
22853
  "filename": "lib/router-input.ts",
22851
- "line": 229
22854
+ "line": 230
22852
22855
  },
22853
22856
  "name": "INPUT_20",
22854
22857
  "static": true,
@@ -22865,7 +22868,7 @@
22865
22868
  "immutable": true,
22866
22869
  "locationInModule": {
22867
22870
  "filename": "lib/router-input.ts",
22868
- "line": 227
22871
+ "line": 228
22869
22872
  },
22870
22873
  "name": "INPUT_50",
22871
22874
  "static": true,
@@ -22881,7 +22884,7 @@
22881
22884
  "immutable": true,
22882
22885
  "locationInModule": {
22883
22886
  "filename": "lib/router-input.ts",
22884
- "line": 240
22887
+ "line": 241
22885
22888
  },
22886
22889
  "name": "value",
22887
22890
  "type": {
@@ -23398,7 +23401,7 @@
23398
23401
  },
23399
23402
  "locationInModule": {
23400
23403
  "filename": "lib/router-output.ts",
23401
- "line": 903
23404
+ "line": 905
23402
23405
  },
23403
23406
  "parameters": [
23404
23407
  {
@@ -23427,7 +23430,7 @@
23427
23430
  "kind": "class",
23428
23431
  "locationInModule": {
23429
23432
  "filename": "lib/router-output.ts",
23430
- "line": 823
23433
+ "line": 825
23431
23434
  },
23432
23435
  "methods": [
23433
23436
  {
@@ -23439,7 +23442,7 @@
23439
23442
  },
23440
23443
  "locationInModule": {
23441
23444
  "filename": "lib/router-output.ts",
23442
- "line": 840
23445
+ "line": 842
23443
23446
  },
23444
23447
  "name": "fromRouterOutputArn",
23445
23448
  "parameters": [
@@ -23487,7 +23490,7 @@
23487
23490
  },
23488
23491
  "locationInModule": {
23489
23492
  "filename": "lib/router-output.ts",
23490
- "line": 854
23493
+ "line": 856
23491
23494
  },
23492
23495
  "name": "fromRouterOutputAttributes",
23493
23496
  "parameters": [
@@ -23533,7 +23536,7 @@
23533
23536
  },
23534
23537
  "locationInModule": {
23535
23538
  "filename": "lib/router-output.ts",
23536
- "line": 759
23539
+ "line": 761
23537
23540
  },
23538
23541
  "name": "metric",
23539
23542
  "overrides": "@aws-cdk/aws-mediaconnect-alpha.IRouterOutput",
@@ -23566,7 +23569,7 @@
23566
23569
  },
23567
23570
  "locationInModule": {
23568
23571
  "filename": "lib/router-output.ts",
23569
- "line": 810
23572
+ "line": 812
23570
23573
  },
23571
23574
  "name": "metricArqRequests",
23572
23575
  "overrides": "@aws-cdk/aws-mediaconnect-alpha.IRouterOutput",
@@ -23592,7 +23595,7 @@
23592
23595
  },
23593
23596
  "locationInModule": {
23594
23597
  "filename": "lib/router-output.ts",
23595
- "line": 774
23598
+ "line": 776
23596
23599
  },
23597
23600
  "name": "metricBitrate",
23598
23601
  "overrides": "@aws-cdk/aws-mediaconnect-alpha.IRouterOutput",
@@ -23619,7 +23622,7 @@
23619
23622
  },
23620
23623
  "locationInModule": {
23621
23624
  "filename": "lib/router-output.ts",
23622
- "line": 798
23625
+ "line": 800
23623
23626
  },
23624
23627
  "name": "metricConnected",
23625
23628
  "overrides": "@aws-cdk/aws-mediaconnect-alpha.IRouterOutput",
@@ -23645,7 +23648,7 @@
23645
23648
  },
23646
23649
  "locationInModule": {
23647
23650
  "filename": "lib/router-output.ts",
23648
- "line": 786
23651
+ "line": 788
23649
23652
  },
23650
23653
  "name": "metricTotalPackets",
23651
23654
  "overrides": "@aws-cdk/aws-mediaconnect-alpha.IRouterOutput",
@@ -23676,7 +23679,7 @@
23676
23679
  "immutable": true,
23677
23680
  "locationInModule": {
23678
23681
  "filename": "lib/router-output.ts",
23679
- "line": 826
23682
+ "line": 828
23680
23683
  },
23681
23684
  "name": "PROPERTY_INJECTION_ID",
23682
23685
  "static": true,
@@ -23692,7 +23695,7 @@
23692
23695
  "immutable": true,
23693
23696
  "locationInModule": {
23694
23697
  "filename": "lib/router-output.ts",
23695
- "line": 899
23698
+ "line": 901
23696
23699
  },
23697
23700
  "name": "ipAddress",
23698
23701
  "overrides": "@aws-cdk/aws-mediaconnect-alpha.IRouterOutput",
@@ -23708,7 +23711,7 @@
23708
23711
  "immutable": true,
23709
23712
  "locationInModule": {
23710
23713
  "filename": "lib/router-output.ts",
23711
- "line": 896
23714
+ "line": 898
23712
23715
  },
23713
23716
  "name": "routerOutputArn",
23714
23717
  "overrides": "@aws-cdk/aws-mediaconnect-alpha.IRouterOutput",
@@ -23724,7 +23727,7 @@
23724
23727
  "immutable": true,
23725
23728
  "locationInModule": {
23726
23729
  "filename": "lib/router-output.ts",
23727
- "line": 898
23730
+ "line": 900
23728
23731
  },
23729
23732
  "name": "routerOutputId",
23730
23733
  "overrides": "@aws-cdk/aws-mediaconnect-alpha.IRouterOutput",
@@ -23740,7 +23743,7 @@
23740
23743
  "immutable": true,
23741
23744
  "locationInModule": {
23742
23745
  "filename": "lib/router-output.ts",
23743
- "line": 897
23746
+ "line": 899
23744
23747
  },
23745
23748
  "name": "routerOutputName",
23746
23749
  "overrides": "@aws-cdk/aws-mediaconnect-alpha.IRouterOutput",
@@ -23757,7 +23760,7 @@
23757
23760
  "immutable": true,
23758
23761
  "locationInModule": {
23759
23762
  "filename": "lib/router-output.ts",
23760
- "line": 752
23763
+ "line": 754
23761
23764
  },
23762
23765
  "name": "routerOutputRef",
23763
23766
  "overrides": "aws-cdk-lib.interfaces.aws_mediaconnect.IRouterOutputRef",
@@ -23773,7 +23776,7 @@
23773
23776
  "immutable": true,
23774
23777
  "locationInModule": {
23775
23778
  "filename": "lib/router-output.ts",
23776
- "line": 900
23779
+ "line": 902
23777
23780
  },
23778
23781
  "name": "createdAt",
23779
23782
  "optional": true,
@@ -23790,7 +23793,7 @@
23790
23793
  "immutable": true,
23791
23794
  "locationInModule": {
23792
23795
  "filename": "lib/router-output.ts",
23793
- "line": 901
23796
+ "line": 903
23794
23797
  },
23795
23798
  "name": "updatedAt",
23796
23799
  "optional": true,
@@ -23817,7 +23820,7 @@
23817
23820
  "kind": "interface",
23818
23821
  "locationInModule": {
23819
23822
  "filename": "lib/router-output.ts",
23820
- "line": 200
23823
+ "line": 202
23821
23824
  },
23822
23825
  "name": "RouterOutputAttributes",
23823
23826
  "properties": [
@@ -23830,7 +23833,7 @@
23830
23833
  "immutable": true,
23831
23834
  "locationInModule": {
23832
23835
  "filename": "lib/router-output.ts",
23833
- "line": 204
23836
+ "line": 206
23834
23837
  },
23835
23838
  "name": "routerOutputArn",
23836
23839
  "type": {
@@ -23847,7 +23850,7 @@
23847
23850
  "immutable": true,
23848
23851
  "locationInModule": {
23849
23852
  "filename": "lib/router-output.ts",
23850
- "line": 221
23853
+ "line": 223
23851
23854
  },
23852
23855
  "name": "routerOutputId",
23853
23856
  "optional": true,
@@ -23866,7 +23869,7 @@
23866
23869
  "immutable": true,
23867
23870
  "locationInModule": {
23868
23871
  "filename": "lib/router-output.ts",
23869
- "line": 214
23872
+ "line": 216
23870
23873
  },
23871
23874
  "name": "routerOutputName",
23872
23875
  "optional": true,
@@ -23897,7 +23900,7 @@
23897
23900
  "kind": "class",
23898
23901
  "locationInModule": {
23899
23902
  "filename": "lib/router-output.ts",
23900
- "line": 534
23903
+ "line": 536
23901
23904
  },
23902
23905
  "methods": [
23903
23906
  {
@@ -23910,7 +23913,7 @@
23910
23913
  },
23911
23914
  "locationInModule": {
23912
23915
  "filename": "lib/router-output.ts",
23913
- "line": 602
23916
+ "line": 604
23914
23917
  },
23915
23918
  "name": "mediaConnectFlow",
23916
23919
  "parameters": [
@@ -23941,7 +23944,7 @@
23941
23944
  },
23942
23945
  "locationInModule": {
23943
23946
  "filename": "lib/router-output.ts",
23944
- "line": 623
23947
+ "line": 625
23945
23948
  },
23946
23949
  "name": "mediaConnectFlowWithoutConnection",
23947
23950
  "parameters": [
@@ -23970,7 +23973,7 @@
23970
23973
  },
23971
23974
  "locationInModule": {
23972
23975
  "filename": "lib/router-output.ts",
23973
- "line": 564
23976
+ "line": 566
23974
23977
  },
23975
23978
  "name": "mediaLiveInput",
23976
23979
  "parameters": [
@@ -23999,7 +24002,7 @@
23999
24002
  },
24000
24003
  "locationInModule": {
24001
24004
  "filename": "lib/router-output.ts",
24002
- "line": 579
24005
+ "line": 581
24003
24006
  },
24004
24007
  "name": "mediaLiveInputWithoutConnection",
24005
24008
  "parameters": [
@@ -24029,7 +24032,7 @@
24029
24032
  },
24030
24033
  "locationInModule": {
24031
24034
  "filename": "lib/router-output.ts",
24032
- "line": 553
24035
+ "line": 555
24033
24036
  },
24034
24037
  "name": "standard",
24035
24038
  "parameters": [
@@ -24069,7 +24072,7 @@
24069
24072
  "kind": "interface",
24070
24073
  "locationInModule": {
24071
24074
  "filename": "lib/router-output.ts",
24072
- "line": 162
24075
+ "line": 163
24073
24076
  },
24074
24077
  "name": "RouterOutputProps",
24075
24078
  "properties": [
@@ -24082,7 +24085,7 @@
24082
24085
  "immutable": true,
24083
24086
  "locationInModule": {
24084
24087
  "filename": "lib/router-output.ts",
24085
- "line": 179
24088
+ "line": 181
24086
24089
  },
24087
24090
  "name": "configuration",
24088
24091
  "type": {
@@ -24092,13 +24095,14 @@
24092
24095
  {
24093
24096
  "abstract": true,
24094
24097
  "docs": {
24098
+ "remarks": "Must fall within the limits of the selected `tier`.",
24095
24099
  "stability": "experimental",
24096
24100
  "summary": "The maximum bitrate for the router output."
24097
24101
  },
24098
24102
  "immutable": true,
24099
24103
  "locationInModule": {
24100
24104
  "filename": "lib/router-output.ts",
24101
- "line": 169
24105
+ "line": 170
24102
24106
  },
24103
24107
  "name": "maximumBitrate",
24104
24108
  "type": {
@@ -24114,7 +24118,7 @@
24114
24118
  "immutable": true,
24115
24119
  "locationInModule": {
24116
24120
  "filename": "lib/router-output.ts",
24117
- "line": 171
24121
+ "line": 172
24118
24122
  },
24119
24123
  "name": "routingScope",
24120
24124
  "type": {
@@ -24131,7 +24135,7 @@
24131
24135
  "immutable": true,
24132
24136
  "locationInModule": {
24133
24137
  "filename": "lib/router-output.ts",
24134
- "line": 184
24138
+ "line": 186
24135
24139
  },
24136
24140
  "name": "maintenanceConfiguration",
24137
24141
  "optional": true,
@@ -24149,7 +24153,7 @@
24149
24153
  "immutable": true,
24150
24154
  "locationInModule": {
24151
24155
  "filename": "lib/router-output.ts",
24152
- "line": 189
24156
+ "line": 191
24153
24157
  },
24154
24158
  "name": "regionName",
24155
24159
  "optional": true,
@@ -24167,7 +24171,7 @@
24167
24171
  "immutable": true,
24168
24172
  "locationInModule": {
24169
24173
  "filename": "lib/router-output.ts",
24170
- "line": 167
24174
+ "line": 168
24171
24175
  },
24172
24176
  "name": "routerOutputName",
24173
24177
  "optional": true,
@@ -24185,7 +24189,7 @@
24185
24189
  "immutable": true,
24186
24190
  "locationInModule": {
24187
24191
  "filename": "lib/router-output.ts",
24188
- "line": 194
24192
+ "line": 196
24189
24193
  },
24190
24194
  "name": "tags",
24191
24195
  "optional": true,
@@ -24202,13 +24206,14 @@
24202
24206
  "abstract": true,
24203
24207
  "docs": {
24204
24208
  "default": "RouterOutputTier.OUTPUT_20",
24209
+ "remarks": "The tier determines the capacity limits, performance characteristics,\nand associated costs; `maximumBitrate` must fall within its limits.",
24205
24210
  "stability": "experimental",
24206
- "summary": "Routing tier that determines the maximum bitrate (in Mbps) for this output."
24211
+ "summary": "Tier for this output."
24207
24212
  },
24208
24213
  "immutable": true,
24209
24214
  "locationInModule": {
24210
24215
  "filename": "lib/router-output.ts",
24211
- "line": 177
24216
+ "line": 179
24212
24217
  },
24213
24218
  "name": "tier",
24214
24219
  "optional": true,
@@ -24234,7 +24239,7 @@
24234
24239
  "kind": "class",
24235
24240
  "locationInModule": {
24236
24241
  "filename": "lib/router-output.ts",
24237
- "line": 291
24242
+ "line": 293
24238
24243
  },
24239
24244
  "methods": [
24240
24245
  {
@@ -24246,7 +24251,7 @@
24246
24251
  },
24247
24252
  "locationInModule": {
24248
24253
  "filename": "lib/router-output.ts",
24249
- "line": 329
24254
+ "line": 331
24250
24255
  },
24251
24256
  "name": "rist",
24252
24257
  "parameters": [
@@ -24276,7 +24281,7 @@
24276
24281
  },
24277
24282
  "locationInModule": {
24278
24283
  "filename": "lib/router-output.ts",
24279
- "line": 305
24284
+ "line": 307
24280
24285
  },
24281
24286
  "name": "rtp",
24282
24287
  "parameters": [
@@ -24306,7 +24311,7 @@
24306
24311
  },
24307
24312
  "locationInModule": {
24308
24313
  "filename": "lib/router-output.ts",
24309
- "line": 376
24314
+ "line": 378
24310
24315
  },
24311
24316
  "name": "srtCaller",
24312
24317
  "parameters": [
@@ -24336,7 +24341,7 @@
24336
24341
  },
24337
24342
  "locationInModule": {
24338
24343
  "filename": "lib/router-output.ts",
24339
- "line": 352
24344
+ "line": 354
24340
24345
  },
24341
24346
  "name": "srtListener",
24342
24347
  "parameters": [
@@ -24514,9 +24519,10 @@
24514
24519
  "@aws-cdk/aws-mediaconnect-alpha.RouterOutputTier": {
24515
24520
  "assembly": "@aws-cdk/aws-mediaconnect-alpha",
24516
24521
  "docs": {
24522
+ "remarks": "The tier determines the capacity limits, performance characteristics,\nand associated costs. The `maximumBitrate` must fall within the limits of the selected tier.",
24517
24523
  "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});",
24524
+ "summary": "Tier for a router output.",
24525
+ "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
24526
  "custom": {
24521
24527
  "exampleMetadata": "infused"
24522
24528
  }
@@ -24525,7 +24531,7 @@
24525
24531
  "kind": "class",
24526
24532
  "locationInModule": {
24527
24533
  "filename": "lib/router-output.ts",
24528
- "line": 52
24534
+ "line": 53
24529
24535
  },
24530
24536
  "methods": [
24531
24537
  {
@@ -24535,7 +24541,7 @@
24535
24541
  },
24536
24542
  "locationInModule": {
24537
24543
  "filename": "lib/router-output.ts",
24538
- "line": 64
24544
+ "line": 65
24539
24545
  },
24540
24546
  "name": "of",
24541
24547
  "parameters": [
@@ -24563,7 +24569,7 @@
24563
24569
  },
24564
24570
  "locationInModule": {
24565
24571
  "filename": "lib/router-output.ts",
24566
- "line": 72
24572
+ "line": 73
24567
24573
  },
24568
24574
  "name": "toString",
24569
24575
  "returns": {
@@ -24584,7 +24590,7 @@
24584
24590
  "immutable": true,
24585
24591
  "locationInModule": {
24586
24592
  "filename": "lib/router-output.ts",
24587
- "line": 54
24593
+ "line": 55
24588
24594
  },
24589
24595
  "name": "OUTPUT_100",
24590
24596
  "static": true,
@@ -24601,7 +24607,7 @@
24601
24607
  "immutable": true,
24602
24608
  "locationInModule": {
24603
24609
  "filename": "lib/router-output.ts",
24604
- "line": 58
24610
+ "line": 59
24605
24611
  },
24606
24612
  "name": "OUTPUT_20",
24607
24613
  "static": true,
@@ -24618,7 +24624,7 @@
24618
24624
  "immutable": true,
24619
24625
  "locationInModule": {
24620
24626
  "filename": "lib/router-output.ts",
24621
- "line": 56
24627
+ "line": 57
24622
24628
  },
24623
24629
  "name": "OUTPUT_50",
24624
24630
  "static": true,
@@ -24634,7 +24640,7 @@
24634
24640
  "immutable": true,
24635
24641
  "locationInModule": {
24636
24642
  "filename": "lib/router-output.ts",
24637
- "line": 69
24643
+ "line": 70
24638
24644
  },
24639
24645
  "name": "value",
24640
24646
  "type": {
@@ -24710,7 +24716,7 @@
24710
24716
  "see": "https://docs.aws.amazon.com/mediaconnect/latest/ug/cross-service-confused-deputy-prevention.html",
24711
24717
  "stability": "experimental",
24712
24718
  "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});",
24719
+ "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
24720
  "custom": {
24715
24721
  "exampleMetadata": "infused"
24716
24722
  }
@@ -24806,7 +24812,7 @@
24806
24812
  "docs": {
24807
24813
  "stability": "experimental",
24808
24814
  "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});",
24815
+ "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
24816
  "custom": {
24811
24817
  "exampleMetadata": "infused"
24812
24818
  }
@@ -25045,7 +25051,7 @@
25045
25051
  "kind": "interface",
25046
25052
  "locationInModule": {
25047
25053
  "filename": "lib/router-output.ts",
25048
- "line": 227
25054
+ "line": 229
25049
25055
  },
25050
25056
  "name": "RtpOutputProtocolProps",
25051
25057
  "properties": [
@@ -25058,7 +25064,7 @@
25058
25064
  "immutable": true,
25059
25065
  "locationInModule": {
25060
25066
  "filename": "lib/router-output.ts",
25061
- "line": 229
25067
+ "line": 231
25062
25068
  },
25063
25069
  "name": "destinationAddress",
25064
25070
  "type": {
@@ -25074,7 +25080,7 @@
25074
25080
  "immutable": true,
25075
25081
  "locationInModule": {
25076
25082
  "filename": "lib/router-output.ts",
25077
- "line": 231
25083
+ "line": 233
25078
25084
  },
25079
25085
  "name": "port",
25080
25086
  "type": {
@@ -25091,7 +25097,7 @@
25091
25097
  "immutable": true,
25092
25098
  "locationInModule": {
25093
25099
  "filename": "lib/router-output.ts",
25094
- "line": 236
25100
+ "line": 238
25095
25101
  },
25096
25102
  "name": "forwardErrorCorrection",
25097
25103
  "optional": true,
@@ -25117,7 +25123,7 @@
25117
25123
  "kind": "interface",
25118
25124
  "locationInModule": {
25119
25125
  "filename": "lib/router-input.ts",
25120
- "line": 397
25126
+ "line": 399
25121
25127
  },
25122
25128
  "name": "RtpProtocolProps",
25123
25129
  "properties": [
@@ -25130,7 +25136,7 @@
25130
25136
  "immutable": true,
25131
25137
  "locationInModule": {
25132
25138
  "filename": "lib/router-input.ts",
25133
- "line": 399
25139
+ "line": 401
25134
25140
  },
25135
25141
  "name": "port",
25136
25142
  "type": {
@@ -25147,7 +25153,7 @@
25147
25153
  "immutable": true,
25148
25154
  "locationInModule": {
25149
25155
  "filename": "lib/router-input.ts",
25150
- "line": 404
25156
+ "line": 406
25151
25157
  },
25152
25158
  "name": "forwardErrorCorrection",
25153
25159
  "optional": true,
@@ -26100,7 +26106,7 @@
26100
26106
  "docs": {
26101
26107
  "stability": "experimental",
26102
26108
  "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});",
26109
+ "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
26110
  "custom": {
26105
26111
  "exampleMetadata": "infused"
26106
26112
  }
@@ -26109,7 +26115,7 @@
26109
26115
  "kind": "class",
26110
26116
  "locationInModule": {
26111
26117
  "filename": "lib/router-input.ts",
26112
- "line": 362
26118
+ "line": 364
26113
26119
  },
26114
26120
  "methods": [
26115
26121
  {
@@ -26119,7 +26125,7 @@
26119
26125
  },
26120
26126
  "locationInModule": {
26121
26127
  "filename": "lib/router-input.ts",
26122
- "line": 366
26128
+ "line": 368
26123
26129
  },
26124
26130
  "name": "none",
26125
26131
  "returns": {
@@ -26137,7 +26143,7 @@
26137
26143
  },
26138
26144
  "locationInModule": {
26139
26145
  "filename": "lib/router-input.ts",
26140
- "line": 373
26146
+ "line": 375
26141
26147
  },
26142
26148
  "name": "primarySecondary",
26143
26149
  "parameters": [
@@ -27074,7 +27080,7 @@
27074
27080
  "docs": {
27075
27081
  "stability": "experimental",
27076
27082
  "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});",
27083
+ "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
27084
  "custom": {
27079
27085
  "exampleMetadata": "infused"
27080
27086
  }
@@ -27083,7 +27089,7 @@
27083
27089
  "kind": "interface",
27084
27090
  "locationInModule": {
27085
27091
  "filename": "lib/router-output.ts",
27086
- "line": 267
27092
+ "line": 269
27087
27093
  },
27088
27094
  "name": "SrtCallerOutputProtocolProps",
27089
27095
  "properties": [
@@ -27096,7 +27102,7 @@
27096
27102
  "immutable": true,
27097
27103
  "locationInModule": {
27098
27104
  "filename": "lib/router-output.ts",
27099
- "line": 269
27105
+ "line": 271
27100
27106
  },
27101
27107
  "name": "destinationAddress",
27102
27108
  "type": {
@@ -27112,7 +27118,7 @@
27112
27118
  "immutable": true,
27113
27119
  "locationInModule": {
27114
27120
  "filename": "lib/router-output.ts",
27115
- "line": 271
27121
+ "line": 273
27116
27122
  },
27117
27123
  "name": "destinationPort",
27118
27124
  "type": {
@@ -27128,7 +27134,7 @@
27128
27134
  "immutable": true,
27129
27135
  "locationInModule": {
27130
27136
  "filename": "lib/router-output.ts",
27131
- "line": 273
27137
+ "line": 275
27132
27138
  },
27133
27139
  "name": "minimumLatency",
27134
27140
  "type": {
@@ -27145,7 +27151,7 @@
27145
27151
  "immutable": true,
27146
27152
  "locationInModule": {
27147
27153
  "filename": "lib/router-output.ts",
27148
- "line": 283
27154
+ "line": 285
27149
27155
  },
27150
27156
  "name": "encryptionConfiguration",
27151
27157
  "optional": true,
@@ -27163,7 +27169,7 @@
27163
27169
  "immutable": true,
27164
27170
  "locationInModule": {
27165
27171
  "filename": "lib/router-output.ts",
27166
- "line": 278
27172
+ "line": 280
27167
27173
  },
27168
27174
  "name": "streamId",
27169
27175
  "optional": true,
@@ -27189,7 +27195,7 @@
27189
27195
  "kind": "interface",
27190
27196
  "locationInModule": {
27191
27197
  "filename": "lib/router-input.ts",
27192
- "line": 435
27198
+ "line": 437
27193
27199
  },
27194
27200
  "name": "SrtCallerProtocolProps",
27195
27201
  "properties": [
@@ -27202,7 +27208,7 @@
27202
27208
  "immutable": true,
27203
27209
  "locationInModule": {
27204
27210
  "filename": "lib/router-input.ts",
27205
- "line": 441
27211
+ "line": 443
27206
27212
  },
27207
27213
  "name": "minimumLatency",
27208
27214
  "type": {
@@ -27218,7 +27224,7 @@
27218
27224
  "immutable": true,
27219
27225
  "locationInModule": {
27220
27226
  "filename": "lib/router-input.ts",
27221
- "line": 437
27227
+ "line": 439
27222
27228
  },
27223
27229
  "name": "sourceAddress",
27224
27230
  "type": {
@@ -27234,7 +27240,7 @@
27234
27240
  "immutable": true,
27235
27241
  "locationInModule": {
27236
27242
  "filename": "lib/router-input.ts",
27237
- "line": 439
27243
+ "line": 441
27238
27244
  },
27239
27245
  "name": "sourcePort",
27240
27246
  "type": {
@@ -27251,7 +27257,7 @@
27251
27257
  "immutable": true,
27252
27258
  "locationInModule": {
27253
27259
  "filename": "lib/router-input.ts",
27254
- "line": 451
27260
+ "line": 453
27255
27261
  },
27256
27262
  "name": "decryptionConfiguration",
27257
27263
  "optional": true,
@@ -27269,7 +27275,7 @@
27269
27275
  "immutable": true,
27270
27276
  "locationInModule": {
27271
27277
  "filename": "lib/router-input.ts",
27272
- "line": 446
27278
+ "line": 448
27273
27279
  },
27274
27280
  "name": "streamId",
27275
27281
  "optional": true,
@@ -27412,7 +27418,7 @@
27412
27418
  "kind": "interface",
27413
27419
  "locationInModule": {
27414
27420
  "filename": "lib/router-output.ts",
27415
- "line": 252
27421
+ "line": 254
27416
27422
  },
27417
27423
  "name": "SrtListenerOutputProtocolProps",
27418
27424
  "properties": [
@@ -27425,7 +27431,7 @@
27425
27431
  "immutable": true,
27426
27432
  "locationInModule": {
27427
27433
  "filename": "lib/router-output.ts",
27428
- "line": 256
27434
+ "line": 258
27429
27435
  },
27430
27436
  "name": "minimumLatency",
27431
27437
  "type": {
@@ -27441,7 +27447,7 @@
27441
27447
  "immutable": true,
27442
27448
  "locationInModule": {
27443
27449
  "filename": "lib/router-output.ts",
27444
- "line": 254
27450
+ "line": 256
27445
27451
  },
27446
27452
  "name": "port",
27447
27453
  "type": {
@@ -27458,7 +27464,7 @@
27458
27464
  "immutable": true,
27459
27465
  "locationInModule": {
27460
27466
  "filename": "lib/router-output.ts",
27461
- "line": 261
27467
+ "line": 263
27462
27468
  },
27463
27469
  "name": "encryptionConfiguration",
27464
27470
  "optional": true,
@@ -27484,7 +27490,7 @@
27484
27490
  "kind": "interface",
27485
27491
  "locationInModule": {
27486
27492
  "filename": "lib/router-input.ts",
27487
- "line": 420
27493
+ "line": 422
27488
27494
  },
27489
27495
  "name": "SrtListenerProtocolProps",
27490
27496
  "properties": [
@@ -27497,7 +27503,7 @@
27497
27503
  "immutable": true,
27498
27504
  "locationInModule": {
27499
27505
  "filename": "lib/router-input.ts",
27500
- "line": 424
27506
+ "line": 426
27501
27507
  },
27502
27508
  "name": "minimumLatency",
27503
27509
  "type": {
@@ -27513,7 +27519,7 @@
27513
27519
  "immutable": true,
27514
27520
  "locationInModule": {
27515
27521
  "filename": "lib/router-input.ts",
27516
- "line": 422
27522
+ "line": 424
27517
27523
  },
27518
27524
  "name": "port",
27519
27525
  "type": {
@@ -27530,7 +27536,7 @@
27530
27536
  "immutable": true,
27531
27537
  "locationInModule": {
27532
27538
  "filename": "lib/router-input.ts",
27533
- "line": 429
27539
+ "line": 431
27534
27540
  },
27535
27541
  "name": "decryptionConfiguration",
27536
27542
  "optional": true,
@@ -27615,7 +27621,7 @@
27615
27621
  "kind": "interface",
27616
27622
  "locationInModule": {
27617
27623
  "filename": "lib/router-input.ts",
27618
- "line": 709
27624
+ "line": 711
27619
27625
  },
27620
27626
  "name": "StandardConfigurationProps",
27621
27627
  "properties": [
@@ -27628,7 +27634,7 @@
27628
27634
  "immutable": true,
27629
27635
  "locationInModule": {
27630
27636
  "filename": "lib/router-input.ts",
27631
- "line": 711
27637
+ "line": 713
27632
27638
  },
27633
27639
  "name": "networkInterface",
27634
27640
  "type": {
@@ -27644,7 +27650,7 @@
27644
27650
  "immutable": true,
27645
27651
  "locationInModule": {
27646
27652
  "filename": "lib/router-input.ts",
27647
- "line": 713
27653
+ "line": 715
27648
27654
  },
27649
27655
  "name": "protocol",
27650
27656
  "type": {
@@ -27661,7 +27667,7 @@
27661
27667
  "immutable": true,
27662
27668
  "locationInModule": {
27663
27669
  "filename": "lib/router-input.ts",
27664
- "line": 719
27670
+ "line": 721
27665
27671
  },
27666
27672
  "name": "availabilityZone",
27667
27673
  "optional": true,
@@ -27687,7 +27693,7 @@
27687
27693
  "kind": "interface",
27688
27694
  "locationInModule": {
27689
27695
  "filename": "lib/router-output.ts",
27690
- "line": 462
27696
+ "line": 464
27691
27697
  },
27692
27698
  "name": "StandardOutputConfigurationProps",
27693
27699
  "properties": [
@@ -27700,7 +27706,7 @@
27700
27706
  "immutable": true,
27701
27707
  "locationInModule": {
27702
27708
  "filename": "lib/router-output.ts",
27703
- "line": 464
27709
+ "line": 466
27704
27710
  },
27705
27711
  "name": "networkInterface",
27706
27712
  "type": {
@@ -27716,7 +27722,7 @@
27716
27722
  "immutable": true,
27717
27723
  "locationInModule": {
27718
27724
  "filename": "lib/router-output.ts",
27719
- "line": 466
27725
+ "line": 468
27720
27726
  },
27721
27727
  "name": "protocol",
27722
27728
  "type": {
@@ -27733,7 +27739,7 @@
27733
27739
  "immutable": true,
27734
27740
  "locationInModule": {
27735
27741
  "filename": "lib/router-output.ts",
27736
- "line": 472
27742
+ "line": 474
27737
27743
  },
27738
27744
  "name": "availabilityZone",
27739
27745
  "optional": true,
@@ -28094,7 +28100,7 @@
28094
28100
  "see": "https://docs.aws.amazon.com/mediaconnect/latest/ug/cross-service-confused-deputy-prevention.html",
28095
28101
  "stability": "experimental",
28096
28102
  "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});",
28103
+ "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
28104
  "custom": {
28099
28105
  "exampleMetadata": "infused"
28100
28106
  }
@@ -29056,6 +29062,6 @@
29056
29062
  "symbolId": "lib/flow-output:ZixiPushOutputConfig"
29057
29063
  }
29058
29064
  },
29059
- "version": "2.270.0-alpha.0",
29065
+ "version": "2.271.0-alpha.0",
29060
29066
  "fingerprint": "**********"
29061
29067
  }