AWS - 将字符串作为文件上传到S3存储桶

6
我正在尝试使用AWS SDK for NodeJS将字符串保存到AWS S3 bucket中的文件中。PUT请求成功了,但是文件没有在S3 bucket中创建。以下是我的代码片段:
const s3 = new S3({ apiVersion: '2006-03-01' });

const JS_code = `
  let x = 'Hello World';
`;

// I'm using the following method inside an async function.
await s3.putObject({
        Bucket: 'my-bucket-gayashan',
        Key: 'myFile.js',
        ContentType:'binary',
        Body: Buffer.from(JS_code, 'binary')
      });

能否有人帮助我解决这个问题?

2个回答

10

你应该使用 promise()await 一起使用:

await s3.putObject({...}).promise();

哦,天啊...我花了一个小时才到这里...太糟糕了...谢谢! - LeOn - Han Li
putObject不返回promise(),只要您的处理程序是异步的,您就可以使用await。 - panza

1

您需要在ContentType字段中提供有效的MIME类型。 在您的情况下,应该是application/javascript


仍然,我得到了之前相同的结果。 - gayashanbc
嗯,你可以尝试将 Body: JS_code 设置为字符串形式进行上传。 - poohitan
1
奇怪,我刚试了一下,它对我有效。也许是凭据的问题,你确定请求完成了吗?你可以像这样尝试一下吗? Bucket: 'my-bucket-gayashan', Key: 'myFile.js', ContentType:'binary', Body: Buffer.from(JS_code, 'binary') }, (error, response) => console.log(error, response));``` - poohitan
putObject 不会返回 Promise,所以我不明白你为什么要在 await 中使用它。 你应该向 putObject 传递回调函数,很可能会看到一些错误。 - poohitan
好的,我认为问题在于我没有像 Khalid T 的回答中那样在 putObject() 方法的末尾链接 promise() 方法。这解决了问题。 - gayashanbc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接