使用节点lambda函数JS该查询S3 JSON文件
我已经JSON文件上传到S3,然后我写了下面的代码,看看这个文件里面的内容
const aws = require('aws-sdk');
const s3 = new aws.S3();
const bucket = 'hotels.mserver.online';
const objectKey = 'hotelsrates.json';
exports.handler = (event,context,callback) => {
// TODO implement
const response = getS3Objects(bucket,objectKey); //s3.listObjectsV2({}).promise();
console.log(response);
};
function getS3Objects(bucket,key) {
return s3.getObject({ Bucket:bucket, Key:key, ResponseContentType:'application/json '})
.promise().then(file => { return file })
.catch(error => { return error });
}`
但仍然得到了空。
回答如下:我了解你们怎么在这里完成,但就是不这样做的正确方法。
function getS3Objects(bucket,key){
return s3.getObject({Bucket:bucket,Key:key,ResponseContentType:'application/json'})
.promise().then(file=>{return file})
.catch(error =>{return error});
}`
以上部分仍然会返回一个承诺的对象,这意味着你需要相应地处理它。取而代之的const response = getS3Objects(bucket,objectKey);
你想做的事
getS3Objects(bucket,objectKey).then(response => console.log(response));
里面你handler
功能。
此外,您s3.getObject
功能的使用是不正确。其中第一个参数是一个对象 - 参数,第二个参数是一个回调函数。
s3.getObject(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data);
因此,在你的情况,你要修改getS3Objects
起作用的位。如果你想使用的承诺,那么你可以不喜欢这样。
function getS3Objects(bucket, key) {
return new Promise((resolve, reject) => {
s3.getObject(
{
Bucket: bucket,
Key: key,
ResponseContentType: 'application/json'
},
(err, data) => {
if (err) {
reject(err);
} else {
resolve(data);
}
}
);
});
}
使用节点lambda函数JS该查询S3 JSON文件
我已经JSON文件上传到S3,然后我写了下面的代码,看看这个文件里面的内容
const aws = require('aws-sdk');
const s3 = new aws.S3();
const bucket = 'hotels.mserver.online';
const objectKey = 'hotelsrates.json';
exports.handler = (event,context,callback) => {
// TODO implement
const response = getS3Objects(bucket,objectKey); //s3.listObjectsV2({}).promise();
console.log(response);
};
function getS3Objects(bucket,key) {
return s3.getObject({ Bucket:bucket, Key:key, ResponseContentType:'application/json '})
.promise().then(file => { return file })
.catch(error => { return error });
}`
但仍然得到了空。
回答如下:我了解你们怎么在这里完成,但就是不这样做的正确方法。
function getS3Objects(bucket,key){
return s3.getObject({Bucket:bucket,Key:key,ResponseContentType:'application/json'})
.promise().then(file=>{return file})
.catch(error =>{return error});
}`
以上部分仍然会返回一个承诺的对象,这意味着你需要相应地处理它。取而代之的const response = getS3Objects(bucket,objectKey);
你想做的事
getS3Objects(bucket,objectKey).then(response => console.log(response));
里面你handler
功能。
此外,您s3.getObject
功能的使用是不正确。其中第一个参数是一个对象 - 参数,第二个参数是一个回调函数。
s3.getObject(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data);
因此,在你的情况,你要修改getS3Objects
起作用的位。如果你想使用的承诺,那么你可以不喜欢这样。
function getS3Objects(bucket, key) {
return new Promise((resolve, reject) => {
s3.getObject(
{
Bucket: bucket,
Key: key,
ResponseContentType: 'application/json'
},
(err, data) => {
if (err) {
reject(err);
} else {
resolve(data);
}
}
);
});
}