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

AWS ECR describe_image_scan_findings未返回详细findings问题求助

问题排查与解决

核心原因:镜像扫描未完成

ECR镜像扫描为异步执行流程,当你调用describe_image_scan_findings接口时,若扫描仍在进行中(状态为IN_PROGRESS),接口仅会返回findingSeverityCounts统计数据,不会返回详细的findings列表。只有当扫描状态变为COMPLETE时,才会返回完整的扫描详情。

解决步骤

  1. 先检查扫描状态
    在调用接口后,先通过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)
    
  2. 添加扫描等待逻辑(可选)
    若需要等待扫描完成后获取结果,可加入循环重试机制:

    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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 22:27:21