Python 亚马逊运动视频GetMedia/PutMedia

Python 亚马逊运动视频GetMedia/PutMedia,python,amazon-web-services,amazon-kinesis,Python,Amazon Web Services,Amazon Kinesis,我使用了Python3.6,我想用API将视频流发布到aws kinesis。 我使用python aws客户端创建流和GetDataEndPoint,但是当我想用我的自定义请求发布数据时(PutMedia实际上不包括在python客户端中),我得到一个错误无法确定要授权的服务/操作名称 我一直在关注aws kinesis视频媒体的api文档 因此,我首先使用GetDataEndPoint获取端点: 我将我的数据发布到以下url: headers = { "x-amzn-stream-a

我使用了Python3.6,我想用API将视频流发布到aws kinesis。 我使用python aws客户端创建流和
GetDataEndPoint
,但是当我想用我的自定义请求发布数据时(
PutMedia
实际上不包括在python客户端中),我得到一个错误
无法确定要授权的服务/操作名称

我一直在关注aws kinesis视频媒体的api文档

因此,我首先使用
GetDataEndPoint
获取端点:

我将我的数据发布到以下url:

headers = {
    "x-amzn-stream-arn": STREAM_ARN,
    "x-amzn-fragment-timecode-type": "ABSOLUTE",
    "x-amzn-producer-start-timestamp": start_tmstp
}
# Sign header...
response = requests.post(end_point, data=data, headers=headers)  # 403 - Unable to determine service/operation name to be authorized
所以我不明白为什么我会犯这个错误。。。我在aws文件上找到了这个。但他们说我们必须指定ApiName参数。我所做的

如果未正确指定端点,则可能发生此错误。获取端点时,请确保在GetDataEndpoint调用中包含以下参数,具体取决于要调用的API:


我还想知道
GetMedia
方法是否像他们说的那样在客户机中实际实现,因为当我调试这个方法时,客户机不调用
GetDataEndPoint
,所以在
https://kinesisvideo.region.amazonaws.com
而不是
https://ID_EXAMPLE.kinesisvideo.region.amazonaws.com
。因此,方法get error
无法确定要授权的服务/操作名称
,如

中所述。您得到的错误是因为您提供的端点可能没有“操作”,在您的情况下,这将是
putMedia

尝试将
/putMedia
附加到端点,不要忘记指定
“内容类型”:“application/json”
标题


顺便说一句,您还必须为您的请求生成。您可以使用lib或按照此操作。

我也被困在同一件事上,您能分享如何使用python将媒体发送到PutMedia的完整代码吗?我制作了一段代码:注意到,安说应该从v4签名中排除有效负载哈希。您能分享完整的代码示例吗?无论如何,非常感谢你!实际上我在这里要的是样品:。你能给我一个答案吗?
headers = {
    "x-amzn-stream-arn": STREAM_ARN,
    "x-amzn-fragment-timecode-type": "ABSOLUTE",
    "x-amzn-producer-start-timestamp": start_tmstp
}
# Sign header...
response = requests.post(end_point, data=data, headers=headers)  # 403 - Unable to determine service/operation name to be authorized