Dieser Artikel ist eine Fortsetzung von Videostream auf AWS S3 + CloudFront.
Stellen Sie eine Verbindung mit einer zeitlich begrenzten URL her. (Einmalige URL) Ich möchte die Anzeige auf einen Videostream beschränken und ihn verteilen. (Ich habe es diesmal mit einem Bild versucht) Letztendlich möchte ich das Video mithilfe der Authentifizierung von Plone verteilen. (Herausforderung nach dem nächsten Mal)
Erstellen Sie einen neuen Eimer und platzieren Sie ein Testbild. Versuchen Sie, dieses Bild privat zu verbreiten.
S3
--Erstelle einen neuen Bucket (c2-video-test-private)
CloundFront
Lesen Sie das folgende Boto-Element und versuchen Sie, es in der lokalen Python-Umgebung zu erstellen.
https://dn045wcqv2fv4.cloudfront.net/terada_pythonbr.jpg Es überrascht nicht, dass der Fehler zurück ist.
error.xml
<Error>
<Code>MissingKey</Code>
<Message>Missing Key-Pair-Id query parameter</Message>
</Error>
(Details der Boto-Beziehungen sind unten beschrieben)
sample.py
ACCESS_KEY_ID = "xxxxxxxxxxxxxxxxx"
SECRET_ACCESS_KEY = "xxxxxxxxxxxxxxxxxxxxxxxxxx"
YOUR_KEYPAIR_ID = "xxxxxxxxxxxxxx"
YOUR_PRIVATE_KEY_FILE_LOCATION = "xxxxxxxxxxxxxxxxxxxxx.pem"
url = "https://dn045wcqv2fv4.cloudfront.net/terada_pythonbr.jpg "
expire_time = int(time.time() +3600)
conn = CloudFrontConnection(ACCESS_KEY_ID, SECRET_ACCESS_KEY)
distribution = Distribution(connection=conn, config=None, domain_name='', id='', last_modified_time=None, status='')
signed_url = distribution.create_signed_url(url=url, keypair_id=YOUR_KEYPAIR_ID, expire_time=expire_time, private_key_file=YOUR_PRIVATE_KEY_FILE_LOCATION)
>>> print signed_url
https://dn045wcqv2fv4.cloudfront.net/terada_pythonbr.jpg?Expires=1406023941&Signature=Ihps3u0~jQ-Twkghg2tqQ-dTMEZoRC-Jb13F4FgNe~1MVAsXQ-yAbXtEKSTsIhN6OLZmuUii6E1xs7nWfe-76SGk26Jmx5edd35EgwQ8mH~2XlY4QOqP1Fgza93q02oQNhJWte1mef4tc8p3fJO6yzebpTEh4MqvQOt9s5bcKq9ad8EGSmfXfUlgL6b87z6TOAXVFQuIotttu6ajlfbCpplIUD-~r-6W~SB6n2dyB8SaoKgJBTkEKJwFiBWx2S5M20-06hsLOeV23UBJcuq6~C-pE1r1ViE8Ia-tM8L6v7zcbtLfOdw9lgFzYoMoh-KiWOAdz7pc-koYMVPXZ-9DuQ__&Key-Pair-Id=APKAJAJZQHPKZI6OK5UQ
https://dn045wcqv2fv4.cloudfront.net/terada_pythonbr.jpg?Expires=1406023941&Signature=Ihps3u0~jQ-Twkghg2tqQ-dTMEZoRC-Jb13F4FgNe~1MVAsXQ-yAbXtEKSTsIhN6OLZmuUii6E1xs7nWfe-76SGk26Jmx5edd35EgwQ8mH~2XlY4QOqP1Fgza93q02oQNhJWte1mef4tc8p3fJO6yzebpTEh4MqvQOt9s5bcKq9ad8EGSmfXfUlgL6b87z6TOAXVFQuIotttu6ajlfbCpplIUD-~r-6W~SB6n2dyB8SaoKgJBTkEKJwFiBWx2S5M20-06hsLOeV23UBJcuq6~C-pE1r1ViE8Ia-tM8L6v7zcbtLfOdw9lgFzYoMoh-KiWOAdz7pc-koYMVPXZ-9DuQ__&Key-Pair-Id=APKAJAJZQHPKZI6OK5UQ
Ich konnte auf den 22.07.2014 18:14 zugreifen. 22.07.2014 Es sollte nicht um 19:15 Uhr zugänglich sein
boto
boto ist ein Python-Modul, das AWS-APIs manipuliert. Früher war es bei Amazon inoffiziell, aber jetzt, da die Entwickler zu Amazon gehören sollten, sollte es halboffiziell sein.
$ pip install rsa
$ pip install boto
Die Erklärung war unten. http://boto.readthedocs.org/en/latest/ref/cloudfront.html
create_signed_url(url, keypair_id, expire_time=None, valid_after_time=None, ip_address=None, policy_url=None, private_key_file=None, private_key_string=None)
Unten war ein Beispiel
http://stackoverflow.com/questions/2573919/creating-signed-urls-for-amazon-cloudfront
import boto
from boto.cloudfront import CloudFrontConnection
from boto.cloudfront.distribution import Distribution
expire_time = int(time.time() +3000)
conn = CloudFrontConnection('ACCESS_KEY_ID', 'SECRET_ACCESS_KEY')
##enter the id or domain name to select a distribution
distribution = Distribution(connection=conn, config=None, domain_name='', id='', last_modified_time=None, status='')
signed_url = distribution.create_signed_url(url='YOUR_URL', keypair_id='YOUR_KEYPAIR_ID_example-APKAIAZVIO4BQ',expire_time=expire_time,private_key_file="YOUR_PRIVATE_KEY_FILE_LOCATION")
[AWS Meister Series] Verteilung von Inhalten durch Amazon CloudFront / Amazon Elastic Transcoder http://www.slideshare.net/AmazonWebServicesJapan/20131120-aws-medisterregeneratecloudfrontetspublic Es gibt eine Erklärung zu P29
Zugriff auf private Inhalte mit Amazon CloudFront Teil 1 http://dev.classmethod.jp/etc/amazon-cloudfront-private-contents-access-1/ Auf der AWS-Verwaltungskonsole befindet sich ein Handbuch in englischer Sprache. Derzeit können anscheinend alle Vorgänge über die Webverwaltungskonsole ausgeführt werden.
Code and Examples for Creating a Signature for a Signed URL http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateCFSignatureCodeAndExamples.html Es gibt keine Informationen zu Python, aber es scheint hilfreich zu sein
Stellen Sie sicher, dass das Obige dem Videostream entspricht, der auf TODO eingestellt wurde
--C2-video-test-private Videoordner zum Bucket hinzufügen
Bis zu diesem Punkt sollte es einfach sein, die Vergangenheit zu überprüfen.
Arbeiten Sie mit boto wie oben
>>> url = "rtmp://s3lse3ja7xuop9.cloudfront.net/cfx/st/&mp4:video/PyConAPACTW2014terada.mp4"
>>> policy_url = "video/*"
>>> signed_url = distribution.create_signed_url(url=url, keypair_id=YOUR_KEYPAIR_ID, expire_time=expire_time, private_key_file=YOUR_PRIVATE_KEY_FILE_LOCATION, policy_url=policy_url)
>>> print signed_url
rtmp://s3lse3ja7xuop9.cloudfront.net/cfx/st/&mp4:video/PyConAPACTW2014terada.mp4?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoidmlkZW8vKiIsIkNvbmRpdGlvbiI6eyJEYXRlTGVzc1RoYW4iOnsiQVdTOkVwb2NoVGltZSI6MTQwNjg5OTIwMX19fV19&Signature=m10lfH4vpepAWVNLCGO9xr~TFs-ZCUklra-I4D6WZvqO3aHhijIbtPQOiK00BPZzTxnu-enkvTuao1aDoP~HSONzF5xIqGqMuP4RYJ-B0~g5iQxvac1VVkb~3lZXMRN3Oz45BsrRWQawyXp1o~0M9sFr~zIVQAbM8aAji1WmTu0~fY0UcfgO74DNevYw4-I4S8S2KLnSimFGeU0bz3b8bXtgxketPz0JhTyM4akK8gD7xWjskrxFOZ4pskCaLvJr3Pyb9pJsqQ9T2izNsPs0Ms5pi94FnOdyejSRWezqrxp00KNttnlc3DGCOcmcCNDNYdIMxmNC6MuAfQKx~a1tig__&Key-Pair-Id=APKAJAJZQHPKZI6OK5UQ
Machen Sie den src-Teil zu einer signierten URL.
<source src="rtmp://s3lse3ja7xuop9.cloudfront.net/cfx/st/&mp4:video/PyConAPACTW2014terada.mp4?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoidmlkZW8vKiIsIkNvbmRpdGlvbiI6eyJEYXRlTGVzc1RoYW4iOnsiQVdTOkVwb2NoVGltZSI6MTQwNjg5OTIwMX19fV19&Signature=m10lfH4vpepAWVNLCGO9xr~TFs-ZCUklra-I4D6WZvqO3aHhijIbtPQOiK00BPZzTxnu-enkvTuao1aDoP~HSONzF5xIqGqMuP4RYJ-B0~g5iQxvac1VVkb~3lZXMRN3Oz45BsrRWQawyXp1o~0M9sFr~zIVQAbM8aAji1WmTu0~fY0UcfgO74DNevYw4-I4S8S2KLnSimFGeU0bz3b8bXtgxketPz0JhTyM4akK8gD7xWjskrxFOZ4pskCaLvJr3Pyb9pJsqQ9T2izNsPs0Ms5pi94FnOdyejSRWezqrxp00KNttnlc3DGCOcmcCNDNYdIMxmNC6MuAfQKx~a1tig__&Key-Pair-Id=APKAJAJZQHPKZI6OK5UQ"
type='rtmp/mp4' />
Ich denke, dass die Anzeigefrist bereits abgelaufen ist, aber ich habe bestätigt, dass Sie sie unten sehen können http://c2-video-test.s3-website-ap-northeast-1.amazonaws.com/index2.html
Verteilung privater Inhalte mit AWS CloudFront
Recommended Posts