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

如何通过AWS CLI将字符串作为Payload传递给AWS Lambda函数?

解决AWS CLI调用Lambda时的"Invalid base64: ""world"""错误

你遇到的问题是因为--payload参数的格式不符合AWS CLI的要求,具体原因和解决方法如下:

错误原因

AWS CLI要求--payload必须是合法的JSON格式,同时默认会将输入内容视为base64编码(除非使用特定参数调整)。你之前的命令里"world"没有被正确解析为有效JSON,而且外层引号导致CLI实际接收到的是""world"",这既不是有效的base64字符串,也不是合法JSON。

解决方法

下面提供几种可行的修改方式:

1. 转义引号,传递合法JSON字符串

在命令行中直接传递JSON字符串时,需要正确转义引号:

  • Linux/macOS(bash/zsh):
    aws lambda invoke --invocation-type RequestResponse --function-name HelloWorldJava --payload '"world"' outputfile.txt
    
    或者:
    aws lambda invoke --invocation-type RequestResponse --function-name HelloWorldJava --payload "\"world\"" outputfile.txt
    
  • Windows命令提示符:
    aws lambda invoke --invocation-type RequestResponse --function-name HelloWorldJava --payload "\"world\"" outputfile.txt
    

2. 使用文件传递payload

如果payload内容复杂,推荐将其写入JSON文件:

  1. 创建payload.json文件,内容为:
    "world"
    
  2. 执行命令:
    aws lambda invoke --invocation-type RequestResponse --function-name HelloWorldJava --payload file://payload.json outputfile.txt
    

3. 使用--cli-binary-format参数(AWS CLI v2+)

如果你使用的是AWS CLI v2,可以添加--cli-binary-format raw-in-base64-out参数,让CLI直接将输入的字符串视为原始JSON而非base64:

aws lambda invoke --invocation-type RequestResponse --function-name HelloWorldJava --payload "world" --cli-binary-format raw-in-base64-out outputfile.txt

关于书籍中方法的说明

书籍里的方法可能在旧版本AWS CLI或特定shell环境下有效,因为早期CLI对payload格式的要求更宽松,或者某些shell会自动处理引号转义逻辑。但新版本CLI对格式的规范性要求更高,所以需要按照上述正确格式传递参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 22:36:19