Python lambda调用cli命令以不同方式读取lambda负载

Python lambda调用cli命令以不同方式读取lambda负载,python,json,batch-file,aws-lambda,aws-cli,Python,Json,Batch File,Aws Lambda,Aws Cli,我已经创建了一个AWS lambda函数,我正在使用Windows bat脚本触发它。 windows bat脚本将windows环境变量USERNAME作为有效负载的一部分 我已使用以下语法在我的本地计算机上成功运行此功能: aws lambda invoke——函数名ConnectDesktops——有效负载“{\”name\”:\%USERNAME%\“}”response.json 但是,我随后将此bat文件推送到最终用户,他们在执行相同命令时遇到错误: 调用调用操作时发生错误(Inva

我已经创建了一个AWS lambda函数,我正在使用Windows bat脚本触发它。 windows bat脚本将windows环境变量USERNAME作为有效负载的一部分

我已使用以下语法在我的本地计算机上成功运行此功能:

aws lambda invoke——函数名ConnectDesktops——有效负载“{\”name\”:\%USERNAME%\“}”response.json

但是,我随后将此bat文件推送到最终用户,他们在执行相同命令时遇到错误:

调用调用操作时发生错误(InvalidRequestContentException):无法将请求正文解析为json:意外字符(“)”(代码169)):应使用空格分隔根级别值 在[来源:(字节[])处”5��F�B����"; 行:1,列:3]

环境变量正在他们的桌面上解析,但我仍然手动解析,并尝试了一些有效负载的替代方案:

aws lambda invoke——函数名ConnectDesktops——有效负载“{\”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,}'

同样,最初的命令实际上在我自己的桌面上工作,我们都使用Windows10和cmd命令行工具

我的AWS lambda函数是用Python3.8编写的,开始时是这样的

import boto3
from botocore.exceptions import ClientError

client=boto3.client('ec2')

def lambda_handler(event, context):

    name=event['Name']

任何建议都将不胜感激。

好的,我找到了答案

当然,我的安装和我的同事之间肯定存在差异,差异在于我们使用的Amazon CLI版本

我使用的是V1,上面的命令工作正常,但我的同事使用的是V2,您需要在其中添加参数

--cli二进制格式raw-in-base64-out

通过执行以下命令,可以检查正在使用的CLI版本:

aws——版本

完整工作CLI V2命令供参考:

aws lambda invoke--函数名ConnectDesktops--有效负载“{\“name\”:\%USERNAME%\“}”-cli二进制格式raw-in-base64-out response.json