我在event scheduler
中有一个AWS cloudwatch
,它每2分钟运行一次我的lambda函数。我想在上一次lambda调用中存储一些变量,这是在下一个lambda调用中处理所需的。
是否有任何小型存储选项,或者我必须选择dynamodb
类型存储?感谢。
答案 0 :(得分:0)
您可以使用Targets[].Input
字段将数据添加到CloudWatch event中的下一个事件。您可以使用语言的aws-sdk从lambda轻松完成此操作,例如在Nodejs
- 更新了示例
const AWS = require('aws-sdk');
const events = new AWS.CloudWatchEvents();
/**
* Lambda entry point
*/
exports.dostuff = async (request) => {
let stateData;
// do your stuff
await updateIteration(stateData);
}
function getRuleTargets() {
return events.listTargetsByRule({Rule: eventName}).promise();
}
function updateTargetInput(target, newData) {
const Input = JSON.stringify(newData)
const params = {
Rule: eventName,
Targets: [
{
Arn: target.Arn,
Id: target.Id,
Input
}
]
};
return events.putTargets(params).promise();
}
function updateIteration(data) {
return getRuleTargets().then(({Targets}) => {
// Usually there is only one target but just in case
const target = Targets.find(...)
return updateTargetInput(target, data)
});
}
这种方法的优点在于您无需设置额外的基础架构,也无需获取数据。如果在其他地方使用该事件,这将不是一个好方法。
答案 1 :(得分:0)
您必须使用S3或DynamoDB等外部存储。