Dans un projet Node.js, j'essaie de récupérer des données de S3.
Quand j'utilise getSignedURL
, tout fonctionne:
aws.getSignedUrl('getObject', params, function(err, url){
console.log(url);
});
Mes paramètres sont:
var params = {
Bucket: "test-aws-imagery",
Key: "TILES/Level4/A3_B3_C2/A5_B67_C59_Tiles.par"
Si je prends la sortie URL dans la console et la colle dans un navigateur Web, il télécharge le fichier dont j'ai besoin.
Cependant, si j'essaye d'utiliser, getObject
j'obtiens toutes sortes de comportements étranges. Je pense que je ne l'utilise pas correctement. Voici ce que j'ai essayé:
aws.getObject(params, function(err, data){
console.log(data);
console.log(err);
});
Les sorties:
{
AcceptRanges: 'bytes',
LastModified: 'Wed, 06 Apr 2016 20:04:02 GMT',
ContentLength: '1602862',
ETag: '9826l1e5725fbd52l88ge3f5v0c123a4"',
ContentType: 'application/octet-stream',
Metadata: {},
Body: <Buffer 01 00 00 00 ... > }
null
Il semble donc que cela fonctionne correctement. Cependant, lorsque je mets un point d'arrêt sur l'un des console.log
s, mon IDE (NetBeans) renvoie une erreur et refuse d'afficher la valeur des données. Bien que cela puisse être juste l'IDE, j'ai décidé d'essayer d'autres façons d'utiliser getObject
.
aws.getObject(params).on('httpData', function(chunk){
console.log(chunk);
}).on('httpDone', function(data){
console.log(data);
});
Cela ne produit rien. Mettre un point d'arrêt dans montre que le code n'atteint jamais aucun des console.log
s. J'ai aussi essayé:
aws.getObject(params).on('success', function(data){
console.log(data);
});
Cependant, cela ne produit rien non plus et le fait de placer un point d'arrêt montre que le console.log
n'est jamais atteint.
Qu'est-ce que je fais mal?
aws
objet est-il réellement une nouvelle instance de l'aws.S3
objet? De plus, la réponsegetObject()
est-elle renvoyée à une réponse http ou est-elle redirigée vers un fichier?