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

从AWS GuardDuty拉取发现异常:连接成功但无数据展示至页面

无法获取AWS GuardDuty发现的排查方案

问题背景

能成功连接AWS账户,但调用GuardDuty接口无法拉取到任何发现,无法在threatdetection.html页面展示数据,相关代码如下:

@app.route('/threatdetection')
@login_required
def guardduty_alerts():
   client = boto3.client('guardduty', aws_access_key_id=session['access_key'], 
   aws_secret_access_key=session['secret_key'], region_name='us-east-1')

    try:
       list_findings_response = client.list_findings(DetectorId=DETECTOR_ID)
       finding_ids = list_findings_response['FindingIds']

       if finding_ids:
          findings_response = client.get_findings(DetectorId=DETECTOR_ID, 
          FindingIds=finding_ids)
          findings = findings_response['Findings']
       else:
          findings = []

       return render_template('threatdetection.html', findings=findings)

    except botocore.exceptions.ClientError as e:
       print("Error getting findings:", e)
       return render_template('threatdetection.html', findings=[])

排查方向与解决办法

  • 权限不足
    确认IAM用户拥有guardduty:ListFindings和guardduty:GetFindings权限,可附加如下策略(替换占位符为实际值):

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "guardduty:ListFindings",
                    "guardduty:GetFindings"
                ],
                "Resource": "arn:aws:guardduty:us-east-1:你的账户ID:detector/你的探测器ID"
            }
        ]
    }
    
  • 区域不匹配
    代码指定了us-east-1区域,但GuardDuty探测器可能部署在其他区域。可通过AWS控制台查看探测器所在区域,或添加代码确认:

    detectors = client.list_detectors()
    print("可用探测器ID:", detectors['DetectorIds'])
    

    匹配区域后修改代码中的region_name参数。

  • 无符合条件的发现
    list_findings默认仅返回最近30天的发现,可添加时间范围参数拉取更久的记录:

    list_findings_response = client.list_findings(
        DetectorId=DETECTOR_ID,
        FindingCriteria={
            'Criterion': {
                'updatedAt': {
                    'GreaterThanOrEqual': '2024-01-01T00:00:00Z'
                }
            }
        }
    )
    

    同时直接在AWS GuardDuty控制台确认是否存在发现记录。

  • 代码语法错误
    检查boto3.client初始化行,原代码末尾缺少右括号,修正后:

    client = boto3.client('guardduty', aws_access_key_id=session['access_key'], 
    aws_secret_access_key=session['secret_key'], region_name='us-east-1')
    
  • 会话密钥验证
    确认session['access_key']和session['secret_key']对应有权限的IAM用户,避免会话存储的密钥与预期不符。

调试建议

在list_findings_response后添加打印语句,查看返回结果:

print("List findings返回值:", list_findings_response)

若返回空FindingIds,说明无符合条件的发现;若报错,根据错误信息定位权限或区域问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 16:46:13