Creación de URL firmadas de S3 y Cloudfront a través del SDK de AWS

¿Alguien ha utilizado con éxito el SDK de AWS para generar URL firmadas a objetos en un grupo de S3 que también funciona en CloudFront? Estoy usando elJavaScript AWS SDK y es realmente sencillo generar URL firmadas a través de los enlaces S3. Acabo de crear un grupo privado y uso el siguiente código para generar la URL:

var AWS = require('aws-sdk')
  , s3 = new AWS.S3()
  , params = {Bucket: 'my-bucket', Key: 'path/to/key', Expiration: 20}

s3.getSignedUrl('getObject', params, function (err, url) {
  console.log('Signed URL: ' + url)
})

Esto funciona muy bien, pero también quiero exponer una URL de CloudFront a mis usuarios para que puedan obtener la mayor velocidad de descarga al usar la CDN. Configuré una distribución de CloudFront que modificó la política de depósito para permitir el acceso. Sin embargo, después de hacer esto, se pudo acceder a cualquier archivo a través de la URL de CloudFront y Amazon pareció ignorar la firma en mi enlace. Después de leer un poco más sobre esto, he visto que las personas generan un archivo .pem para obtener las URL firmadas que funcionan con CloudFront, pero ¿por qué esto no es necesario para S3? Parece que el método getSignedUrl simplemente firma con la clave secreta de AWS y la clave de acceso de AWS. ¿Alguien ha conseguido una configuración como esta trabajando antes?

Actualizar: Después de una investigación adicional, parece que CloudFront maneja las firmas de URL completamente diferentes de S3[enlazar]. Sin embargo, todavía no estoy seguro de cómo crear una URL firmada de CloudFront con Javascript.

Respuestas a la pregunta(2)

Su respuesta a la pregunta