Skip to content

Commit 11e9774

Browse files
author
awstools
committed
feat(client-mediapackagev2): This release adds support for Microsoft Smooth Streaming (MSS) and allows users to exclude DRM segment Metadata in MediaPackage v2 Origin Endpoints
1 parent 83e7db9 commit 11e9774

File tree

8 files changed

+1211
-54
lines changed

8 files changed

+1211
-54
lines changed

clients/client-mediapackagev2/src/commands/CreateOriginEndpointCommand.ts

Lines changed: 145 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ export interface CreateOriginEndpointCommandOutput extends CreateOriginEndpointR
3939
* ChannelGroupName: "STRING_VALUE", // required
4040
* ChannelName: "STRING_VALUE", // required
4141
* OriginEndpointName: "STRING_VALUE", // required
42-
* ContainerType: "TS" || "CMAF", // required
42+
* ContainerType: "TS" || "CMAF" || "ISM", // required
4343
* Segment: { // Segment
4444
* SegmentDurationSeconds: Number("int"),
4545
* SegmentName: "STRING_VALUE",
@@ -56,8 +56,10 @@ export interface CreateOriginEndpointCommandOutput extends CreateOriginEndpointR
5656
* EncryptionMethod: { // EncryptionMethod
5757
* TsEncryptionMethod: "AES_128" || "SAMPLE_AES",
5858
* CmafEncryptionMethod: "CENC" || "CBCS",
59+
* IsmEncryptionMethod: "CENC",
5960
* },
6061
* KeyRotationIntervalSeconds: Number("int"),
62+
* CmafExcludeSegmentDrmMetadata: true || false,
6163
* SpekeKeyProvider: { // SpekeKeyProvider
6264
* EncryptionContractConfiguration: { // EncryptionContractConfiguration
6365
* PresetSpeke20Audio: "PRESET_AUDIO_1" || "PRESET_AUDIO_2" || "PRESET_AUDIO_3" || "SHARED" || "UNENCRYPTED", // required
@@ -186,6 +188,20 @@ export interface CreateOriginEndpointCommandOutput extends CreateOriginEndpointR
186188
* },
187189
* },
188190
* ],
191+
* MssManifests: [ // CreateMssManifests
192+
* { // CreateMssManifestConfiguration
193+
* ManifestName: "STRING_VALUE", // required
194+
* ManifestWindowSeconds: Number("int"),
195+
* FilterConfiguration: {
196+
* ManifestFilter: "STRING_VALUE",
197+
* Start: new Date("TIMESTAMP"),
198+
* End: new Date("TIMESTAMP"),
199+
* TimeDelaySeconds: Number("int"),
200+
* ClipStartTime: new Date("TIMESTAMP"),
201+
* },
202+
* ManifestLayout: "FULL" || "COMPACT",
203+
* },
204+
* ],
189205
* ForceEndpointErrorConfiguration: { // ForceEndpointErrorConfiguration
190206
* EndpointErrorConditions: [ // EndpointErrorConditions
191207
* "STALE_MANIFEST" || "INCOMPLETE_MANIFEST" || "MISSING_DRM_KEY" || "SLATE_INPUT",
@@ -202,7 +218,7 @@ export interface CreateOriginEndpointCommandOutput extends CreateOriginEndpointR
202218
* // ChannelGroupName: "STRING_VALUE", // required
203219
* // ChannelName: "STRING_VALUE", // required
204220
* // OriginEndpointName: "STRING_VALUE", // required
205-
* // ContainerType: "TS" || "CMAF", // required
221+
* // ContainerType: "TS" || "CMAF" || "ISM", // required
206222
* // Segment: { // Segment
207223
* // SegmentDurationSeconds: Number("int"),
208224
* // SegmentName: "STRING_VALUE",
@@ -219,8 +235,10 @@ export interface CreateOriginEndpointCommandOutput extends CreateOriginEndpointR
219235
* // EncryptionMethod: { // EncryptionMethod
220236
* // TsEncryptionMethod: "AES_128" || "SAMPLE_AES",
221237
* // CmafEncryptionMethod: "CENC" || "CBCS",
238+
* // IsmEncryptionMethod: "CENC",
222239
* // },
223240
* // KeyRotationIntervalSeconds: Number("int"),
241+
* // CmafExcludeSegmentDrmMetadata: true || false,
224242
* // SpekeKeyProvider: { // SpekeKeyProvider
225243
* // EncryptionContractConfiguration: { // EncryptionContractConfiguration
226244
* // PresetSpeke20Audio: "PRESET_AUDIO_1" || "PRESET_AUDIO_2" || "PRESET_AUDIO_3" || "SHARED" || "UNENCRYPTED", // required
@@ -353,6 +371,21 @@ export interface CreateOriginEndpointCommandOutput extends CreateOriginEndpointR
353371
* // },
354372
* // },
355373
* // ],
374+
* // MssManifests: [ // GetMssManifests
375+
* // { // GetMssManifestConfiguration
376+
* // ManifestName: "STRING_VALUE", // required
377+
* // Url: "STRING_VALUE", // required
378+
* // FilterConfiguration: {
379+
* // ManifestFilter: "STRING_VALUE",
380+
* // Start: new Date("TIMESTAMP"),
381+
* // End: new Date("TIMESTAMP"),
382+
* // TimeDelaySeconds: Number("int"),
383+
* // ClipStartTime: new Date("TIMESTAMP"),
384+
* // },
385+
* // ManifestWindowSeconds: Number("int"),
386+
* // ManifestLayout: "FULL" || "COMPACT",
387+
* // },
388+
* // ],
356389
* // ForceEndpointErrorConfiguration: { // ForceEndpointErrorConfiguration
357390
* // EndpointErrorConditions: [ // EndpointErrorConditions
358391
* // "STALE_MANIFEST" || "INCOMPLETE_MANIFEST" || "MISSING_DRM_KEY" || "SLATE_INPUT",
@@ -1011,6 +1044,116 @@ export interface CreateOriginEndpointCommandOutput extends CreateOriginEndpointR
10111044
* *\/
10121045
* ```
10131046
*
1047+
* @example Creating an OriginEndpoint with container type ISM, and encryption enabled
1048+
* ```javascript
1049+
* //
1050+
* const input = {
1051+
* ChannelGroupName: "exampleChannelGroup",
1052+
* ChannelName: "exampleChannel",
1053+
* ContainerType: "ISM",
1054+
* Description: "Description for exampleOriginEndpointISM",
1055+
* ForceEndpointErrorConfiguration: {
1056+
* EndpointErrorConditions: [
1057+
* "STALE_MANIFEST",
1058+
* "INCOMPLETE_MANIFEST",
1059+
* "MISSING_DRM_KEY",
1060+
* "SLATE_INPUT"
1061+
* ]
1062+
* },
1063+
* MssManifests: [
1064+
* {
1065+
* ManifestLayout: "FULL",
1066+
* ManifestName: "exampleMssManifest1",
1067+
* ManifestWindowSeconds: 60
1068+
* }
1069+
* ],
1070+
* OriginEndpointName: "exampleOriginEndpointISM",
1071+
* Segment: {
1072+
* Encryption: {
1073+
* EncryptionMethod: {
1074+
* IsmEncryptionMethod: "CENC"
1075+
* },
1076+
* SpekeKeyProvider: {
1077+
* DrmSystems: [
1078+
* "PLAYREADY"
1079+
* ],
1080+
* EncryptionContractConfiguration: {
1081+
* PresetSpeke20Audio: "SHARED",
1082+
* PresetSpeke20Video: "SHARED"
1083+
* },
1084+
* ResourceId: "ResourceId",
1085+
* RoleArn: "arn:aws:iam::123456789012:role/empRole",
1086+
* Url: "https://speke-key-provider.example.com"
1087+
* }
1088+
* },
1089+
* SegmentDurationSeconds: 2,
1090+
* SegmentName: "segmentName"
1091+
* },
1092+
* StartoverWindowSeconds: 300,
1093+
* Tags: {
1094+
* key1: "value1",
1095+
* key2: "value2"
1096+
* }
1097+
* };
1098+
* const command = new CreateOriginEndpointCommand(input);
1099+
* const response = await client.send(command);
1100+
* /* response is
1101+
* {
1102+
* Arn: "arn:aws:mediapackagev2:us-west-2:123456789012:channelGroup/exampleChannelGroup/channel/exampleChannel/originEndpoint/exampleOriginEndpointISM",
1103+
* ChannelGroupName: "exampleChannelGroup",
1104+
* ChannelName: "exampleChannel",
1105+
* ContainerType: "ISM",
1106+
* CreatedAt: "2022-10-18T09:36:00.00Z",
1107+
* Description: "Description for exampleOriginEndpointISM",
1108+
* ETag: "GlfT+dwAyGIR4wuy8nKWl1RDPwSrjQej9qUutLZxoxk=",
1109+
* ForceEndpointErrorConfiguration: {
1110+
* EndpointErrorConditions: [
1111+
* "STALE_MANIFEST",
1112+
* "INCOMPLETE_MANIFEST",
1113+
* "MISSING_DRM_KEY",
1114+
* "SLATE_INPUT"
1115+
* ]
1116+
* },
1117+
* ModifiedAt: "2022-10-18T09:36:00.00Z",
1118+
* MssManifests: [
1119+
* {
1120+
* ManifestLayout: "FULL",
1121+
* ManifestName: "exampleMssManifest1",
1122+
* ManifestWindowSeconds: 60,
1123+
* Url: "https://abcde.egress.vwxyz.mediapackagev2.us-west-2.amazonaws.com/out/v1/exampleChannelGroup/exampleChannel/exampleOriginEndpointISM/exampleMssManifest1.ism/Manifest"
1124+
* }
1125+
* ],
1126+
* OriginEndpointName: "exampleOriginEndpointISM",
1127+
* Segment: {
1128+
* Encryption: {
1129+
* EncryptionMethod: {
1130+
* IsmEncryptionMethod: "CENC"
1131+
* },
1132+
* SpekeKeyProvider: {
1133+
* DrmSystems: [
1134+
* "PLAYREADY"
1135+
* ],
1136+
* EncryptionContractConfiguration: {
1137+
* PresetSpeke20Audio: "SHARED",
1138+
* PresetSpeke20Video: "SHARED"
1139+
* },
1140+
* ResourceId: "ResourceId",
1141+
* RoleArn: "arn:aws:iam::123456789012:role/empRole",
1142+
* Url: "https://speke-key-provider.example.com"
1143+
* }
1144+
* },
1145+
* SegmentDurationSeconds: 2,
1146+
* SegmentName: "segmentName"
1147+
* },
1148+
* StartoverWindowSeconds: 300,
1149+
* Tags: {
1150+
* key1: "value1",
1151+
* key2: "value2"
1152+
* }
1153+
* }
1154+
* *\/
1155+
* ```
1156+
*
10141157
* @public
10151158
*/
10161159
export class CreateOriginEndpointCommand extends $Command

clients/client-mediapackagev2/src/commands/GetOriginEndpointCommand.ts

Lines changed: 91 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ export interface GetOriginEndpointCommandOutput extends GetOriginEndpointRespons
4747
* // ChannelGroupName: "STRING_VALUE", // required
4848
* // ChannelName: "STRING_VALUE", // required
4949
* // OriginEndpointName: "STRING_VALUE", // required
50-
* // ContainerType: "TS" || "CMAF", // required
50+
* // ContainerType: "TS" || "CMAF" || "ISM", // required
5151
* // Segment: { // Segment
5252
* // SegmentDurationSeconds: Number("int"),
5353
* // SegmentName: "STRING_VALUE",
@@ -64,8 +64,10 @@ export interface GetOriginEndpointCommandOutput extends GetOriginEndpointRespons
6464
* // EncryptionMethod: { // EncryptionMethod
6565
* // TsEncryptionMethod: "AES_128" || "SAMPLE_AES",
6666
* // CmafEncryptionMethod: "CENC" || "CBCS",
67+
* // IsmEncryptionMethod: "CENC",
6768
* // },
6869
* // KeyRotationIntervalSeconds: Number("int"),
70+
* // CmafExcludeSegmentDrmMetadata: true || false,
6971
* // SpekeKeyProvider: { // SpekeKeyProvider
7072
* // EncryptionContractConfiguration: { // EncryptionContractConfiguration
7173
* // PresetSpeke20Audio: "PRESET_AUDIO_1" || "PRESET_AUDIO_2" || "PRESET_AUDIO_3" || "SHARED" || "UNENCRYPTED", // required
@@ -199,6 +201,21 @@ export interface GetOriginEndpointCommandOutput extends GetOriginEndpointRespons
199201
* // },
200202
* // },
201203
* // ],
204+
* // MssManifests: [ // GetMssManifests
205+
* // { // GetMssManifestConfiguration
206+
* // ManifestName: "STRING_VALUE", // required
207+
* // Url: "STRING_VALUE", // required
208+
* // FilterConfiguration: {
209+
* // ManifestFilter: "STRING_VALUE",
210+
* // Start: new Date("TIMESTAMP"),
211+
* // End: new Date("TIMESTAMP"),
212+
* // TimeDelaySeconds: Number("int"),
213+
* // ClipStartTime: new Date("TIMESTAMP"),
214+
* // },
215+
* // ManifestWindowSeconds: Number("int"),
216+
* // ManifestLayout: "FULL" || "COMPACT",
217+
* // },
218+
* // ],
202219
* // ForceEndpointErrorConfiguration: { // ForceEndpointErrorConfiguration
203220
* // EndpointErrorConditions: [ // EndpointErrorConditions
204221
* // "STALE_MANIFEST" || "INCOMPLETE_MANIFEST" || "MISSING_DRM_KEY" || "SLATE_INPUT",
@@ -351,6 +368,79 @@ export interface GetOriginEndpointCommandOutput extends GetOriginEndpointRespons
351368
* *\/
352369
* ```
353370
*
371+
* @example Getting an OriginEndpoint with ISM container
372+
* ```javascript
373+
* //
374+
* const input = {
375+
* ChannelGroupName: "exampleChannelGroup",
376+
* ChannelName: "exampleChannel",
377+
* OriginEndpointName: "exampleOriginEndpointISM"
378+
* };
379+
* const command = new GetOriginEndpointCommand(input);
380+
* const response = await client.send(command);
381+
* /* response is
382+
* {
383+
* Arn: "arn:aws:mediapackagev2:us-west-2:123456789012:channelGroup/exampleChannelGroup/channel/exampleChannel/originEndpoint/exampleOriginEndpointISM",
384+
* ChannelGroupName: "exampleChannelGroup",
385+
* ChannelName: "exampleChannel",
386+
* ContainerType: "ISM",
387+
* CreatedAt: "2022-10-18T09:36:00.00Z",
388+
* Description: "Description for exampleOriginEndpointISM",
389+
* ETag: "HmgU+ewBzHJS5xvz9nLXm2SEQxTsjRfk0rVvuMayoyl=",
390+
* ForceEndpointErrorConfiguration: {
391+
* EndpointErrorConditions: [
392+
* "STALE_MANIFEST",
393+
* "INCOMPLETE_MANIFEST",
394+
* "MISSING_DRM_KEY",
395+
* "SLATE_INPUT"
396+
* ]
397+
* },
398+
* ModifiedAt: "2022-10-18T09:36:00.00Z",
399+
* MssManifests: [
400+
* {
401+
* ManifestLayout: "FULL",
402+
* ManifestName: "exampleMssManifest1",
403+
* ManifestWindowSeconds: 60,
404+
* Url: "https://abcde.egress.vwxyz.mediapackagev2.us-west-2.amazonaws.com/out/v1/exampleChannelGroup/exampleChannel/exampleOriginEndpointISM/exampleMssManifest1.ism/Manifest"
405+
* },
406+
* {
407+
* ManifestLayout: "COMPACT",
408+
* ManifestName: "exampleMssManifest2",
409+
* ManifestWindowSeconds: 30,
410+
* Url: "https://abcde.egress.vwxyz.mediapackagev2.us-west-2.amazonaws.com/out/v1/exampleChannelGroup/exampleChannel/exampleOriginEndpointISM/exampleMssManifest2.ism/Manifest"
411+
* }
412+
* ],
413+
* OriginEndpointName: "exampleOriginEndpointISM",
414+
* Segment: {
415+
* Encryption: {
416+
* EncryptionMethod: {
417+
* IsmEncryptionMethod: "CENC"
418+
* },
419+
* SpekeKeyProvider: {
420+
* DrmSystems: [
421+
* "PLAYREADY"
422+
* ],
423+
* EncryptionContractConfiguration: {
424+
* PresetSpeke20Audio: "SHARED",
425+
* PresetSpeke20Video: "SHARED"
426+
* },
427+
* ResourceId: "ResourceId",
428+
* RoleArn: "arn:aws:iam::123456789012:role/empRole",
429+
* Url: "https://speke-key-provider.example.com"
430+
* }
431+
* },
432+
* SegmentDurationSeconds: 2,
433+
* SegmentName: "segmentName"
434+
* },
435+
* StartoverWindowSeconds: 300,
436+
* Tags: {
437+
* key1: "value1",
438+
* key2: "value2"
439+
* }
440+
* }
441+
* *\/
442+
* ```
443+
*
354444
* @public
355445
*/
356446
export class GetOriginEndpointCommand extends $Command

clients/client-mediapackagev2/src/commands/ListHarvestJobsCommand.ts

Lines changed: 4 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -166,11 +166,7 @@ export interface ListHarvestJobsCommandOutput extends ListHarvestJobsResponse, _
166166
* EndTime: "2024-05-28T12:00:00.00Z",
167167
* StartTime: "2024-05-28T06:00:00.00Z"
168168
* },
169-
* Status: "QUEUED",
170-
* Tags: {
171-
* key1: "value1",
172-
* key2: "value2"
173-
* }
169+
* Status: "QUEUED"
174170
* },
175171
* {
176172
* Arn: "arn:aws:mediapackagev2:us-west-2:123456789012:channelGroup/exampleChannelGroup/channel/exampleChannelName2/originEndpoint/exampleOriginEndpointName2/harvestJob/HarvestJobName2",
@@ -209,11 +205,7 @@ export interface ListHarvestJobsCommandOutput extends ListHarvestJobsResponse, _
209205
* EndTime: "2024-05-28T12:00:00.00Z",
210206
* StartTime: "2024-05-28T02:00:00.00Z"
211207
* },
212-
* Status: "IN_PROGRESS",
213-
* Tags: {
214-
* key1: "value1",
215-
* key2: "value2"
216-
* }
208+
* Status: "IN_PROGRESS"
217209
* }
218210
* ],
219211
* NextToken: "someTokenValue"
@@ -270,11 +262,7 @@ export interface ListHarvestJobsCommandOutput extends ListHarvestJobsResponse, _
270262
* EndTime: "2024-05-28T12:00:00.00Z",
271263
* StartTime: "2024-05-28T06:00:00.00Z"
272264
* },
273-
* Status: "QUEUED",
274-
* Tags: {
275-
* key1: "value1",
276-
* key2: "value2"
277-
* }
265+
* Status: "QUEUED"
278266
* },
279267
* {
280268
* Arn: "arn:aws:mediapackagev2:us-west-2:123456789012:channelGroup/exampleChannelGroup/channel/exampleChannelName/originEndpoint/exampleOriginEndpointName2/harvestJob/HarvestJobName2",
@@ -312,11 +300,7 @@ export interface ListHarvestJobsCommandOutput extends ListHarvestJobsResponse, _
312300
* EndTime: "2024-05-28T12:00:00.00Z",
313301
* StartTime: "2024-05-28T02:00:00.00Z"
314302
* },
315-
* Status: "IN_PROGRESS",
316-
* Tags: {
317-
* key1: "value1",
318-
* key2: "value2"
319-
* }
303+
* Status: "IN_PROGRESS"
320304
* }
321305
* ],
322306
* NextToken: "someTokenValue"

0 commit comments

Comments
 (0)