本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 Kinesis Video Streams 中设置通知
当媒体片段可供使用时,Kinesis Video Streams 会 Amazon Simple Notification Service 使用(亚马逊 SNS)通知通知客户。
注意
亚马逊 Kinesis Video Streams 使用亚马逊 SNS 标准主题进行沟通。目前不支持 FIFO 主题。
以下主题说明了如何开始使用通知。
管理通知配置
要管理通知配置,请使用UpdateNotificationConfiguration和DescribeNotificationConfiguration。有关更多信息,请参阅下文。
UpdateNotificationConfiguration
使用此 API 操作更新直播的通知信息。有关该UpdateNotificationConfiguration功能的更多信息,请参阅UpdateNotificationConfiguration 《亚马逊 Kinesis Video Streams 开发者指南》。
注意
更新通知配置后,至少需要一分钟才能启动通知。请至少等待一分钟,然后在更新调用PutMedia后调用。
DescribeNotificationConfiguration
使用此 API 来描述附加到直播的通知配置。有关该DescribeNotificationConfiguration功能的更多信息,请参阅DescribeNotificationConfiguration《亚马逊 Kinesis Video Streams 开发者指南》。
关于制作人 MKV 标签
你可以使用 Kinesis Video Streams 制作人 SDK 通过在 SDK 中公开 API 操作来标记感兴趣的特定片段。请在此段代码中
随通知 MKV 标签一起提供的任何片段元数据都将作为 Amazon SNS 主题有效负载的一部分发布。
制作人 MKV 标签的语法
|+ Tags | + Tag | // MANDATORY: Predefined MKV tag to trigger the notification for the fragment | + Simple | + Name: AWS_KINESISVIDEO_NOTIFICATION | + String | // OPTIONAL: Key value pairs that will be sent as part of the Notification payload | + Simple | + Name:CUSTOM_KEY_1// Max 128 bytes | + String:CUSTOM_VALUE_1// Max 256 bytes | + Simple | + Name:CUSTOM_KEY_2// Max 128 bytes | + String:CUSTOM_VALUE_2// Max 256 bytes
MKV 标签限制
下表列出了与元数据标签相关的限制。如果元数据标签限制是可调整的,您可以通过您的客户经理申请增加限制。
| 限制 | 最大值 | 可调整 |
|---|---|---|
|
可选的元数据密钥长度 |
128 |
否 |
|
可选的元数据值长度 |
256 |
否 |
|
可选元数据的最大数量 |
10 |
是 |
亚马逊 SNS 消息
本主题包含有关 Amazon SNS 消息和主题有效载荷的更多信息。
亚马逊 SNS 主题有效负载
通过上一个工作流程启动的任何通知都将传送 Amazon SNS 主题有效负载,如以下示例所示。此示例是一条 Amazon SNS 消息,它是在使用来自 Amazon Simple Queue Service (亚马逊 SQS)队列的通知数据之后出现的。
{ "Type" : "Notification", "MessageId" :Message ID, "TopicArn" :SNS ARN, "Subject" : "Kinesis Video Streams Notification", "Message" : "{\"StreamArn\":\Stream Arn,\"FragmentNumber\":\Fragment Number,\"FragmentStartProducerTimestamp\":FragmentStartProducerTimestamp, \"FragmentStartServerTimestamp\":FragmentStartServerTimestamp,\"NotificationType\":\"PERSISTED\",\"NotificationPayload\":{\CUSTOM_KEY_1:\CUSTOM_VALUE_1, \CUSTOM_KEY_2:\CUSTOM_VALUE_2}}", "Timestamp" : "2022-04-25T18:36:29.194Z", "SignatureVersion" :Signature Version, "Signature" :Signature, "SigningCertURL" :Signing Cert URL, "UnsubscribeURL" :Unsubscribe URL}
Subject: "Kinesis Video Streams Notification" Message: { "StreamArn":Stream Arn, "FragmentNumber":Fragment Number, "FragmentStartProducerTimestamp":Fragment Start Producer Timestamp, "FragmentStartServerTimestamp":Fragment Start Server Timestamp, "NotificationType":"PERSISTED", "NotificationPayload":{CUSTOM_KEY_1:CUSTOM_VALUE_1,CUSTOM_KEY_2:CUSTOM_VALUE_2} }
查看您的亚马逊 SNS 消息
您无法直接从 Amazon SNS 主题中读取消息,因为没有 API 可以这样做。要查看消息,请在 SQS 队列中订阅 SNS 主题,或者选择任何其他 Amazon SNS 支持的目的地。但是,查看消息的最有效方法是使用 Amazon SQS。
使用亚马逊 SQS 查看您的亚马逊 SNS 消息
-
从中 AWS Management Console,打开下方设置为目的地的 Amazon SNS 主题。
NotificationConfiguration -
选择创建订阅,然后选择在第一步中创建的 Amazon SQS 队列。
-
在启用通知配置并在片段中添加通知 MKV 标签的情况下运行会
PutMedia话。 -
在亚马逊 SQS 控制台中选择亚马逊 SQS 队列,然后为亚马逊 SQS 队列选择发送和接收消息。
-
轮询留言。此命令应显示
PutMedia会话生成的所有通知。有关轮询的信息,请参阅 Amazon SQS 短期和长期投票。
跨账户 Amazon SNS 通知发布
要向其他 AWS 账户中的主题发布 Amazon SNS 通知,您需要配置基于身份的策略和基于资源的策略。此设置允许 Kinesis Video Streams 将通知从一个账户发布到另一个账户中的亚马逊 SNS 主题。
基于身份的策略配置
调用 PutMedia API 的 IAM 角色或用户必须拥有跨账户 Amazon SNS 主题的sns:Publish权限。将以下策略声明添加到基于身份的策略中:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kinesisvideo:PutMedia", "Resource": "<kvs-streams-arn>" }, { "Effect": "Allow", "Action": [ "sns:Publish" ], "Resource": [ "<sns-topic-arn>" ] } ] }
基于资源的策略配置
目标账户中的 Amazon SNS 主题必须具有允许源账户发布消息的基于资源的访问策略。按如下方式配置 Amazon SNS 主题访问策略:
{ "Version": "2008-10-17", "Id": "__default_policy_ID", "Statement": [ { "Sid": "__default_statement_ID", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<kvs_streams_account_id>:root" }, "Action": "SNS:Publish", "Resource": "<sns_topic_arn>" } ] }
<kvs_streams_account_id>替换为您的 Kinesis Video Streams 直播所在的 AWS 账户 ID,<sns_topic_arn>以及亚马逊 SNS 主题的 ARN。
要求和注意事项
-
必须同时配置基于身份的策略(在源账户中)和基于资源的策略(在目标账户中),才能使跨账户发布生效。
-
用于
PutMedia操作的 IAM 角色必须包含sns:Publish权限,即使使用带有角色别名的 IoT 证书也是如此。