在AWS lambda调用中存储键/值对

时间:2018-04-24 06:30:08

标签: amazon-web-services aws-lambda amazon-cloudwatch

我在event scheduler中有一个AWS cloudwatch,它每2分钟运行一次我的lambda函数。我想在上一次lambda调用中存储一些变量,这是在下一个lambda调用中处理所需的。

是否有任何小型存储选项,或者我必须选择dynamodb类型存储?感谢。

2 个答案:

答案 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等外部存储。