要实现AWS Lambda函数与API网关文件上传的功能,可以按照以下步骤进行操作:
import boto3
def lambda_handler(event, context):
# 获取上传的文件数据
file_content = event['body']
file_name = event['queryStringParameters']['name']
# 使用AWS SDK将文件上传到S3存储桶
s3 = boto3.client('s3')
s3.put_object(Body=file_content, Bucket='your-bucket-name', Key=file_name)
return {
'statusCode': 200,
'body': 'File uploaded successfully'
}
在AWS控制台中创建一个API网关,并设置一个POST方法以接收文件上传请求。
在POST方法的集成请求中,选择“Lambda函数”作为集成类型,并选择上一步创建的Lambda函数。
在API网关的资源选项卡中,添加一个资源以处理文件上传请求。
在资源的方法选项卡中,选择POST方法,然后配置方法请求。
在方法请求的集成请求中,选择“Lambda代理”作为集成类型,并选择上一步创建的Lambda函数。
配置其他API网关设置,例如身份验证、部署等。
部署API网关,并获取公共API网关的URL。
现在,你可以使用以下代码示例通过API网关上传文件:
import requests
# 将文件内容读取为字节
with open('file.txt', 'rb') as file:
file_content = file.read()
# 构建API网关的URL
api_gateway_url = 'https://your-api-gateway-url/upload-file'
# 构建请求参数
params = {
'name': 'file.txt'
}
# 发送POST请求
response = requests.post(api_gateway_url, params=params, data=file_content)
print(response.text)
在上面的示例中,将文件“file.txt”作为字节数据上传到了API网关的URL中。