所以我设置了一个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)
我只需要知道如何将数据和文件名发送到函数(并读取它)
答案 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)
也可以直接使用APIGateway s3集成
答案 3 :(得分:0)
tl; dr使用API网关的Lambda代理功能
API Gateway将原始请求传递给集成的Lambda函数。 此请求数据包括请求标头,查询字符串参数,URL路径变量,有效负载和API配置数据。在您的示例中,您可以在正文请求中传递数据和文件名。