我尝试从AWS CLI调用lambda函数时遇到错误。我使用的是第2版CLI。我知道应该将--payload
参数作为包含JSON对象的字符串传递。
aws lambda invoke --function-name testsms --invocation-type Event --payload '{"key": "test"}' response.json
出现以下错误:
Invalid base64: "{"key": "test"}"
我尝试了JSON转义字符等的各种变体。我还尝试使用file://test.json
选项,我收到了同样的错误。
6条答案
按热度按时间fkvaft9z1#
正如@MCI所说,AWS V2默认为base 64输入。要使您的情况正常工作,只需在命令中添加一个
--cli-binary-format raw-in-base64-out
参数,kkbh8khc2#
看起来awscli v2要求一些参数是base64编码的。
默认情况下,AWS CLI版本2现在将所有二进制输入和二进制输出参数作为base64编码字符串传递。需要二进制输入的参数在文档中将其类型指定为blob(二进制大对象)。
payload parameter到
lamba invoke
是这些blob
类型之一,必须采用base64编码。--payload(blob)您希望提供给Lambda函数作为输入的JSON。
一个解决方案是使用opensslbase 64来编码你的有效载荷。
mi7gmzs63#
首先,字符串是一个有效的JSON。
在我的情况下,我有这个问题
结果发现问题是由于AWS CLI试图将其转换为JSON。
vhmi4jdf4#
这个解决方案对我很有效,我发现它比每次都要记住/检查手册页中的正确标志要简单。
x7rlezfr5#
在Windows中,我尝试了以下方法,效果很好
请注意,在命令中添加了
--cli-binary-format raw-in-base64-out
,并在有效负载中转义了“toy3bcpkx16#
在运行LocalStack的Windows PowerShell上,我必须用途: