【问题标题】:Python call my AWS lambda from code with boto3 errorPython 从带有 boto3 错误的代码中调用我的 AWS lambda
【发布时间】:2018-06-04 15:19:49
【问题描述】:

在我的项目中,我必须创建一个调用 lambda 函数并传递主体参数的 py,我编写了以下代码:

import boto3
import json
import base64

client = boto3.client(‘lambda’)
d = {'calID': '92dqiss5bg87etcqeeamlmob2g@group.calendar.google.com', 'datada': '2017-12-22T16:40:00+01:00', 'dataa': '2017-12-22T17:55:00+01:00', 'email': 'example@hotmail.com'}
s = json.dump(d)
s64 = base64.b64encode(s.encode('utf-8'))

response = client.invoke(
    FunctionName='arn:aws:lambda:eu-west-1:13737373737:function:test',
    InvocationType='RequestResponse',
    LogType='None',
    ClientContext='None',
    Payload=s64
)

但是当响应运行时会产生这个错误:

InvalidRequestContentException:发生错误(InvalidRequestContentException)调用调用操作时:无法解析请求体为JSON:无法识别的令牌“eyJjYWxJRCI6ICI5MmRxaXNzNWJnODdldGNxZWVhbWxtb2IyZ0Bncm91cC5jYWxlbmRhci5nb29nbGUuY29tIiwgImRhdGFkYSI6ICIyMDE3LTEyLTIyVDE2OjQwOjAwKzAxOjAwIiwgImRhdGFhIjogIjIwMTctMTItMjJUMTc6NTU6MDArMDE6MDAiLCAiZW1haWwiOiAibHVjYV9ncmV6eml4eEBob3RtYWlsLmNvbSJ9”:期待(“真”,“假”或“空”) 在 [来源:[B@4587098d;行:1,列:481]

这是什么意思?

在此先感谢

【问题讨论】:

  • 你可以简单地做Payload=json.dumps(d)。不需要其他任何东西
  • 嗨,如果我使用 d,响应是:ParamValidationError:参数验证失败:参数有效负载的类型无效,类型:,有效类型:,,类文件对象
  • s 怎么样:P
  • 对不起,是的。它本来是json.dumps。也编辑了之前的评论。另请参阅github.com/cleesmith/boto3_test/blob/master/invoke.py#L42
  • 如果我使用 s (json.dumps(d)) 代码返回:InvalidRequestContentException:调用 Invoke 操作时发生错误 (InvalidRequestContentException):客户端上下文必须是有效的 Base64 编码 JSON 对象。

标签: python json amazon-web-services aws-lambda boto3


【解决方案1】:

错误是因为以下参数:

ClientContext='None',

来自the docs

ClientContext(字符串)--

使用ClientContext,您可以将特定于客户端的信息传递给 您正在调用的 Lambda 函数。然后您可以处理客户端 您通过上下文选择的 Lambda 函数中的信息 多变的。有关ClientContext JSON 的示例,请参阅PutEvents 在 Amazon Mobile Analytics API 参考和用户指南中。

ClientContext JSON 必须是 base64 编码并且具有最大大小 3583 字节。

这里根本不需要ClientContext 参数。简单调用如下:

response = client.invoke(
    FunctionName='arn:aws:lambda:eu-west-1:13737373737:function:test',
    LogType='None',
    Payload=json.dumps(d)
)

【讨论】:

    猜你喜欢
    • 2020-01-22
    • 2020-11-12
    • 2018-04-12
    • 1970-01-01
    • 2020-06-21
    • 2019-05-09
    • 2021-07-23
    • 2018-08-21
    • 1970-01-01
    相关资源
    最近更新 更多