建立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 boto3ak = 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
這兩個節點各有自己的用處,后面慢慢講解。