awscdk-construct-scte-scheduler 0.0.12 → 0.0.14
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 +58 -17
- package/API.md +30 -8
- package/README.md +4 -1
- package/lib/EventBridgeSchedule.d.ts +4 -3
- package/lib/EventBridgeSchedule.js +14 -6
- package/lib/Lambda.js +1 -1
- package/lib/ScteScheduler.d.ts +3 -0
- package/lib/ScteScheduler.js +50 -8
- package/lib/code/index.d.ts +3 -1
- package/lib/code/index.js +3 -2
- package/package.json +1 -1
package/.jsii
CHANGED
|
@@ -3826,7 +3826,7 @@
|
|
|
3826
3826
|
},
|
|
3827
3827
|
"name": "awscdk-construct-scte-scheduler",
|
|
3828
3828
|
"readme": {
|
|
3829
|
-
"markdown": "# awscdk-construct-scte-scheduler\n[](https://constructs.dev/packages/awscdk-construct-scte-scheduler)\n\nAWS CDK Construct for scheduling SCTE-35 events using the MediaLive schedule API\n* Input:\n * MediaLive channel id\n * SCTE event duration (seconds)\n * Repeat interval (minutes)\n* Output:\n * Lambda function for calling MediaLive schedule API\n * EventBridge rule for periodically invoking the function\n\n## Install\n[](https://nodei.co/npm/awscdk-construct-scte-scheduler/)\n\n## Usage\n```ts\nimport { Stack, StackProps, CfnOutput } from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport { LiveChannelFromMp4 } from 'awscdk-construct-live-channel-from-mp4-file';\nimport { ScteScheduler } from 'awscdk-construct-scte-scheduler';\n\nexport class ExampleStack extends Stack {\n constructor(scope: Construct, id: string, props?: StackProps) {\n super(scope, id, props);\n\n // Create a live channel (MediaLive + MediaPackage)\n const {eml, emp} = new LiveChannelFromMp4(this, 'LiveChannelFromMp4', {\n sourceUrl: 's3ssl://example_bucket/test.mp4',\n timecodeBurninPrefix: 'Ch1',\n autoStart: true,\n });\n\n // Schedule a 30-sec ad break every minute\n new ScteScheduler(this, 'ScteScheduler', {\n channelId: eml.channel.ref,\n scteDurationInSeconds: 30,\n intervalInMinutes: 1,\n });\n\n // Print MediaPackage endpoint URL (HLS)\n new CfnOutput(this, \"MediaPackageEndpointURL\", {\n value: emp.endpoints.hls.attrUrl,\n exportName: \"MediaPackageEndpointURL\",\n description: \"MediaPackage endpoint URL\",\n });\n }\n}\n```\n"
|
|
3829
|
+
"markdown": "# awscdk-construct-scte-scheduler\n[](https://constructs.dev/packages/awscdk-construct-scte-scheduler)\n\nAWS CDK Construct for scheduling SCTE-35 events using the MediaLive schedule API\n* Input:\n * MediaLive channel id\n * SCTE event duration (seconds)\n * Repeat interval (minutes)\n * Repeat count (optional)\n * Lambda function to be called after the repeat (optional)\n* Output:\n * Lambda function for calling MediaLive schedule API\n * EventBridge rule or Stepfunctions state machine for periodically invoking the function\n\n## Install\n[](https://nodei.co/npm/awscdk-construct-scte-scheduler/)\n\n## Usage\n```ts\nimport { Stack, StackProps, CfnOutput } from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\nimport { LiveChannelFromMp4 } from 'awscdk-construct-live-channel-from-mp4-file';\nimport { ScteScheduler } from 'awscdk-construct-scte-scheduler';\n\nexport class ExampleStack extends Stack {\n constructor(scope: Construct, id: string, props?: StackProps) {\n super(scope, id, props);\n\n // Create a live channel (MediaLive + MediaPackage)\n const {eml, emp} = new LiveChannelFromMp4(this, 'LiveChannelFromMp4', {\n sourceUrl: 's3ssl://example_bucket/test.mp4',\n timecodeBurninPrefix: 'Ch1',\n autoStart: true,\n });\n\n // Schedule a 30-sec ad break every minute\n new ScteScheduler(this, 'ScteScheduler', {\n channelId: eml.channel.ref,\n scteDurationInSeconds: 30,\n intervalInMinutes: 1,\n repeqtCount: 5,\n });\n\n // Print MediaPackage endpoint URL (HLS)\n new CfnOutput(this, \"MediaPackageEndpointURL\", {\n value: emp.endpoints.hls.attrUrl,\n exportName: \"MediaPackageEndpointURL\",\n description: \"MediaPackage endpoint URL\",\n });\n }\n}\n```\n"
|
|
3830
3830
|
},
|
|
3831
3831
|
"repository": {
|
|
3832
3832
|
"type": "git",
|
|
@@ -3920,11 +3920,11 @@
|
|
|
3920
3920
|
"immutable": true,
|
|
3921
3921
|
"locationInModule": {
|
|
3922
3922
|
"filename": "src/EventBridgeSchedule.ts",
|
|
3923
|
-
"line":
|
|
3923
|
+
"line": 9
|
|
3924
3924
|
},
|
|
3925
|
-
"name": "
|
|
3925
|
+
"name": "schedule",
|
|
3926
3926
|
"type": {
|
|
3927
|
-
"fqn": "aws-cdk-lib.
|
|
3927
|
+
"fqn": "aws-cdk-lib.aws_events.Schedule"
|
|
3928
3928
|
}
|
|
3929
3929
|
},
|
|
3930
3930
|
{
|
|
@@ -3935,11 +3935,20 @@
|
|
|
3935
3935
|
"immutable": true,
|
|
3936
3936
|
"locationInModule": {
|
|
3937
3937
|
"filename": "src/EventBridgeSchedule.ts",
|
|
3938
|
-
"line":
|
|
3938
|
+
"line": 8
|
|
3939
3939
|
},
|
|
3940
|
-
"name": "
|
|
3940
|
+
"name": "target",
|
|
3941
3941
|
"type": {
|
|
3942
|
-
"
|
|
3942
|
+
"union": {
|
|
3943
|
+
"types": [
|
|
3944
|
+
{
|
|
3945
|
+
"fqn": "aws-cdk-lib.aws_lambda_nodejs.NodejsFunction"
|
|
3946
|
+
},
|
|
3947
|
+
{
|
|
3948
|
+
"fqn": "aws-cdk-lib.aws_stepfunctions.StateMachine"
|
|
3949
|
+
}
|
|
3950
|
+
]
|
|
3951
|
+
}
|
|
3943
3952
|
}
|
|
3944
3953
|
}
|
|
3945
3954
|
],
|
|
@@ -4065,7 +4074,7 @@
|
|
|
4065
4074
|
},
|
|
4066
4075
|
"locationInModule": {
|
|
4067
4076
|
"filename": "src/ScteScheduler.ts",
|
|
4068
|
-
"line":
|
|
4077
|
+
"line": 32
|
|
4069
4078
|
},
|
|
4070
4079
|
"parameters": [
|
|
4071
4080
|
{
|
|
@@ -4091,7 +4100,7 @@
|
|
|
4091
4100
|
"kind": "class",
|
|
4092
4101
|
"locationInModule": {
|
|
4093
4102
|
"filename": "src/ScteScheduler.ts",
|
|
4094
|
-
"line":
|
|
4103
|
+
"line": 28
|
|
4095
4104
|
},
|
|
4096
4105
|
"name": "ScteScheduler",
|
|
4097
4106
|
"properties": [
|
|
@@ -4102,7 +4111,7 @@
|
|
|
4102
4111
|
"immutable": true,
|
|
4103
4112
|
"locationInModule": {
|
|
4104
4113
|
"filename": "src/ScteScheduler.ts",
|
|
4105
|
-
"line":
|
|
4114
|
+
"line": 29
|
|
4106
4115
|
},
|
|
4107
4116
|
"name": "lambda",
|
|
4108
4117
|
"type": {
|
|
@@ -4116,7 +4125,7 @@
|
|
|
4116
4125
|
"immutable": true,
|
|
4117
4126
|
"locationInModule": {
|
|
4118
4127
|
"filename": "src/ScteScheduler.ts",
|
|
4119
|
-
"line":
|
|
4128
|
+
"line": 30
|
|
4120
4129
|
},
|
|
4121
4130
|
"name": "schedule",
|
|
4122
4131
|
"type": {
|
|
@@ -4136,7 +4145,7 @@
|
|
|
4136
4145
|
"kind": "interface",
|
|
4137
4146
|
"locationInModule": {
|
|
4138
4147
|
"filename": "src/ScteScheduler.ts",
|
|
4139
|
-
"line":
|
|
4148
|
+
"line": 20
|
|
4140
4149
|
},
|
|
4141
4150
|
"name": "ScteSchedulerProps",
|
|
4142
4151
|
"properties": [
|
|
@@ -4148,7 +4157,7 @@
|
|
|
4148
4157
|
"immutable": true,
|
|
4149
4158
|
"locationInModule": {
|
|
4150
4159
|
"filename": "src/ScteScheduler.ts",
|
|
4151
|
-
"line":
|
|
4160
|
+
"line": 21
|
|
4152
4161
|
},
|
|
4153
4162
|
"name": "channelId",
|
|
4154
4163
|
"type": {
|
|
@@ -4163,7 +4172,7 @@
|
|
|
4163
4172
|
"immutable": true,
|
|
4164
4173
|
"locationInModule": {
|
|
4165
4174
|
"filename": "src/ScteScheduler.ts",
|
|
4166
|
-
"line":
|
|
4175
|
+
"line": 23
|
|
4167
4176
|
},
|
|
4168
4177
|
"name": "intervalInMinutes",
|
|
4169
4178
|
"type": {
|
|
@@ -4178,17 +4187,49 @@
|
|
|
4178
4187
|
"immutable": true,
|
|
4179
4188
|
"locationInModule": {
|
|
4180
4189
|
"filename": "src/ScteScheduler.ts",
|
|
4181
|
-
"line":
|
|
4190
|
+
"line": 22
|
|
4182
4191
|
},
|
|
4183
4192
|
"name": "scteDurationInSeconds",
|
|
4184
4193
|
"type": {
|
|
4185
4194
|
"primitive": "number"
|
|
4186
4195
|
}
|
|
4196
|
+
},
|
|
4197
|
+
{
|
|
4198
|
+
"abstract": true,
|
|
4199
|
+
"docs": {
|
|
4200
|
+
"stability": "stable"
|
|
4201
|
+
},
|
|
4202
|
+
"immutable": true,
|
|
4203
|
+
"locationInModule": {
|
|
4204
|
+
"filename": "src/ScteScheduler.ts",
|
|
4205
|
+
"line": 25
|
|
4206
|
+
},
|
|
4207
|
+
"name": "callback",
|
|
4208
|
+
"optional": true,
|
|
4209
|
+
"type": {
|
|
4210
|
+
"fqn": "aws-cdk-lib.aws_lambda.IFunction"
|
|
4211
|
+
}
|
|
4212
|
+
},
|
|
4213
|
+
{
|
|
4214
|
+
"abstract": true,
|
|
4215
|
+
"docs": {
|
|
4216
|
+
"stability": "stable"
|
|
4217
|
+
},
|
|
4218
|
+
"immutable": true,
|
|
4219
|
+
"locationInModule": {
|
|
4220
|
+
"filename": "src/ScteScheduler.ts",
|
|
4221
|
+
"line": 24
|
|
4222
|
+
},
|
|
4223
|
+
"name": "repeatCount",
|
|
4224
|
+
"optional": true,
|
|
4225
|
+
"type": {
|
|
4226
|
+
"primitive": "number"
|
|
4227
|
+
}
|
|
4187
4228
|
}
|
|
4188
4229
|
],
|
|
4189
4230
|
"symbolId": "src/ScteScheduler:ScteSchedulerProps"
|
|
4190
4231
|
}
|
|
4191
4232
|
},
|
|
4192
|
-
"version": "0.0.
|
|
4193
|
-
"fingerprint": "
|
|
4233
|
+
"version": "0.0.14",
|
|
4234
|
+
"fingerprint": "49VXpkvR0bd8X5Q0o7XhHRsg+BJgms/7dLm9igEKWtQ="
|
|
4194
4235
|
}
|
package/API.md
CHANGED
|
@@ -401,28 +401,28 @@ const eventBridgeScheduleProps: EventBridgeScheduleProps = { ... }
|
|
|
401
401
|
|
|
402
402
|
| **Name** | **Type** | **Description** |
|
|
403
403
|
| --- | --- | --- |
|
|
404
|
-
| <code><a href="#awscdk-construct-scte-scheduler.EventBridgeScheduleProps.property.
|
|
405
|
-
| <code><a href="#awscdk-construct-scte-scheduler.EventBridgeScheduleProps.property.
|
|
404
|
+
| <code><a href="#awscdk-construct-scte-scheduler.EventBridgeScheduleProps.property.schedule">schedule</a></code> | <code>aws-cdk-lib.aws_events.Schedule</code> | *No description.* |
|
|
405
|
+
| <code><a href="#awscdk-construct-scte-scheduler.EventBridgeScheduleProps.property.target">target</a></code> | <code>aws-cdk-lib.aws_lambda_nodejs.NodejsFunction \| aws-cdk-lib.aws_stepfunctions.StateMachine</code> | *No description.* |
|
|
406
406
|
|
|
407
407
|
---
|
|
408
408
|
|
|
409
|
-
##### `
|
|
409
|
+
##### `schedule`<sup>Required</sup> <a name="schedule" id="awscdk-construct-scte-scheduler.EventBridgeScheduleProps.property.schedule"></a>
|
|
410
410
|
|
|
411
411
|
```typescript
|
|
412
|
-
public readonly
|
|
412
|
+
public readonly schedule: Schedule;
|
|
413
413
|
```
|
|
414
414
|
|
|
415
|
-
- *Type:* aws-cdk-lib.
|
|
415
|
+
- *Type:* aws-cdk-lib.aws_events.Schedule
|
|
416
416
|
|
|
417
417
|
---
|
|
418
418
|
|
|
419
|
-
##### `
|
|
419
|
+
##### `target`<sup>Required</sup> <a name="target" id="awscdk-construct-scte-scheduler.EventBridgeScheduleProps.property.target"></a>
|
|
420
420
|
|
|
421
421
|
```typescript
|
|
422
|
-
public readonly
|
|
422
|
+
public readonly target: NodejsFunction | StateMachine;
|
|
423
423
|
```
|
|
424
424
|
|
|
425
|
-
- *Type:*
|
|
425
|
+
- *Type:* aws-cdk-lib.aws_lambda_nodejs.NodejsFunction | aws-cdk-lib.aws_stepfunctions.StateMachine
|
|
426
426
|
|
|
427
427
|
---
|
|
428
428
|
|
|
@@ -482,6 +482,8 @@ const scteSchedulerProps: ScteSchedulerProps = { ... }
|
|
|
482
482
|
| <code><a href="#awscdk-construct-scte-scheduler.ScteSchedulerProps.property.channelId">channelId</a></code> | <code>string</code> | *No description.* |
|
|
483
483
|
| <code><a href="#awscdk-construct-scte-scheduler.ScteSchedulerProps.property.intervalInMinutes">intervalInMinutes</a></code> | <code>number</code> | *No description.* |
|
|
484
484
|
| <code><a href="#awscdk-construct-scte-scheduler.ScteSchedulerProps.property.scteDurationInSeconds">scteDurationInSeconds</a></code> | <code>number</code> | *No description.* |
|
|
485
|
+
| <code><a href="#awscdk-construct-scte-scheduler.ScteSchedulerProps.property.callback">callback</a></code> | <code>aws-cdk-lib.aws_lambda.IFunction</code> | *No description.* |
|
|
486
|
+
| <code><a href="#awscdk-construct-scte-scheduler.ScteSchedulerProps.property.repeatCount">repeatCount</a></code> | <code>number</code> | *No description.* |
|
|
485
487
|
|
|
486
488
|
---
|
|
487
489
|
|
|
@@ -515,5 +517,25 @@ public readonly scteDurationInSeconds: number;
|
|
|
515
517
|
|
|
516
518
|
---
|
|
517
519
|
|
|
520
|
+
##### `callback`<sup>Optional</sup> <a name="callback" id="awscdk-construct-scte-scheduler.ScteSchedulerProps.property.callback"></a>
|
|
521
|
+
|
|
522
|
+
```typescript
|
|
523
|
+
public readonly callback: IFunction;
|
|
524
|
+
```
|
|
525
|
+
|
|
526
|
+
- *Type:* aws-cdk-lib.aws_lambda.IFunction
|
|
527
|
+
|
|
528
|
+
---
|
|
529
|
+
|
|
530
|
+
##### `repeatCount`<sup>Optional</sup> <a name="repeatCount" id="awscdk-construct-scte-scheduler.ScteSchedulerProps.property.repeatCount"></a>
|
|
531
|
+
|
|
532
|
+
```typescript
|
|
533
|
+
public readonly repeatCount: number;
|
|
534
|
+
```
|
|
535
|
+
|
|
536
|
+
- *Type:* number
|
|
537
|
+
|
|
538
|
+
---
|
|
539
|
+
|
|
518
540
|
|
|
519
541
|
|
package/README.md
CHANGED
|
@@ -6,9 +6,11 @@ AWS CDK Construct for scheduling SCTE-35 events using the MediaLive schedule API
|
|
|
6
6
|
* MediaLive channel id
|
|
7
7
|
* SCTE event duration (seconds)
|
|
8
8
|
* Repeat interval (minutes)
|
|
9
|
+
* Repeat count (optional)
|
|
10
|
+
* Lambda function to be called after the repeat (optional)
|
|
9
11
|
* Output:
|
|
10
12
|
* Lambda function for calling MediaLive schedule API
|
|
11
|
-
* EventBridge rule for periodically invoking the function
|
|
13
|
+
* EventBridge rule or Stepfunctions state machine for periodically invoking the function
|
|
12
14
|
|
|
13
15
|
## Install
|
|
14
16
|
[](https://nodei.co/npm/awscdk-construct-scte-scheduler/)
|
|
@@ -36,6 +38,7 @@ export class ExampleStack extends Stack {
|
|
|
36
38
|
channelId: eml.channel.ref,
|
|
37
39
|
scteDurationInSeconds: 30,
|
|
38
40
|
intervalInMinutes: 1,
|
|
41
|
+
repeqtCount: 5,
|
|
39
42
|
});
|
|
40
43
|
|
|
41
44
|
// Print MediaPackage endpoint URL (HLS)
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { Rule } from 'aws-cdk-lib/aws-events';
|
|
1
|
+
import { Rule, Schedule } from 'aws-cdk-lib/aws-events';
|
|
2
2
|
import { NodejsFunction } from 'aws-cdk-lib/aws-lambda-nodejs';
|
|
3
|
+
import { StateMachine } from 'aws-cdk-lib/aws-stepfunctions';
|
|
3
4
|
import { Construct } from 'constructs';
|
|
4
5
|
export interface EventBridgeScheduleProps {
|
|
5
|
-
readonly
|
|
6
|
-
readonly
|
|
6
|
+
readonly target: NodejsFunction | StateMachine;
|
|
7
|
+
readonly schedule: Schedule;
|
|
7
8
|
}
|
|
8
9
|
export declare class EventBridgeSchedule extends Construct {
|
|
9
10
|
rule: Rule;
|
|
@@ -3,21 +3,29 @@ var _a;
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.EventBridgeSchedule = void 0;
|
|
5
5
|
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
-
const cdk = require("aws-cdk-lib");
|
|
7
6
|
const aws_events_1 = require("aws-cdk-lib/aws-events");
|
|
8
7
|
const aws_events_targets_1 = require("aws-cdk-lib/aws-events-targets");
|
|
8
|
+
const aws_lambda_nodejs_1 = require("aws-cdk-lib/aws-lambda-nodejs");
|
|
9
9
|
const constructs_1 = require("constructs");
|
|
10
10
|
class EventBridgeSchedule extends constructs_1.Construct {
|
|
11
11
|
constructor(scope, id, props) {
|
|
12
12
|
super(scope, id);
|
|
13
|
-
const {
|
|
13
|
+
const { target, schedule } = props;
|
|
14
14
|
this.rule = new aws_events_1.Rule(this, 'InvokeFunctionEveryXMinutes', {
|
|
15
|
-
schedule
|
|
15
|
+
schedule,
|
|
16
16
|
});
|
|
17
|
-
|
|
17
|
+
if (isFunction(target)) {
|
|
18
|
+
this.rule.addTarget(new aws_events_targets_1.LambdaFunction(target));
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
this.rule.addTarget(new aws_events_targets_1.SfnStateMachine(target));
|
|
22
|
+
}
|
|
18
23
|
}
|
|
19
24
|
}
|
|
20
25
|
exports.EventBridgeSchedule = EventBridgeSchedule;
|
|
21
26
|
_a = JSII_RTTI_SYMBOL_1;
|
|
22
|
-
EventBridgeSchedule[_a] = { fqn: "awscdk-construct-scte-scheduler.EventBridgeSchedule", version: "0.0.
|
|
23
|
-
|
|
27
|
+
EventBridgeSchedule[_a] = { fqn: "awscdk-construct-scte-scheduler.EventBridgeSchedule", version: "0.0.14" };
|
|
28
|
+
function isFunction(target) {
|
|
29
|
+
return target instanceof aws_lambda_nodejs_1.NodejsFunction;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZlbnRCcmlkZ2VTY2hlZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9FdmVudEJyaWRnZVNjaGVkdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsdURBQXdEO0FBQ3hELHVFQUFpRjtBQUNqRixxRUFBK0Q7QUFFL0QsMkNBQXVDO0FBT3ZDLE1BQWEsbUJBQW9CLFNBQVEsc0JBQVM7SUFHaEQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUErQjtRQUN2RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBRW5DLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxpQkFBSSxDQUFDLElBQUksRUFBRSw2QkFBNkIsRUFBRTtZQUN4RCxRQUFRO1NBQ1QsQ0FBQyxDQUFDO1FBRUgsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FDakIsSUFBSSxtQ0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUMzQixDQUFDO1FBQ0osQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FDakIsSUFBSSxvQ0FBZSxDQUFDLE1BQU0sQ0FBQyxDQUM1QixDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7O0FBckJILGtEQXNCQzs7O0FBRUQsU0FBUyxVQUFVLENBQUMsTUFBVztJQUM3QixPQUFPLE1BQU0sWUFBWSxrQ0FBYyxDQUFDO0FBQzFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSdWxlLCBTY2hlZHVsZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1ldmVudHMnO1xuaW1wb3J0IHsgTGFtYmRhRnVuY3Rpb24sIFNmblN0YXRlTWFjaGluZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1ldmVudHMtdGFyZ2V0cyc7XG5pbXBvcnQgeyBOb2RlanNGdW5jdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEtbm9kZWpzJztcbmltcG9ydCB7IFN0YXRlTWFjaGluZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zdGVwZnVuY3Rpb25zJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50QnJpZGdlU2NoZWR1bGVQcm9wcyB7XG4gIHJlYWRvbmx5IHRhcmdldDogTm9kZWpzRnVuY3Rpb24gfCBTdGF0ZU1hY2hpbmU7XG4gIHJlYWRvbmx5IHNjaGVkdWxlOiBTY2hlZHVsZTtcbn1cblxuZXhwb3J0IGNsYXNzIEV2ZW50QnJpZGdlU2NoZWR1bGUgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwdWJsaWMgcnVsZTogUnVsZTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRXZlbnRCcmlkZ2VTY2hlZHVsZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IHsgdGFyZ2V0LCBzY2hlZHVsZSB9ID0gcHJvcHM7XG5cbiAgICB0aGlzLnJ1bGUgPSBuZXcgUnVsZSh0aGlzLCAnSW52b2tlRnVuY3Rpb25FdmVyeVhNaW51dGVzJywge1xuICAgICAgc2NoZWR1bGUsXG4gICAgfSk7XG5cbiAgICBpZiAoaXNGdW5jdGlvbih0YXJnZXQpKSB7XG4gICAgICB0aGlzLnJ1bGUuYWRkVGFyZ2V0KFxuICAgICAgICBuZXcgTGFtYmRhRnVuY3Rpb24odGFyZ2V0KSxcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucnVsZS5hZGRUYXJnZXQoXG4gICAgICAgIG5ldyBTZm5TdGF0ZU1hY2hpbmUodGFyZ2V0KSxcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGlzRnVuY3Rpb24odGFyZ2V0OiBhbnkpOiB0YXJnZXQgaXMgTm9kZWpzRnVuY3Rpb24ge1xuICByZXR1cm4gdGFyZ2V0IGluc3RhbmNlb2YgTm9kZWpzRnVuY3Rpb247XG59XG4iXX0=
|
package/lib/Lambda.js
CHANGED
|
@@ -41,5 +41,5 @@ class Lambda extends constructs_1.Construct {
|
|
|
41
41
|
}
|
|
42
42
|
exports.Lambda = Lambda;
|
|
43
43
|
_a = JSII_RTTI_SYMBOL_1;
|
|
44
|
-
Lambda[_a] = { fqn: "awscdk-construct-scte-scheduler.Lambda", version: "0.0.
|
|
44
|
+
Lambda[_a] = { fqn: "awscdk-construct-scte-scheduler.Lambda", version: "0.0.14" };
|
|
45
45
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGFtYmRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0xhbWJkYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHlCQUF5QjtBQUN6Qiw2QkFBNkI7QUFDN0IsNkNBQXlEO0FBQ3pELGlEQUFzRDtBQUN0RCx1REFBaUQ7QUFDakQscUVBQStEO0FBQy9ELDJDQUF1QztBQU92QyxNQUFhLE1BQU8sU0FBUSxzQkFBUztJQUduQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQWtCO1FBQzFELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxFQUFFLFNBQVMsRUFBRSxxQkFBcUIsRUFBRSxHQUFHLEtBQUssQ0FBQztRQUVuRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDN0QsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRTdELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxrQ0FBYyxDQUFDLEtBQUssRUFBRSxjQUFjLEVBQUU7WUFDcEQsT0FBTyxFQUFFLG9CQUFPLENBQUMsV0FBVztZQUM1QixLQUFLLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRO1lBQ3BELDhDQUE4QztZQUM5Qyx3RUFBd0U7WUFDeEUsT0FBTyxFQUFFLFNBQVM7WUFDbEIsT0FBTyxFQUFFLHNCQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUM3QixXQUFXLEVBQUU7Z0JBQ1gsUUFBUSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBa0I7Z0JBQ3hDLE1BQU0sRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUE0QjtnQkFDaEQsVUFBVSxFQUFFLFNBQVM7Z0JBQ3JCLFlBQVksRUFBRSxHQUFHLHFCQUFxQixFQUFFO2FBQ3pDO1lBQ0QsWUFBWSxFQUFFLHNCQUFJLENBQUMsYUFBYSxDQUFDLFNBQVM7U0FDM0MsQ0FBQyxDQUFDO1FBQ0gsaURBQWlEO1FBQ2pELElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUN2Qix5QkFBZSxDQUFDLFFBQVEsQ0FBQztZQUN2QixNQUFNLEVBQUUsT0FBTztZQUNmLE1BQU0sRUFBRSxhQUFhO1lBQ3JCLFFBQVEsRUFBRSxHQUFHO1NBQ2QsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOztBQWxDSCx3QkFtQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgRHVyYXRpb24sIGF3c19sb2dzIGFzIGxvZ3MgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBQb2xpY3lTdGF0ZW1lbnQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IFJ1bnRpbWUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB7IE5vZGVqc0Z1bmN0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYS1ub2RlanMnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGFtYmRhUHJvcHMge1xuICByZWFkb25seSBjaGFubmVsSWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgc2N0ZUR1cmF0aW9uSW5TZWNvbmRzOiBudW1iZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBMYW1iZGEgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwdWJsaWMgcmVhZG9ubHkgZnVuYzogTm9kZWpzRnVuY3Rpb247XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IExhbWJkYVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IHsgY2hhbm5lbElkLCBzY3RlRHVyYXRpb25JblNlY29uZHMgfSA9IHByb3BzO1xuXG4gICAgY29uc3QgVFNfRU5UUlkgPSBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnY29kZScsICdpbmRleC50cycpO1xuICAgIGNvbnN0IEpTX0VOVFJZID0gcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJ2NvZGUnLCAnaW5kZXguanMnKTtcblxuICAgIHRoaXMuZnVuYyA9IG5ldyBOb2RlanNGdW5jdGlvbihzY29wZSwgJ1NjaGVkdWxlU0NURScsIHtcbiAgICAgIHJ1bnRpbWU6IFJ1bnRpbWUuTk9ERUpTXzE4X1gsXG4gICAgICBlbnRyeTogZnMuZXhpc3RzU3luYyhUU19FTlRSWSkgPyBUU19FTlRSWSA6IEpTX0VOVFJZLFxuICAgICAgLy8gcHJvamVjdFJvb3Q6IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICcuLicpLFxuICAgICAgLy8gZGVwc0xvY2tGaWxlUGF0aDogcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4uJywgJ3BhY2thZ2UtbG9jay5qc29uJyksXG4gICAgICBoYW5kbGVyOiAnaGFuZGxlcicsXG4gICAgICB0aW1lb3V0OiBEdXJhdGlvbi5zZWNvbmRzKDMwKSxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIE5PREVfRU5WOiBwcm9jZXNzLmVudi5OT0RFX0VOViBhcyBzdHJpbmcsXG4gICAgICAgIFJFR0lPTjogcHJvY2Vzcy5lbnYuQ0RLX0RFRkFVTFRfUkVHSU9OIGFzIHN0cmluZyxcbiAgICAgICAgQ0hBTk5FTF9JRDogY2hhbm5lbElkLFxuICAgICAgICBBVkFJTF9MRU5HVEg6IGAke3NjdGVEdXJhdGlvbkluU2Vjb25kc31gLFxuICAgICAgfSxcbiAgICAgIGxvZ1JldGVudGlvbjogbG9ncy5SZXRlbnRpb25EYXlzLlRXT19XRUVLUyxcbiAgICB9KTtcbiAgICAvLyBBZGQgYSBzdGF0ZW1lbnQgdG8gY2FsbCBNZWRpYUxpdmUgc2NoZWR1bGUgQVBJXG4gICAgdGhpcy5mdW5jLmFkZFRvUm9sZVBvbGljeShcbiAgICAgIFBvbGljeVN0YXRlbWVudC5mcm9tSnNvbih7XG4gICAgICAgIEVmZmVjdDogJ0FsbG93JyxcbiAgICAgICAgQWN0aW9uOiAnbWVkaWFsaXZlOionLFxuICAgICAgICBSZXNvdXJjZTogJyonLFxuICAgICAgfSksXG4gICAgKTtcbiAgfVxufSJdfQ==
|
package/lib/ScteScheduler.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { IFunction } from 'aws-cdk-lib/aws-lambda';
|
|
1
2
|
import { Construct } from 'constructs';
|
|
2
3
|
import { EventBridgeSchedule } from './EventBridgeSchedule';
|
|
3
4
|
import { Lambda } from './Lambda';
|
|
@@ -5,6 +6,8 @@ export interface ScteSchedulerProps {
|
|
|
5
6
|
readonly channelId: string;
|
|
6
7
|
readonly scteDurationInSeconds: number;
|
|
7
8
|
readonly intervalInMinutes: number;
|
|
9
|
+
readonly repeatCount?: number;
|
|
10
|
+
readonly callback?: IFunction;
|
|
8
11
|
}
|
|
9
12
|
export declare class ScteScheduler extends Construct {
|
|
10
13
|
readonly lambda: Lambda;
|
package/lib/ScteScheduler.js
CHANGED
|
@@ -3,26 +3,68 @@ var _a;
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.ScteScheduler = void 0;
|
|
5
5
|
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
7
|
+
const aws_events_1 = require("aws-cdk-lib/aws-events");
|
|
8
|
+
const aws_stepfunctions_1 = require("aws-cdk-lib/aws-stepfunctions");
|
|
9
|
+
const aws_stepfunctions_tasks_1 = require("aws-cdk-lib/aws-stepfunctions-tasks");
|
|
6
10
|
const constructs_1 = require("constructs");
|
|
7
11
|
const EventBridgeSchedule_1 = require("./EventBridgeSchedule");
|
|
8
12
|
const Lambda_1 = require("./Lambda");
|
|
9
13
|
class ScteScheduler extends constructs_1.Construct {
|
|
10
14
|
constructor(scope, id, props) {
|
|
11
15
|
super(scope, id);
|
|
12
|
-
const { channelId, scteDurationInSeconds, intervalInMinutes
|
|
16
|
+
const { channelId, scteDurationInSeconds, intervalInMinutes, repeatCount = 0, // 0 means infinite loop
|
|
17
|
+
callback, } = props;
|
|
13
18
|
// Create Lambda function to insert SCTE message using the MediaLive schedule API
|
|
14
19
|
this.lambda = new Lambda_1.Lambda(this, 'LambdaFunction', {
|
|
15
20
|
channelId,
|
|
16
21
|
scteDurationInSeconds,
|
|
17
22
|
});
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
+
if (repeatCount <= 0) {
|
|
24
|
+
// Create EventBridge rule to invoke the Lambda function every N minutes
|
|
25
|
+
this.schedule = new EventBridgeSchedule_1.EventBridgeSchedule(this, 'EventBridgeSchedule', {
|
|
26
|
+
target: this.lambda.func,
|
|
27
|
+
schedule: aws_events_1.Schedule.rate(aws_cdk_lib_1.Duration.minutes(intervalInMinutes)),
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
// Create Step Functions state machine to invoke the Lambda function N times
|
|
32
|
+
const invoke = new aws_stepfunctions_tasks_1.LambdaInvoke(this, 'Invoke SCTE scheduler Lambda function', {
|
|
33
|
+
lambdaFunction: this.lambda.func,
|
|
34
|
+
inputPath: '$.Payload',
|
|
35
|
+
});
|
|
36
|
+
const wait = new aws_stepfunctions_1.Wait(this, 'Wait', {
|
|
37
|
+
time: aws_stepfunctions_1.WaitTime.duration(aws_cdk_lib_1.Duration.minutes(intervalInMinutes)),
|
|
38
|
+
});
|
|
39
|
+
const lastTask = callback ? new aws_stepfunctions_tasks_1.LambdaInvoke(this, 'Callback', {
|
|
40
|
+
lambdaFunction: callback,
|
|
41
|
+
}) : new aws_stepfunctions_1.Succeed(this, 'Done');
|
|
42
|
+
const stateMachine = new aws_stepfunctions_1.StateMachine(this, 'StateMachine', {
|
|
43
|
+
definitionBody: aws_stepfunctions_1.DefinitionBody.fromChainable(aws_stepfunctions_1.Chain.start(new aws_stepfunctions_1.Pass(this, 'Start', { parameters: { Payload: { i: 0 } } }))
|
|
44
|
+
.next(wait)
|
|
45
|
+
.next(invoke)
|
|
46
|
+
.next(new aws_stepfunctions_1.Choice(this, 'Choice')
|
|
47
|
+
.when(aws_stepfunctions_1.Condition.numberLessThan('$.Payload.i', repeatCount), wait)
|
|
48
|
+
.otherwise(lastTask))),
|
|
49
|
+
});
|
|
50
|
+
this.schedule = new EventBridgeSchedule_1.EventBridgeSchedule(this, 'EventBridgeSchedule', {
|
|
51
|
+
target: stateMachine,
|
|
52
|
+
schedule: cronNow(),
|
|
53
|
+
});
|
|
54
|
+
}
|
|
23
55
|
}
|
|
24
56
|
}
|
|
25
57
|
exports.ScteScheduler = ScteScheduler;
|
|
26
58
|
_a = JSII_RTTI_SYMBOL_1;
|
|
27
|
-
ScteScheduler[_a] = { fqn: "awscdk-construct-scte-scheduler.ScteScheduler", version: "0.0.
|
|
28
|
-
|
|
59
|
+
ScteScheduler[_a] = { fqn: "awscdk-construct-scte-scheduler.ScteScheduler", version: "0.0.14" };
|
|
60
|
+
function cronNow() {
|
|
61
|
+
const now = new Date();
|
|
62
|
+
return aws_events_1.Schedule.cron({
|
|
63
|
+
year: `${now.getUTCFullYear()}`,
|
|
64
|
+
month: `${now.getUTCMonth() + 1}`,
|
|
65
|
+
day: `${now.getUTCDate()}`,
|
|
66
|
+
hour: `${now.getUTCHours()}`,
|
|
67
|
+
minute: `${now.getUTCMinutes() + 1}`,
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2N0ZVNjaGVkdWxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9TY3RlU2NoZWR1bGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkNBQXVDO0FBQ3ZDLHVEQUFrRDtBQUVsRCxxRUFVdUM7QUFDdkMsaUZBQW1FO0FBQ25FLDJDQUF1QztBQUN2QywrREFBNEQ7QUFDNUQscUNBQWtDO0FBVWxDLE1BQWEsYUFBYyxTQUFRLHNCQUFTO0lBSTFDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBeUI7UUFDakUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLEVBQ0osU0FBUyxFQUNULHFCQUFxQixFQUNyQixpQkFBaUIsRUFDakIsV0FBVyxHQUFHLENBQUMsRUFBRSx3QkFBd0I7UUFDekMsUUFBUSxHQUNULEdBQUcsS0FBSyxDQUFDO1FBRVYsaUZBQWlGO1FBQ2pGLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxlQUFNLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFO1lBQy9DLFNBQVM7WUFDVCxxQkFBcUI7U0FDdEIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxXQUFXLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDckIsd0VBQXdFO1lBQ3hFLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSx5Q0FBbUIsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUU7Z0JBQ25FLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUk7Z0JBQ3hCLFFBQVEsRUFBRSxxQkFBUSxDQUFDLElBQUksQ0FBQyxzQkFBUSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2FBQzdELENBQUMsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ04sNEVBQTRFO1lBQzVFLE1BQU0sTUFBTSxHQUFHLElBQUksc0NBQVksQ0FBQyxJQUFJLEVBQUUsdUNBQXVDLEVBQUU7Z0JBQzdFLGNBQWMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUk7Z0JBQ2hDLFNBQVMsRUFBRSxXQUFXO2FBQ3ZCLENBQUMsQ0FBQztZQUNILE1BQU0sSUFBSSxHQUFHLElBQUksd0JBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFO2dCQUNsQyxJQUFJLEVBQUUsNEJBQVEsQ0FBQyxRQUFRLENBQUMsc0JBQVEsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQzthQUM3RCxDQUFDLENBQUM7WUFDSCxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksc0NBQVksQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUM3RCxjQUFjLEVBQUUsUUFBUTthQUN6QixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksMkJBQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDL0IsTUFBTSxZQUFZLEdBQUcsSUFBSSxnQ0FBWSxDQUFDLElBQUksRUFBRSxjQUFjLEVBQUU7Z0JBQzFELGNBQWMsRUFBRSxrQ0FBYyxDQUFDLGFBQWEsQ0FDMUMseUJBQUssQ0FBQyxLQUFLLENBQ1QsSUFBSSx3QkFBSSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxVQUFVLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQy9EO3FCQUNFLElBQUksQ0FBQyxJQUFJLENBQUM7cUJBQ1YsSUFBSSxDQUFDLE1BQU0sQ0FBQztxQkFDWixJQUFJLENBQ0gsSUFBSSwwQkFBTSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUM7cUJBQ3ZCLElBQUksQ0FDSCw2QkFBUyxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDLEVBQ3BELElBQUksQ0FDTDtxQkFDQSxTQUFTLENBQUMsUUFBUSxDQUFDLENBQ3ZCLENBQ0o7YUFDRixDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUkseUNBQW1CLENBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFO2dCQUNuRSxNQUFNLEVBQUUsWUFBWTtnQkFDcEIsUUFBUSxFQUFFLE9BQU8sRUFBRTthQUNwQixDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQzs7QUE3REgsc0NBOERDOzs7QUFFRCxTQUFTLE9BQU87SUFDZCxNQUFNLEdBQUcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO0lBQ3ZCLE9BQU8scUJBQVEsQ0FBQyxJQUFJLENBQUM7UUFDbkIsSUFBSSxFQUFFLEdBQUcsR0FBRyxDQUFDLGNBQWMsRUFBRSxFQUFFO1FBQy9CLEtBQUssRUFBRSxHQUFHLEdBQUcsQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLEVBQUU7UUFDakMsR0FBRyxFQUFFLEdBQUcsR0FBRyxDQUFDLFVBQVUsRUFBRSxFQUFFO1FBQzFCLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQyxXQUFXLEVBQUUsRUFBRTtRQUM1QixNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsYUFBYSxFQUFFLEdBQUcsQ0FBQyxFQUFFO0tBQ3JDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEdXJhdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IFNjaGVkdWxlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWV2ZW50cyc7XG5pbXBvcnQgeyBJRnVuY3Rpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB7XG4gIFN0YXRlTWFjaGluZSxcbiAgRGVmaW5pdGlvbkJvZHksXG4gIENoYWluLFxuICBDaG9pY2UsXG4gIENvbmRpdGlvbixcbiAgV2FpdCxcbiAgV2FpdFRpbWUsXG4gIFBhc3MsXG4gIFN1Y2NlZWQsXG59IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zdGVwZnVuY3Rpb25zJztcbmltcG9ydCB7IExhbWJkYUludm9rZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zdGVwZnVuY3Rpb25zLXRhc2tzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgRXZlbnRCcmlkZ2VTY2hlZHVsZSB9IGZyb20gJy4vRXZlbnRCcmlkZ2VTY2hlZHVsZSc7XG5pbXBvcnQgeyBMYW1iZGEgfSBmcm9tICcuL0xhbWJkYSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2N0ZVNjaGVkdWxlclByb3BzIHtcbiAgcmVhZG9ubHkgY2hhbm5lbElkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHNjdGVEdXJhdGlvbkluU2Vjb25kczogbnVtYmVyO1xuICByZWFkb25seSBpbnRlcnZhbEluTWludXRlczogbnVtYmVyO1xuICByZWFkb25seSByZXBlYXRDb3VudD86IG51bWJlcjtcbiAgcmVhZG9ubHkgY2FsbGJhY2s/OiBJRnVuY3Rpb247XG59XG5cbmV4cG9ydCBjbGFzcyBTY3RlU2NoZWR1bGVyIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHVibGljIHJlYWRvbmx5IGxhbWJkYTogTGFtYmRhO1xuICBwdWJsaWMgcmVhZG9ubHkgc2NoZWR1bGU6IEV2ZW50QnJpZGdlU2NoZWR1bGU7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFNjdGVTY2hlZHVsZXJQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCB7XG4gICAgICBjaGFubmVsSWQsXG4gICAgICBzY3RlRHVyYXRpb25JblNlY29uZHMsXG4gICAgICBpbnRlcnZhbEluTWludXRlcyxcbiAgICAgIHJlcGVhdENvdW50ID0gMCwgLy8gMCBtZWFucyBpbmZpbml0ZSBsb29wXG4gICAgICBjYWxsYmFjayxcbiAgICB9ID0gcHJvcHM7XG5cbiAgICAvLyBDcmVhdGUgTGFtYmRhIGZ1bmN0aW9uIHRvIGluc2VydCBTQ1RFIG1lc3NhZ2UgdXNpbmcgdGhlIE1lZGlhTGl2ZSBzY2hlZHVsZSBBUElcbiAgICB0aGlzLmxhbWJkYSA9IG5ldyBMYW1iZGEodGhpcywgJ0xhbWJkYUZ1bmN0aW9uJywge1xuICAgICAgY2hhbm5lbElkLFxuICAgICAgc2N0ZUR1cmF0aW9uSW5TZWNvbmRzLFxuICAgIH0pO1xuXG4gICAgaWYgKHJlcGVhdENvdW50IDw9IDApIHtcbiAgICAgIC8vIENyZWF0ZSBFdmVudEJyaWRnZSBydWxlIHRvIGludm9rZSB0aGUgTGFtYmRhIGZ1bmN0aW9uIGV2ZXJ5IE4gbWludXRlc1xuICAgICAgdGhpcy5zY2hlZHVsZSA9IG5ldyBFdmVudEJyaWRnZVNjaGVkdWxlKHRoaXMsICdFdmVudEJyaWRnZVNjaGVkdWxlJywge1xuICAgICAgICB0YXJnZXQ6IHRoaXMubGFtYmRhLmZ1bmMsXG4gICAgICAgIHNjaGVkdWxlOiBTY2hlZHVsZS5yYXRlKER1cmF0aW9uLm1pbnV0ZXMoaW50ZXJ2YWxJbk1pbnV0ZXMpKSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBDcmVhdGUgU3RlcCBGdW5jdGlvbnMgc3RhdGUgbWFjaGluZSB0byBpbnZva2UgdGhlIExhbWJkYSBmdW5jdGlvbiBOIHRpbWVzXG4gICAgICBjb25zdCBpbnZva2UgPSBuZXcgTGFtYmRhSW52b2tlKHRoaXMsICdJbnZva2UgU0NURSBzY2hlZHVsZXIgTGFtYmRhIGZ1bmN0aW9uJywge1xuICAgICAgICBsYW1iZGFGdW5jdGlvbjogdGhpcy5sYW1iZGEuZnVuYyxcbiAgICAgICAgaW5wdXRQYXRoOiAnJC5QYXlsb2FkJyxcbiAgICAgIH0pO1xuICAgICAgY29uc3Qgd2FpdCA9IG5ldyBXYWl0KHRoaXMsICdXYWl0Jywge1xuICAgICAgICB0aW1lOiBXYWl0VGltZS5kdXJhdGlvbihEdXJhdGlvbi5taW51dGVzKGludGVydmFsSW5NaW51dGVzKSksXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IGxhc3RUYXNrID0gY2FsbGJhY2sgPyBuZXcgTGFtYmRhSW52b2tlKHRoaXMsICdDYWxsYmFjaycsIHtcbiAgICAgICAgbGFtYmRhRnVuY3Rpb246IGNhbGxiYWNrLFxuICAgICAgfSkgOiBuZXcgU3VjY2VlZCh0aGlzLCAnRG9uZScpO1xuICAgICAgY29uc3Qgc3RhdGVNYWNoaW5lID0gbmV3IFN0YXRlTWFjaGluZSh0aGlzLCAnU3RhdGVNYWNoaW5lJywge1xuICAgICAgICBkZWZpbml0aW9uQm9keTogRGVmaW5pdGlvbkJvZHkuZnJvbUNoYWluYWJsZShcbiAgICAgICAgICBDaGFpbi5zdGFydChcbiAgICAgICAgICAgIG5ldyBQYXNzKHRoaXMsICdTdGFydCcsIHsgcGFyYW1ldGVyczogeyBQYXlsb2FkOiB7IGk6IDAgfSB9IH0pLFxuICAgICAgICAgIClcbiAgICAgICAgICAgIC5uZXh0KHdhaXQpXG4gICAgICAgICAgICAubmV4dChpbnZva2UpXG4gICAgICAgICAgICAubmV4dChcbiAgICAgICAgICAgICAgbmV3IENob2ljZSh0aGlzLCAnQ2hvaWNlJylcbiAgICAgICAgICAgICAgICAud2hlbihcbiAgICAgICAgICAgICAgICAgIENvbmRpdGlvbi5udW1iZXJMZXNzVGhhbignJC5QYXlsb2FkLmknLCByZXBlYXRDb3VudCksXG4gICAgICAgICAgICAgICAgICB3YWl0LFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAub3RoZXJ3aXNlKGxhc3RUYXNrKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICksXG4gICAgICB9KTtcbiAgICAgIHRoaXMuc2NoZWR1bGUgPSBuZXcgRXZlbnRCcmlkZ2VTY2hlZHVsZSh0aGlzLCAnRXZlbnRCcmlkZ2VTY2hlZHVsZScsIHtcbiAgICAgICAgdGFyZ2V0OiBzdGF0ZU1hY2hpbmUsXG4gICAgICAgIHNjaGVkdWxlOiBjcm9uTm93KCksXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gY3Jvbk5vdygpOiBTY2hlZHVsZSB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gIHJldHVybiBTY2hlZHVsZS5jcm9uKHtcbiAgICB5ZWFyOiBgJHtub3cuZ2V0VVRDRnVsbFllYXIoKX1gLFxuICAgIG1vbnRoOiBgJHtub3cuZ2V0VVRDTW9udGgoKSArIDF9YCxcbiAgICBkYXk6IGAke25vdy5nZXRVVENEYXRlKCl9YCxcbiAgICBob3VyOiBgJHtub3cuZ2V0VVRDSG91cnMoKX1gLFxuICAgIG1pbnV0ZTogYCR7bm93LmdldFVUQ01pbnV0ZXMoKSArIDF9YCxcbiAgfSk7XG59Il19
|
package/lib/code/index.d.ts
CHANGED
package/lib/code/index.js
CHANGED
|
@@ -7,10 +7,11 @@ const CHANNEL_ID = process.env.CHANNEL_ID;
|
|
|
7
7
|
const OFFSET = 30;
|
|
8
8
|
const AVAIL_LENGTH = process.env.AVAIL_LENGTH;
|
|
9
9
|
// Lambda function to insert SCTE-35 splice_insert() message using the MediaLive schedule API
|
|
10
|
-
async function handler() {
|
|
10
|
+
async function handler(event) {
|
|
11
11
|
await deleteSchedules();
|
|
12
12
|
const startTime = new Date(Date.now() + (OFFSET * 1000));
|
|
13
13
|
await scheduleEvent(Math.floor(startTime.getTime() / 1000), startTime);
|
|
14
|
+
return { i: event.i + 1 };
|
|
14
15
|
}
|
|
15
16
|
exports.handler = handler;
|
|
16
17
|
function deleteSchedules() {
|
|
@@ -43,4 +44,4 @@ function createScteCommand(eventId, start, durationInSeconds) {
|
|
|
43
44
|
],
|
|
44
45
|
};
|
|
45
46
|
}
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29kZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxnRUFLbUM7QUFFbkMsTUFBTSxNQUFNLEdBQUcsSUFBSSxrQ0FBZSxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztBQUVuRSxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQW9CLENBQUM7QUFDcEQsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ2xCLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBaUMsQ0FBQztBQUVuRSw2RkFBNkY7QUFDdEYsS0FBSyxVQUFVLE9BQU8sQ0FBQyxLQUFVO0lBQ3RDLE1BQU0sZUFBZSxFQUFFLENBQUM7SUFDeEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDekQsTUFBTSxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDdkUsT0FBTyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO0FBQzVCLENBQUM7QUFMRCwwQkFLQztBQUVELFNBQVMsZUFBZTtJQUN0QixNQUFNLE9BQU8sR0FBRyxJQUFJLHdDQUFxQixDQUFDLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDckUsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzlCLENBQUM7QUFFRCxLQUFLLFVBQVUsYUFBYSxDQUFDLE9BQWUsRUFBRSxLQUFXO0lBQ3ZELE1BQU0sSUFBSSxHQUFHLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDN0QsTUFBTSxPQUFPLEdBQUcsSUFBSSw2Q0FBMEIsQ0FBQyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDekYsTUFBTSxRQUFRLEdBQUcsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzVDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakQsQ0FBQztBQUVELFNBQVMsaUJBQWlCLENBQUMsT0FBZSxFQUFFLEtBQVcsRUFBRSxpQkFBeUI7SUFDaEYsT0FBTztRQUNMLGVBQWUsRUFBRTtZQUNmO2dCQUNFLFVBQVUsRUFBRSx3QkFBd0IsT0FBTyxFQUFFO2dCQUM3QyxzQkFBc0IsRUFBRTtvQkFDdEIsMEJBQTBCLEVBQUU7d0JBQzFCLGFBQWEsRUFBRSxPQUFPO3dCQUN0QixRQUFRLEVBQUUsaUJBQWlCLEdBQUcsS0FBTSxFQUFFLFFBQVE7cUJBQy9DO2lCQUNGO2dCQUNELDJCQUEyQixFQUFFO29CQUMzQixvQ0FBb0MsRUFBRTt3QkFDcEMsSUFBSSxFQUFFLEtBQUssQ0FBQyxXQUFXLEVBQUU7cUJBQzFCO2lCQUNGO2FBQ0Y7U0FDRjtLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgTWVkaWFMaXZlQ2xpZW50LFxuICBCYXRjaFVwZGF0ZVNjaGVkdWxlQ29tbWFuZCxcbiAgQmF0Y2hTY2hlZHVsZUFjdGlvbkNyZWF0ZVJlcXVlc3QsXG4gIERlbGV0ZVNjaGVkdWxlQ29tbWFuZCxcbn0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LW1lZGlhbGl2ZSc7XG5cbmNvbnN0IGNsaWVudCA9IG5ldyBNZWRpYUxpdmVDbGllbnQoeyByZWdpb246IHByb2Nlc3MuZW52LlJFR0lPTiB9KTtcblxuY29uc3QgQ0hBTk5FTF9JRCA9IHByb2Nlc3MuZW52LkNIQU5ORUxfSUQgYXMgc3RyaW5nO1xuY29uc3QgT0ZGU0VUID0gMzA7XG5jb25zdCBBVkFJTF9MRU5HVEggPSBwcm9jZXNzLmVudi5BVkFJTF9MRU5HVEggYXMgdW5rbm93biBhcyBudW1iZXI7XG5cbi8vIExhbWJkYSBmdW5jdGlvbiB0byBpbnNlcnQgU0NURS0zNSBzcGxpY2VfaW5zZXJ0KCkgbWVzc2FnZSB1c2luZyB0aGUgTWVkaWFMaXZlIHNjaGVkdWxlIEFQSVxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGhhbmRsZXIoZXZlbnQ6IGFueSkge1xuICBhd2FpdCBkZWxldGVTY2hlZHVsZXMoKTtcbiAgY29uc3Qgc3RhcnRUaW1lID0gbmV3IERhdGUoRGF0ZS5ub3coKSArIChPRkZTRVQgKiAxMDAwKSk7XG4gIGF3YWl0IHNjaGVkdWxlRXZlbnQoTWF0aC5mbG9vcihzdGFydFRpbWUuZ2V0VGltZSgpIC8gMTAwMCksIHN0YXJ0VGltZSk7XG4gIHJldHVybiB7IGk6IGV2ZW50LmkgKyAxIH07XG59XG5cbmZ1bmN0aW9uIGRlbGV0ZVNjaGVkdWxlcygpIHtcbiAgY29uc3QgY29tbWFuZCA9IG5ldyBEZWxldGVTY2hlZHVsZUNvbW1hbmQoeyBDaGFubmVsSWQ6IENIQU5ORUxfSUQgfSk7XG4gIHJldHVybiBjbGllbnQuc2VuZChjb21tYW5kKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gc2NoZWR1bGVFdmVudChldmVudElkOiBudW1iZXIsIHN0YXJ0OiBEYXRlKSB7XG4gIGNvbnN0IHNjdGUgPSBjcmVhdGVTY3RlQ29tbWFuZChldmVudElkLCBzdGFydCwgQVZBSUxfTEVOR1RIKTtcbiAgY29uc3QgY29tbWFuZCA9IG5ldyBCYXRjaFVwZGF0ZVNjaGVkdWxlQ29tbWFuZCh7IENoYW5uZWxJZDogQ0hBTk5FTF9JRCwgQ3JlYXRlczogc2N0ZSB9KTtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuc2VuZChjb21tYW5kKTtcbiAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkocmVzcG9uc2UsIG51bGwsIDIpKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlU2N0ZUNvbW1hbmQoZXZlbnRJZDogbnVtYmVyLCBzdGFydDogRGF0ZSwgZHVyYXRpb25JblNlY29uZHM6IG51bWJlcik6IEJhdGNoU2NoZWR1bGVBY3Rpb25DcmVhdGVSZXF1ZXN0IHtcbiAgcmV0dXJuIHtcbiAgICBTY2hlZHVsZUFjdGlvbnM6IFtcbiAgICAgIHtcbiAgICAgICAgQWN0aW9uTmFtZTogYFNDVEUzNV9zcGxpY2UtaW5zZXJ0XyR7ZXZlbnRJZH1gLFxuICAgICAgICBTY2hlZHVsZUFjdGlvblNldHRpbmdzOiB7XG4gICAgICAgICAgU2N0ZTM1U3BsaWNlSW5zZXJ0U2V0dGluZ3M6IHtcbiAgICAgICAgICAgIFNwbGljZUV2ZW50SWQ6IGV2ZW50SWQsXG4gICAgICAgICAgICBEdXJhdGlvbjogZHVyYXRpb25JblNlY29uZHMgKiA5MF8wMDAsIC8vIDkwa0h6XG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgU2NoZWR1bGVBY3Rpb25TdGFydFNldHRpbmdzOiB7XG4gICAgICAgICAgRml4ZWRNb2RlU2NoZWR1bGVBY3Rpb25TdGFydFNldHRpbmdzOiB7XG4gICAgICAgICAgICBUaW1lOiBzdGFydC50b0lTT1N0cmluZygpLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIF0sXG4gIH07XG59XG5cblxuIl19
|