gpt4 book ai didi

javascript - AWS Lambda - 如果 S3 中存在对象,则无法执行操作

转载 作者:行者123 更新时间:2023-12-02 19:24:58 24 4
gpt4 key购买 nike

我正在 NodeJs 中编写一个 lambda 函数,我想检查 S3 中是否存在文件。如果文件存在,我返回“A”,否则返回“B”。我正在使用 S3.HeadObject 来获取对象元数据作为 promise 。

exports.handler = async (event, context, callback) => {
var params = {
Bucket: "BucketName",
Key: "ObjectName"
};

const response = s3.headObject(params).promise();

我能够得到响应,但无法检查文件是否存在。我首先尝试了 if/else 子句

 response.then(function(result) {
const type = result['ContentType'];
if(type == 'image/jpeg') {
return "URL1"
} else {
return "URL2"
}
});

但是,我从未返回 URL1 或 URL2,lambda 返回 null。通过浏览其他一些 SO 帖子,我找到了另一种方法:

s3.headObject(params, function(err, data) {
if (err) {
console.log(err, err.stack);
return;
}
console.log(data)
});

但是,这样我根本得不到任何回应。记录器不打印任何内容。

有人可以告诉我我做错了什么吗?我想根据 S3 中文件的可用性返回特定 URL。如果存在 JPG,则返回 JPG url。否则返回 PNG url。

谢谢!

最佳答案

我用存在/不存在的情况测试了以下一个,根据存在情况打印真/假。自从您提到以来,我没有尝试获取内容或其他元数据(只是可用性)

I want to return a specific URL based on the availability of files in S3

let AWS = require('aws-sdk');
let S3 = new AWS.S3();

exports.handler = async(event, context, callback) => {
let exist = await get();
console.log(exist);
// your exist checks
};

async function get() {
let exist = true;
let params = {
Bucket: "your-bucket-name",
Key: 'your-key'
};

try {
await S3.headObject(params).promise();
} catch (err) {
exist = false;
}

return exist;
}

关于javascript - AWS Lambda - 如果 S3 中存在对象,则无法执行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62503067/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com