web-dev-qa-db-fra.com

Comment obtenir l'URL d'un fichier sur AWS S3 à l'aide de aws-sdk?

J'utilise une fonction AWS Lambda pour créer un fichier et l'enregistrer dans mon compartiment sur S3. Cela fonctionne correctement. Après l'exécution de la méthode putObject, j'obtiens un objet data, mais il ne contient qu'une Etag de l'objet ajouté récemment.

s3.putObject(params, function(err, data) {
    //data only contains Etag
});

J'ai besoin de connaître l'URL exacte que je peux utiliser dans un navigateur afin que le client puisse voir le fichier. Le dossier a déjà été rendu public et je peux voir le fichier si je copie le lien depuis la console S3.

J'ai essayé d'utiliser getSignedUrl mais l'URL qu'il renvoie est utilisé à d'autres fins, je crois.

Merci!

5
Pablo Quemé

Lorsque vous avez appelé PutObject, vous avez fourni le compartiment et la clé de l'objet. Vous pouvez simplement les combiner pour créer l'URL de l'objet, par exemple:

Ainsi, par exemple, si votre compartiment est pablo et que la clé d'objet est dogs/toto.png, utilisez:

Pour les compartiments spécifiques à une région, consultez la section Utilisation des compartiments Amazon S3 .

Remarque: Conseils généraux sur les clés d’objet pour lesquels certains caractères nécessitent un traitement spécial. Par exemple, l'espace est codé en + (signe plus) et le signe plus en% 2B. Aussi ici .

11
jarmod

Vous pouvez faire un autre appel avec ceci:

var params = {Bucket: 'bucket', Key: 'key'};
s3.getSignedUrl('putObject', params, function (err, url) {
  console.log('The URL is', url);
});
1
Helio Albano