Python Boto、amazon S3和Cloudfront发行版

Python Boto、amazon S3和Cloudfront发行版,python,video-streaming,boto,amazon-cloudfront,Python,Video Streaming,Boto,Amazon Cloudfront,我正在开发一个用户可以上传视频的应用程序。后端将它们发送到S3,为了播放,我将从S3生成一个自动过期的url,我必须将该url传递到Cloudfront,以便流式返回给用户 我在Django中使用了boto,我有80%的代码一直在工作,直到我必须在前面链接的部分。私有的s3url已经生成,并且工作正常 s3_conn = S3Connection( aws_access_key_id = settings.CONFIG.AWS_ACCESS_KEY_ID, aws_secret_

我正在开发一个用户可以上传视频的应用程序。后端将它们发送到S3,为了播放,我将从S3生成一个自动过期的url,我必须将该url传递到Cloudfront,以便流式返回给用户

我在
Django
中使用了
boto
,我有80%的代码一直在工作,直到我必须在前面链接的部分。私有的s3url已经生成,并且工作正常

s3_conn = S3Connection(
    aws_access_key_id = settings.CONFIG.AWS_ACCESS_KEY_ID,
    aws_secret_access_key = settings.CONFIG.AWS_SECRET_ACCESS_KEY,
    is_secure = True
)
video_url = s3_conn.generate_url(
    60,
    'GET',
    bucket = settings.CONFIG.AWS_VIDEO_STORAGE_BUCKET_NAME,
    key = self.premium_video_url,
    force_http = True
)

origin = cloudfront.origin.S3Origin( "{}.s3.amazonaws.com".format( settings.CONFIG.AWS_VIDEO_STORAGE_BUCKET_NAME ) )
cloudf = boto.connect_cloudfront( settings.CONFIG.AWS_ACCESS_KEY_ID, settings.CONFIG.AWS_SECRET_ACCESS_KEY )
stream_distributions = cloudf.get_all_streaming_distributions()

if not len(stream_distributions):
    distro = cloudf.create_streaming_distribution( origin = origin, enabled = True, comment = 'Video streaming distribution' )
else:
    distro = stream_distributions[0]

return distro.create_signed_url(
    video_url,
    expire_time = int( time.time() + 3000 ),
    private_key_file = self.premium_video_url
)
有问题的线路:
distro=stream\u distributions[0]
返回一个
StreamingDistributionSummary
而不是实际的分发对象或任何需要的内容:
“StreamingDistributionSummary”对象没有属性“create\u signed\u url”

此外,返回代码可能遗漏了一些内容


我在寻找一个合适的示例时遇到了各种各样的问题,因为
boto
最近似乎发生了很多变化,而且所有现有的示例都不再有效。

StreamingDistributionSummary
对象上应该有一个名为
get\u distribution
的方法,该方法将返回实际的
StreamingDistribution
object。是的,但它需要一个我不知道从何处获取的id。不,这就是我所指的id()。它不需要任何参数。昨天就可以运行了,但您的答案是正确的:
distro=stream\u distributions[0]。get\u distribution()