为什么我的 AWS Config 规则不起作用?

上次更新日期:2021 年 7 月 20 日

我的 AWS Config 规则不起作用。如何解决此问题?

解决方法

导致托管 AWS Config 规则不起作用的问题有很多,包括权限、资源范围或配置更改项。要解决 AWS Config 规则不起作用的问题,请尝试以下问题排查步骤。

注意:如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请确保您正在运行最新版本的 AWS CLI

一般 AWS Config 规则问题排查

  1. 验证配置记录器是否记录了规则所需的所有资源类型(例如,AWS::EC2::Instance)。
  2. 打开 AWS Config 控制台,然后从导航窗格中选择 Rules (规则)。如果 Compliance (合规性)字段指示 No results reported (未报告结果)No resources in scope (范围内无资源),请参阅设置和激活 AWS 托管规则第 8 步。
  3. 如果未报告评估时间并且指示 Evaluations failed (评估失败),请查看 AWS CloudTrail 日志中的 PutEvaluations API 调用以查找报告的错误
  4. 打开 AWS CloudTrail 控制台,然后从导航窗格中选择 Event history (事件历史记录)。要过滤日志,请从下拉列表中选择 Event source (事件来源),然后在搜索字段中输入 config.amazonaws.com。查看过滤的日志结果是否存在 Access Denied (拒绝访问)错误。
  5. 对于定期触发 AWS Config 规则,请访问 CloudTrail 控制台 Event history (事件历史记录) 控制面板以验证资源上的相关服务 API。
  6. 查看具体的资源配置合规性时间表。确认生成配置项以反映使用基于配置更改的触发器对 AWS Config 规则进行的更改。
  7. 确认是否满足记录器角色权限要求。这些凭据用于通过 puteValuations API 来描述资源配置和发布合规性。
  8. 运行以下 AWS CLI 命令:将 ConfigRuleName 替换为您的 AWS Config 规则名称,然后将 RegionID 替换为您的 AWS 区域。从输出中,查看 LasterRorMessage 值。
aws configservice describe-config-rule-evaluation-status --config-rule-names ConfigRuleName --region RegionID

自定义 AWS Config 规则问题排查

对于自定义 AWS Config 规则,除上述一般问题排查步骤外,还要验证以下内容:

“无法执行 lambda 函数”错误消息指示 AWS Config 服务没有调用 AWS Lambda 函数的权限。要解决此错误,请运行以下命令以授予所需的权限。将 function_name 替换为您的 Lambda 函数名称,将 RegionID 替换为您的 AWS 区域,将 AWS-accountID 替换为您的 AWS 账户 ID:

aws lambda add-permission --function-name function_name --region RegionID --statement-id allow_config --action lambda:InvokeFunction --principal config.amazonaws.com --source-account AWS-accountID

以下是 Lambda 函数的资源策略示例:

{
    "Version": "2012-10-17",
    "Id": "default",
    "Statement": [
        {
            "Sid": "allow_config",
            "Effect": "Allow",
            "Principal": {
                "Service": "config.amazonaws.com"
            },
            "Action": "lambda:InvokeFunction",
            "Resource": "lambda-function-arn",
            "Condition": {
                "StringEquals": {
                    "AWS:SourceAccount": "AWS-accountID"
                }
            }
        }
    ]
}

识别 PutEvaluations 事件的 User name (用户名) 值是否与 Lambda 函数名称匹配。查看 errorMessage 了解详细信息。

  • 如果 Lambda 函数用于运行代码的角色无权执行 config:PutEvaluations,则将权限添加到指定角色。
  • 如果权限正确,请查看 Lambda 函数代码是否存在任何引发的异常。有关更多详细信息,请查看 Amazon CloudWatch 日志组 (/aws/lambda/FunctionName) 中与 Lambda 函数关联的日志。在代码中添加 print 语句以生成更多调试日志。

这篇文章对您有帮助吗?


您是否需要账单或技术支持?