Erste Schritte mit AWS CloudFront-Streaming mit Python
Habe ich einen S3-bucket, ein video hochgeladen, erstellt eine streaming-Verteilung in CloudFront. Getestet mit einer statischen HTML-player und es funktioniert. Ich habe erstellt ein Schlüsselpaar durch den Konto-Einstellungen. Ich habe die Datei mit dem privaten Schlüssel auf meinem Schreibtisch sitzen, zumindest im moment. Das ist, wo ich bin.
Mein Ziel ist es, bis zu einem Punkt, wo mein Django/Python-Website erstellt sichere URLs und die Leute können keinen Zugriff auf die videos, es sei denn, Sie haben sich von einer meiner Seiten. Das problem ist ich bin allergisch gegen die Art und Weise von Amazon gelegt haben Dinge ausprobiert und ich bin einfach nur mehr und mehr verwirrt.
Ich weiß, dass es nicht die beste Frage auf StackOverflow, aber ich bin mir sicher, ich kann nicht die einzige Narr hier, dass kann nicht Köpfe oder Schwänze aus, wie eine sichere CloudFront/S3-situation. Ich würde wirklich zu schätzen Ihre Hilfe und bin bereit (einmal zwei Tage vergangen) geben Sie eine 500pt Kopfgeld auf die beste Antwort.
Habe ich mehrere Fragen, die, einmal beantwortet, sollte passen in eine Erklärung, wie das zu erreichen was ich nach:
-
In der Dokumentation (es gibt ein Beispiel im nächsten Punkt) es gibt viele XML-herumliegen sagen mir, ich muss
POST
Dinge an verschiedenen Orten. Gibt es eine online-Konsole, dies zu tun? Oder muss ich mich buchstäblich zwingen, dies über cURL (et al)? -
Wie erstelle ich eine Origin Zugang Identität für CloudFront und binden Sie es um meinen Vertrieb? Ich habe gelesen, dieses Dokument aber, gemäß dem ersten Punkt, weiß nicht, was mit ihm zu tun. Wie funktioniert mein Schlüsselpaar passen in diese?
-
Sobald das erledigt ist, wie kann ich die Grenze der S3-bucket, um nur den Menschen zu download Dinge durch, die Identität? Wenn dies ist ein weiteres XML-jobby anstatt Sie rund um die web-UI, bitte sagen Sie mir, wo und wie ich bin, soll dies in mein Konto.
-
In Python, was ist der einfachste Weg zur Erzeugung einer auslaufenden URL für eine Datei. Ich habe
boto
installiert, aber ich sehe nicht, wie man eine Datei von einem streaming-Verteilung. -
Gibt es irgendwelche Anwendungen oder Skripts, die die Schwierigkeit der Festlegung dieses Gewand? Ich benutze Ubuntu (Linux) aber ich habe XP in einer VM, wenn es Windows-only ist. Ich habe schon geschaut bei CloudBerry S3 Explorer Pro, aber es macht ungefähr so viel Sinn wie die online-UI.
InformationsquelleAutor der Frage Oli | 2011-07-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du hast Recht, es braucht eine Menge von API-Arbeit, um diese einzurichten. Ich hoffe, Sie bekommen es in der AWS-Konsole bald!
UPDATE: ich habe vorgelegt, diesen code zu boto - boto v2.1 (veröffentlicht am 2011-10-27) wird dies viel einfacher. Für boto < 2.1, verwenden Sie die Anweisungen hier. Für boto 2.1 oder höher, erhalten die aktualisierten Anleitung auf meinem blog: http://www.secretmike.com/2011/10/aws-cloudfront-secure-streaming.html Einmal boto v2.1 wird verpackt durch mehr Distributionen, ich werde zu aktualisieren, hier die Antwort.
Zu erreichen, was Sie wollen, Sie müssen führen Sie die folgenden Schritte, die ich unten näher:
1 - Bucket Erstellen und hochladen-Objekt
Der einfachste Weg, dies zu tun ist durch die AWS-Konsole, aber der Vollständigkeit halber werde ich zeigen, wie mithilfe boto. Boto-code ist hier dargestellt:
2 - Erstellen Sie eine Cloudfront - "Origin Access Identity"
Für jetzt, dieser Schritt kann nur durchgeführt werden, indem die API. Boto code ist hier:
3 - Ändern der ACLs auf den Objekten
Nun, wir haben unsere speziellen S3-Benutzerkonto (das S3CanonicalUserId wir weiter oben erstellt), die wir brauchen, um ihm Zugang zu unserem s3-Objekte. Wir können dies leicht tun mit der AWS-Konsole, indem Sie ein Objekt öffnen (nicht den Eimer!!!) Berechtigungen Registerkarte, klicken Sie auf "weitere Berechtigungen" - Taste und einfügen der sehr lange S3CanonicalUserId wir haben oben in das "Empfänger" - Feld einer neuen. Stellen Sie sicher, Sie geben Sie die neue Berechtigung "Open/Download" Rechte.
Können Sie auch im code über die folgenden boto Skript:
4 - Erstellen Sie eine cloudfront-Verteilung
Beachten Sie, dass benutzerdefinierte Ursprünge und private-Versionen werden nicht vollständig unterstützt, in boto, bis version 2.0 noch nicht offiziell freigegeben, zum Zeitpunkt des Schreibens. Der code unten zieht einige code aus der boto-2.0-Zweig und hacks, es zusammen zu bekommen, es geht, aber es ist nicht schön. Den 2.0-Zweig behandelt, so viel mehr aus - auf jeden Fall nutzen, wenn möglich!
5 - Test, die Sie herunterladen können Objekte aus cloudfront-aber nicht vom s3
Sollten Sie nun in der Lage sein zu überprüfen:
Die tests angepasst werden müssen, um mit Ihrer stream-player, aber die grundlegende Idee ist, dass nur die basic-cloudfront-url sollte funktionieren.
6 - Erstellen Sie ein Schlüsselpaar für die CloudFront
Ich denke, der einzige Weg, dies zu tun ist durch die Amazon-Website. Gehen Sie in Ihrer AWS - "Konto" - Seite und klicken Sie auf "Security Credentials" - link. Klicken Sie auf "Key Pairs" - Registerkarte, dann klicken Sie auf "Erstellen Sie ein Neues Schlüsselpaar". Dies generiert ein neues Schlüsselpaar für Sie und automatisch laden Sie eine private key-Datei (pk-xxxxxxxxx.pem). Halten Sie die Schlüssel-Datei sicher und privat. Beachten Sie auch die "Key Pair ID" von amazon als wir benötigen es im nächsten Schritt.
7 - Erzeugen von URLs in Python
Als der boto version 2.0 scheint es nicht zu sein, jede Unterstützung für das generieren von signierten CloudFront-URLs. Python nicht enthalten ist die RSA-Verschlüsselung Routinen in der standard-Bibliothek, also müssen wir die Verwendung einer zusätzlichen Bibliothek. Ich habe M2Crypto in diesem Beispiel.
Für eine nicht-streaming-distribution, müssen Sie die vollständige cloudfront-URL als Ressource, jedoch für das streaming verwenden wir nur die Objekt Namen der video-Datei. Finden Sie den code unten ein vollständiges Beispiel für das erzeugen einer URL, die dauert nur 5 Minuten.
Dieser code basiert lose auf dem PHP-Beispiel-code von Amazon in der CloudFront-Dokumentation.
8 - Probieren Sie die URLs
Hoffentlich Sie sollten nun über eine funktionierende URL die wie folgt aussieht:
Setzen Sie diese in Ihre js und sollten Sie etwas, das sieht aus wie diese (aus dem PHP-Beispiel im Amazon CloudFront-Dokumentation):
Zusammenfassung
Wie Sie sehen können, nicht sehr einfach! boto v2 wird eine Menge helfen, einrichten der distribution. Ich werde es herausfinden, wenn es möglich ist, zu einigen URL-Generierung code in es als auch zu verbessern-diese tolle Bibliothek!
InformationsquelleAutor der Antwort secretmike
Können Sie generieren einen ablaufenden unterzeichnet-URL für die Ressource. Boto3 Dokumentation hat eine schönes Beispiel-Lösung:
InformationsquelleAutor der Antwort kmonsoor