我是aws-lambda和aws-s3的新手。我正在尝试使用api-gateway、aws s3和aws lambda创建一个微服务。我已经编写了lambda函数来从s3中检索对象,但是它发送null并且不会抛出任何错误。我不确定哪里出了问题。我设置了角色,并为s3提供了访问权限,并将该角色用于lambda
const AWS = require('aws-sdk');
var s3 = new AWS.S3();
exports.handler = async (event) => {
var params = {
"Bucket": "bucketname",
"Key": "keyname"
};
s3.getObject(params, function(err, data){
if(err) {
return "error while fetching data";
} else {
return data;
}
});
};我在这里做错了什么?
发布于 2019-04-03 05:02:24
您应该以API网关代理所需的正确响应格式返回数据,并使用回调参数进行回复,因此请更改您的函数,如下所示:
const AWS = require('aws-sdk');
var s3 = new AWS.S3();
exports.handler = async (event, context, callback) => {
var params = {
"Bucket": "bucketname",
"Key": "keyname"
};
s3.getObject(params, function(err, data){
if(err) {
return callback(new Error("error while fetching data"));
} else {
let response = {
statusCode: 200,
headers: {
"x-custom-header" : "my custom header value"
},
body: JSON.stringify(data)
};
return callback(null, response);
}
});
};如果您没有使用API网关代理Lambda集成,那么您可以简单地将响应更改为return callback(null, data);
https://stackoverflow.com/questions/55483171
复制相似问题