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

2 分钟阅读
0

我的 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 语句以生成更多调试日志。

相关信息

为什么我无法创建或删除组织配置规则?

AWS 官方
AWS 官方已更新 3 年前