使用AWS控制台创建和部署

我们可以在AWS控制台中创建Lambda函数并对其进行测试.本章将详细讨论这一点.为此,您必须按照此处给出的步骤进行操作,并观察给定和减去的相应屏幕截图;

步骤1

登录AWS控制台 https://aws.amazon.com/console/.现在,您将被重定向到显示AWS服务的屏幕.

AWS Services

第2步

现在,点击上面突出显示的 Lambda 服务.这将重定向到创建函数,如下所示 :

Lambda Services

步骤3

现在,单击创建功能并输入功能的详细信息.然后你可以看到如下所示的屏幕 :

My First Lambda

第4步

您可以通过选择所选语言来编写代码.如果选择的选项是内联编辑代码,则必须在编辑器中编写代码.可用的其他选项如下 :

代码输入

步骤5

完成后,您需要保存右上角给出按钮的更改,如下所示 :

保存按钮Lambda

步骤6

现在,单击测试按钮.这给出了Lambda函数执行的所有细节,如下所示 :

Test Button

第7步

index.js 的代码如下 :

exports.handler = (event, context, callback) => {
   // TODO implement
   callback(null, 'Lambda test');
};

这将调用回调函数,结果可能是错误或成功.成功后,您将看到 Lambda测试消息;如果错误,它将传递null.

步骤8

Lambda函数的角色详细信息是配置的一部分并显示如下所示 :

角色执行

步骤9

现在,您可以根据需要更新角色并保存Lambda函数.然后,lambda函数的内存和超时详细信息显示如下所示 :

Description

步骤10

现在,我们需要为Lambda函数添加触发器,以便在事件发生时执行.触发器详细信息显示在AWS Lambda功能屏幕的开头,如下所示 :

Designer

从此,您可以选择希望Lambda函数被触发的触发器.当您选择触发器时,必须添加触发器的配置详细信息.

例如,对于S3上的触发器,要添加的配置详细信息如下 :

配置触发器

步骤11

现在,选择您想要触发的存储桶.事件类型具有以下详细信息 :

事件类型

步骤12

对于触发器,您还可以提及前缀类型文件或文件模式,Lambda必须是触发器.详细信息如下所示;

前缀

步骤13

现在,填写触发器所需的详细信息,然后单击添加按钮.保存用于触发器的Lambda函数以添加.保存函数部署详细信息,以及从现在开始,随时将文件添加到S3存储桶中,Lambda将被触发.

观察以下屏幕截图,其中显示添加到AWS Lambda的S3触发器 :

Cloud Formation

步骤14

现在,让我们来吧使用S3 sample事件来测试Lambda函数.此处显示相同的代码 :

Amazon S3放样本事件

{
   "Records": [{
      "eventVersion": "2.0",
      "eventTime": "1970-01-01T00:00:00.000Z",
      "requestParameters": {
         "ExampleIPAddress": "127.0.0.1"
      },
      "s3": {
         "configurationId": "testConfigRule",
         "object": {
            "eTag": "0123456789abcdef0123456789abcdef",
            "sequencer": "0A1B2C3D4E5F678901",
            "key": "HappyFace.jpg",
            "size": 1024
         },
         "bucket": { 
            "arn": bucketarn,
            "name": "Examplebucket",
            "ownerIdentity": {
               "principalId": "Example"
            }
         },
         "s3SchemaVersion": "1.0"
      },
      "responseElements": { 
         "x-amz-id-2": "Example123/5678abcdefghijklambdaisawesome/mnopqrstuvwxyzABCDEFGH",
         "x-amz-request-id": "Example123456789"
      },
      "awsRegion": "us-east-1",
      "eventName": "ObjectCreated:Put",
      "userIdentity": {
         "principalId": "Example"
      },
      "eventSource": "aws:s3"
   }]
}

您必须使用以下命令来获取从S3 put event&minus上传的文件的详细信息;

event.Records [0].s3.object.key//将显示文件的名称

您必须使用以下命令获取存储桶名称 :

event.Records[0].s3.bucket.name//将给出存储桶的名称.

您必须使用以下命令获取EventName :

event.Records[0].eventName//将显示事件名称

步骤15

现在,让我们更新AWS Lambda代码以打印S3详细信息,如下所示 :

exports.lambdahandler =(event,context,callback)= > {
 callback(null,"Bucket name:"+ event.Records [0] .s3.bucket.name +"
文件名:"+ event.Records [0] .s3.object.key) ; 
};

步骤16

保存更改.单击测试并输入S3示例事件 :

配置测试

步骤17

现在点击测试,您可以看到输出显示和减去;

Bucket Name

步骤18

使用S3测试触发器S3 AWS服务,在S3存储桶中上传文件:测试存储桶触发器.更新Lambda使用的角色,以获取S3和SES策略(发送邮件)以获取权限.这将更新AWS Lambda代码以发送邮件以查看触发工作 :

更新的AWS Lambda代码如下所示 :

var aws = require('aws-sdk');
var ses = new aws.SES({
   region: 'us-east-1'
});
exports.lambdahandler = function(event, context, callback) {
   var eParams = {
      Destination: {
         ToAddresses: ["coxxxxxxx@gmail.com"]
      },
      Message: {
         Body: {
            Text: {
               Data: "Bucket name: "+event.Records[0].s3.bucket.name+"  File name:"+event.Records[0].s3.object.key
            }
         },
         Subject: {
            Data: "S3 and AWS Lambda"
         }
      },
      Example: "coxxxxxx@gmail.com"
   };
   console.log('===SENDING EMAIL===');
   var email = ses.sendEmail(eParams, function(err, data) {
      if (err) console.log(err);
         else {
            console.log("===EMAIL SENT===");
            console.log("EMAIL CODE END");
            console.log('EMAIL: ', email);
            context.succeed(event);
            callback(null, "email is send");
         }
   });
};

相应的屏幕截图如下所示 :

目标路径

步骤19

现在,上传文件并检查AWS Lambda代码中提供的邮件ID :

Mail Id