La création d'signé S3 et Cloudfront Url via le SDK AWS

Quelqu'un a utilisé avec succès le SDK AWS pour générer signé Url aux objets dans un compartiment S3 qui fonctionnent également sur CloudFront? Je suis à l'aide de la JavaScript SDK AWS et c'est vraiment simple pour générer signé Url via le S3 liens. Je viens de créer un compartiment privé et d'utiliser le code suivant pour générer l'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)
})

Cela fonctionne très bien mais j'ai aussi envie d'exposer un CloudFront URL pour mes utilisateurs afin qu'ils puissent obtenir l'augmentation des vitesses de téléchargement à l'aide de la CAN. J'ai installé une distribution CloudFront, qui a modifié le seau de la politique pour permettre l'accès. Cependant, après avoir fait cela, n'importe quel fichier peut être consulté via le CloudFront URL et Amazon semble ignorer la signature dans mon lien. Après avoir lu un peu plus sur ce que j'ai vu que les gens de générer un .fichier pem pour obtenir signé Url de travail avec CloudFront mais pourquoi ce n'est pas nécessaire pour le S3? Il semble que le getSignedUrl méthode est tout simplement la signature avec les AWS Clé Secrète et à Clé d'Accès AWS. Quelqu'un a eu une telle configuration de travail avant?

Mise à jour:
Après de nouvelles recherches, il semble que CloudFront poignées URL signatures complètement différent de S3 [lien]. Cependant, je ne suis toujours pas comment créer un signé CloudFront URL à l'aide de Javascript.

  • Je n'obtiens pas de votre mise en œuvre. U peut l'expliquer en détail. J'ai besoin de faire de même pour mon Application android.Donc ce que j'ai pensé est: est-ce que Mon client envoie une requête à mon serveur--> mon serveur demande AWS S3 pour la signature de l'URL-->Mon serveur envoie l'URL de retour au client de remplir le téléchargement de la partie. Est cette approche fine. Mon serveur est écrit en node.js. U peut m'aider plz faire. ?
  • Si c'est écrit dans le nœud, vous devriez être en mesure d'utiliser le aws-cloudfront-sign utilitaire que j'ai écrit. Le fichier README.md il devrait expliquer ce que vous devez faire.
InformationsquelleAutor Jason Sims | 2014-02-03