Usando Zencoder con S3

Zencoder puede cargar y descargar archivos desde su depósito de Amazon S3. Para que Zencoder descargue archivos, es necesario que todos puedan acceder a ellos, o se debe agregar una política de depósito a su depósito que otorgue acceso a Zencoder, o debe guardar las credenciales en su cuenta para acceder al depósito.

Introducción

Zencoder puede cargar y descargar archivos desde su depósito de Amazon S3. Para que Zencoder descargue archivos, es necesario que todos puedan acceder a ellos, o se debe agregar una política de depósito a su depósito que otorgue acceso a Zencoder, o debe guardar las credenciales en su cuenta para acceder al depósito.

Usa credenciales

Puedes guardar cartas credenciales a su cuenta, lo que nos permitirá usar su cuenta para cargar archivos en lugar de los nuestros. Esto significa que su cuenta es la propietaria del archivo, con todos los derechos y privilegios sobre él. Puede configurar las credenciales para que sean las predeterminadas para todas las cargas y descargas o hacer referencia a ellas con cada solicitud, pero tenga en cuenta que si las configura como predeterminadas para S3, se utilizarán para TODAS las cargas y descargas de S3. Por lo general, esto no es un problema, pero si luego desea cargarlo en el depósito de un tercero, esto puede causar problemas.

Utilice una política de depósito

Otra opción es utilizar una política de depósito, que le permite establecer permisos en todos los archivos de su depósito. Para comenzar, visite Consola de AWS. Seleccione su depósito en el lado izquierdo de la pantalla, luego haga clic en "propiedades". En la última fila, haga clic en "Agregar política de depósito". A continuación, crearemos una Política de depósito, que copiará en el cuadro de texto Política de depósito.

Nuestra política de cubos recomendada:

 {
"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"
  }
]
}

Solo hay un cambio que tendrás que hacer a esta política de depósito antes de que esté listo para funcionar.

  1. Reemplace MY-BUCKET con el nombre de su balde. Deje / * al final de la línea, ya que se aplicará la política a cada archivo dentro del depósito.
  2. Opcionalmente, reemplace la matriz de acciones con las acciones que desea permitir. Las acciones válidas que Zencoder puede necesitar son:

    Permisos de objeto: primera matriz de acciones en el ejemplo anterior

    • s3:PutObject- permitir que Zencoder cargue archivos en el depósito
    • s3:GetObject- permitir que Zencoder descargue archivos del depósito
    • s3:GetObjectAcl- permitir que Zencoder obtenga permisos ACL para archivos
    • s3:PutObjectAcl- permitir que Zencoder establezca permisos de ACL para otros usuarios en archivos
    • s3:ListMultipartUploadParts- permitir que Zencoder enumere qué partes de un archivo de varias partes se han subido al depósito

    Permisos de depósito: segunda matriz de acción en el ejemplo anterior

    • s3:GetBucketLocation- permitir que Zencoder obtenga la ubicación del cubo (EE. UU., UE, Asia, etc.)
    • s3:ListBucketMultipartUploads- Permita que Zencoder vea cualquier carga de varias partes que esté ocurriendo actualmente en el depósito.

      ex: Si desea que Zencoder pueda descargar y cargar archivos, reemplace la primera matriz de acción con:

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

Tenga en cuenta que hay dos declaraciones en la política. La primera declaración afecta a las claves dentro del depósito, mientras que la segunda parte afecta al depósito en sí.

El resto de la política se puede dejar solo y funcionará bien. La documentación de Amazon contiene más información sobre el elementos de una política de depósito.

Zencoder también puede establecer permisos ACL en los videos y miniaturas que creamos para usted. Esto está documentado en nuestro Documentos de la API de S3.

Nota: Cuando utilice una política de depósito, siempre debe utilizar las URL en el formato s3: // BUCKET / KEY para que Zencoder esté seguro de identificarlas como URL de S3 y firmar la solicitud de forma adecuada.

Si desea crear su propia política de depósito, puede utilizar Generador de políticas de Amazon. Usar arn: aws: iam :: 395540211253: root como principal de AWS para permitir el acceso a Zencoder.

Archivos específicos

¿Puedo simplemente otorgar permiso a archivos específicos?

Definitivamente puedes. Si bien el enfoque de la política de depósito es generalmente más fácil y rápido, no funciona bien para todos. Si es usted, puede otorgar permisos a nuestra cuenta de Amazon AWS, aws@zencoder.com.

Si necesita utilizar nuestro ID canónico en su lugar, puede utilizar 6c8583d84664a381db0c6af0e79b285ede571885fbe768e7ea50e5d3760597dd.

Solución de problemas

¡Todavía me niegan el permiso!

S3 responde con "Acceso denegado" si se niega el acceso o si no se encuentra el archivo. Si cree que ha configurado correctamente sus credenciales de S3 o su política de depósito, pero sigue recibiendo errores de "Acceso denegado", vuelva a comprobar la URL que está enviando. Si la entrada parece "s3://my-bucket/this+file+is+great.mp4", hay una buena posibilidad de que lo que realmente quieres es "s3://my-bucket/this file is great.mp4"

¡Recibo un error al utilizar la región de la UE de Frankfurt!

Para utilizar la región de la UE de Frankfurt con Zencoder, debe generar URL de S3 que contengan el nombre de la región. Para hacer esto, simplemente cree URL como esta "s3+eu-central-1://my-bucket/file.mp4".