当我尝试为 AWS Organizations 创建或删除 AWS Config 规则时,我收到 CREATE_FAILED 或 DELETE_FAILED 错误。
简短描述
各种问题可能导致组织配置规则不起作用,包括以下示例:
要解决组织配置规则错误,请完成以下步骤:
- 查找成员账户规则的状态详细信息。
- 对规则失败的原因进行故障排除。
解决方法
**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI。
查找成员账户规则的状态详细信息
要查找成员账户规则的失败和成功状态详细信息,请运行 get-organization-config-rule-detailed-status 命令:
aws configservice get-organization-config-rule-detailed-status --organization-config-rule-name your-rule-name
**注意:**请将 your-rule-name 替换为您的组织配置规则名称。
查看输出中的 ErrorCode 和 ErrorMessage,以获取有关规则失败原因的详细信息。
对规则失败的原因进行故障排除
验证成员账户是否处于活动状态
要验证所有成员账户是否处于活动状态,请运行 list-accounts 命令:
aws organizations list-accounts --query 'Accounts[*].[Id, Status]' --output table
为成员账户配置 AWS Config
要为每个成员账户配置 AWS Config,请使用控制台、AWS CLI 或 AWS CloudFormation。为所有成员账户配置 AWS Config 后,运行 put-organization-config-rule 以再次部署该规则。
查看您的事件日志
打开 AWS CloudTrail 控制台,然后从导航窗格中选择 Event history(事件历史记录)。要筛选日志,请从下拉列表中选择 Event name(事件名称),然后在搜索字段中输入 PutOrganizationConfigRule 或 DeleteOrganizationConfigRule。查看筛选后的日志结果中是否存在 OrganizationAccessDeniedException 错误。
更新委派管理员成员账户
您必须从 AWS Organizations 管理账户或从委派管理员成员账户发起调用。如果您在这些账户之外发起调用(例如 PutOrganizationConfigRule API 或 DeleteOrganizationConfigRule API),则调用将失败。
要识别委派管理员成员账户,请运行 list-delegated administrators 命令:
aws organizations list-delegated-administrators --service-principal=config-multiaccountsetup.amazonaws.com
更新您的权限
如果您收到 OrganizationAccessDeniedException 错误,则您可能没有所需的权限。AWS Config 的 AWS Identity and Access Management (IAM) 角色必须包含以下权限才能创建和删除组织配置规则:
- PutConfigRule
- PutOrganizationConfigRule
- DeleteOrganizationConfigRule
有关详细信息,请参阅分配给 AWS Config 的 IAM 角色的权限。
查看错误消息
如果您收到 ResourceInUseException 错误,请查看错误消息以确定原因。
- 如果错误消息表明某个修复操作与规则相关联,请解决该修复操作。
- 如果错误消息表明规则状态不是 CREATE_SUCCESSFUL,请验证 AWS Config 成员账户的 IAM 角色是否包含 DeleteConfigRule 权限。
创建自定义组织配置规则
如果 AWS Lambda 函数资源策略不允许 AWS Config 服务主体调用该策略,请运行 add-permission 命令来提供权限:
aws lambda add-permission --function-name function-name --region region --action "lambda:InvokeFunction" --principal config.amazonaws.com --source-account source-account --statement-id Allow
**注意:**请将 function-name 替换为您的 Lambda 函数名称,将 region 替换为您的 AWS 区域,将 source-account 替换为管理账户 ID。
要为组织中的多个成员账户授予权限,请对每个成员账户运行此命令。请将 source-account 替换为每个成员账户 ID。
相关信息
为什么我的 AWS Config 规则不起作用?