【问题标题】:Sending and reading data to AWS Lambda function向 AWS Lambda 函数发送和读取数据
【发布时间】:2018-11-25 04:42:31
【问题描述】:

所以我设置了一个 lambda 函数来将一个 txt 文件上传到 S3。如何使用 API Gateway 向函数发送数据?

我已经设置 API Gateway 有一个 POST 方法。

这是我的 Lambda 函数

import boto3

s3 = boto3.resource('s3')

def lambda_handler(event, context):

    data = 'Totally awesome sword design' #event['data']

    filename = 'awesomeSword2' #event['filename']

    object = s3.Object(BUCKET_NAME, KEY + filename + '.txt')
    object.put(Body=data)

我只需要知道如何向函数发送数据和文件名(并读取它)

【问题讨论】:

    标签: python-3.x amazon-web-services aws-lambda aws-api-gateway


    【解决方案1】:

    将使用您通过 POST 请求发送的数据调用 lambda。

    例如,假设您使用此 JSON 向 API 网关发出 POST 请求:

    {“数据”:“一些数据”}

    lambda 函数将在 event 参数中接收一个正确的 Python 字典:

    {'data': '一些数据'}

    然后你可以这样做:

    def lambda_handler(event, context):
        data = event.get('data') 
        # this will avoid raising an error if event doesn't contain the data key
    
        # do whatever you like with Data
    

    【讨论】:

    • 那么我如何提出发布请求?该应用正在使用 javascript。
    • 您是否在应用程序中使用特定库?在这里,您可以找到一种无需使用任何库即可发送 POST 的方法。stackoverflow.com/questions/24468459/…
    • 我认为这应该可行。我在哪里可以找到发帖的网址?
    • 这是您可以从 AWS 中的 API 网关检索到的内容
    • 我得到了 url,并使用了你的链接,但是我得到了这个错误:加载资源失败:服务器使用网关的控制台响应状态为 403 (),我设法让它工作
    【解决方案2】:

    基本上,您将 base64 编码的字符串作为数据传递 这是 AWS 的一篇博客文章,描述了如何实现这一目标:https://aws.amazon.com/blogs/compute/binary-support-for-api-integrations-with-amazon-api-gateway/

    【讨论】:

      【解决方案3】:
      【解决方案4】:

      tl;dr 使用 API Gateway 的 Lambda 代理功能

      API Gateway 将原始请求传递给集成的 Lambda 函数。 此请求数据包括请求标头、查询字符串参数、URL 路径变量、有效负载和 API 配置数据。在您的示例中,您可以在正文请求中传入数据和文件名。

      https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-create-api-as-simple-proxy-for-lambda.html

      【讨论】:

        猜你喜欢
        • 2021-08-28
        • 2019-01-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-06
        • 2017-09-28
        • 2022-07-21
        • 2020-12-29
        相关资源
        最近更新 更多