【问题标题】:How do I pass multipart-form data to AWS Lambda如何将多部分形式的数据传递给 AWS Lambda
【发布时间】:2016-08-24 06:04:54
【问题描述】:

我正在尝试从客户端发送文件并通过 AWS API Gateway 将其接收到我的 Lambda 函数,然后该函数会将这个文件放入 S3 存储桶中。

我在 API Gateway 中使用以下作为默认参数模板

{"image" : $input.params('MediaUrl0')}

我将如何在 python 中接收它,如下所示: def read_upload_toS3(事件,上下文): s3 = boto3.resource('s3')

【问题讨论】:

    标签: amazon-web-services amazon-s3 aws-lambda image-upload aws-api-gateway


    【解决方案1】:

    您可以在映射模板中使用最近引入的$input.body 变量:

    {
      "body" : "$input.body"
    }
    

    您也许还应该查看this 关于此问题的讨论。要在您的 python 函数中接收主体,只需执行以下操作即可

    def my_handler(event, context):
        body = event['body']
    

    但如果该函数的唯一目的是将文件上传到 S3,您也可以直接使用 API Gateway 执行此操作:

    • 转到您方法的集成请求设置
    • 集成类型下单击显示高级
    • 选择 AWS 服务代理
    • 选择 S3 作为 AWS 服务并填写必要信息

    【讨论】:

    • 我想知道如何在 Python 中接收这个。
    • 我收到了这个错误。你能帮我解决这个问题吗.. {"message": "Could not parse request body into json: Unexpected character (\'-\' (code 45)) in numeric value: expected digit (0-9) to follow符号,用于在 [Source: [B@98c32b3; line: 1, column: 3]"} 处的有效数值\n
    • 我有同样的错误。似乎 api gateway 仍然无法正确处理多部分形式的数据
    • 如果遇到错误,请尝试{ "body" : "$util.base64Encode($input.body)" }
    • “无法将请求正文解析为 json:意外字符...”可以通过在 POST 资源的“集成请求”部分添加“multipart/form-data”正文模板来解决。 (我制作的西班牙语/口语视频:youtu.be/79ckseUxvLw
    猜你喜欢
    • 1970-01-01
    • 2016-04-10
    • 1970-01-01
    • 2021-12-13
    • 2017-12-30
    • 1970-01-01
    • 2021-03-27
    • 2020-06-12
    • 1970-01-01
    相关资源
    最近更新 更多