

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# AWS Config 合规包的疑难解答
<a name="troubleshooting-conformance-pack"></a>

检查以下问题，以帮助解决您在使用合规包时可能遇到的问题。

**Topics**
+ [合规性包的失败状态](#w2aac22c41b7)
+ [合规包中的悬挂规则](#w2aac22c41b9)

## 合规性包的失败状态
<a name="w2aac22c41b7"></a>

如果在创建、更新或删除合规包时收到指示操作失败的错误，则可以检查合规包的状态。

```
aws configservice describe-conformance-pack-status --conformance-pack-name MyConformancePack1
```

您应该可以看到类似于如下所示的输出内容。

```
"ConformancePackStatusDetails": [
    {
        "ConformancePackName": "ConformancePackName",
        "ConformancePackId": "ConformancePackId",
        "ConformancePackArn": "ConformancePackArn",
        "ConformancePackState": "CREATE_FAILED",
        "StackArn": "CloudFormation stackArn",
        "ConformancePackStatusReason": "Failure Reason",
        "LastUpdateRequestedTime": 1573865201.619,
        "LastUpdateCompletedTime": 1573864244.653
    }
]
```

检查 **ConformancePackStatusReason**，了解有关失败的信息。

**响应中有 stackArn 时**

如果错误消息不明确，或者由于内部错误造成失败，请转到 CloudFormation 控制台并执行以下操作：

1. 在输出中搜索 **stackArn**。

1. 选择 CloudFormation 堆栈的**事件**选项卡，并检查是否有失败的事件。

   状态原因指示合规包失败的原因。

**响应中没有 stackArn 时**

如果您在创建合规包时收到错误但状态响应中没有 stackArn，则可能是因为堆栈创建失败，CloudFormation 回滚并删除了堆栈。转到 CloudFormation 控制台并搜索处于**已删除**状态的堆栈。失败的堆栈可能在那里可用。CloudFormation 堆栈包含合规包名称。如果找到失败的堆栈，请选择 CloudFormation 堆栈的**事件**选项卡，并检查是否有失败的事件。

如果上述步骤都不起作用，以及是内部服务错误造成了失败，请重试操作或联系 [AWS 支持 中心](https://console.aws.amazon.com/support/home#/)。

## 合规包中的悬挂规则
<a name="w2aac22c41b9"></a>

部署合规包涉及在后台创建底层 AWS CloudFormation 堆栈，以部署合规包模板中的规则。这些规则是[与服务相关的规则](https://docs.aws.amazon.com/config/latest/developerguide/service-linked-awsconfig-rules.html)，不能在合规包之外更新或删除。

如果您对底层 CloudFormation 堆栈进行更改，则会导致合规包及其规则变得难以管理。这些难以管理的规则是*悬挂规则*。

**在 CloudFormation 堆栈和合规包之间移动**

您可以直接从 CloudFormation 控制台更新合规包模板中的规则名称。如果您直接从 CloudFormation 控制台更新模板，则不会更新已部署的合规包。

这种偏差会产生悬挂规则。如果您尝试从合规包中删除规则，则会收到类似以下内容的错误：

```
"An AWS service owns ServiceLinkedConfigRule. You do not have permissions to take action on this rule. (Service: AmazonConfig; Status Code: 400; Error Code: AccessDeniedException; Request ID: my-request-ID; Proxy: null)".
```

如果您尝试删除合规包，则无法删除悬挂规则，并会收到类似以下内容的错误：

```
"User: arn:aws:sts::111122223333:assumed-role/AWSServiceRoleForConfigConforms/AwsConfigConformsWorkflow is not authorized to perform: config:DeleteConfigRule on resource: my-dangling-rule
```

要修复这一问题，请执行以下步骤：

1. 删除堆栈。有关更多信息，请参阅《CloudFormation 用户指南》**中的[在 CloudFormation 控制台上删除堆栈](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-delete-stack.html)。

1. 使用 AWS Config 控制台或使用 [DeleteConformancePack](https://docs.aws.amazon.com/config/latest/APIReference/API_DeleteConformancePack.html) API 删除合规包。如果它是组织合规包，并且您使用的是管理账户或委托管理员账户，请使用 [DeleteOrganizationConformancePack](https://docs.aws.amazon.com/config/latest/APIReference/API_DeleteOrganizationConformancePack.html) API。

1. 使用合规包中悬挂规则的 Amazon 资源名称（ARN）联系 [AWS 支持 中心](https://console.aws.amazon.com/support/home#/)，以帮助清理您的账户。

为避免出现此问题，请记住以下最佳实践：
+ 切勿对合规包的 CloudFormation 堆栈进行任何直接更新。
+ 切勿尝试进行在合规包与其底层 CloudFormation 堆栈之间造成偏差的更改。
+ 无法修改[合规包的服务相关角色（SLR）](https://docs.aws.amazon.com/config/latest/developerguide/security-iam-awsmanpol.html#security-iam-awsmanpol-ConfigConformsServiceRolePolicy)。确保您正在更新的资源是 SLR 权限策略的一部分。

**已删除合规包的 CloudFormation 堆栈**

除非 CloudFormation 堆栈和合规包之间存在偏差，否则不建议直接从 CloudFormation 控制台删除合规包或其 CloudFormation 堆栈中的规则。

要解决此问题，请使用合规包中悬挂规则的 Amazon 资源名称（ARN）联系 [AWS 支持 中心](https://console.aws.amazon.com/support/home#/)，以帮助清理您的账户。

为避免出现此问题，请记住以下最佳实践：
+ 切勿删除合规包的底层 CloudFormation 堆栈。
+ 使用 [DeleteConformancePack](https://docs.aws.amazon.com/config/latest/APIReference/API_DeleteConformancePack.html) API 删除合规包。如果它是组织合规包，并且您使用的是管理账户或委托管理员账户，请使用 [DeleteOrganizationConformancePack](https://docs.aws.amazon.com/config/latest/APIReference/API_DeleteOrganizationConformancePack.html) API。