python-3.x - Boto3运动视频流:调用GetMedia操作时出错

标签 python-3.x amazon-web-services boto3 amazon-kinesis

在boto3文档下:https://boto3.readthedocs.io/en/latest/reference/services/kinesis-video-media.html#KinesisVideoMedia.Client.get_media

它说我需要先运行GetDataEndpoint API才能获取端点,然后再运行GetMedia,但是它没有说明如何向该端点提供数据?

所以我试着跑:

import boto3

kinesis_media = boto3.client('kinesis-video-media' region_name='region')

stream = kinesis_media.get_media(StreamARN='my-arn',
         StartSelector={'StartSelectorType': 'EARLIEST'}) # this is not the endpoint


然后返回:

ClientError: An error occurred (403) when calling the GetMedia operation: <AccessDeniedException>
  <Message>Unable to determine service/operation name to be authorized</Message>
</AccessDeniedException>


我猜是因为未指定端点,但是类型为kinesis-video-media的客户端没有get_data_endpoint方法,该方法需要获取端点url?

最佳答案

首先,使用kinesisvideo客户端获取端点:

import boto3

kinesis_client = boto3.client('kinesisvideo',region_name='us-west-2')

response = kinesis_client.get_data_endpoint(StreamARN='...ARN...',APIName='GET_MEDIA')


response变量包含:

{'ResponseMetadata': {'RetryAttempts': 0, 'HTTPStatusCode': 200, 'RequestId': '...', 'HTTPHeaders': {'x-amzn-requestid': '...', 'date': 'Tue, 10 Apr 2018 08:22:59 GMT', 'content-length': '74', 'content-type': 'application/json'}}, u'DataEndpoint': u'https://s-4010cf70.kinesisvideo.us-west-2.amazonaws.com'}


然后,使用给定的端点调用kinesis-video-media客户端:

video_client = boto3.client('kinesis-video-media',endpoint_url='https://s-4010cf70.kinesisvideo.us-west-2.amazonaws.com',region_name='us-west-2')

stream = video_client.get_media(StreamARN='arn:aws:kinesisvideo:us-west-2:...',StartSelector={'StartSelectorType': 'NOW'})


stream变量包含:

{u'ContentType': 'video/webm', u'Payload': <botocore.response.StreamingBody object at 0x7f1fab294850>, 'ResponseMetadata': {'RetryAttempts': 0, 'HTTPStatusCode': 200, 'RequestId': '...', 'HTTPHeaders': {'x-amzn-requestid': '...', 'transfer-encoding': 'chunked', 'content-type': 'video/webm', 'date': 'Tue, 10 Apr 2018 08:27:19 GMT'}}}

关于python-3.x - Boto3运动视频流:调用GetMedia操作时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49746612/

相关文章:

python - Discord 机器人阅读 react

python-2.7 - 在 AWS Lambda 函数中使用 boto3 通过 AWS SNS 发送短信?

python - pymysql SELECT 查询,其中包含用户作为输入提供的表字段

python - 如何根据数据框python中列中列表的值进行分组

python - Pandas:将数据帧存储在多个 json 文件中

javascript - AWS Lambda 上的 promise 得到解决后,.then 不会运行

amazon-web-services - 如何从 Cloud Formation 获取 Elastic Container Repository URI?

amazon-web-services - 本地存储缺少 ID token ,请在更改密码时验证错误 Cognito AWS

flask - botocore.exceptions.NoCredentialsError : Unable to locate credentials , 即使在手动传递凭据后

python - 如何将标签添加到 boto (Amazon S3) 中的 key ?