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

S3桶上传触发Lambda函数读取JSON文件时无日志输出问题排查

问题排查与解决方案

核心原因

取消注释bucket和key的赋值代码后无日志输出,是因为这两行代码抛出了未被捕获的异常——它们不在try块范围内,异常直接导致Lambda函数崩溃,后续的print('I was triggered')根本没机会执行,所以日志毫无输出。

分步修复与实现

1. 捕获异常,先让日志正常输出

把获取bucket和key的代码移入try块内,确保异常能被捕获并打印,避免函数静默崩溃:

import boto3
import json

s3 = boto3.client('s3')

def LambdaHandler(event, context):
    try:
        print('I was triggered')
        # 移到try块内,异常可被捕获并打印
        bucket = event['Records'][0]['s3']['bucket']['name']
        key = event['Records'][0]['s3']['object']['key']
        print(f"Bucket: {bucket}, Key: {key}")
    except Exception as e:
        print(f"Error details: {str(e)}")
        raise e

2. 验证Event结构是否匹配

  • 如果是S3自动触发:检查S3触发器配置,确保事件类型选择的是s3:ObjectCreated:*类事件
  • 如果是手动测试:必须使用标准的S3触发格式作为测试事件,示例如下:
    {
      "Records": [
        {
          "s3": {
            "bucket": {
              "name": "your-target-bucket"
            },
            "object": {
              "key": "your-json-file.json"
            }
          }
        }
      ]
    }
    

3. 处理URL编码的Key值

S3触发事件中的key会自动URL编码(比如空格会变成%20),需要解码后才能正常使用:

import urllib.parse
# 在获取key后添加解码逻辑
key = urllib.parse.unquote_plus(event['Records'][0]['s3']['object']['key'])

4. 实现JSON文件读取功能

确认bucket和key正常后,添加读取S3文件的代码,完成目标需求:

import boto3
import json
import urllib.parse

s3 = boto3.client('s3')

def LambdaHandler(event, context):
    try:
        print('I was triggered')
        bucket = event['Records'][0]['s3']['bucket']['name']
        key = urllib.parse.unquote_plus(event['Records'][0]['s3']['object']['key'])
        
        # 读取并解析S3中的JSON文件
        response = s3.get_object(Bucket=bucket, Key=key)
        json_data = json.loads(response['Body'].read().decode('utf-8'))
        print(f"Parsed JSON content: {json_data}")
        
        # 后续业务逻辑可在此添加
        
    except Exception as e:
        print(f"Error occurred: {str(e)}")
        raise e

额外排查点

  • 确认Lambda执行角色已配置s3:GetObject权限,且策略已正确关联
  • 检查CloudWatch日志组的过滤规则,确保没有屏蔽错误日志

内容的提问来源于stack exchange,提问作者Blue Moonshine

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 12:55:24