Soy nuevo en Amazon s3 y estoy tratando de usar node.js para cargar JSON en un archivo. Mi objeto es users
y tiene un montón de claves y valores. Así es como lo estoy subiendo:
s3.putObject({Bucket: 'currenteventstest',Key: 'users.json',Body: users, ContentType: "application/json"});
Sin embargo, cuando lo vuelvo a descargar, es solo un objeto vacío.
Agregar una función de devolución de llamada soluciona el problema:
s3.putObject({ Bucket: 'currenteventstest', Key: 'users.json', Body: JSON.stringify(users), ContentType: "application/json"}, function (err,data) { console.log(JSON.stringify(err) + " " + JSON.stringify(data)); } );
No tengo suficiente reputación para comentar, pero si vale la pena con la nueva versión de aws-sdk, puede usar la cadena de promesa al publicar el JSON en lugar de una devolución de llamada:
try{ await s3.putObject({ Bucket: 'currenteventstest', Key: 'users.json', Body: JSON.stringify(users), ContentType: 'application/json; charset=utf-8' }).promise(); } catch(e){ throw e }
Tenía un mapa ES6 en mis datos, que se encadena para que se vacíe de forma predeterminada. Tuve que consultar la respuesta a continuación para abordar el problema agregando manualmente una función de JSON.Stringify
a replacer