You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS Lambda出现KeyError:'s3_cleansed_layer'问题求助

解决AWS Lambda中s3_cleansed_layer的KeyError问题

你遇到的KeyError: 's3_cleansed_layer'本质是Lambda运行时无法找到对应的环境变量,以下是几个必查的解决方向:

1. 核对环境变量名称的大小写

AWS Lambda的环境变量名称严格区分大小写。检查你配置的变量名是否和代码里的s3_cleansed_layer完全一致——比如有没有误写成S3_Cleansed_Layer、s3-cleansed-layer这类变体。

2. 确认Lambda已重新部署

修改环境变量后,必须重新部署Lambda函数。如果只是保存了环境变量但没部署,运行的还是旧版本的函数,自然读取不到新配置的变量。

3. 检查环境变量的配置范围

如果你使用了Lambda的版本或别名,要确保环境变量是配置在当前运行的版本/别名上,而非其他未启用的版本。

4. 调整环境变量的读取位置

你的代码在函数定义外部就读取了环境变量,这部分逻辑会在Lambda冷启动时执行。如果是热启动的复用进程,可能不会重新读取更新后的环境变量。建议把环境变量的读取逻辑移到lambda_handler内部,确保每次调用都获取最新值:

import awswrangler as wr
import pandas as pd
import urllib.parse
import os

def lambda_handler(event, context):
    # 移到函数内部读取环境变量
    os_input_s3_cleansed_layer = os.environ['s3_cleansed_layer']
    os_input_glue_catalog_db_name = os.environ['glue_catalog_db_name']
    os_input_glue_catalog_table_name = os.environ['glue_catalog_table_name']
    os_input_write_data_operation = os.environ['write_data_operation']

    # Get the object from the event and show its content type
    bucket = event['Records'][0]['s3']['bucket']['name']
    key = urllib.parse.unquote_plus(event['Records'][0]['s3']['object']['key'], encoding='utf-8')
    try:
        # Creating DF from content
        df_raw = wr.s3.read_json('s3://{}/{}'.format(bucket, key))

        # Extract required columns:
        df_step_1 = pd.json_normalize(df_raw['items'])

        # Write to S3
        wr_response = wr.s3.to_parquet(
            df=df_step_1,
            path=os_input_s3_cleansed_layer,
            dataset=True,
            database=os_input_glue_catalog_db_name,
            table=os_input_glue_catalog_table_name,
            mode=os_input_write_data_operation
        )

        return wr_response
    except Exception as e:
        print(e)
        print('Error getting object {} from bucket {}. Make sure they exist and your bucket is in the same region as this function.'.format(key, bucket))
        raise e

5. 调试排查:打印所有环境变量

如果以上方法都无效,可以在lambda_handler开头添加调试代码,打印所有可用的环境变量,确认s3_cleansed_layer是否存在:

print("当前可用环境变量:", list(os.environ.keys()))

内容的提问来源于stack exchange,提问作者MCA DDIT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 09:20:20