Нужна помощь в записи объекта S3 в мою express папку сервера tmp, если это возможно - PullRequest
0 голосов
/ 19 января 2020

Я пытаюсь сохранить объект S3 в каталог Express серверов / tmp /. Когда я запускаю код, я получаю сообщение об ошибке «ошибка s3.getObject: CredentialsError: отсутствуют учетные данные в конфигурации». Я вставил правильный config.credentials, но я не уверен, что происходит. Есть идеи, что может быть причиной проблемы? Ниже приведен фрагмент кода, когда я пытаюсь сохранить объект S3 в /tmp/.

var params = {
    Bucket: "bucket_name",
    Key: "key_name"
  };

  let s3Object = s3.getObject(params);

  let wstream = fs.createWriteStream("/tmp/" + params.Key);

  s3.getObject(params)
  .on('error', function(err){
    console.log('s3.getObject error:' + err);
  })
  .on('httpData', function(chunk){
    console.log("Chunk Added to file.");
    wstream.write(chunk);
  })
  .on('httpDone', function() {
    console.log("The file has been saved to server local tmp folder.");
    wstream.end();
  }).send();

Весь блок кода.

const express = require('express');
const AWS = require('aws-sdk');
const forge = require('forge-apis');
const fs = require('fs');
const path = require('path');
var config = require('./config');

let PORT = "3000";
let app = express();
let s3 = new AWS.S3();

app.use("/public", express.static("./public/"));

app.get('/', (req, res, next) =>{
  //Launch the local HTML websites
  res.sendFile(path.join(__dirname + "/public/index.html"));
  console.log("Site is Launched");
});

app.get('/download', (req, res) => {

  //Hard Coded Object from S3
  var fileKey = "Screen Shot 2019-12-25 at 9.32.34 PM.png";

  //AWS Credentials
  AWS.config.update({
    accessKeyId: config.awscredentials.accessKeyId,
    secretAccessKey: config.awscredentials.secretAccessKey,
    region: config.awscredentials.region
  });

  var params = {
    Bucket: "bucket_name",
    Key: "key_name"
  };

  let s3Object = s3.getObject(params);
  let wstream = fs.createWriteStream("/tmp/" + params.Key);

  s3.getObject(params)
  .on('error', function(err){
    console.log('s3.getObject error:' + err);
  })
  .on('httpData', function(chunk){
    wstream.write(chunk);
  })
  .on('httpDone', function() {
    console.log("The file has been saved to Directory /tmp/.");
    wstream.end();
  }).send();
});

app.listen(PORT, function(){
  console.log("Server is listening on", PORT);
});
...