建立WebRTC的第一步是获取信令服务节点和ICE服务节点。
前提条件是有访问AWS的密钥,主要是ak,sk,token,我这边是业务云有接口可以返回这些信息,所以我直接从业务云获取。
先介绍一下什么是ak,sk,token:
ak,AWS_ACCESS_KEY_ID,AWS访问密钥;
sk,AWS_SECRET_ACCESS_KEY,AWS安全访问密钥;
token,AWS_SESSION_TOKEN,会话令牌,即临时凭证,最长有效期是12小时(43200秒)
它们三个是什么关系?
比如一个人进入一栋大楼,首先需要有进入大楼的许可就是ak;进入大楼后需要进行安检就是sk;进入大楼后不能一直在大楼里呆着需要有一个停留时间,就是session token。
ak,sk,token的内容格式如下:
"ak": str1,
"sk": str2,
"token": long_str3,
除了密钥信息外,还需要region和arn,这两个也是业务云返回,内容格式如下:
region = "cn-*****-*"
arn = arn:aws:kinesisvideo:[region]:[account-number]:channel/[channel-name]/[number]
有了这些信息后就可以通过boto3获取信令服务节点和ICE服务节点了:
import boto3
ak = str1
sk = str2
token = long_str3
region = "cn-*****-*"
arn = arn:aws:kinesisvideo:[region]:[account-number]:channel/[channel-name]/[number]
session = boto3.Session(
aws_access_key_id=ak,
aws_secret_access_key=sk,
region_name=region,
aws_session_token=token
)
client = session.client('kinesisvideo')
response = client.get_signaling_channel_endpoint(
ChannelARN=arn,
SingleMasterChannelEndpointConfiguration={
'Protocols': ['WSS', 'HTTPS'],
'Role': 'VIEWER'
}
)
endpoint_https = response["ResourceEndpointList"][0]["ResourceEndpoint"]
endpoint_wss = response["ResourceEndpointList"][1]["ResourceEndpoint"]
print(response)
print(endpoint_https)
print(endpoint_wss)
以上相关信息替换成从aws获取到的信息。
获取到的节点信息为:
https://*-*****.kinesisvideo.cn-*****-*.amazonaws.com.cn
wss://*-*****.kinesisvideo.cn-*****-*.amazonaws.com.cn
这两个节点各有自己的用处,后面慢慢讲解。