Skip to content

Commit 88e1c21

Browse files
author
awstools
committed
feat(client-chime-sdk-media-pipelines): Added support for Media Capture Pipeline and Media Concatenation Pipeline for customer managed server side encryption. Now Media Capture Pipeline can use IAM sink role to get access to KMS key and encrypt/decrypt recorded artifacts. KMS key ID can also be supplied with encryption context.
1 parent bf10da9 commit 88e1c21

File tree

6 files changed

+180
-1
lines changed

6 files changed

+180
-1
lines changed

clients/client-chime-sdk-media-pipelines/src/commands/CreateMediaCapturePipelineCommand.ts

+10
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,11 @@ export interface CreateMediaCapturePipelineCommandOutput extends CreateMediaCapt
107107
* },
108108
* },
109109
* },
110+
* SseAwsKeyManagementParams: { // SseAwsKeyManagementParams
111+
* AwsKmsKeyId: "STRING_VALUE", // required
112+
* AwsKmsEncryptionContext: "STRING_VALUE",
113+
* },
114+
* SinkIamRoleArn: "STRING_VALUE",
110115
* Tags: [ // TagList
111116
* { // Tag
112117
* Key: "STRING_VALUE", // required
@@ -184,6 +189,11 @@ export interface CreateMediaCapturePipelineCommandOutput extends CreateMediaCapt
184189
* // },
185190
* // },
186191
* // },
192+
* // SseAwsKeyManagementParams: { // SseAwsKeyManagementParams
193+
* // AwsKmsKeyId: "STRING_VALUE", // required
194+
* // AwsKmsEncryptionContext: "STRING_VALUE",
195+
* // },
196+
* // SinkIamRoleArn: "STRING_VALUE",
187197
* // },
188198
* // };
189199
*

clients/client-chime-sdk-media-pipelines/src/commands/GetMediaCapturePipelineCommand.ts

+5
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,11 @@ export interface GetMediaCapturePipelineCommandOutput extends GetMediaCapturePip
116116
* // },
117117
* // },
118118
* // },
119+
* // SseAwsKeyManagementParams: { // SseAwsKeyManagementParams
120+
* // AwsKmsKeyId: "STRING_VALUE", // required
121+
* // AwsKmsEncryptionContext: "STRING_VALUE",
122+
* // },
123+
* // SinkIamRoleArn: "STRING_VALUE",
119124
* // },
120125
* // };
121126
*

clients/client-chime-sdk-media-pipelines/src/commands/GetMediaPipelineCommand.ts

+5
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,11 @@ export interface GetMediaPipelineCommandOutput extends GetMediaPipelineResponse,
117117
* // },
118118
* // },
119119
* // },
120+
* // SseAwsKeyManagementParams: { // SseAwsKeyManagementParams
121+
* // AwsKmsKeyId: "STRING_VALUE", // required
122+
* // AwsKmsEncryptionContext: "STRING_VALUE",
123+
* // },
124+
* // SinkIamRoleArn: "STRING_VALUE",
120125
* // },
121126
* // MediaLiveConnectorPipeline: { // MediaLiveConnectorPipeline
122127
* // Sources: [ // LiveConnectorSourceList

clients/client-chime-sdk-media-pipelines/src/models/models_0.ts

+105
Original file line numberDiff line numberDiff line change
@@ -392,6 +392,10 @@ export interface AmazonTranscribeProcessorConfiguration {
392392

393393
/**
394394
* <p>Turns language identification on or off for multiple languages.</p>
395+
* <note>
396+
* <p>Calls to this API must include a <code>LanguageCode</code>, <code>IdentifyLanguage</code>, or <code>IdentifyMultipleLanguages</code> parameter.
397+
* If you include more than one of those parameters, your transcription job fails.</p>
398+
* </note>
395399
* @public
396400
*/
397401
IdentifyMultipleLanguages?: boolean;
@@ -1214,6 +1218,68 @@ export const MediaPipelineSourceType = {
12141218
*/
12151219
export type MediaPipelineSourceType = (typeof MediaPipelineSourceType)[keyof typeof MediaPipelineSourceType];
12161220

1221+
/**
1222+
* <p>Contains server side encryption parameters to be used by media capture pipeline. The
1223+
* parameters can also be used by media concatenation pipeline taking media capture pipeline
1224+
* as a media source.</p>
1225+
* @public
1226+
*/
1227+
export interface SseAwsKeyManagementParams {
1228+
/**
1229+
* <p>The KMS key you want to use to encrypt your media pipeline output.
1230+
* Decryption is required for concatenation pipeline. If using a key located in the current
1231+
* Amazon Web Services account, you can specify your KMS key in one of four
1232+
* ways:</p>
1233+
* <ul>
1234+
* <li>
1235+
* <p>Use the KMS key ID itself. For example,
1236+
* <code>1234abcd-12ab-34cd-56ef-1234567890ab</code>.</p>
1237+
* </li>
1238+
* <li>
1239+
* <p>Use an alias for the KMS key ID. For example,
1240+
* <code>alias/ExampleAlias</code>.</p>
1241+
* </li>
1242+
* <li>
1243+
* <p>Use the Amazon Resource Name (ARN) for the KMS key ID. For example,
1244+
* <code>arn:aws:kms:region:account-ID:key/1234abcd-12ab-34cd-56ef-1234567890ab</code>.</p>
1245+
* </li>
1246+
* <li>
1247+
* <p>Use the ARN for the KMS key alias. For example,
1248+
* <code>arn:aws:kms:region:account-ID:alias/ExampleAlias</code>.</p>
1249+
* </li>
1250+
* </ul>
1251+
* <p>If using a key located in a different Amazon Web Services account than the current
1252+
* Amazon Web Services account, you can specify your KMS key in one of two
1253+
* ways:</p>
1254+
* <ul>
1255+
* <li>
1256+
* <p>Use the ARN for the KMS key ID. For example,
1257+
* <code>arn:aws:kms:region:account-ID:key/1234abcd-12ab-34cd-56ef-1234567890ab</code>.</p>
1258+
* </li>
1259+
* <li>
1260+
* <p>Use the ARN for the KMS key alias. For example,
1261+
* <code>arn:aws:kms:region:account-ID:alias/ExampleAlias</code>.</p>
1262+
* </li>
1263+
* </ul>
1264+
* <p>If you don't specify an encryption key, your output is encrypted with the default
1265+
* Amazon S3 key (SSE-S3).</p>
1266+
* <p>Note that the role specified in the <code>SinkIamRoleArn</code> request parameter must
1267+
* have permission to use the specified KMS key.</p>
1268+
* @public
1269+
*/
1270+
AwsKmsKeyId: string | undefined;
1271+
1272+
/**
1273+
* <p>Base64-encoded string of a UTF-8 encoded JSON, which contains the encryption context as
1274+
* non-secret key-value pair known as encryption context pairs, that provides an added layer
1275+
* of security for your data. For more information, see <a href="https://docs.aws.amazon.com/kms/latest/developerguide/encrypt_context.html">KMS encryption
1276+
* context</a> and <a href="https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html">Asymmetric keys in KMS</a> in the <i>Key Management Service Developer
1277+
* Guide</i>.</p>
1278+
* @public
1279+
*/
1280+
AwsKmsEncryptionContext?: string;
1281+
}
1282+
12171283
/**
12181284
* <p>A key/value pair that grants users access to meeting resources.</p>
12191285
* @public
@@ -1274,6 +1340,28 @@ export interface CreateMediaCapturePipelineRequest {
12741340
*/
12751341
ChimeSdkMeetingConfiguration?: ChimeSdkMeetingConfiguration;
12761342

1343+
/**
1344+
* <p>An object that contains server side encryption parameters to be used by media capture
1345+
* pipeline. The parameters can also be used by media concatenation pipeline taking media
1346+
* capture pipeline as a media source.</p>
1347+
* @public
1348+
*/
1349+
SseAwsKeyManagementParams?: SseAwsKeyManagementParams;
1350+
1351+
/**
1352+
* <p>The Amazon Resource Name (ARN) of the sink role to be used with <code>AwsKmsKeyId</code>
1353+
* in <code>SseAwsKeyManagementParams</code>. Can only interact with <code>S3Bucket</code>
1354+
* sink type. The role must belong to the caller’s account and be able to act on behalf of the
1355+
* caller during the API call. All minimum policy permissions requirements for the caller to
1356+
* perform sink-related actions are the same for <code>SinkIamRoleArn</code>.</p>
1357+
* <p>Additionally, the role must have permission to <code>kms:GenerateDataKey</code> using
1358+
* KMS key supplied as <code>AwsKmsKeyId</code> in <code>SseAwsKeyManagementParams</code>. If
1359+
* media concatenation will be required later, the role must also have permission to
1360+
* <code>kms:Decrypt</code> for the same KMS key.</p>
1361+
* @public
1362+
*/
1363+
SinkIamRoleArn?: string;
1364+
12771365
/**
12781366
* <p>The tag key-value pairs.</p>
12791367
* @public
@@ -1368,6 +1456,21 @@ export interface MediaCapturePipeline {
13681456
* @public
13691457
*/
13701458
ChimeSdkMeetingConfiguration?: ChimeSdkMeetingConfiguration;
1459+
1460+
/**
1461+
* <p>An object that contains server side encryption parameters to be used by media capture
1462+
* pipeline. The parameters can also be used by media concatenation pipeline taking media
1463+
* capture pipeline as a media source.</p>
1464+
* @public
1465+
*/
1466+
SseAwsKeyManagementParams?: SseAwsKeyManagementParams;
1467+
1468+
/**
1469+
* <p>The Amazon Resource Name (ARN) of the sink role to be used with <code>AwsKmsKeyId</code>
1470+
* in <code>SseAwsKeyManagementParams</code>.</p>
1471+
* @public
1472+
*/
1473+
SinkIamRoleArn?: string;
13711474
}
13721475

13731476
/**
@@ -4060,6 +4163,7 @@ export const CreateMediaCapturePipelineRequestFilterSensitiveLog = (obj: CreateM
40604163
...(obj.ChimeSdkMeetingConfiguration && {
40614164
ChimeSdkMeetingConfiguration: ChimeSdkMeetingConfigurationFilterSensitiveLog(obj.ChimeSdkMeetingConfiguration),
40624165
}),
4166+
...(obj.SinkIamRoleArn && { SinkIamRoleArn: SENSITIVE_STRING }),
40634167
});
40644168

40654169
/**
@@ -4072,6 +4176,7 @@ export const MediaCapturePipelineFilterSensitiveLog = (obj: MediaCapturePipeline
40724176
...(obj.ChimeSdkMeetingConfiguration && {
40734177
ChimeSdkMeetingConfiguration: ChimeSdkMeetingConfigurationFilterSensitiveLog(obj.ChimeSdkMeetingConfiguration),
40744178
}),
4179+
...(obj.SinkIamRoleArn && { SinkIamRoleArn: SENSITIVE_STRING }),
40754180
});
40764181

40774182
/**

clients/client-chime-sdk-media-pipelines/src/protocols/Aws_restJson1.ts

+9
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,7 @@ import {
207207
SourceConfiguration,
208208
SpeakerSearchTask,
209209
SqsQueueSinkConfiguration,
210+
SseAwsKeyManagementParams,
210211
StreamChannelDefinition,
211212
StreamConfiguration,
212213
Tag,
@@ -241,9 +242,11 @@ export const se_CreateMediaCapturePipelineCommand = async (
241242
ChimeSdkMeetingConfiguration: (_) => _json(_),
242243
ClientRequestToken: [true, (_) => _ ?? generateIdempotencyToken()],
243244
SinkArn: [],
245+
SinkIamRoleArn: [],
244246
SinkType: [],
245247
SourceArn: [],
246248
SourceType: [],
249+
SseAwsKeyManagementParams: (_) => _json(_),
247250
Tags: (_) => _json(_),
248251
})
249252
);
@@ -1886,6 +1889,8 @@ const se_KinesisVideoStreamRecordingSourceRuntimeConfiguration = (
18861889

18871890
// se_SqsQueueSinkConfiguration omitted.
18881891

1892+
// se_SseAwsKeyManagementParams omitted.
1893+
18891894
// se_StreamChannelDefinition omitted.
18901895

18911896
// se_StreamConfiguration omitted.
@@ -2054,9 +2059,11 @@ const de_MediaCapturePipeline = (output: any, context: __SerdeContext): MediaCap
20542059
MediaPipelineArn: __expectString,
20552060
MediaPipelineId: __expectString,
20562061
SinkArn: __expectString,
2062+
SinkIamRoleArn: __expectString,
20572063
SinkType: __expectString,
20582064
SourceArn: __expectString,
20592065
SourceType: __expectString,
2066+
SseAwsKeyManagementParams: _json,
20602067
Status: __expectString,
20612068
UpdatedTimestamp: (_: any) => __expectNonNull(__parseRfc3339DateTimeWithOffset(_)),
20622069
}) as any;
@@ -2234,6 +2241,8 @@ const de_SpeakerSearchTask = (output: any, context: __SerdeContext): SpeakerSear
22342241

22352242
// de_SqsQueueSinkConfiguration omitted.
22362243

2244+
// de_SseAwsKeyManagementParams omitted.
2245+
22372246
// de_StreamChannelDefinition omitted.
22382247

22392248
// de_StreamConfiguration omitted.

codegen/sdk-codegen/aws-models/chime-sdk-media-pipelines.json

+46-1
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,7 @@
260260
"target": "com.amazonaws.chimesdkmediapipelines#Boolean",
261261
"traits": {
262262
"smithy.api#default": false,
263-
"smithy.api#documentation": "<p>Turns language identification on or off for multiple languages.</p>"
263+
"smithy.api#documentation": "<p>Turns language identification on or off for multiple languages.</p>\n <note>\n <p>Calls to this API must include a <code>LanguageCode</code>, <code>IdentifyLanguage</code>, or <code>IdentifyMultipleLanguages</code> parameter. \n If you include more than one of those parameters, your transcription job fails.</p>\n </note>"
264264
}
265265
},
266266
"LanguageOptions": {
@@ -1982,6 +1982,18 @@
19821982
"smithy.api#documentation": "<p>The configuration for a specified media pipeline. <code>SourceType</code> must\n be <code>ChimeSdkMeeting</code>.</p>"
19831983
}
19841984
},
1985+
"SseAwsKeyManagementParams": {
1986+
"target": "com.amazonaws.chimesdkmediapipelines#SseAwsKeyManagementParams",
1987+
"traits": {
1988+
"smithy.api#documentation": "<p>An object that contains server side encryption parameters to be used by media capture\n pipeline. The parameters can also be used by media concatenation pipeline taking media\n capture pipeline as a media source.</p>"
1989+
}
1990+
},
1991+
"SinkIamRoleArn": {
1992+
"target": "com.amazonaws.chimesdkmediapipelines#Arn",
1993+
"traits": {
1994+
"smithy.api#documentation": "<p>The Amazon Resource Name (ARN) of the sink role to be used with <code>AwsKmsKeyId</code>\n in <code>SseAwsKeyManagementParams</code>. Can only interact with <code>S3Bucket</code>\n sink type. The role must belong to the caller’s account and be able to act on behalf of the\n caller during the API call. All minimum policy permissions requirements for the caller to\n perform sink-related actions are the same for <code>SinkIamRoleArn</code>.</p>\n <p>Additionally, the role must have permission to <code>kms:GenerateDataKey</code> using\n KMS key supplied as <code>AwsKmsKeyId</code> in <code>SseAwsKeyManagementParams</code>. If\n media concatenation will be required later, the role must also have permission to\n <code>kms:Decrypt</code> for the same KMS key.</p>"
1995+
}
1996+
},
19851997
"Tags": {
19861998
"target": "com.amazonaws.chimesdkmediapipelines#TagList",
19871999
"traits": {
@@ -4585,6 +4597,18 @@
45854597
"traits": {
45864598
"smithy.api#documentation": "<p>The configuration for a specified media pipeline. <code>SourceType</code> must\n be <code>ChimeSdkMeeting</code>.</p>"
45874599
}
4600+
},
4601+
"SseAwsKeyManagementParams": {
4602+
"target": "com.amazonaws.chimesdkmediapipelines#SseAwsKeyManagementParams",
4603+
"traits": {
4604+
"smithy.api#documentation": "<p>An object that contains server side encryption parameters to be used by media capture\n pipeline. The parameters can also be used by media concatenation pipeline taking media\n capture pipeline as a media source.</p>"
4605+
}
4606+
},
4607+
"SinkIamRoleArn": {
4608+
"target": "com.amazonaws.chimesdkmediapipelines#Arn",
4609+
"traits": {
4610+
"smithy.api#documentation": "<p>The Amazon Resource Name (ARN) of the sink role to be used with <code>AwsKmsKeyId</code>\n in <code>SseAwsKeyManagementParams</code>.</p>"
4611+
}
45884612
}
45894613
},
45904614
"traits": {
@@ -6146,6 +6170,27 @@
61466170
"smithy.api#documentation": "<p>The configuration settings for the SQS sink.</p>"
61476171
}
61486172
},
6173+
"com.amazonaws.chimesdkmediapipelines#SseAwsKeyManagementParams": {
6174+
"type": "structure",
6175+
"members": {
6176+
"AwsKmsKeyId": {
6177+
"target": "com.amazonaws.chimesdkmediapipelines#String",
6178+
"traits": {
6179+
"smithy.api#documentation": "<p>The KMS key you want to use to encrypt your media pipeline output.\n Decryption is required for concatenation pipeline. If using a key located in the current\n Amazon Web Services account, you can specify your KMS key in one of four\n ways:</p>\n <ul>\n <li>\n <p>Use the KMS key ID itself. For example,\n <code>1234abcd-12ab-34cd-56ef-1234567890ab</code>.</p>\n </li>\n <li>\n <p>Use an alias for the KMS key ID. For example,\n <code>alias/ExampleAlias</code>.</p>\n </li>\n <li>\n <p>Use the Amazon Resource Name (ARN) for the KMS key ID. For example,\n <code>arn:aws:kms:region:account-ID:key/1234abcd-12ab-34cd-56ef-1234567890ab</code>.</p>\n </li>\n <li>\n <p>Use the ARN for the KMS key alias. For example,\n <code>arn:aws:kms:region:account-ID:alias/ExampleAlias</code>.</p>\n </li>\n </ul>\n <p>If using a key located in a different Amazon Web Services account than the current\n Amazon Web Services account, you can specify your KMS key in one of two\n ways:</p>\n <ul>\n <li>\n <p>Use the ARN for the KMS key ID. For example,\n <code>arn:aws:kms:region:account-ID:key/1234abcd-12ab-34cd-56ef-1234567890ab</code>.</p>\n </li>\n <li>\n <p>Use the ARN for the KMS key alias. For example,\n <code>arn:aws:kms:region:account-ID:alias/ExampleAlias</code>.</p>\n </li>\n </ul>\n <p>If you don't specify an encryption key, your output is encrypted with the default\n Amazon S3 key (SSE-S3).</p>\n <p>Note that the role specified in the <code>SinkIamRoleArn</code> request parameter must\n have permission to use the specified KMS key.</p>",
6180+
"smithy.api#required": {}
6181+
}
6182+
},
6183+
"AwsKmsEncryptionContext": {
6184+
"target": "com.amazonaws.chimesdkmediapipelines#String",
6185+
"traits": {
6186+
"smithy.api#documentation": "<p>Base64-encoded string of a UTF-8 encoded JSON, which contains the encryption context as\n non-secret key-value pair known as encryption context pairs, that provides an added layer\n of security for your data. For more information, see <a href=\"https://docs.aws.amazon.com/kms/latest/developerguide/encrypt_context.html\">KMS encryption\n context</a> and <a href=\"https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html\">Asymmetric keys in KMS</a> in the <i>Key Management Service Developer\n Guide</i>.</p>"
6187+
}
6188+
}
6189+
},
6190+
"traits": {
6191+
"smithy.api#documentation": "<p>Contains server side encryption parameters to be used by media capture pipeline. The\n parameters can also be used by media concatenation pipeline taking media capture pipeline\n as a media source.</p>"
6192+
}
6193+
},
61496194
"com.amazonaws.chimesdkmediapipelines#StartSpeakerSearchTask": {
61506195
"type": "operation",
61516196
"input": {

0 commit comments

Comments
 (0)