我有一个AWS Lambda函数,它与IAM角色一起部署,可以“完全访问”Lamba、S3和Cloudwatch资源。它在很大程度上起作用。
我在函数入口点js.js中包含了一个npm模块。我的目标是让函数读取<代码>的内容。json文件上传到bucket后。我为Lambda函数创建了一个触发器,用于在存储桶的S3 PUT操作中执行此操作。
这是我使用的代码,主要来自另一个StackOverflow答案。部署时,一切似乎都正常-
以下是我使用的代码:
var AWS = require('aws-sdk');
var s3 = new AWS.S3();
exports.handler = async (event, context, callback) => {
console.log("Incoming Event: ", event);
var src_bucket = event.Records[0].s3.bucket.name;
var src_key = event.Records[0].s3.object.key;
const filename = decodeURIComponent(src_key.replace(/\+/g, ' '));
const message = `File is uploaded => ${src_bucket} -> ${filename}`;
console.log(message);
s3.getObject({
Bucket: src_bucket,
Key: src_key
}, function(err, data) {
console.log(`Read S3 JSON object`);
if (err) {
console.log(err, err.stack);
callback(err);
} else {
console.log("Raw text:\n" + data.Body.toString('ascii'));
callback(null, null);
}
});
};
我不知道如何进一步排除故障。我确实设置了S3存储桶权限,以显式地让IAM角色对其进行读写。但这似乎并没有解决任何问题。为什么s3.getObject
方法中的函数没有输出任何东西?例如,行console.log(
读取S3 JSON对象);
没有显示在Cloudwatch日志中,尽管该方法之外的console.log
消息工作正常。我已经确保node_modules
文件夹也被上传。如果AWS SDK模块没有上传到Lambda,日志不会报告错误吗?任何关于故障排除的建议,以便我能够理解为什么我不能读取存储桶对象,我们都很感激。
问题是s3.getObject方法似乎根本没有启动。
可能是因为您使用的是异步处理程序,并且您的函数在getObject完成之前完成。
要纠正该问题,您可以使用new Promise
包装您的代码,如aws文档中所示,以确保它完全执行。
顺便说一句,您链接的答案使用非异步处理程序,因此您也可以为此修改代码。
因此,我尝试使用Amazon Textract读取多个pdf文件,使用方法读取多个页面,如下所示: 在尝试从中检索响应对象时,我可以看到它被打印出来: 相应地,我将使用该稍后访问对象。但是我得到了以下错误,我不明白: InvalidS3ObjectException:调用StartDocumentTextDetection操作时发生错误(InvalidS3ObjectException):无法从S
我想在我的AWS Lambda函数(python 3.6环境)中获得S3桶对象标签。我在本地环境中成功获得对象标签,但当我在AWS lambda函数中运行时,我收到错误: “errorMessage”:“调用GetObjectTagging操作时发生错误(AccessDenied):拒绝访问” 虽然我已经用s3桶和对象上的所有写入创建了IAM角色。 IAM角色策略: 代码是:
我正在尝试访问存储在AWS3桶中的文本文件。目前,它只包含“测试”一词。 起初,我以为我的fs.readfile有问题,但现在我发现问题更根本。我根本无法访问该文件。node.js的AWS似乎根本无法看到该文件。 我正在使用以下Lambda函数: 测试床函数包含以下代码: 结果如下所示(我删除了时间戳和请求ID文本): 由此,我得出结论,没有调用S3函数,尽管我可能弄错了。 我做错了什么?
我在Lambda函数上收到来自S3 AWS服务的acccess denied错误。 这是代码: 这是CloudWatch上的错误: 这是堆栈错误: 没有关于S3的任何其他描述或信息,桶权限允许每个人、放置、列表和删除。 我可以做什么来访问S3桶? PS:在Lambda事件属性上,主体是正确的,并且具有管理特权。
我试图弄清楚是否有可能返回某种流(可能是内存流?)我从我的桶里得到的东西。 S3 bucket包含很多不同类型的图像、文档等。所有这些都应该在我的网站上使用。但是,我不想显示AWS S3存储桶的路径 这就是为什么我试图创建一个流,并动态显示图像和可下载文档,而不是使用完整路径。这有意义吗?:-) 我用的是C#/。NET AWS SDK。 期待听到任何想法和方向指向!
我试图将值从数据库快照放入类对象的映射活动代码。 我的车站类别代码和位置类别代码。 在从firebase获取的地图上标记位置的代码。