Verwenden von Zencoder mit S3

Zencoder kann Dateien aus Ihrem Amazon S3-Bucket hochladen und herunterladen. Damit Zencoder Dateien herunterladen kann, müssen sie entweder für alle zugänglich sein, oder es muss eine Bucket-Richtlinie zu Ihrem Bucket hinzugefügt werden, die Zencoder-Zugriff gewährt, oder Sie müssen Anmeldeinformationen für den Zugriff auf den Bucket in Ihrem Konto speichern.

Einleitung

Zencoder kann Dateien aus Ihrem Amazon S3-Bucket hochladen und herunterladen. Damit Zencoder Dateien herunterladen kann, müssen sie entweder für alle zugänglich sein, oder es muss eine Bucket-Richtlinie zu Ihrem Bucket hinzugefügt werden, die Zencoder-Zugriff gewährt, oder Sie müssen Anmeldeinformationen für den Zugriff auf den Bucket in Ihrem Konto speichern.

Verwenden Sie Anmeldeinformationen

Du kannst speichern Referenzen auf Ihr Konto, wodurch wir Ihr Konto zum Hochladen von Dateien anstelle unserer verwenden können. Dies bedeutet, dass Ihr Konto der Eigentümer der Datei ist und über alle Rechte und Privilegien verfügt. Sie können die Anmeldeinformationen als Standard für alle Uploads und Downloads festlegen oder sie bei jeder Anforderung referenzieren, aber denken Sie daran, dass sie für ALLE S3-Uploads und Downloads verwendet werden, wenn Sie sie als Standard für S3 festlegen. Im Allgemeinen ist dies kein Problem, aber wenn Sie später in den Bucket eines Drittanbieters hochladen möchten, kann dies zu Problemen führen.

Verwenden Sie eine Bucket-Richtlinie

Eine weitere Option ist die Verwendung einer Bucket-Richtlinie, mit der Sie Berechtigungen für alle Dateien in Ihrem Bucket festlegen können. Um loszulegen, besuchen Sie AWS-Konsole. Wählen Sie Ihren Bucket auf der linken Seite des Bildschirms aus und klicken Sie auf "Eigenschaften". Klicken Sie in der letzten Zeile auf "Bucket-Richtlinie hinzufügen". Im Folgenden stellen wir eine Bucket-Richtlinie zusammen, die Sie in das Textfeld Bucket-Richtlinie kopieren.

Unsere empfohlene Bucket-Richtlinie:

 {
"Version": "2012-10-17",
"Id": "ZencoderBucketPolicy",
"Statement": [
  {
      "Sid": "Stmt1295042087538",
      "Effect": "Allow",
      "Principal": {
          "AWS": "arn:aws:iam::395540211253:root"
      },
      "Action": [
      "s3:GetObjectAcl",
      "s3:GetObject",
      "s3:PutObjectAcl",
      "s3:PutObject",
      "s3:ListMultipartUploadParts"
      ],
      "Resource": "arn:aws:s3:::MY-BUCKET/*"
  },
  {
      "Sid": "Stmt1295042087538",
      "Effect": "Allow",
      "Principal": {
          "AWS": "arn:aws:iam::395540211253:root"
      },
      "Action": [
      "s3:ListBucketMultipartUploads",
      "s3:GetBucketLocation"
      ],
      "Resource": "arn:aws:s3:::MY-BUCKET"
  }
]
}

