@aws-cdk/aws-mediaconnect-alpha 2.263.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.
@@ -0,0 +1,557 @@
1
+ import type { Bitrate, IResource } from 'aws-cdk-lib';
2
+ import { Duration, Resource } from 'aws-cdk-lib';
3
+ import type { MetricOptions } from 'aws-cdk-lib/aws-cloudwatch';
4
+ import { Metric } from 'aws-cdk-lib/aws-cloudwatch';
5
+ import type { IRouterOutputRef, RouterOutputReference } from 'aws-cdk-lib/aws-mediaconnect';
6
+ import type { Construct } from 'constructs';
7
+ import type { IFlow } from './flow';
8
+ import type { MaintenanceConfiguration, ForwardErrorCorrection, RoutingScope } from './router-input';
9
+ import type { IRouterNetworkInterface } from './router-network-interface';
10
+ import type { MediaLivePipeline, RouterSrtEncryption, TransitEncryption } from './shared';
11
+ /**
12
+ * Protocol options available for Router Output configurations
13
+ */
14
+ export declare class RouterOutputProtocolOptions {
15
+ readonly value: string;
16
+ /** Real-time Transport Protocol */
17
+ static readonly RTP: RouterOutputProtocolOptions;
18
+ /** Reliable Internet Stream Transport */
19
+ static readonly RIST: RouterOutputProtocolOptions;
20
+ /** Secure Reliable Transport - Caller mode */
21
+ static readonly SRT_CALLER: RouterOutputProtocolOptions;
22
+ /** Secure Reliable Transport - Listener mode */
23
+ static readonly SRT_LISTENER: RouterOutputProtocolOptions;
24
+ /**
25
+ * Use a custom protocol value
26
+ * @param value The protocol string value
27
+ */
28
+ static of(value: string): RouterOutputProtocolOptions;
29
+ /** @param value The protocol string value */
30
+ private constructor();
31
+ /** Returns the string value */
32
+ toString(): string;
33
+ }
34
+ /**
35
+ * Routing tier that determines the maximum bitrate (in Mbps) for a Router Output.
36
+ */
37
+ export declare class RouterOutputTier {
38
+ readonly value: string;
39
+ /** Up to 100 Mbps */
40
+ static readonly OUTPUT_100: RouterOutputTier;
41
+ /** Up to 50 Mbps */
42
+ static readonly OUTPUT_50: RouterOutputTier;
43
+ /** Up to 20 Mbps */
44
+ static readonly OUTPUT_20: RouterOutputTier;
45
+ /**
46
+ * Use a custom tier value
47
+ * @param value The tier string value
48
+ */
49
+ static of(value: string): RouterOutputTier;
50
+ /** @param value The tier string value */
51
+ private constructor();
52
+ /** Returns the string value */
53
+ toString(): string;
54
+ }
55
+ /**
56
+ * Interface for Router Output
57
+ */
58
+ export interface IRouterOutput extends IResource, IRouterOutputRef {
59
+ /**
60
+ * The name of the router output.
61
+ *
62
+ * @attribute
63
+ */
64
+ readonly routerOutputName: string;
65
+ /**
66
+ * The Amazon Resource Name (ARN) of the router output.
67
+ *
68
+ * @attribute
69
+ */
70
+ readonly routerOutputArn: string;
71
+ /**
72
+ * The unique identifier of the router output.
73
+ *
74
+ * @attribute
75
+ */
76
+ readonly routerOutputId: string;
77
+ /**
78
+ * The IP address of the router output.
79
+ *
80
+ * @attribute
81
+ */
82
+ readonly ipAddress: string;
83
+ /**
84
+ * The timestamp when the router output was created.
85
+ *
86
+ * @attribute
87
+ */
88
+ readonly createdAt?: string;
89
+ /**
90
+ * The timestamp when the router output was last updated.
91
+ *
92
+ * @attribute
93
+ */
94
+ readonly updatedAt?: string;
95
+ /**
96
+ * Create a CloudWatch metric for this router output.
97
+ *
98
+ * Router output metrics are dimensioned by `RouterOutputARN`. See the MediaConnect
99
+ * documentation for available metric names (e.g. `RouterOutputBitRate`,
100
+ * `RouterOutputTotalPackets`).
101
+ */
102
+ metric(metricName: string, props?: MetricOptions): Metric;
103
+ /**
104
+ * Metric for the bitrate of the router output's payload.
105
+ * @default - average over 60 seconds
106
+ */
107
+ metricBitrate(props?: MetricOptions): Metric;
108
+ /**
109
+ * Metric for the total number of packets sent by the router output.
110
+ * @default - sum over 60 seconds
111
+ */
112
+ metricTotalPackets(props?: MetricOptions): Metric;
113
+ /**
114
+ * Metric for the router output connection state (1 connected, 0 disconnected). Applies to SRT outputs only.
115
+ * @default - minimum over 60 seconds
116
+ */
117
+ metricConnected(props?: MetricOptions): Metric;
118
+ /**
119
+ * Metric for the number of retransmitted packets requested through automatic repeat request (ARQ).
120
+ * Applies to RIST and SRT outputs only.
121
+ *
122
+ * @default - sum over 60 seconds
123
+ */
124
+ metricArqRequests(props?: MetricOptions): Metric;
125
+ }
126
+ /**
127
+ * Properties for creating a Router Output
128
+ */
129
+ export interface RouterOutputProps {
130
+ /**
131
+ * Name of the Router Output
132
+ * @default - Generated automatically
133
+ */
134
+ readonly routerOutputName?: string;
135
+ /** Maximum bitrate in bits per second that the Router Output can handle */
136
+ readonly maximumBitrate: Bitrate;
137
+ /** Routing scope for the Router Output */
138
+ readonly routingScope: RoutingScope;
139
+ /**
140
+ * Routing tier that determines the maximum number of outputs.
141
+ *
142
+ * @default RouterOutputTier.OUTPUT_20
143
+ */
144
+ readonly tier?: RouterOutputTier;
145
+ /** Configuration for the Router Output (standard, MediaConnect Flow, or MediaLive) */
146
+ readonly configuration: RouterOutputConfiguration;
147
+ /**
148
+ * Maintenance window configuration
149
+ * @default - Default maintenance window will be used
150
+ */
151
+ readonly maintenanceConfiguration?: MaintenanceConfiguration;
152
+ /**
153
+ * AWS region where the Router Output will be created
154
+ * @default - Defaults to the same region as stack
155
+ */
156
+ readonly regionName?: string;
157
+ /**
158
+ * Tags to add to the Router Output
159
+ * @default - No tagging
160
+ */
161
+ readonly tags?: {
162
+ [key: string]: string;
163
+ };
164
+ }
165
+ /**
166
+ * Attributes for importing an existing Router Output.
167
+ */
168
+ export interface RouterOutputAttributes {
169
+ /**
170
+ * The ARN of the router output.
171
+ */
172
+ readonly routerOutputArn: string;
173
+ /**
174
+ * The name of the router output.
175
+ *
176
+ * The name is not encoded in the ARN (the ARN contains only the service-generated ID),
177
+ * so provide it here if you need to access `routerOutputName` on the imported construct.
178
+ *
179
+ * @default - routerOutputName is not available on the imported construct
180
+ */
181
+ readonly routerOutputName?: string;
182
+ /**
183
+ * The unique identifier of the router output.
184
+ *
185
+ * @default - parsed from the ARN when available
186
+ */
187
+ readonly routerOutputId?: string;
188
+ }
189
+ /**
190
+ * Properties for RTP protocol configuration for outputs
191
+ */
192
+ export interface RtpOutputProtocolProps {
193
+ /** Destination IP address for RTP traffic */
194
+ readonly destinationAddress: string;
195
+ /** Port number for RTP traffic */
196
+ readonly port: number;
197
+ /**
198
+ * Forward Error Correction setting
199
+ * @default - undefined; when omitted, MediaConnect applies ForwardErrorCorrection.DISABLED at deploy time
200
+ */
201
+ readonly forwardErrorCorrection?: ForwardErrorCorrection;
202
+ }
203
+ /**
204
+ * Properties for RIST protocol configuration for outputs
205
+ */
206
+ export interface RistOutputProtocolProps {
207
+ /** Destination IP address for RIST traffic */
208
+ readonly destinationAddress: string;
209
+ /** Port number for RIST traffic */
210
+ readonly port: number;
211
+ }
212
+ /**
213
+ * Properties for SRT Listener protocol configuration for outputs
214
+ */
215
+ export interface SrtListenerOutputProtocolProps {
216
+ /** Port number for SRT listener */
217
+ readonly port: number;
218
+ /** Minimum latency for SRT */
219
+ readonly minimumLatency: Duration;
220
+ /**
221
+ * Optional encryption configuration for SRT streams
222
+ * @default - No encryption
223
+ */
224
+ readonly encryptionConfiguration?: RouterSrtEncryption;
225
+ }
226
+ /**
227
+ * Properties for SRT Caller protocol configuration for outputs
228
+ */
229
+ export interface SrtCallerOutputProtocolProps {
230
+ /** Destination IP address to connect to */
231
+ readonly destinationAddress: string;
232
+ /** Destination port to connect to */
233
+ readonly destinationPort: number;
234
+ /** Minimum latency for SRT */
235
+ readonly minimumLatency: Duration;
236
+ /**
237
+ * Optional stream ID for SRT connection
238
+ * @default - No stream ID
239
+ */
240
+ readonly streamId?: string;
241
+ /**
242
+ * Optional encryption configuration for SRT streams
243
+ * @default - No encryption
244
+ */
245
+ readonly encryptionConfiguration?: RouterSrtEncryption;
246
+ }
247
+ /**
248
+ * Factory class for creating Router Output protocol configurations.
249
+ *
250
+ * Supported protocols: RTP, RIST, SRT (Listener and Caller).
251
+ */
252
+ export declare class RouterOutputProtocol {
253
+ /**
254
+ * Create an RTP protocol configuration
255
+ *
256
+ * @example
257
+ *
258
+ * RouterOutputProtocol.rtp({
259
+ * destinationAddress: '10.0.0.1',
260
+ * port: 5000,
261
+ * });
262
+ *
263
+ * @param props RTP protocol properties
264
+ * @returns RouterOutputProtocol instance configured for RTP
265
+ */
266
+ static rtp(props: RtpOutputProtocolProps): RouterOutputProtocol;
267
+ /**
268
+ * Create a RIST protocol configuration
269
+ *
270
+ * @example
271
+ *
272
+ * RouterOutputProtocol.rist({
273
+ * destinationAddress: '10.0.0.1',
274
+ * port: 5000,
275
+ * });
276
+ *
277
+ * @param props RIST protocol properties
278
+ * @returns RouterOutputProtocol instance configured for RIST
279
+ */
280
+ static rist(props: RistOutputProtocolProps): RouterOutputProtocol;
281
+ /**
282
+ * Create an SRT Listener protocol configuration
283
+ *
284
+ * @example
285
+ *
286
+ * RouterOutputProtocol.srtListener({
287
+ * port: 5000,
288
+ * minimumLatency: Duration.millis(125),
289
+ * });
290
+ *
291
+ * @param props SRT Listener protocol properties
292
+ * @returns RouterOutputProtocol instance configured for SRT Listener
293
+ */
294
+ static srtListener(props: SrtListenerOutputProtocolProps): RouterOutputProtocol;
295
+ /**
296
+ * Create an SRT Caller protocol configuration
297
+ *
298
+ * @example
299
+ *
300
+ * RouterOutputProtocol.srtCaller({
301
+ * destinationAddress: '10.0.0.1',
302
+ * destinationPort: 5000,
303
+ * minimumLatency: Duration.millis(125),
304
+ * });
305
+ *
306
+ * @param props SRT Caller protocol properties
307
+ * @returns RouterOutputProtocol instance configured for SRT Caller
308
+ */
309
+ static srtCaller(props: SrtCallerOutputProtocolProps): RouterOutputProtocol;
310
+ /**
311
+ * Validate that port is within the valid range (3000-30000)
312
+ */
313
+ private static validatePort;
314
+ /**
315
+ * Validate that SRT Caller port is within the valid range (0-65535)
316
+ */
317
+ private static validateSrtCallerPort;
318
+ private readonly _protocolName;
319
+ private readonly _config;
320
+ private readonly _encryption?;
321
+ private constructor();
322
+ }
323
+ /**
324
+ * Properties for standard Router Output configuration
325
+ */
326
+ export interface StandardOutputConfigurationProps {
327
+ /** Network interface for the Router Output */
328
+ readonly networkInterface: IRouterNetworkInterface;
329
+ /** Protocol configuration for the output */
330
+ readonly protocol: RouterOutputProtocol;
331
+ }
332
+ /**
333
+ * Properties for MediaLive Router Output configuration with specific input connection
334
+ */
335
+ export interface MediaLiveInputConnectionProps {
336
+ /**
337
+ * ARN of the MediaLive input to send output to.
338
+ *
339
+ * Note: This will change to accept an IInputRef (typed MediaLive Input reference)
340
+ * when the @aws-cdk/aws-medialive-alpha L2 construct is released.
341
+ */
342
+ readonly mediaLiveInputArn: string;
343
+ /** Pipeline ID for MediaLive input */
344
+ readonly mediaLivePipelineId: MediaLivePipeline;
345
+ /**
346
+ * Optional transit encryption configuration
347
+ * @default - Automatic encryption will be used
348
+ */
349
+ readonly destinationTransitEncryption?: TransitEncryption;
350
+ }
351
+ /**
352
+ * Properties for MediaLive Router Output configuration without specific input connection
353
+ */
354
+ export interface MediaLiveNoInputConnectionProps {
355
+ /** Availability zone for the router output when not connecting to a specific input */
356
+ readonly availabilityZone: string;
357
+ /**
358
+ * Optional transit encryption configuration
359
+ * @default - Automatic encryption will be used
360
+ */
361
+ readonly destinationTransitEncryption?: TransitEncryption;
362
+ }
363
+ /**
364
+ * Properties for MediaConnect Flow Router Output configuration with specific flow connection
365
+ */
366
+ export interface MediaConnectFlowConnectionProps {
367
+ /** MediaConnect Flow to send output to */
368
+ readonly flow: IFlow;
369
+ /**
370
+ * Optional transit encryption configuration
371
+ * @default - Automatic encryption will be used
372
+ */
373
+ readonly destinationTransitEncryption?: TransitEncryption;
374
+ }
375
+ /**
376
+ * Properties for MediaConnect Flow Router Output configuration without specific flow connection
377
+ */
378
+ export interface MediaConnectFlowNoConnectionProps {
379
+ /** Availability zone for the router output when not connecting to a specific flow */
380
+ readonly availabilityZone: string;
381
+ /**
382
+ * Optional transit encryption configuration
383
+ * @default - Automatic encryption will be used
384
+ */
385
+ readonly destinationTransitEncryption?: TransitEncryption;
386
+ }
387
+ /**
388
+ * Factory class for creating Router Output configurations
389
+ */
390
+ export declare abstract class RouterOutputConfiguration {
391
+ /**
392
+ * Create a standard Router Output configuration with a single protocol
393
+ *
394
+ * @example
395
+ *
396
+ * declare const networkInterface: RouterNetworkInterface;
397
+ *
398
+ * RouterOutputConfiguration.standard({
399
+ * networkInterface,
400
+ * protocol: RouterOutputProtocol.rtp({
401
+ * destinationAddress: '10.0.0.1',
402
+ * port: 5000,
403
+ * }),
404
+ * });
405
+ *
406
+ * @param props Standard configuration properties
407
+ * @returns RouterOutputConfiguration instance for standard setup
408
+ */
409
+ static standard(props: StandardOutputConfigurationProps): RouterOutputConfiguration;
410
+ /**
411
+ * Create a MediaLive Router Output configuration with a specific input connection.
412
+ *
413
+ * Use this when the MediaLive input already exists and you want to connect immediately.
414
+ *
415
+ * @example
416
+ *
417
+ * RouterOutputConfiguration.mediaLiveInput({
418
+ * mediaLiveInputArn: 'arn:aws:medialive:us-east-1:123456789012:input:1234567',
419
+ * mediaLivePipelineId: MediaLivePipeline.PIPELINE_0,
420
+ * });
421
+ *
422
+ * @param props MediaLive input connection properties
423
+ * @returns RouterOutputConfiguration instance for MediaLive setup with input connection
424
+ */
425
+ static mediaLiveInput(props: MediaLiveInputConnectionProps): RouterOutputConfiguration;
426
+ /**
427
+ * Create a MediaLive Router Output configuration without a specific input connection.
428
+ *
429
+ * Use this when you want to set up the router output before the MediaLive input exists.
430
+ *
431
+ * @example
432
+ *
433
+ * RouterOutputConfiguration.mediaLiveInputWithoutConnection({
434
+ * availabilityZone: 'us-east-1a',
435
+ * });
436
+ *
437
+ * @param props MediaLive no input connection properties
438
+ * @returns RouterOutputConfiguration instance for MediaLive setup without input connection
439
+ */
440
+ static mediaLiveInputWithoutConnection(props: MediaLiveNoInputConnectionProps): RouterOutputConfiguration;
441
+ /**
442
+ * Create a MediaConnect Flow Router Output configuration with a specific flow connection.
443
+ *
444
+ * Use this when the target flow already exists and you want to connect immediately.
445
+ *
446
+ * @example
447
+ *
448
+ * declare const flow: Flow;
449
+ *
450
+ * RouterOutputConfiguration.mediaConnectFlow({
451
+ * flow,
452
+ * });
453
+ *
454
+ * @param props MediaConnect Flow connection properties
455
+ * @returns RouterOutputConfiguration instance for MediaConnect Flow setup with flow connection
456
+ */
457
+ static mediaConnectFlow(props: MediaConnectFlowConnectionProps): RouterOutputConfiguration;
458
+ /**
459
+ * Create a MediaConnect Flow Router Output configuration without a specific flow connection.
460
+ *
461
+ * Use this when you want to set up the router output before the target flow exists.
462
+ *
463
+ * @example
464
+ *
465
+ * RouterOutputConfiguration.mediaConnectFlowWithoutConnection({
466
+ * availabilityZone: 'us-east-1a',
467
+ * });
468
+ *
469
+ * @param props MediaConnect Flow no connection properties
470
+ * @returns RouterOutputConfiguration instance for MediaConnect Flow setup without flow connection
471
+ */
472
+ static mediaConnectFlowWithoutConnection(props: MediaConnectFlowNoConnectionProps): RouterOutputConfiguration;
473
+ }
474
+ /**
475
+ * A MediaConnect Router Output that sends media streams to destinations.
476
+ *
477
+ * Router Outputs support multiple configuration types:
478
+ * - Standard: Single protocol output
479
+ * - MediaLive Input: Output to AWS Elemental MediaLive
480
+ * - MediaConnect Flow: Output to another MediaConnect Flow
481
+ */
482
+ declare abstract class RouterOutputBase extends Resource implements IRouterOutput {
483
+ abstract readonly routerOutputArn: string;
484
+ abstract readonly routerOutputName: string;
485
+ abstract readonly routerOutputId: string;
486
+ abstract readonly ipAddress: string;
487
+ abstract readonly createdAt?: string;
488
+ abstract readonly updatedAt?: string;
489
+ /**
490
+ * A reference to this Router Output resource.
491
+ * Required by the auto-generated IRouterOutputRef interface.
492
+ */
493
+ get routerOutputRef(): RouterOutputReference;
494
+ /**
495
+ * Create a CloudWatch metric for this router output.
496
+ */
497
+ metric(metricName: string, props?: MetricOptions): Metric;
498
+ /**
499
+ * Metric for the bitrate of the router output's payload.
500
+ */
501
+ metricBitrate(props?: MetricOptions): Metric;
502
+ /**
503
+ * Metric for the total number of packets sent by the router output.
504
+ */
505
+ metricTotalPackets(props?: MetricOptions): Metric;
506
+ /**
507
+ * Metric for the router output connection state (1 connected, 0 disconnected). Applies to SRT outputs only.
508
+ */
509
+ metricConnected(props?: MetricOptions): Metric;
510
+ /**
511
+ * Metric for the number of retransmitted packets requested through ARQ. Applies to RIST and SRT outputs.
512
+ */
513
+ metricArqRequests(props?: MetricOptions): Metric;
514
+ }
515
+ /**
516
+ * Defines an AWS Elemental MediaConnect Router Output.
517
+ */
518
+ export declare class RouterOutput extends RouterOutputBase implements IRouterOutput {
519
+ /** Uniquely identifies this class. */
520
+ static readonly PROPERTY_INJECTION_ID: string;
521
+ /**
522
+ * Import an existing Router Output from its ARN.
523
+ *
524
+ * The ARN only contains the service-generated ID (not the router output name). Accessing
525
+ * `routerOutputName` on an ARN import throws — use `fromRouterOutputAttributes()` to provide
526
+ * the name explicitly.
527
+ *
528
+ * @param scope The parent construct
529
+ * @param id The construct id
530
+ * @param routerOutputArn The ARN of the Router Output
531
+ * @returns A Router Output construct
532
+ */
533
+ static fromRouterOutputArn(scope: Construct, id: string, routerOutputArn: string): IRouterOutput;
534
+ /**
535
+ * Import an existing Router Output from attributes.
536
+ *
537
+ * Use this when you need to reference a router output by name.
538
+ *
539
+ * @param scope The parent construct
540
+ * @param id The construct id
541
+ * @param attrs The Router Output attributes
542
+ * @returns A Router Output construct
543
+ */
544
+ static fromRouterOutputAttributes(scope: Construct, id: string, attrs: RouterOutputAttributes): IRouterOutput;
545
+ /**
546
+ * Returns the maximum bitrate in Mbps for a known tier, or undefined for custom tiers.
547
+ */
548
+ private static tierLimitMbps;
549
+ readonly routerOutputArn: string;
550
+ readonly routerOutputName: string;
551
+ readonly routerOutputId: string;
552
+ readonly ipAddress: string;
553
+ readonly createdAt?: string;
554
+ readonly updatedAt?: string;
555
+ constructor(scope: Construct, id: string, props: RouterOutputProps);
556
+ }
557
+ export {};