Rog*_*ort 49 json amazon-web-services
当我尝试从 AWS CLI 调用 lambda 函数时出现错误。我正在使用 CLI 的第 2 版。我知道我应该将--payload参数作为包含 JSON 对象的字符串传递。
aws lambda invoke --function-name testsms --invocation-type Event --payload '{"key": "test"}' response.json
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Invalid base64: "{"key": "test"}"
Run Code Online (Sandbox Code Playgroud)
我已经为 JSON 转义字符等尝试了各种变体。我也尝试使用file://test.json我收到相同错误的选项。
ssg*_*gao 95
正如@MCI 所说,AWS V2 默认为 base 64 输入。为了让您的案例正常工作,只需--cli-binary-format raw-in-base64-out在您的命令中添加一个参数,就可以了
aws lambda invoke --function-name testsms \
--invocation-type Event \
--cli-binary-format raw-in-base64-out \
--payload '{"key": "test"}' response.json
Run Code Online (Sandbox Code Playgroud)
小智 24
看起来awscli v2需要一些参数是 base64 编码的。
默认情况下,AWS CLI 版本 2 现在将所有二进制输入和二进制输出参数作为 base64 编码字符串传递。需要二进制输入的参数在文档中将其类型指定为 blob(二进制大对象)。
的有效载荷参数来lamba invoke为这些中的一个blob类型必须是base64编码。
--payload (blob) 您要作为输入提供给 Lambda 函数的 JSON。
一种解决方案是使用 openssl base64 对您的有效负载进行编码。
echo '{"key": "test"}' > clear_payload
openssl base64 -out encoded_payload -in clear_payload
aws lambda invoke --function-name testsms --invocation-type Event --payload file://~/encoded_paylaod response.json
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13033 次 |
| 最近记录: |