lambda evoke cli命令以不同的方式读取lambda有效载荷。

问题描述 投票:0回答:1

我创建了一个AWS的lambda函数,我使用Windows的bat脚本来触发。Windows的bat脚本将Windows环境变量USERNAME作为有效载荷的一部分。

我在本地使用下面的语法成功地运行了这个脚本。

aws lambda invoke --function-name ConnectDesktops --payload "{\"Name\": \"%USERNAME%\" }" response.json

然而,我把这个bat文件推送给我的终端用户,他们在执行同样的命令时遇到了错误。

当调用Invoke操作时发生了一个错误(InvalidRequestContentException)。无法将请求体解析为json。意外的字符('©'(代码169))。在[Source.(byte[]) "5.5 "处,预期的空格分隔了根级的值:意外的字符('©'(代码169)):预期的空格分隔了根级的值。(byte[]) "5��F�b��";行:1,列:3]的根级值之间有空格。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']

任何建议都将是非常感激的。

python json batch-file aws-lambda aws-cli
1个回答
0
投票

好了,我找到了答案。

当然,我的安装和我的同事之间必须有一个差异,差异是我们使用的亚马逊CLI的版本。

我使用的是V1版本,上面的命令可以正常工作,但是我的同事使用的是V2版本,在V2版本中,你需要添加以下参数 --cli-binary-format raw-in-base64-out

您可以通过执行以下命令检查您使用的CLI版本。 aws --version

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

© www.soinside.com 2019 - 2024. All rights reserved.