将python中的requests 包上传到AWS lambda的layer中

116 阅读3分钟

1.创建一个文件夹

mkdir requests_layer
cd requests_layer

2. 创建 Lambda Layer 所需的目录结构

将 pythonX.Y 替换为你的 Lambda 函数将使用的 Python 版本 例如,对于 Python 3.11

mkdir -p python/lib/python3.11/site-packages

3. 使用 pip 将 requests 库安装到指定目录

注意: -t 参数指定了安装目标目录

pip install requests -t ./python/lib/python3.11/site-packages/

打包 Layer

将文件夹压缩成.zip文件

# 在requests_layer 目录下
zip -r requests_layer.zip python

效果是这样的

image.png

image.png

接下来是aws页面的操作

image.png

image.png

创建layer 这里你还只能与之前选定的python同一个版本 不然调用不到 当然 你可以在之前的包里多弄几个版本 这样这里就可以选多个版本了(我懒得验证 ORZ)

image.png

创建一个lambda

image.png

创建lambda后,进入到lambda页面,往下拉 添加layer

image.png

image.png

运行以下代码到lambda中

import json
import requests # 现在可以直接导入

def lambda_handler(event, context):
    try:
        response = requests.get('https://httpbin.org/get')
        response.raise_for_status() # 检查请求是否成功
        data = response.json()
        print("这就是一个测试 ", data)

        return {
            'statusCode': 200,
            'body': json.dumps(data)
        }
    except requests.exceptions.RequestException as e:
        print(f"Request failed: {e}")
        return {
            'statusCode': 500,
            'body': json.dumps({'error': str(e)})
        }


更新一下lambda的代码

image.png

测试一下(点一下就好,不用写测试用例)

image.png

看日志

image.png

image.png

image.png

没毛病 现在弄完了 可以用了