AWS Lambda 函数写入 S3

新手上路,请多包涵

我在 AWS 中有一个 Node 4.3 Lambda 函数。我希望能够将文本文件写入 S3,并阅读了许多有关如何与 S3 集成的教程。但是,所有这些都是关于如何在 写入 S3 之后调用 Lambda 函数。

如何使用节点从 Lambda 在 S3 中创建文本文件?这可能吗?亚马逊的文档似乎没有涵盖它。

原文由 KVISH 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 379
2 个回答

是的,这是绝对可能的!

 var AWS = require('aws-sdk');
function putObjectToS3(bucket, key, data){
    var s3 = new AWS.S3();
        var params = {
            Bucket : bucket,
            Key : key,
            Body : data
        }
        s3.putObject(params, function(err, data) {
          if (err) console.log(err, err.stack); // an error occurred
          else     console.log(data);           // successful response
        });
}

通过选择或更新您的 Lambda 在其下执行的 IAM 角色,确保您为您的 Lambda 函数授予目标 s3 存储桶/密钥路径所需的写入权限。

要添加的 IAM 声明:

 {
    "Sid": "Stmt1468366974000",
    "Effect": "Allow",
    "Action": "s3:*",
    "Resource": [
        "arn:aws:s3:::my-bucket-name-goes-here/optional-path-before-allow/*"
    ]
}

进一步阅读:

原文由 Xavier Hutchinson 发布,翻译遵循 CC BY-SA 4.0 许可协议

经过很长时间的“任务在 X 后超时”而没有任何好的错误消息的沉默失败后,我回到了开始,亚马逊默认模板示例,并且成功了!

> Lambda > 函数 > 创建函数 > 使用蓝图 > 过滤器:s3。

这是我对亚马逊示例的调整版本:

 const aws = require('aws-sdk');
const s3 = new aws.S3({ apiVersion: '2006-03-01' });

async function uploadFileOnS3(fileData, fileName){
    const params = {
        Bucket:  "The-bucket-name-you-want-to-save-the-file-to",
        Key: fileName,
        Body: JSON.stringify(fileData),
    };

    try {
        const response = await s3.upload(params).promise();
        console.log('Response: ', response);
        return response;

    } catch (err) {
        console.log(err);
    }
};

原文由 Elad 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题