amazon-web-services - aws lambda 在 s3 上写入文件 - javascript
问题描述
var AWS = require('aws-sdk');
var s3 = new AWS.S3();
exports.handler = async (event) => {
var bucketName = 'arn:aws:s3:::alessio77';
var keyName = 'prova.txt';
var content = 'This is a sample text file';
var params = { 'Bucket': bucketName, 'Key': keyName, 'Body': content };
s3.putObject(params, function (err, data) {
console.log('entrato')
if (err)
console.log(err)
else
console.log("Successfully saved object to " + bucketName + "/" + keyName);
});
};
这段代码既不写文件也不给我一个错误这是日志:
START RequestId: 7c93b1b9-73c1-4f18-9824-095bcbe292bf Version: $LATEST END RequestId: 7c93b1b9-73c1-4f18-9824-095bcbe292bf REPORT RequestId: 7c93b1b9-73c1-4f18-9824-095bcbe292bf Duration: 706.18 ms Billed Duration: 800 ms Memory大小:128 MB 使用的最大内存:90 MB
解决方案
s3.putObject 是异步的,您需要等待它。大多数 aws api 调用都会返回一个 AWS.Request,它可以返回一个 Promise。这是使用等待的解决方案。
var AWS = require('aws-sdk');
var s3 = new AWS.S3();
exports.handler = async (event) => {
var bucketName = 'arn:aws:s3:::alessio77';
var keyName = 'prova.txt';
var content = 'This is a sample text file';
var params = { 'Bucket': bucketName, 'Key': keyName, 'Body': content };
try {
console.log('entrato')
const data = await s3.putObject(params).promise();
console.log("Successfully saved object to " + bucketName + "/" + keyName);
} catch (err) {
console.log(err)
};
};
推荐阅读
- sql - 如果子查询在 Postgres 中返回多行,则跳过行
- google-cloud-platform - GCP:可以使用 Serverless VPC Access 的函数也享受 Private Google Access
- python - Python为装饰器编写单元测试
- python - Python更快的方法将每一行数据帧作为一个表插入到mysql
- aws-lambda - Bitbucket Pipeline 将 .Net Core API 部署到 AWS 无服务器应用程序模型
- javascript - 最初如何创建具有 N 个 div 的 HTML 页面
- flask - compute.beta.regionAutoscaler 错误烧瓶应用程序在谷歌云上部署时出错
- ios - 当我尝试从 App Delegate 访问根控制器时,window.rootViewController 返回 nil
- python - 从python中的字典中删除元素
- mongodb - MongoDB数组作为字符串