|
@@ -4,9 +4,9 @@
|
|
@Time : 2022/10/18 17:13
|
|
@Time : 2022/10/18 17:13
|
|
@File :AmazonKinesisVideoUtil.py
|
|
@File :AmazonKinesisVideoUtil.py
|
|
"""
|
|
"""
|
|
-import datetime
|
|
|
|
-
|
|
|
|
import boto3
|
|
import boto3
|
|
|
|
+import datetime
|
|
|
|
+from Ansjer.config import LOGGER
|
|
|
|
|
|
|
|
|
|
class AmazonKinesisVideoObject:
|
|
class AmazonKinesisVideoObject:
|
|
@@ -76,12 +76,28 @@ class AmazonKinesisVideoObject:
|
|
|
|
|
|
def create_signaling_channel(self, channel_name):
|
|
def create_signaling_channel(self, channel_name):
|
|
"""
|
|
"""
|
|
- 创建通道
|
|
|
|
|
|
+ 创建通道,如果通道已存在则直接返回其ARN
|
|
@param channel_name: 通道名称
|
|
@param channel_name: 通道名称
|
|
|
|
+ @return: channel_arn: 通道ARN
|
|
"""
|
|
"""
|
|
- res = self.client_conn.create_signaling_channel(ChannelName=channel_name)
|
|
|
|
- channel_arn = res['ChannelARN']
|
|
|
|
- return channel_arn
|
|
|
|
|
|
+ try:
|
|
|
|
+ # 先检查信令通道是否已存在
|
|
|
|
+ response = self.client_conn.describe_signaling_channel(ChannelName=channel_name)
|
|
|
|
+ # 如果通道存在,直接返回其ARN
|
|
|
|
+ channel_arn = response['ChannelInfo']['ChannelARN']
|
|
|
|
+ return channel_arn
|
|
|
|
+ except self.client_conn.exceptions.ResourceNotFoundException:
|
|
|
|
+ # 通道不存在,创建新通道
|
|
|
|
+ res = self.client_conn.create_signaling_channel(ChannelName=channel_name)
|
|
|
|
+ channel_arn = res['ChannelARN']
|
|
|
|
+ return channel_arn
|
|
|
|
+ except Exception as e:
|
|
|
|
+ # 处理其他可能的异常
|
|
|
|
+ LOGGER.info('创建通道异常,error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
|
+ # 尝试创建通道
|
|
|
|
+ res = self.client_conn.create_signaling_channel(ChannelName=channel_name)
|
|
|
|
+ channel_arn = res['ChannelARN']
|
|
|
|
+ return channel_arn
|
|
|
|
|
|
def get_signaling_channel_endpoint(self, channel_arn):
|
|
def get_signaling_channel_endpoint(self, channel_arn):
|
|
"""
|
|
"""
|
|
@@ -102,9 +118,23 @@ class AmazonKinesisVideoObject:
|
|
def delete_signaling_channel(self, channel_arn):
|
|
def delete_signaling_channel(self, channel_arn):
|
|
"""
|
|
"""
|
|
删除通道
|
|
删除通道
|
|
- @return channel_arn: 通道ARN
|
|
|
|
|
|
+ @param channel_arn: 通道ARN
|
|
|
|
+ @return: True 删除成功,False 删除失败或通道不存在
|
|
"""
|
|
"""
|
|
- self.client_conn.delete_signaling_channel(ChannelARN=channel_arn)
|
|
|
|
|
|
+ try:
|
|
|
|
+ # 先检查信令通道是否存在
|
|
|
|
+ self.client_conn.describe_signaling_channel(ChannelARN=channel_arn)
|
|
|
|
+ # 通道存在,执行删除操作
|
|
|
|
+ self.client_conn.delete_signaling_channel(ChannelARN=channel_arn)
|
|
|
|
+ return True
|
|
|
|
+ except self.client_conn.exceptions.ResourceNotFoundException:
|
|
|
|
+ # 通道不存在,记录日志并返回
|
|
|
|
+ LOGGER.info('删除通道失败:通道不存在,channel_arn: {}'.format(channel_arn))
|
|
|
|
+ return False
|
|
|
|
+ except Exception as e:
|
|
|
|
+ # 处理其他可能的异常
|
|
|
|
+ LOGGER.info('删除通道异常,error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|
|
|
|
+ return False
|
|
|
|
|
|
|
|
|
|
class AmazonKVAMObject:
|
|
class AmazonKVAMObject:
|