AWS ECR describe_image_scan_findings未返回详细findings问题求助
问题排查与解决
核心原因:镜像扫描未完成
ECR镜像扫描为异步执行流程,当你调用describe_image_scan_findings接口时,若扫描仍在进行中(状态为IN_PROGRESS),接口仅会返回findingSeverityCounts统计数据,不会返回详细的findings列表。只有当扫描状态变为COMPLETE时,才会返回完整的扫描详情。
解决步骤
先检查扫描状态
在调用接口后,先通过imageScanStatus字段确认扫描状态:scan_report = ecr_client.describe_image_scan_findings( repositoryName=registry, imageId={ 'imageTag': most_recent_image }, maxResults=1000 ) scan_status = scan_report['imageScanFindings']['imageScanStatus']['status'] if scan_status != 'COMPLETE': print(f"扫描未完成,当前状态:{scan_status}") # 可根据需求添加等待或重试逻辑 else: scan_findings = scan_report['imageScanFindings'].get('findings', []) pp.pprint(scan_findings)添加扫描等待逻辑(可选)
若需要等待扫描完成后获取结果,可加入循环重试机制:import time max_retries = 10 retry_interval = 30 # 每30秒重试一次 for _ in range(max_retries): scan_report = ecr_client.describe_image_scan_findings( repositoryName=registry, imageId={ 'imageTag': most_recent_image }, maxResults=1000 ) scan_status = scan_report['imageScanFindings']['imageScanStatus']['status'] if scan_status == 'COMPLETE': scan_findings = scan_report['imageScanFindings'].get('findings', []) pp.pprint(scan_findings) break time.sleep(retry_interval) else: print("扫描超时未完成")
其他可能的排查方向
- 镜像无漏洞:扫描完成后
findings仍为空列表,说明镜像未检测到任何漏洞,属于正常情况。 - 权限验证:确认你的IAM角色拥有
ecr:DescribeImageScanFindings权限(若能获取findingSeverityCounts,权限基本无问题,但可排查是否存在额外限制)。 - Boto3版本:确保使用最新稳定版Boto3,旧版本可能存在文档与实际返回不一致的情况。
内容的提问来源于stack exchange,提问作者Trevor Griffiths
相关产品推荐
相关产品推荐

