You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS Lambda函数开发求助:Node.js 6.10实现S3上传触发

嘿,别慌!我刚上手AWS Lambda的时候也一脸懵,这就一步步带你搭建这个S3触发的Node.js 6.10 Lambda函数,全程保姆级教程👇

第一步:创建Lambda函数(指定Node.js 6.10环境)

  • 登录AWS控制台,找到Lambda服务,点击「创建函数」
  • 选择「从头开始创建」,给函数起个好记的名字(比如S3UploadTrigger)
  • 关键一步:在「运行时」下拉框里找到Node.js 6.10(这个版本比较老,可能需要往下翻或者搜索才能看到)
  • 权限部分,新手直接选「创建具有基本Lambda权限的新角色」就行,后面我们再给它加S3访问权限

第二步:给Lambda角色配置S3访问权限

Lambda要能读取S3的上传事件和对象内容,得给它的执行角色加权限:

  • 打开IAM控制台,搜索刚才创建的Lambda角色(名字一般是lambda-role-xxxxxx)
  • 点击「添加权限」→「创建内联策略」
  • 切换到JSON模式,粘贴下面的策略代码,记得把你的存储桶名称替换成你实际的桶名:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::你的存储桶名称",
                "arn:aws:s3:::你的存储桶名称/*"
            ]
        }
    ]
}
  • 给策略起个名字(比如S3AccessForLambdaTrigger),保存就搞定了

第三步:配置S3触发事件

现在让Lambda在对象上传到S3时自动触发:

  • 回到Lambda函数页面,找到「触发器」标签,点击「添加触发器」
  • 触发器类型选「S3」
  • 选择你要监控的目标存储桶
  • 事件类型选「所有对象创建事件」(如果只需要监听上传操作,选「Put」也可以)
  • 注意勾选那个「递归调用」的警告提示(只要你别让Lambda把文件再传回去同一个桶,就不会有无限循环的问题)
  • 点击「添加」,触发配置就完成了

第四步:编写Node.js 6.10的Lambda代码

把Lambda默认的代码替换成下面这个基础示例,它会打印上传对象的信息,还能读取对象内容,你可以按需扩展:

exports.handler = (event, context, callback) => {
    // 从事件中提取S3相关信息
    const s3Record = event.Records[0].s3;
    const bucketName = s3Record.bucket.name;
    // 解码对象键,避免特殊字符乱码
    const objectKey = decodeURIComponent(s3Record.object.key.replace(/\+/g, ' '));

    console.log(`检测到新对象上传:桶名 → ${bucketName},对象键 → ${objectKey}`);

    // 示例:读取上传的对象内容(如果不需要可以删掉这部分)
    const AWS = require('aws-sdk');
    const s3 = new AWS.S3();

    s3.getObject({ Bucket: bucketName, Key: objectKey }, (err, data) => {
        if (err) {
            console.error('读取对象失败:', err);
            callback(err); // 标记执行失败
        } else {
            console.log('对象内容预览:', data.Body.toString());
            callback(null, `成功处理对象:${objectKey}`); // 标记执行成功
        }
    });
};

提示:Node.js 6.10版本的AWS SDK是Lambda内置的,不用自己打包上传,直接用就行

第五步:测试函数是否正常工作

  • 在Lambda页面点击「测试」,选择「S3 Put」测试模板,把模板里的桶名和对象键改成你实际的信息
  • 点击「测试」,就能看到执行结果和日志了,如果成功会打印出对象信息
  • 也可以实际上传一个小文件到你的S3桶,然后去Lambda的「监控」标签里查看CloudWatch日志,确认函数确实被触发了

几个要注意的点

  • Node.js 6.10已经停止官方维护了,如果项目允许的话,建议升级到更高版本(比如Node.js 18.x),但如果必须用这个版本,上面的代码完全兼容
  • 权限配置遵循「最小权限原则」,不要给Lambda不必要的权限,避免安全风险
  • 对象键的解码很重要,不然遇到带空格或特殊字符的文件名会出现乱码问题

内容的提问来源于stack exchange,提问作者Wonho

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:35:31