Da ist nur Eine Änderung müssen Sie vornehmen zu dieser Bucket-Richtlinie, bevor es los geht.

  1. Ersetzen Sie MY-EIMER durch den Namen Ihres Eimers. Lassen Sie das / * am Ende der Zeile, da dadurch die Richtlinie auf jede Datei im Bucket angewendet wird.
  2. Ersetzen Sie optional das Action-Array durch die Aktionen, die Sie zulassen möchten. Gültige Aktionen, die Zencoder möglicherweise benötigt, sind:

    Objektberechtigungen - erstes Aktions-Array im obigen Beispiel

    • s3:PutObject- Zencoder erlauben, Dateien in den Bucket hochzuladen
    • s3:GetObject- Zencoder erlauben, Dateien aus dem Bucket herunterzuladen
    • s3:GetObjectAcl- Zencoder erlauben, ACL-Berechtigungen für Dateien zu erhalten
    • s3:PutObjectAcl- Zencoder erlauben, ACL-Berechtigungen für andere Benutzer für Dateien festzulegen
    • s3:ListMultipartUploadParts- Zencoder erlauben, aufzulisten, welche Teile einer mehrteiligen Datei in den Bucket hochgeladen wurden

    Bucket-Berechtigungen - zweites Aktions-Array im obigen Beispiel

    • s3:GetBucketLocation- Zencoder erlauben, den Standort des Eimers zu ermitteln (USA, EU, Asien usw.)
    • s3:ListBucketMultipartUploads- Zencoder erlauben, alle mehrteiligen Uploads anzuzeigen, die derzeit im Bucket stattfinden

      ex: Wenn Zencoder Dateien herunterladen und hochladen kann, ersetzen Sie das erste Aktionsarray durch:

      ["s3:PutObject", "s3:GetObject"]

Beachten Sie, dass die Richtlinie zwei Anweisungen enthält. Die erste Anweisung betrifft Schlüssel innerhalb des Buckets, während der zweite Teil den Bucket selbst betrifft.

Der Rest der Richtlinie kann in Ruhe gelassen werden und es wird gut funktionieren. Die Dokumentation von Amazon enthält weitere Informationen zu den Elemente einer Bucket-Richtlinie.

Zencoder kann auch ACL-Berechtigungen für die Videos und Miniaturansichten festlegen, die wir für Sie erstellen. Dies ist in unserem Dokument dokumentiert S3 API-Dokumente.

Hinweis: Wenn Sie eine Bucket-Richtlinie verwenden, sollten Sie immer URLs im s3: //BUCKET/KEY-Format verwenden, damit Zencoder sie sicher als S3-URLs identifiziert und die Anforderung entsprechend signiert.

Wenn Sie Ihre eigene Bucket-Richtlinie erstellen möchten, können Sie diese verwenden Amazon Policy Generator. Benutzen arn: aws: iam :: 395540211253: root als AWS-Principal, um den Zencoder-Zugriff zu ermöglichen.

Bestimmte Dateien

Kann ich bestimmten Dateien nur die Berechtigung erteilen?

Das kannst du definitiv. Während der Bucket Policy-Ansatz im Allgemeinen einfacher und schneller ist, funktioniert er nicht für alle. Wenn Sie es sind, können Sie unserem Amazon AWS-Konto Berechtigungen erteilen. aws@zencoder.com.

Wenn Sie stattdessen unsere kanonische ID verwenden müssen, können Sie diese verwenden 6c8583d84664a381db0c6af0e79b285ede571885fbe768e7ea50e5d3760597dd.

Fehlerbehebung

Ich bekomme immer noch die Erlaubnis verweigert!

S3 antwortet mit "Zugriff verweigert", wenn der Zugriff verweigert wird oder wenn die Datei nicht gefunden wird. Wenn Sie der Meinung sind, dass Sie Ihre S3-Anmeldeinformationen oder Ihre Bucket-Richtlinie korrekt eingerichtet haben, aber weiterhin die Fehlermeldung "Zugriff verweigert" erhalten, überprüfen Sie die von Ihnen übermittelte URL. Wenn die Eingabe so aussieht "s3://my-bucket/this+file+is+great.mp4" Es besteht eine gute Chance, dass Sie tatsächlich wollen "s3://my-bucket/this file is great.mp4"

Bei der Nutzung der EU-Region Frankfurt wird eine Fehlermeldung angezeigt!

Um die Region EU Frankfurt mit Zencoder nutzen zu können, müssen Sie S3-URLs generieren, die den Regionsnamen enthalten. Erstellen Sie dazu einfach URLs wie diese "s3+eu-central-1://my-bucket/file.mp4".