Lambda调用CLI命令读取Lambda负载时表现不同

5
我创建了一个AWS Lambda函数,并使用Windows批处理脚本来触发它。Windows批处理脚本将Windows环境变量USERNAME作为负载的一部分输入。 我用以下语法在本地成功运行: aws lambda invoke --function-name ConnectDesktops --payload "{\"Name\": \"%USERNAME%\" }" response.json 但是,当我将此bat文件推送给我的终端用户时,他们执行相同命令时遇到错误: “调用Invoke操作时发生错误(InvalidRequestContentException):无法将请求正文解析为json:预期空格分隔根级值处出现意外字符('©' (代码169))。 在[源]中:(byte[])"5��F�b����"; 行:1,列:3" 环境变量正在解析他们的桌面,但我手动解析并尝试了负载的几个替代方案: aws lambda invoke --function-name ConnectDesktops --payload "{\"Name\": \"User1\" }" response.json aws lambda invoke --function-name ConnectDesktops --payload "{"Name": "User1" }" response.json aws lambda invoke --function-name ConnectDesktops --payload '{"Name": "User1"}' response.json aws lambda invoke --function-name ConnectDesktops --payload {"Name": "User1"} response.json 结果都是相同的,或者可能类似于: “未知选项:response.json,}” 再次说明,最初的命令实际上在我的桌面上工作,我们都使用Windows 10和cmd命令行工具。 我的AWS Lambda函数是用Python 3.8编写的,如下所示:
import boto3
from botocore.exceptions import ClientError

client=boto3.client('ec2')

def lambda_handler(event, context):

    name=event['Name']
任何建议将不胜感激。
1个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
8

好的,我找到了答案。

当然,我的安装和我的同事之间必须存在差异,这个差异在于我们使用的Amazon CLI版本不同。

我使用的是V1,上述命令可以正常工作,而我的同事们则使用的是V2,你需要添加参数 --cli-binary-format raw-in-base64-out

你可以通过执行以下命令来检查你正在使用哪个版本的CLI: aws --version

V2版本完整可用的CLI命令供参考: aws lambda invoke --function-name ConnectDesktops --payload "{\"Name\": \"%USERNAME%\" }" --cli-binary-format raw-in-base64-out response.json


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,