You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

跨AWS Lambda调用存储键值对的轻量存储方案咨询

轻量存储选项推荐:不用非得用DynamoDB!

嘿,这个场景我太熟悉了——定期触发的Lambda需要留存上一次的状态变量,完全没必要直接上DynamoDB,AWS有几个更轻量、更省心的选项,当然DynamoDB也能胜任,但得看你的需求:

首选:AWS Systems Manager Parameter Store

这绝对是为这种小数据存储量身定做的工具。它专门用来存储键值对(支持字符串、数字,甚至加密敏感数据),操作简单到离谱,用AWS SDK就能在Lambda里轻松读写。

  • 成本极低:免费额度包含1000个参数+每个参数1万次调用/月,你每2分钟调用一次,一个月也就约21600次,哪怕超了免费额度,费用也才几美分。
  • 额外福利:支持版本控制,你还能追溯变量的历史修改记录,排查问题很方便。

给你贴个Python Lambda的简单示例,演示读写操作:

import boto3

ssm_client = boto3.client('ssm')
# 自定义参数名称,建议按业务分组命名
PARAMETER_KEY = "/my-scheduled-lambda/last-processed-value"

def lambda_handler(event, context):
    # 读取上一次的变量
    try:
        response = ssm_client.get_parameter(Name=PARAMETER_KEY)
        last_value = response['Parameter']['Value']
        print(f"上次的值: {last_value}")
    except ssm_client.exceptions.ParameterNotFound:
        # 第一次调用时参数不存在,初始化默认值
        last_value = "0"
    
    # 这里写你的业务逻辑,生成新的变量值
    new_value = str(int(last_value) + 1)  # 示例:递增数字
    
    # 保存新值到参数存储
    ssm_client.put_parameter(
        Name=PARAMETER_KEY,
        Value=new_value,
        Type='String',
        Overwrite=True
    )
    
    return {"status": "success", "new_value": new_value}

备选:AWS S3

如果你的变量是稍微复杂一点的文本(比如JSON格式的状态对象),也可以存在S3的一个小文件里,比如lambda-last-run-state.json。

  • 优势:存储成本几乎可以忽略,而且如果以后你的状态数据变大(比如需要存多条历史记录),S3能无缝扩展。
  • 小缺点:相比Parameter Store,需要处理文件读写的步骤(比如读取文件内容、解析JSON),稍微多几行代码。

什么时候用DynamoDB?

如果你的需求未来会变得复杂——比如需要存储多条历史调用记录、需要按多个条件查询状态,那DynamoDB是合适的选择。它的免费额度(25GB存储+每月250万读写操作)也完全覆盖你的调用频率,但设置起来比前两个选项麻烦一点,属于“重型”工具,小场景用它有点大材小用。

重要提醒

不管选哪个存储选项,都要给Lambda配置对应的IAM权限:

  • Parameter Store:需要ssm:GetParameter和ssm:PutParameter权限
  • S3:需要s3:GetObject和s3:PutObject权限(针对目标桶和文件)
  • DynamoDB:需要dynamodb:GetItem和dynamodb:PutItem权限

内容的提问来源于stack exchange,提问作者Sachin Aggarwal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:18:36