向AWS Lambda函数发送和读取数据

时间:2018-06-15 10:34:27

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

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

我已设置API网关以使用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)

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

4 个答案:

答案 0 :(得分:2)

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

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

  

{“data”:“some data”}

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

  

{'data':'some 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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

答案 3 :(得分:0)

tl; dr使用API​​网关的Lambda代理功能

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

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