我正在尝试使用AWS lambda进行超强简单测试,以实现链接功能以及任何缺点。
我想对它们进行更复杂的使用(尽可能快地为S3上的巨大存储桶优化图像)
所以我对自己说,让我先尝试从第一个函数到第二个函数的参数,依此类推,然后再发疯。
此外,我也看到人们建议使用步骤功能,所以只是尝试 除非真的有必要,否则要避免这种情况。
正如标题所说,我无法获得第二个功能,即被调用以打印出来的东西,我很喜欢它出于调试目的,想知道是否有办法让它发挥作用?
这是我的代码:
'use strict';
var aws = require('aws-sdk')
module.exports.hello = (event, context, callback) => {
var lambda = new aws.Lambda()
var testPayload = ['blue', 'green', 'red']
var opts = {
FunctionName: 'lambda-chaining-dev-ciao',
Payload: JSON.stringify(testPayload)
}
lambda.invoke(opts, function (err, data) {
if (err) {
console.log('Error : ', err)
callback(err, null)
} else if (data) {
console.log('data', data)
console.log('\n')
const response = {
statusCode: 200,
body: JSON.parse(data.Payload)
}
callback(null, response)
}
})
}
module.exports.ciao = (event, context, callback) => {
console.log("I will never be logged when invoked")
callback(null,{ message: 'this is a test'})
}
serverless.yml
service: lambda-chaining
provider:
name: aws
runtime: nodejs6.10
iamRoleStatements:
- Effect: Allow
Action:
- lambda:InvokeFunction
- lambda:InvokeAsync
- logs:CreateLogGroup
- logs:CreateLogStream
- logs:PutLogEvents
Resource: "*"
functions:
hello:
handler: handler.hello
ciao:
handler: handler.ciao
plugins:
- serverless-offline
答案 0 :(得分:0)
如果要查看来自调用的日志,则需要将LogType: 'Tail'
添加到Lambda参数中。对于您想要的内容,这不是一个很好的解决方案,因为它只会是日志的最后4kb。
如果您想查看Lambda 2实际进程中的日志,而不是Lambda 1进程中的日志,而它们不在那儿,我会质疑Lambda 1是否正在执行。您可以尝试fs.writeFileSync()
进行验证。或者,如果您不在本地运行它,则只需查看该功能的Cloudwatch调用指标即可。
此外,您将在Lambda 2运行的整个过程中运行Lambda 1。如果Lambda 2调用另一个Lambda,Lambda 1将不得不无限期等待。最终,您将开始计时这些功能或向Amazon支付更多的钱。
如果您要保持理智,这是步进功能的一种情况。