Lambda从S3桶下载的文件无法在/tmp目录查看问题求助
AWS Lambda 从S3下载文件后/tmp目录为空排查方案
- 首先检查下载操作是否抛出了未感知的异常
你的代码仅在异常分支做了print(e)输出,错误信息只会记录在Lambda对应的CloudWatch日志组中,不会在测试返回结果里展示。请先查看CloudWatch日志确认是否有如下常见报错:存储桶名称拼写错误、S3对象Key大小写不匹配、文件大小超过Lambda /tmp目录512MB上限、跨区域S3访问权限限制、存储桶策略显式拒绝Lambda执行角色访问
- 补充文件存在性校验逻辑
你可以在download_file调用后增加本地文件校验代码,直接确认文件是否写入成功,修改后的参考代码如下:import csv import boto3 import os s3_client = boto3.client('s3') s3_resource = boto3.resource('s3') def lambda_handler(event, context): bucket = 'test-bucket' key = 'data/original_file1.csv' try: temp_path= '/tmp/test_file.csv' s3_resource.Bucket(bucket).download_file(key,temp_path) # 新增校验逻辑,输出/tmp目录文件列表到日志 print("/tmp目录文件列表:", os.listdir('/tmp')) print("目标文件大小:", os.path.getsize(temp_path)) response = s3_client.get_object(Bucket=bucket, Key=key) return response['ContentType'] except Exception as e: # 新增错误返回,测试时可直接看到报错信息 return f"执行报错:{str(e)}" - 确认权限配置生效
你提到已经配置了S3和Lambda全访问权限,需要确认权限是附加在Lambda的执行角色上,而非其他IAM身份;同时确认S3存储桶没有配置优先级更高的显式拒绝策略,覆盖了允许访问的权限配置。
内容的提问来源于stack exchange,提问作者ameesha gupta
相关产品推荐
相关产品推荐

