如何使用 AWS Lambda 检查 S3 中的文件

How to use AWS Lambda to check file in S3

AWS Lambda 是全新的,所以我什至不确定这是否是完成我正在尝试做的事情的正确工具。

基本上我想做的是检查文件是否存在或者最近是否在 S3 中更新过。如果该文件不存在或最近未更新,我希望将 AMI 克隆到 AWS 实例。

  1. 以上是否可行?
  2. Lambda 是适合这项工作的工具吗?

我在 JavaScript 方面相当称职,但从未使用过 node.js 或 Python,因此编写 Lambda 函数对我来说似乎很复杂。

您是否知道任何有助于构建 Lambda 函数的资源?

谢谢!

如果您了解 Javascript 并了解 NPM,这将很容易。让我给你一个简单的 node js 方法:

  1. 登录您的 AWS。
  2. 转到 AWS 控制台菜单,右上角的按钮。
  3. 选择 lambda,单击函数并创建新函数。
  4. 单击蓝色打印页面上的跳过按钮。
  5. 跳过配置触发页面。
  6. 你会看到配置功能页面,然后你可以填写功能名称,runtime使用NodeJS.4.3,选择代码类型Edit Code Inline
  7. 编辑内联代码 框的底部,您必须选择您曾经拥有的 IAM 角色。如果您没有任何 IAM 角色,请转到 AWS 控制台并选择 Identity and Access Management(IAM)、select 角色并新建它。
  8. 如果您已完成所有必填字段的填写,您可以单击下一步并创建 Lambda 函数。

注意:在您的编辑代码内联框中,请写下此代码:

exports.handler = function(event, context, callback) {
     var AWS = require('aws-sdk');
     AWS.config.update({accessKeyId: 'xxxxxxxxxxx', secretAccessKey: 'xxxxxxxxxxxxxxxxxxxx'});
     var s3 = new AWS.S3();
     var params = {Bucket: 'myBucket', Key: 'myFile.html'};
     s3.getObject(params, function(err, data) {

     if (err) {
        console.log(err, err.stack);
        // file does not exist, do something
     }
     else {
        console.log(data);
        //file exist, do something
     }    
  });
};

您可以从 IAM 菜单 -> 用户 -> 安全凭证 -> 创建访问密钥中获取 accessKeyId。那么你也会得到 secretAccessKey
希望这个回答对您有所帮助。