我们可以在AWS控制台中创建Lambda函数并对其进行测试.本章将详细讨论这一点.为此,您必须按照此处给出的步骤进行操作,并观察给定和减去的相应屏幕截图;
登录AWS控制台 https://aws.amazon.com/console/.现在,您将被重定向到显示AWS服务的屏幕.
现在,点击上面突出显示的 Lambda 服务.这将重定向到创建函数,如下所示 :
现在,单击创建功能并输入功能的详细信息.然后你可以看到如下所示的屏幕 :
您可以通过选择所选语言来编写代码.如果选择的选项是内联编辑代码,则必须在编辑器中编写代码.可用的其他选项如下 :
完成后,您需要保存右上角给出按钮的更改,如下所示 :
现在,单击测试按钮.这给出了Lambda函数执行的所有细节,如下所示 :
index.js 的代码如下 :
exports.handler = (event, context, callback) => { // TODO implement callback(null, 'Lambda test'); };
这将调用回调函数,结果可能是错误或成功.成功后,您将看到 Lambda测试消息;如果错误,它将传递null.
Lambda函数的角色详细信息是配置的一部分并显示如下所示 :
现在,您可以根据需要更新角色并保存Lambda函数.然后,lambda函数的内存和超时详细信息显示如下所示 :
现在,我们需要为Lambda函数添加触发器,以便在事件发生时执行.触发器详细信息显示在AWS Lambda功能屏幕的开头,如下所示 :
从此,您可以选择希望Lambda函数被触发的触发器.当您选择触发器时,必须添加触发器的配置详细信息.
例如,对于S3上的触发器,要添加的配置详细信息如下 :
现在,选择您想要触发的存储桶.事件类型具有以下详细信息 :
对于触发器,您还可以提及前缀类型文件或文件模式,Lambda必须是触发器.详细信息如下所示;
现在,填写触发器所需的详细信息,然后单击添加按钮.保存用于触发器的Lambda函数以添加.保存函数部署详细信息,以及从现在开始,随时将文件添加到S3存储桶中,Lambda将被触发.
观察以下屏幕截图,其中显示添加到AWS Lambda的S3触发器 :
现在,让我们来吧使用S3 sample事件来测试Lambda函数.此处显示相同的代码 :
{ "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//将显示事件名称
现在,让我们更新AWS Lambda代码以打印S3详细信息,如下所示 :
exports.lambdahandler =(event,context,callback)= > { callback(null,"Bucket name:"+ event.Records [0] .s3.bucket.name +" 文件名:"+ event.Records [0] .s3.object.key) ; };
保存更改.单击测试并输入S3示例事件 :
现在点击测试,您可以看到输出显示和减去;
使用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"); } }); };
相应的屏幕截图如下所示 :
现在,上传文件并检查AWS Lambda代码中提供的邮件ID :