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

Python通过Lambda获取S3存储桶图片返回小白框问题求助

问题排查与解决方法

常见问题点

  • S3对象Key不匹配
    你上传代码中S3对象的Key是带S3_KEY前缀的拼接格式:f'{S3_KEY}{filename}.png',但读取代码里硬编码的Key是image.png,如果S3_KEY不为空、或者上传时filename参数不是image,就会导致读取的对象和你控制台确认的图片不是同一个,读取到空对象或者不相关内容转码后就会显示为极小的白色方框。
    可以在S3控制台找到对应图片,复制对象的完整键(包含所有前缀),替换读取代码中的Key值。
  • API网关二进制配置缺失
    如果你是通过AWS API网关触发Lambda,需要在网关配置中添加image/png到二进制媒体类型列表,否则API网关会把你返回的base64编码图片当作文本转码,导致图片内容损坏。
    • REST API:在API设置的「二进制媒体类型」板块添加image/png,重新部署API后生效
    • HTTP API:在API设置的「内容处理」中开启二进制自动转换,或手动添加image/png为二进制类型
  • 缺少错误处理导致异常静默
    现有代码没有捕获S3读取的异常,如果因为Lambda执行角色缺少s3:GetObject权限、Bucket名称填错等问题导致读取失败,会直接返回错误响应,编码后也会显示为损坏的图片。

修复后的参考代码

import base64
import boto3
import random
import logging

logger = logging.getLogger()
logger.setLevel(logging.INFO)

s3 = boto3.client('s3')
# 替换为S3控制台中对应图片的完整Key、桶名
IMAGE_KEY = "image.png"
BUCKET_NAME = "bucket-name"

def lambda_handler(event, context):
    number = random.randint(0,1)
    logger.info(f"随机分支值: {number}")
    if number == 1:
        try:
            response = s3.get_object(
                Bucket=BUCKET_NAME,
                Key=IMAGE_KEY,
            )
            # 日志打印读取的对象大小,和S3控制台的图片大小对比确认是否读取正确
            logger.info(f"S3对象大小: {response['ContentLength']}")
            image = response['Body'].read()
            return {
                'headers': { "Content-Type": "image/png" },
                'statusCode': 200,
                'body': base64.b64encode(image).decode('utf-8'),
                'isBase64Encoded': True
            }
        except Exception as e:
            logger.error(f"读取图片失败: {str(e)}")
            return {
                'headers': { "Content-type": "text/html" },
                'statusCode': 500,
                'body': f"<h1>读取失败: {str(e)}</h1>",
            }
    else:
        return {
            'headers': { "Content-type": "text/html" },
            'statusCode': 200,
            'body': "<h1>This is text</h1>",
        }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 21:15:07