我的 AWS Config 规则不起作用。如何解决此问题?
解决方法
导致托管 AWS Config 规则不起作用的问题有很多,包括权限、资源范围或配置更改项。要解决 AWS Config 规则不起作用的问题,请尝试以下问题排查步骤。
注意:如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请确保您正在运行最新版本的 AWS CLI。
一般 AWS Config 规则问题排查
- 验证配置记录器是否记录了规则所需的所有资源类型(例如,AWS::EC2::Instance)。
- 打开 AWS Config 控制台,然后从导航窗格中选择 Rules (规则)。如果 **Compliance (合规性)**字段指示 No results reported (未报告结果) 或 No resources in scope (范围内无资源),请参阅设置和激活 AWS 托管规则第 8 步。
- 如果未报告评估时间并且指示 Evaluations failed (评估失败),请查看 AWS CloudTrail 日志中的 PutEvaluations API 调用以查找报告的错误。
- 打开 AWS CloudTrail 控制台,然后从导航窗格中选择 Event history (事件历史记录)。要过滤日志,请从下拉列表中选择 Event source (事件来源),然后在搜索字段中输入 config.amazonaws.com。查看过滤的日志结果是否存在 **Access Denied (拒绝访问)**错误。
- 对于定期触发 AWS Config 规则,请访问 CloudTrail 控制台 Event history (事件历史记录) 控制面板以验证资源上的相关服务 API。
- 查看具体的资源配置和合规性时间表。确认生成配置项以反映使用基于配置更改的触发器对 AWS Config 规则进行的更改。
- 确认是否满足记录器角色权限要求。这些凭据用于通过 puteValuations API 来描述资源配置和发布合规性。
- 运行以下 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 语句以生成更多调试日志。
相关信息
为什么我无法创建或删除组织配置规则?