

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

# AWS Control Tower 中的日志记录和监控
<a name="logging-and-monitoring"></a>

通过监控，您可以对潜在事件进行规划和响应。监控活动的结果存储在日志文件中。因此，日志记录和监控是密切相关的概念，也是 AWS Control Tower 架构完善的重要组成部分。

设置登录区时，创建的共享账户之一就是*日志存档*账户。它专门用于集中收集所有日志，包括所有共享账户和成员账户的日志。日志文件存储在 Amazon S3 存储桶中。通过这些日志文件，管理员和审核员可查看已发生的操作和事件。

最佳做法是，您应将AWS设置的所有部分中的监控数据收集到日志中，以便在发生多点故障时更轻松地进行调试。AWS提供了多种工具来监控登录区中的资源和活动。

例如，控件的状态会持续受到监控。您可以在 AWS Control Tower 控制台中一目了然地查看它们的状态，也可以通过 [AWS 控制塔 APIs](https://docs.aws.amazon.com//controltower/latest/APIReference/API_Operations.html)以编程方式查看它们的状态。您在 Account Factory 中预置的账户的运行状况和状态也会持续受到监控。

**从“活动”页面查看记录的操作**

在 AWS Control Tower 控制台中，**活动**页面概述了 AWS Control Tower 管理账户的操作。要导航到 AWS Control Tower 控制台的**活动**页面，请从左侧导航中选择**活动**。

活动页面中显示的**活动**与 AWS Control Tower AWS CloudTrail事件日志中报告的活动相同，但它们以表格形式显示。要了解有关特定活动的更多信息，请从表中选择该活动，然后选择**查看详细信息**。

您可以在日志存档文件中查看成员账户操作和事件。

以下各部分更详细地介绍了 AWS Control Tower 中的监控和日志记录：

**主题**
+ [用于监控的集成工具](monitoring-overview.md)
+  [使用记录 AWS Control Tower 操作 AWS CloudTrail](logging-using-cloudtrail.md)
+ [Control Tower 中的生命周期事件](lifecycle-events.md)
+ [将AWS用户通知与AWS Control Tower](using-user-notifications.md)

# 关于 AWS Control Tower 中的日志记录
<a name="about-logging"></a>

AWS Control Tower 通过与和的集成自动完成操作AWS CloudTrail和事件的记录AWS Config，并将它们记录在中 CloudWatch。将记录所有操作，包括来自 AWS Control Tower 管理账户和贵组织成员账户的操作。可在控制台的**活动**页面上查看管理账户操作和事件。您可以在日志存档文件中查看成员账户操作和事件。

**组织级别跟踪**

当你设置着陆区时，AWS Control Tower 会设置 CloudTrail 一条新的路线。它是*组织级别跟踪*，这意味着它会记录管理账户和组织中所有成员账户的所有事件。此功能依赖于*可信访问*，为管理账户授予对每个成员账户创建跟踪的权限。

有关 AWS Control Tower 和 CloudTrail 组织跟踪的更多信息，请参阅[为组织创建跟踪](https://docs.aws.amazon.com//awscloudtrail/latest/userguide/creating-trail-organization.html)。

**注意**  
在登录区版本 3.0 之前的 AWS Control Tower 版本中，AWS Control Tower 在每个账户中创建了一个成员账户跟踪。当你更新到 3.0 版本时，你的 CloudTrail 跟踪将变成组织跟踪。有关在轨迹之间移动的最佳实[践，请参阅*《CloudTrail 用户指南》*中的更改轨迹的最佳](https://docs.aws.amazon.com//awscloudtrail/latest/userguide/creating-trail-organization.html#creating-an-organizational-trail-best-practice)实践。

当您向 AWS Control Tower 注册账户时，您的账户将受 AWS Control Tower 组织的AWS CloudTrail跟踪管理。如果您已在该账户中部署了 CloudTrail 跟踪，则可能会看到重复的费用，除非您在将该账户注册到 AWS Control Tower 之前删除该账户的现有跟踪。

**注意**  
更新到登录区版本 3.0 时，AWS Control Tower 会代表您删除已注册账户中的账户级别跟踪（AWS Control Tower 已创建的）。您现有的账户级别日志文件将保留在其 Amazon S3 存储桶中。

# 审计账户中的 Amazon S3 存储桶策略
<a name="logging-s3-audit-bucket"></a>

在 AWS Control Tower 中，只有当请求来自您的组织或组织单位 (OU) 时，AWS服务才能访问您的资源。任何写入权限都必须满足一个 `aws:SourceOrgID` 条件。

您可以在 Amazon S3 存储桶策略的条件元素中使用 `aws:SourceOrgID` 条件键，并将其值设置为您的**组织 ID**。此条件可确保 CloudTrail 只有代表组织内的账户才能将日志写入您的 S3 存储桶；它可以防止组织外部的 CloudTrail 日志写入您的 AWS Control Tower S3 存储桶。

此策略不会影响您现有工作负载的功能。该策略如以下示例所示。

```
S3AuditBucketPolicy:
    Type: AWS::S3::BucketPolicy
    Properties:
      Bucket: !Ref S3AuditBucket
      PolicyDocument:
        Version: 2012-10-17		 	 	 
        Statement:
          - Sid: AllowSSLRequestsOnly
            Effect: Deny
            Principal: '*'
            Action: s3:*
            Resource:
             - !Sub "arn:${AWS::Partition}:s3:::${S3AuditBucket}"
             - !Sub "arn:${AWS::Partition}:s3:::${S3AuditBucket}/*"
            Condition:
              Bool:
                aws:SecureTransport: false
          - Sid: AWSBucketPermissionsCheck
            Effect: Allow
            Principal:
              Service:
                - cloudtrail.amazonaws.com
                - config.amazonaws.com
            Action: s3:GetBucketAcl
            Resource:
              - !Sub "arn:${AWS::Partition}:s3:::${S3AuditBucket}"
          - Sid: AWSConfigBucketExistenceCheck
            Effect: Allow
            Principal:
              Service:
                - cloudtrail.amazonaws.com
                - config.amazonaws.com
            Action: s3:ListBucket
            Resource:
              - !Sub "arn:${AWS::Partition}:s3:::${S3AuditBucket}"
          - Sid: AWSBucketDeliveryForConfig
            Effect: Allow
            Principal:
              Service:
                - config.amazonaws.com
            Action: s3:PutObject
            Resource:
              - Fn::Join:
                  - ""
                  -
                    - !Sub "arn:${AWS::Partition}:s3:::"
                    - !Ref "S3AuditBucket"
                    - !Sub "/${AWSLogsS3KeyPrefix}/AWSLogs/*/*"
            Condition:
              StringEquals:
                aws:SourceOrgID: !Ref OrganizationId
          - Sid: AWSBucketDeliveryForOrganizationTrail
            Effect: Allow
            Principal:
              Service:
                - cloudtrail.amazonaws.com
            Action: s3:PutObject
            Resource: !If [IsAccountLevelBucketPermissionRequiredForCloudTrail,
                [!Sub "arn:${AWS::Partition}:s3:::${S3AuditBucket}/${AWSLogsS3KeyPrefix}/AWSLogs/${Namespace}/*", !Sub "arn:${AWS::Partition}:s3:::${S3AuditBucket}/${AWSLogsS3KeyPrefix}/AWSLogs/${OrganizationId}/*"],
                !Sub "arn:${AWS::Partition}:s3:::${S3AuditBucket}/${AWSLogsS3KeyPrefix}/AWSLogs/*/*"]
            Condition:
              StringEquals:
            aws:SourceOrgID: !Ref OrganizationId
```

有关此条件键的更多信息，请参阅 IAM 文档和 IAM 博客文章，标题为 “*对访问您的资源的AWS服务使用可扩展的控制*”。

# 用于监控的集成工具
<a name="monitoring-overview"></a>

监控是维护 AWS Control Tower 和其他AWS解决方案的可靠性、可用性和性能的重要组成部分。AWS提供了以下监控工具，用于监视 AWS Control Tower，在出现问题时进行报告，并在适当时自动采取措施：
+ *Amazon* 会实时 CloudWatch监控您的AWS资源和您运行AWS的应用程序。您可以收集和跟踪指标，创建自定义的控制面板，以及设置警报以在指定的指标达到您指定的阈值时通知您或采取措施。例如，您可以 CloudWatch 跟踪您的 Amazon EC2 实例的 CPU 使用率或其他指标，并在需要时自动启动新实例。有关更多信息，请参阅 [Amazon CloudWatch 用户指南](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/)。
+ *Amazon CloudWatch * Events 提供近乎实时的系统事件流，这些事件描述了AWS资源的变化。 CloudWatch 事件支持事件驱动的自动计算，因为您可以编写规则来监视某些事件，并在这些事件发生时在其他AWS服务中触发自动操作。有关更多信息，请参阅 [Amazon Ev CloudWatch ents 用户指南](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/)。
+ *Amazon Lo CloudWatch gs* 使您能够监控、存储和访问来自亚马逊 EC2 实例和其他来源的日志文件。 CloudTrail CloudWatch 日志可以监视日志文件中的信息，并在达到特定阈值时通知您。您还可以在高持久性存储中检索您的日志数据。有关更多信息，请参阅 [Amazon CloudWatch 日志用户指南](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/)。
+ *AWS CloudTrail*捕获由您的账户或代表您的AWS账户进行的 API 调用和相关事件，并将日志文件传输到您指定的 Amazon S3 存储桶。您可以识别哪些用户和帐户拨打了电话AWS、发出呼叫的源 IP 地址以及呼叫发生的时间。

**提示：**您可以通过 “日志和 CloudWatch CloudWatch 日志见解” 查看和查询账户 CloudTrail 的活动。此活动包括 AWS Control Tower 生命周期事件。 CloudWatch 日志的功能使您可以执行比平时更精确、更精确的查询。 CloudTrail

有关更多信息，请参阅 [使用记录 AWS Control Tower 操作 AWS CloudTrail](logging-using-cloudtrail.md)。

# 使用记录 AWS Control Tower 操作 AWS CloudTrail
<a name="logging-using-cloudtrail"></a>

AWS Control Tower 与 AWS CloudTrail一项服务集成，该服务提供用户、角色或 AWS 服务在 AWS Control Tower 中执行的操作的记录。 CloudTrail 将 AWS Control Tower 的操作捕获为事件。如果您创建了跟踪，则可以允许将 CloudTrail 事件持续传输到 Amazon S3 存储桶，包括 AWS Control Tower 的事件。

如果您不配置跟踪记录，则仍可在 CloudTrail 控制台的 **Event history**（事件历史记录）中查看最新事件。通过收集的信息 CloudTrail，您可以确定向 AWS Control Tower 发出的请求、发出请求的 IP 地址、谁提出了请求、何时提出请求以及其他详细信息。

要了解更多信息 CloudTrail，包括如何配置和启用它，请参阅《[AWS CloudTrail 用户指南》](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/)。

## AWS Control Tower 中的信息 CloudTrail
<a name="scontrol-tower-info-in-cloudtrail"></a>

CloudTrail 在您创建 AWS 账户时已在您的账户上启用。当 AWS Control Tower 中出现支持的事件活动时，该活动会与其他 AWS 服务 CloudTrail 事件一起记录在**事件历史**记录中。您可以在自己的 AWS 账户中查看、搜索和下载最近发生的事件。有关更多信息，请参阅[使用事件历史记录查看 CloudTrail 事件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html)。

**注意**  
在登录区版本 3.0 之前的 AWS Control Tower 版本中，AWS Control Tower 创建了一个成员账户跟踪。当您更新到 3.0 版本时，您的 CloudTrail 跟踪将更新为组织跟踪。有关在跟踪之间移动的最佳实践，请参阅《 CloudTrail 用户指南》中的[创建组织跟踪](https://docs.aws.amazon.com//awscloudtrail/latest/userguide/creating-trail-organization.html#creating-an-organizational-trail-best-practice)。

**推荐：创建跟踪**

要持续记录您的 AWS 账户中的事件，包括 AWS Control Tower 的事件，请创建跟踪。*跟踪*允许 CloudTrail 将日志文件传输到 Amazon S3 存储桶。预设情况下，在控制台中创建跟踪时，此跟踪应用于所有 AWS 区域。跟踪记录 AWS 分区中所有区域的事件，并将日志文件传送到您指定的 Amazon S3 存储桶。此外，您可以配置其他 AWS 服务，以进一步分析和处理 CloudTrail 日志中收集的事件数据。有关更多信息，请参阅下列内容：
+ [创建跟踪概述](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html)
+  [为创建跟踪做好准备](https://docs.aws.amazon.com//awscloudtrail/latest/userguide/creating-an-organizational-trail-prepare.html)
+  [管理 CloudTrail成本](https://docs.aws.amazon.com//awscloudtrail/latest/userguide/cloudtrail-trail-manage-costs.html)
+ [CloudTrail 支持的服务和集成](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-aws-service-specific-topics.html#cloudtrail-aws-service-specific-topics-integrations)
+ [配置 Amazon SNS 通知 CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/getting_notifications_top_level.html)
+ [接收来自多个区域的 CloudTrail 日志文件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/receive-cloudtrail-log-files-from-multiple-regions.html)和[接收来自多个账户的 CloudTrail日志文件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-receive-logs-from-multiple-accounts.html)

AWS Control Tower 将以下操作作为事件 CloudTrail 记录在日志文件中：

**公众 APIs**
+ 要获取 AWS Control Tower 公众的完整列表 APIs 以及每位公众的详细信息，请参阅 [AWS Control Tower API 参考](https://docs.aws.amazon.com//controltower/latest/APIReference/Welcome.html)。对这些公众的通话 APIs 由记录下来 AWS CloudTrail。

**其他 APIs**
+ `SetupLandingZone`
+ `UpdateAccountFactoryConfig`
+ `ManageOrganizationalUnit`
+ `CreateManagedAccount`
+ `GetLandingZoneStatus`
+ `GetHomeRegion`
+ `ListManagedAccounts`
+ `DescribeManagedAccount`
+ `DescribeAccountFactoryConfig`
+ `DescribeGuardrailForTarget`
+ `DescribeManagedOrganizationalUnit`
+ `ListEnabledGuardrails`
+ `ListGuardrailViolations`
+ `ListGuardrails`
+ `ListGuardrailsForTarget`
+ `ListManagedAccountsForGuardrail`
+ `ListManagedAccountsForParent`
+ `ListManagedOrganizationalUnits`
+ `ListManagedOrganizationalUnitsForGuardrail`
+ `GetGuardrailComplianceStatus`
+ `DescribeGuardrail`
+ `ListDirectoryGroups`
+ `DescribeSingleSignOn`
+ `DescribeCoreService`
+ `GetAvailableUpdates`

每个事件或日志条目都包含有关生成请求的人员信息。身份信息有助于您确定以下内容：
+ 请求是使用根证书还是 AWS Identity and Access Management (IAM) 用户凭证发出。
+ 请求是使用角色还是联合用户的临时安全凭证发出的。
+ 请求是否由其他 AWS 服务发出。
+ 请求是因访问被拒而被拒绝还是已成功处理。

有关更多信息，请参阅 [CloudTrail userIdentity 元素](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-user-identity.html)。

## 示例：AWS Control Tower 日志文件条目
<a name="understanding-service-name-entries"></a>

 跟踪是一种配置，允许将事件作为日志文件传输到您指定的 Amazon S3 存储桶。 CloudTrail 日志文件包含一个或多个日志条目。事件代表来自任何来源的单个请求，包括有关请求的操作、操作的日期和时间、请求参数等的信息。 CloudTrail 事件在日志文件中不按任何特定顺序出现。

以下示例显示了一个 CloudTrail 日志条目，该条目显示了 `SetupLandingZone` AWS Control Tower 事件的典型日志文件条目的结构，包括发起该操作的用户的身份记录。

```
{
  "eventVersion": "1.05",
  "userIdentity": {
    "type": "AssumedRole",
    "principalId": "AIDACKCEVSQ6C2EXAMPLE:backend-test-assume-role-session",
    "arn": "arn:aws:sts::76543EXAMPLE;:assumed-role/AWSControlTowerTestAdmin/backend-test-assume-role-session",
    "accountId": "76543EXAMPLE",
    "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
    "sessionContext": {
      "attributes": {
        "mfaAuthenticated": "false",
        "creationDate": "2018-11-20T19:36:11Z"
      },
      "sessionIssuer": {
        "type": "Role",
        "principalId": "AIDACKCEVSQ6C2EXAMPLE",
        "arn": "arn:aws:iam::AKIAIOSFODNN7EXAMPLE:role/AWSControlTowerTestAdmin",
        "accountId": "AIDACKCEVSQ6C2EXAMPLE",
        "userName": "AWSControlTowerTestAdmin"
      }
    }
  },
  "eventTime": "2018-11-20T19:36:15Z",
  "eventSource": "controltower.amazonaws.com",
  "eventName": "SetupLandingZone",
  "awsRegion": "us-east-1",
  "sourceIPAddress": "AWS Internal",
  "userAgent": "Coral/Netty4",
  "errorCode": "InvalidParametersException",
  "errorMessage": "Home region EU_CENTRAL_1 is unsupported",
  "requestParameters": {
    "homeRegion": "EU_CENTRAL_1",
    "logAccountEmail": "HIDDEN_DUE_TO_SECURITY_REASONS",
    "sharedServiceAccountEmail": "HIDDEN_DUE_TO_SECURITY_REASONS",
    "securityAccountEmail": "HIDDEN_DUE_TO_SECURITY_REASONS",
    "securityNotificationEmail": "HIDDEN_DUE_TO_SECURITY_REASONS"
  },
  "responseElements": null,
  "requestID": "96f47b68-ed5f-4268-931c-807cd1f89a96",
  "eventID": "4ef5cf08-39e5-4fdf-9ea2-b07ced506851",
  "eventType": "AwsApiCall",
  "recipientAccountId": "76543EXAMPLE"
}
```

# 使用监控资源变化 AWS Config
<a name="monitoring-with-config"></a>

AWS C AWS Config ontrol Tower 启用所有注册账户，因此它可以通过侦探控制来监控合规性、记录资源变化并将资源变更日志传送到日志存档账户。

**如果您的 landing zone 版本低于 3.0**：对于您注册的账户， AWS Config 记录账户运营所在的所有地区的资源的所有更改。每项更改都建模为配置项（CI），其中包含资源标识符、区域、记录每项更改的日期以及更改是与已知资源还是新发现的资源相关等信息。

**如果您的登录区版本是 3.0 或更高版本**：AWS Control Tower 将全局资源（例如 IAM 用户、组、角色和客户托管策略）的记录仅限于您的主区域。并非每个区域都存储全球资源变更的副本。资源记录的这种限制符合 AWS Config [最佳实践](https://aws.amazon.com//blogs/mt/aws-config-best-practices/)。[全球资源的完整列表](https://docs.aws.amazon.com//config/latest/developerguide/select-resources.html)可在 AWS Config 文档中找到。
+ 要了解更多信息 AWS Config，请参阅[AWS Config 工作原理](https://docs.aws.amazon.com//config/latest/developerguide/how-does-config-work.html)。
+ 有关 AWS Config 可以支持的资源列表，请参阅[支持的资源类型](https://docs.aws.amazon.com//config/latest/developerguide/resource-config-reference.html)。
+ 要了解如何在 AWS Control Tower 环境中自定义资源跟踪，请参阅标题为 “在 AWS Cont [rol Tower 中自定义 AWS Config 资源跟踪](https://aws.amazon.com/blogs//mt/customize-aws-config-resource-tracking-in-aws-control-tower-environment)” 的博客文章。

AWS Control Tower 在所有注册账户中设置了 AWS Config 配送渠道。通过此传送渠道，它会记录日志存档账户 AWS Config 中记录的所有更改，这些更改存储在亚马逊简单存储服务存储桶中的文件夹中。

# 在 AWS Control Tower 中管理 AWS Config 成本
<a name="config-costs"></a>

本节介绍如何 AWS Config 记录您的 AWS Control Tower 账户中的资源变更并向您开具账单。这些信息可以帮助您了解在使用 AWS Control Tower 时如何管理与 AWS Config之相关的成本。AWS Control Tower 不会增加任何额外费用。

**注意**  
 **如果您的着陆区域版本为 3.0 或更高版本**：AWS Control Tower 将全球资源（例如 IAM 用户、群组、角色和客户管理的策略）的 AWS Config 记录仅限于您的主区域。因此，这一部分的某些信息可能不适用于您的登录区。

AWS Config 旨在将账户运营所在的每个区域中每项资源的每项更改记录为配置项目 (CI)。 AWS Config 根据它生成的每个配置项目向您开具账单。

**如何 AWS Config 运作**

AWS Config 分别记录每个区域的资源。某些全局资源（如 IAM 角色）在每个区域记录一次。例如，如果您在五个区域运营的注册账户中创建了一个新的 IAM 角色，则 AWS Config 会生成五个 CIs，每个区域一个。其他全局资源（如 Route 53 托管区）在所有区域只记录一次。例如，如果您在已注册的账户中创建一个新的 Route 53 托管区，则无论为该账户选择了多少个区域， AWS Config 都会生成一个 CI。有关可帮助您区分这些类型的资源的列表，请参阅 [同一资源被记录多次](monitoring-with-config.md#duplicate-configuration-items)。

**注意**  
当 AWS Control Tower 与之合作时 AWS Config，一个区域可能受 AWS Control Tower 管辖，也可以不受管辖，如果账户在该区域运营，则 AWS Config 仍会记录更改。

**AWS Config 检测资源中的两种关系**

AWS Config 区分了资源之间的*直接*关系和*间接*关系。如果一项资源在另一项资源的 **Describe** API 调用中被返回，这些资源将被记录为直接关系。当您更改与另一种资源有直接关系的资源时， AWS Config 不会为这两个资源创建 CI。

例如，如果您创建一个 Amazon EC2 实例，而 API 要求您创建一个网络接口，则 AWS Config 就会认为该 Amazon EC2 实例与网络接口有直接关系。因此，仅 AWS Config 生成一个 CI。

AWS Config 记录属于*间接*关系的资源关系的单独更改。例如，如果您创建一个安全组并添加属于安全组的关联 Amazon EC2 实例，则 AWS Config 会生成两个 CI。

有关直接关系和间接关系的更多信息，请参阅[什么是与资源的直接关系和间接关系？](https://docs.aws.amazon.com//config/latest/developerguide/faq.html#faq-0)

你可以在 AWS Config 文档[中找到资源关系列表](https://docs.aws.amazon.com//config/latest/developerguide/resource-config-reference.html)。

## 查看已注册账户的 AWS Config 记录器数据
<a name="querying-config"></a>

AWS Config 已与集成， CloudWatch 因此您可以在仪表板 AWS Config CIs 中查看。有关更多信息，请参阅标题为 “[AWS Config 支持 Amazon CloudWatch 指标](https://aws.amazon.com/about-aws/whats-new/2022/05/aws-config-supports-amazon-cloudwatch-metrics)” 的博客文章。

通过编程方式，要查看 AWS Config 数据，您可以使用 AWS CLI，也可以使用其他 AWS 工具。

### 查询特定资源上的 AWS Config 记录器数据
<a name="querying-resources-using-the-cli"></a>

您可以使用 C AWS LI 来检索资源的最新更改列表。

**资源历史记录命令：**
+ `aws configservice get-resource-config-history --resource-type RESOURCE-TYPE --resource-id RESOURCE-ID --region REGION`

要了解更多信息，请参阅 [`get-config-history` 的 API 文档](https://docs.aws.amazon.com//cli/latest/reference/configservice/get-resource-config-history.html)。

### 使用 Quick 可视化 AWS Config 数据
<a name="visualize-config-data-with-quicksight"></a>

您可以对整个组织中记录的资源进行 AWS Config 可视化和查询。有关更多信息，请参阅 [Config 资源合规控制面板](https://catalog.workshops.aws/awscid/en-US/dashboards/additional/config-resource-compliance-dashboard)和[使用 Amazon Athena 和 Quick 可视化 AWS Config 数据](https://aws.amazon.com/blogs/mt/visualizing-aws-config-data-using-amazon-athena-and-amazon-quicksight/)。

## AWS Config 在 AWS Control Tower 中进行故障排除
<a name="troubleshooting-config"></a>

本节提供有关您在使用 AWS Config AWS Control Tower 时可能遇到的一些问题的信息。

### AWS Config 成本高
<a name="high-config-costs"></a>

如果您的工作流程包括频繁创建、更新或删除资源的流程，或者如果它处理大量资源，则该工作流可能会生成大量资源 CIs。如果您在非生产账户中运行这些流程，请考虑取消注册账户。您可能需要手动停用该帐户的 AWS Config 录制器。

**注意**  
取消账户注册后，AWS Control Tower 无法对该账户中的资源实施侦探控制或记录账户事件（例如 AWS Config 活动）。

有关更多信息，请参阅[取消管理已注册的账户](https://docs.aws.amazon.com//controltower/latest/userguide/unmanage-account.html)。要了解如何停用 AWS Config 录制器，请参阅[管理配置记录器](https://docs.aws.amazon.com//config/latest/developerguide/stop-start-recorder.html)。

### 同一资源被记录多次
<a name="duplicate-configuration-items"></a>

检查资源是否为[全局资源](https://docs.aws.amazon.com//config/latest/developerguide/select-resources.html)。对于 3.0 版之前的 AWS Control Tower 着陆区， AWS Config 可以为每个运营区域记录一次某些全球资源。 AWS Config 例如，如果 AWS Config 在八个区域上启用，则每个角色将被记录八次。

**对于每个运营区域，以下资源 AWS Config 仅记录一次：**
+ `AWS::IAM::Group` 
+ `AWS::IAM::Policy` 
+ `AWS::IAM::Role` 
+  `AWS::IAM::User`

**其他全局资源仅被记录一次。以下是一些被记录一次的资源示例：**
+ `AWS::Route53::HostedZone`
+ `AWS::Route53::HealthCheck`
+ `AWS::ECR::PublicRepository`
+ `AWS::GlobalAccelerator::Listener`
+ `AWS::GlobalAccelerator::EndpointGroup`
+ `AWS::GlobalAccelerator::Accelerator`

### AWS Config 没有记录资源
<a name="resource-not-recorded"></a>

某些资源与其他资源存在依赖关系。这些关系可以是*直接*的，也可以是*间接*的。您可以在[AWS Config 常见问题解答](https://docs.aws.amazon.com//config/latest/developerguide/faq.html#faq-2)中找到已弃用的间接关系列表。

# Control Tower 中的生命周期事件
<a name="lifecycle-events"></a>

AWS Control Tower 记录的某些事件是*生命周期事件*。生命周期事件的目的是标记某些更改资源状态的 AWS Control Tower 操作的*完成*。生命周期事件适用于 AWS Control Tower 创建或管理的资源，例如与组织单元（OU）或账户相关的登录区、基准或控件。

**AWS Control Tower 生命周期事件的功能**
+ 对于每个生命周期事件，事件日志均显示发端 Control Tower 操作是成功完成，还是失败。
+ AWS CloudTrail 自动将每个生命周期事件记录为*非 API AWS 服务事件*。有关更多信息，请参阅[《 AWS CloudTrail 用户指南》。](https://docs.aws.amazon.com//awscloudtrail/latest/userguide/non-api-aws-service-events.html)
+ 每个生命周期事件还会发送到亚马逊 EventBridge 和亚马逊 CloudWatch 活动服务。**注意：**要在中接收生命周期事件 EventBridge，您必须有一个启用了日志记录的活动 AWS CloudTrail 跟踪。有关通过交付的 AWS 服务事件的更多信息 AWS CloudTrail，请参阅亚马逊 EventBridge 用户指南 CloudTrail中的[通过 AWS 交付的 AWS 服务事件](https://docs.aws.amazon.com//eventbridge/latest/userguide/eb-service-event-cloudtrail.html)。

**AWS Control Tower 中的生命周期事件有两项主要优势：**
+ 由于生命周期事件记录了 AWS Control Tower 操作的完成，因此您可以根据生命周期 CloudWatch 事件的状态创建可触发自动化工作流程后续步骤的 Amazon EventBridge 规则或 Amazon Events 规则。
+ 日志提供了其他详细信息，以帮助管理员和审核员查看组织中的某些类型的活动。

**生命周期事件的工作原理**

 AWS Control Tower 依赖多项服务来实施其操作。因此，只有在一系列操作完成后，才会记录每个生命周期事件。例如，当您对某个 OU 启用控件时，AWS Control Tower 会启动一系列子步骤以实施该请求。整个子步骤系列的最终结果将作为生命周期事件的状态记录在日志中。
+ 如果每个基础子步骤都成功完成，则生命周期事件状态将记录为 **Succeeded (已成功)**。
+ 如有任何基础子步骤未成功完成，则生命周期事件状态将记录为 **Failed (已失败)**。

每个生命周期事件都包含一个记录的时间戳，显示 AWS Control Tower 操作的启动时间，以及另一个时间戳，显示生命周期事件的完成时间，同时标记成功或失败。

**在 Control Tower 中查看生命周期事件**

您可以从 AWS Control Tower 控制面板的**活动**页面查看生命周期事件。
+ 要导航到 **Activities (活动)** 页面，请从左侧导航窗格中选择 **Activities (活动)**。
+ 要获取有关特定事件的更多详细信息，请选择该事件，然后选择右上角的 **View details (查看详细信息)** 按钮。

 有关如何将 AWS Control Tower 生命周期事件集成到工作流中的更多信息，请参阅博客文章[使用生命周期事件跟踪 AWS Control Tower 操作并触发自动化工作流](https://aws.amazon.com//blogs/mt/using-lifecycle-events-to-track-aws-control-tower-actions-and-trigger-automated-workflows/)。

** CreateManagedAccount 和 UpdateManagedAccount生命周期事件的预期行为**

 当您在 AWS Control Tower 中创建账户或注册账户时，这两项操作会调用相同的内部 API。如果在此过程中出现错误，则通常发生在账户创建但尚未完全预置之后。当您在错误发生后重新尝试创建账户或尝试更新预置产品时，AWS Control Tower 会发现账户已经存在。

由于账户存在，AWS Control Tower 会在重试请求结束时记录 `UpdateManagedAccount` 生命周期事件，而不是 `CreateManagedAccount` 生命周期事件。由于该错误，您可能希望看到另一个 `CreateManagedAccount` 事件。但是，`UpdateManagedAccount` 生命周期事件是预期和期望的行为。

 如果您计划使用自动方法在 AWS Control Tower 中创建账户或将账户注册到 AWS Control Tower，请编程 Lambda 函数以查找**UpdateManagedAccount**生命周期事件和**CreateManagedAccount**生命周期事件。

**生命周期事件名称**

每个生命周期事件的命名使其与最初的 AWS Control Tower 操作相对应，该操作也由 AWS 记录 CloudTrail。因此，例如，由 AWS Control Tower 事件发起的生命周期`CreateManagedAccount` CloudTrail 事件被命名为`CreateManagedAccount`。

以下列表中的每个名称都是一条指向记录详细信息（`JSON` 格式）示例的链接。这些示例中显示的其他详细信息取自 Amazon CloudWatch 事件日志。

虽然 `JSON` 不支持注释，但为了便于解释，还是在示例中添加了一些注释。注释显示在示例的右侧，前面带有“//”。

在这些示例中，某些账户名称和组织名称被遮盖。`accountId` 始终是由 12 个数字组成的序列，在示例中已替换为“xxxxxxxxxxxx”。`organizationalUnitID` 是由字母和数字组成的唯一字符串。它的形式在示例中保留下来。
+ [`CreateManagedAccount`](#create-managed-account)：该日志记录 AWS Control Tower 是否成功完成了使用 Account Factory 创建和预置新账户的每项操作。
+ [`UpdateManagedAccount`](#update-managed-account)：该日志记录 AWS Control Tower 是否成功完成了更新与您之前使用 Account Factory 创建的账户相关联的预置产品的每项操作。
+ [`EnableGuardrail`](#enable-control)：日志记录 AWS Control Tower 是否成功完成了在 OU 上启用控制的所有操作。
+ [`DisableGuardrail`](#disable-control)：日志记录 AWS Control Tower 是否成功完成了禁用 OU 控件的所有操作。
+ [`SetupLandingZone`](#setup-landing-zone)：该日志记录 AWS Control Tower 是否成功完成了设置登录区的每项操作。
+ [`UpdateLandingZone`](#update-landing-zone)：该日志记录 AWS Control Tower 是否成功完成了更新现有登录区的每项操作。
+ [`RegisterOrganizationalUnit`](#register-organizational-unit)：该日志记录 AWS Control Tower 是否成功完成了对 OU 启用其监管功能的每项操作。
+ [`DeregisterOrganizationalUnit`](#deregister-organizational-unit)：该日志记录 AWS Control Tower 是否成功完成了对 OU 禁用其监管功能的每项操作。
+ [`PrecheckOrganizationalUnit`](#precheck-organizational-unit)：该日志记录 AWS Control Tower 是否检测到了任何会阻止**扩展监管**操作成功完成的资源。
+ [`EnableBaseline`](#enable-baseline-lfc)：该日志记录 AWS Control Tower 是否成功完成了在 OU 下目标成员账户上启用新基准的每一项操作。可以使用 `EnableBaseline` API 或控制台启动该启用操作。
+ [`ResetEnabledBaseline`](#reset-enabled-baseline-lfc)：该日志记录 AWS Control Tower 是否成功完成了在 OU 下目标成员账户上重置现有已启用基准的每一项操作。可以使用 `ResetEnabledBaseline` API 或控制台启动该重置操作。
+ [`UpdateEnabledBaseline`](#update-enabled-baseline-lfc)：该日志记录 AWS Control Tower 是否成功完成了在 OU 下目标成员账户上更新现有已启用基准的每一项操作。可以使用 `UpdateEnabledBaseline` API 或控制台启动该更新操作。
+ [`DisableBaseline`](#disable-baseline-lfc)：该日志记录 AWS Control Tower 是否成功完成了在 OU 下目标成员账户上禁用现有已启用基准的每一项操作。可以使用 `DisableBaseline` API 或控制台启动该禁用操作。

以下各节提供了 AWS Control Tower 生命周期事件的列表，其中包含为各类生命周期事件记录的详细信息示例。

## `CreateManagedAccount`
<a name="create-managed-account"></a>

此生命周期事件记录 AWS Control Tower 是否成功使用 Account Factory 创建和预置了新账户。此事件与 AWS Control Tower `CreateManagedAccount` CloudTrail 事件相对应。该生命周期事件日志包含新创建账户的 `accountName` 和 `accountId`，以及账户所在 OU 的 `organizationalUnitName` 和 `organizationalUnitId`。

```
{
    "version": "0",
    "id": "999cccaa-eaaa-0000-1111-123456789012",         
    "detail-type": "AWS Service Event via CloudTrail",
    "source": "aws.controltower",
    "account": "XXXXXXXXXXXX",                                   // Management account ID. 
    "time": "2018-08-30T21:42:18Z",                              // Format: yyyy-MM-dd'T'hh:mm:ssZ 
    "region": "us-east-1",                                       // AWS Control Tower home region.
    "resources": [ ],
    "detail": {
        "eventVersion": "1.05",
        "userIdentity": {
            "accountId": "XXXXXXXXXXXX",                       
            "invokedBy": "AWS Internal"
        },
        "eventTime": "2018-08-30T21:42:18Z",                     // Timestamp when call was made. Format: yyyy-MM-dd'T'hh:mm:ssZ.
        "eventSource": "controltower.amazonaws.com",
        "eventName": "CreateManagedAccount",                  
        "awsRegion": "us-east-1",                               
        "sourceIPAddress": "AWS Internal",
        "userAgent": "AWS Internal",
        "eventID": "0000000-0000-0000-1111-123456789012",        
        "readOnly": false,
        "eventType": "AwsServiceEvent",
        "serviceEventDetails": {
            "createManagedAccountStatus": {
                "organizationalUnit":{
                    "organizationalUnitName":"Custom",
                    "organizationalUnitId":"ou-XXXX-l3zc8b3h"

                    },
                "account":{
                    "accountName":"LifeCycle1",
                    "accountId":"XXXXXXXXXXXX"
                    },
                "state":"SUCCEEDED",
                "message":"AWS Control Tower successfully created a managed account.",
                "requestedTimestamp":"2019-11-15T11:45:18+0000",
                "completedTimestamp":"2019-11-16T12:09:32+0000"}
        }
    }
}
```

## `UpdateManagedAccount`
<a name="update-managed-account"></a>

此生命周期事件记录 AWS Control Tower 是否成功更新了与之前使用 Account Factory 创建的账户相关联的预置产品。此事件与 AWS Control Tower `UpdateManagedAccount` CloudTrail 事件相对应。该生命周期事件日志包含关联账户的 `accountName` 和 `accountId`，以及更新账户所在 OU 的 `organizationalUnitName` 和 `organizationalUnitId`。

```
{
    "version": "0",
    "id": "999cccaa-eaaa-0000-1111-123456789012",                
    "detail-type": "AWS Service Event via CloudTrail",
    "source": "aws.controltower",
    "account": "XXXXXXXXXXXX",                                   // AWS Control Tower organization management account.
    "time": "2018-08-30T21:42:18Z",                              // Format: yyyy-MM-dd'T'hh:mm:ssZ 
    "region": "us-east-1",                                       // AWS Control Tower home region.
    "resources": [],
    "detail": {
        "eventVersion": "1.05",
        "userIdentity": {
            "accountId": "XXXXXXXXX",                        
            "invokedBy": "AWS Internal"
        },
        "eventTime": "2018-08-30T21:42:18Z",                     // Timestamp when call was made. Format: yyyy-MM-dd'T'hh:mm:ssZ.
        "eventSource": "controltower.amazonaws.com",
        "eventName": "UpdateManagedAccount",                   
        "awsRegion": "us-east-1",                                
        "sourceIPAddress": "AWS Internal",
        "userAgent": "AWS Internal",
        "eventID": "0000000-0000-0000-1111-123456789012",        
        "readOnly": false,
        "eventType": "AwsServiceEvent",
        "serviceEventDetails": {
            "updateManagedAccountStatus": {
                "organizationalUnit":{
                    "organizationalUnitName":"Custom",
                    "organizationalUnitId":"ou-XXXX-l3zc8b3h"
                    },
                "account":{
                    "accountName":"LifeCycle1",
                    "accountId":"XXXXXXXXXXXX"
                    },
                "state":"SUCCEEDED",
                "message":"AWS Control Tower successfully updated a managed account.",
                "requestedTimestamp":"2019-11-15T11:45:18+0000",
                "completedTimestamp":"2019-11-16T12:09:32+0000"}
        }
    }
}
```

## `EnableGuardrail`
<a name="enable-control"></a>

此生命周期事件记录 AWS Control Tower 是否成功对正由 AWS Control Tower 托管的 OU 启用了控件。此事件与 AWS Control Tower `EnableGuardrail` CloudTrail 事件相对应。该生命周期事件日志包含控件的 `guardrailId` 和 `guardrailBehavior`，以及启用了控件的 OU 的 `organizationalUnitName` 和 `organizationalUnitId`。

```
{
    "version": "0",
    "id": "999cccaa-eaaa-0000-1111-123456789012",         
    "detail-type": "AWS Service Event via CloudTrail",
    "source": "aws.controltower",
    "account": "XXXXXXXXXXXX",                                 
    "time": "2018-08-30T21:42:18Z",                              // End-time of action. Format: yyyy-MM-dd'T'hh:mm:ssZ 
    "region": "us-east-1",                                       // AWS Control Tower home region.
    "resources": [ ],
    "detail": {
        "eventVersion": "1.05",
        "userIdentity": {
            "accountId": "XXXXXXXXXXXX",                    
            "invokedBy": "AWS Internal"
        },
        "eventTime": "2018-08-30T21:42:18Z",                  
        "eventSource": "controltower.amazonaws.com",             
        "eventName": "EnableGuardrail",                   
        "awsRegion": "us-east-1",                              
        "sourceIPAddress": "AWS Internal",
        "userAgent": "AWS Internal",
        "eventID": "0000000-0000-0000-1111-123456789012",       
        "readOnly": false,
        "eventType": "AwsServiceEvent",
        "serviceEventDetails": {
            "enableGuardrailStatus": {
                "organizationalUnits": [
                    {
                      "organizationalUnitName": "Custom",
                      "organizationalUnitId": "ou-vwxy-18vy4yro"
                    }
                  ],
                  "guardrails": [
                    {
                      "guardrailId": "AWS-GR_RDS_INSTANCE_PUBLIC_ACCESS_CHECK",
                      "guardrailBehavior": "DETECTIVE"
                    }
                  ],
                  "state": "SUCCEEDED",
                  "message": "AWS Control Tower successfully enabled a guardrail on an organizational unit.",
                  "requestTimestamp": "2019-11-12T09:01:07+0000",
                  "completedTimestamp": "2019-11-12T09:01:54+0000"
                }
        }
    }
}
```

## `DisableGuardrail`
<a name="disable-control"></a>

此生命周期事件记录 AWS Control Tower 是否成功对正由 AWS Control Tower 托管的 OU 禁用了控件。此事件与 AWS Control Tower `DisableGuardrail` CloudTrail 事件相对应。该生命周期事件记录包含控件的 `guardrailId` 和 `guardrailBehavior`，以及禁用了控件的 OU 的 `organizationalUnitName` 和 `organizationalUnitId`。

```
{
    "version": "0",
    "id": "999cccaa-eaaa-0000-1111-123456789012",     
    "detail-type": "AWS Service Event via CloudTrail",
    "source": "aws.controltower",
    "account": "XXXXXXXXXXXX",                         
    "time": "2018-08-30T21:42:18Z",                   
    "region": "us-east-1",                           
    "resources": [ ],
    "detail": {
        "eventVersion": "1.05",
        "userIdentity": {
            "accountId": "XXXXXXXXXXXX",                 
            "invokedBy": "AWS Internal"
        },
        "eventTime": "2018-08-30T21:42:18Z",            
        "eventSource": "controltower.amazonaws.com",
        "eventName": "DisableGuardrail",                 
        "awsRegion": "us-east-1",                            
        "sourceIPAddress": "AWS Internal",
        "userAgent": "AWS Internal",
        "eventID": "0000000-0000-0000-1111-123456789012",     
        "readOnly": false,
        "eventType": "AwsServiceEvent",
        "serviceEventDetails": {
            "disableGuardrailStatus": {
                   "organizationalUnits": [
                    {
                      "organizationalUnitName": "Custom",
                      "organizationalUnitId": "ou-vwxy-18vy4yro"
                    }
                  ],
                  "guardrails": [
                    {
                      "guardrailId": "AWS-GR_RDS_INSTANCE_PUBLIC_ACCESS_CHECK",
                      "guardrailBehavior": "DETECTIVE"
                    }
                  ],
                  "state": "SUCCEEDED",
                  "message": "AWS Control Tower successfully disabled a guardrail on an organizational unit.",
                  "requestTimestamp": "2019-11-12T09:01:07+0000",
                  "completedTimestamp": "2019-11-12T09:01:54+0000"
                }
            }
        }
    }
```

## `SetupLandingZone`
<a name="setup-landing-zone"></a>

此生命周期事件记录 AWS Control Tower 是否成功设置了登录区。此事件与 AWS Control Tower `SetupLandingZone` CloudTrail 事件相对应。该生命周期事件日志包含 `rootOrganizationalId`，这是 AWS Control Tower 从管理账户创建的组织的 ID。日志条目还包括在 `organizationalUnitName` AWS Control Tower 设置着陆区时创建的每个账户的`accountName`和`accountId`，以及每个账户的和。`organizationalUnitId` OUs

```
{
    "version": "0",
    "id": "999cccaa-eaaa-0000-1111-123456789012",                // Request ID.
    "detail-type": "AWS Service Event via CloudTrail",
    "source": "aws.controltower",
    "account": "XXXXXXXXXXXX",                                   // Management account ID.
    "time": "2018-08-30T21:42:18Z",                              // Event time from CloudTrail.
    "region": "us-east-1",                                       // Management account CloudTrail region.
    "resources": [ ],
    "detail": {
        "eventVersion": "1.05",
        "userIdentity": {
            "accountId": "XXXXXXXXXXXX",                         // Management-account ID.
            "invokedBy": "AWS Internal"
        },
        "eventTime": "2018-08-30T21:42:18Z",                     // Timestamp when call was made. Format: yyyy-MM-dd'T'hh:mm:ssZ.
        "eventSource": "controltower.amazonaws.com",
        "eventName": "SetupLandingZone",
        "awsRegion": "us-east-1",                                // AWS Control Tower home region.
        "sourceIPAddress": "AWS Internal",
        "userAgent": "AWS Internal",
        "eventID": "CloudTrail_event_ID",                        // This value is generated by CloudTrail.
        "readOnly": false,
        "eventType": "AwsServiceEvent",
        "serviceEventDetails": {
            "setupLandingZoneStatus": {
                "state": "SUCCEEDED",                             // Status of entire lifecycle operation.
                "message": "AWS Control Tower successfully set up a new landing zone.",                
                "rootOrganizationalId" : "r-1234",
                "organizationalUnits" : [                         // Use a list.
                  {
                    "organizationalUnitName": "Security",             // Security OU name.
                    "organizationalUnitId": "ou-adpf-302pk332"    // Security OU ID.
                  },
                  {
                    "organizationalUnitName": "Custom",           // Custom OU name.
                    "organizationalUnitId": "ou-adpf-302pk332"    // Custom OU ID. 
                  },
                ],
               "accounts": [                                      // All created accounts are here. Use a list of "account" objects.

                  {
                    "accountName": "Audit",  
                    "accountId": "XXXXXXXXXXXX"                        
                  },
                  {
                    "accountName": "Log archive",                 
                    "accountId": "XXXXXXXXXXXX"
                  }
              ],
              "requestedTimestamp": "2018-08-30T21:42:18Z",
              "completedTimestamp": "2018-08-30T21:42:18Z"
            }
        }
    }
}
```

## `UpdateLandingZone`
<a name="update-landing-zone"></a>

此生命周期事件记录 AWS Control Tower 是否成功更新了您的现有登录区。此事件与 AWS Control Tower `UpdateLandingZone` CloudTrail 事件相对应。该生命周期事件日志包含 `rootOrganizationalId`，这是由 AWS Control Tower 监管的（已更新）组织的 ID。日志条目还包括之前在 `organizationalUnitName` AWS Control Tower 最初设置着陆区时创建的每个账户的`accountName`和`accountId`，以及每个账户的和。`organizationalUnitId` OUs

```
{
    "version": "0",
    "id": "999cccaa-eaaa-0000-1111-123456789012",                // Request ID.
    "detail-type": "AWS Service Event via CloudTrail",
    "source": "aws.controltower",
    "account": "XXXXXXXXXXXX",                                   // Management account ID.
    "time": "2018-08-30T21:42:18Z",                              // Event time from CloudTrail.
    "region": "us-east-1",                                       // Management account CloudTrail region.
    "resources": [ ],
    "detail": {
        "eventVersion": "1.05",
        "userIdentity": {
            "accountId": "XXXXXXXXXXXX",                         // Management account ID.
            "invokedBy": "AWS Internal"
        },
        "eventTime": "2018-08-30T21:42:18Z",                     // Timestamp when call was made. Format: yyyy-MM-dd'T'hh:mm:ssZ.
        "eventSource": "controltower.amazonaws.com",
        "eventName": "UpdateLandingZone",
        "awsRegion": "us-east-1",                                // AWS Control Tower home region.
        "sourceIPAddress": "AWS Internal",
        "userAgent": "AWS Internal",
        "eventID": "CloudTrail_event_ID",                        // This value is generated by CloudTrail.

        "readOnly": false,
        "eventType": "AwsServiceEvent",
        "serviceEventDetails": {
            "updateLandingZoneStatus": {
                "state": "SUCCEEDED",                            // Status of entire operation.
                "message": "AWS Control Tower successfully updated a landing zone.",                

                "rootOrganizationalId" : "r-1234",
                "organizationalUnits" : [                         // Use a list.
                  {
                    "organizationalUnitName": "Security",             // Security OU name.
                    "organizationalUnitId": "ou-adpf-302pk332"    // Security OU ID.
                  },
                  {
                    "organizationalUnitName": "Custom",            // Custom OU name.
                    "organizationalUnitId": "ou-adpf-302pk332"     // Custom OU ID.
                  },
                ],
               "accounts": [                                       // All created accounts are here. Use a list of "account" objects.

                  {
                    "accountName": "Audit",  
                    "accountId": "XXXXXXXXXXXX"                        
                  },
                  {
                    "accountName": "Log archive",                 
                    "accountId": "XXXXXXXXXX"
                  }
              ],
              "requestedTimestamp": "2018-08-30T21:42:18Z",
              "completedTimestamp": "2018-08-30T21:42:18Z"
            }
        }
    }
}
```

## `RegisterOrganizationalUnit`
<a name="register-organizational-unit"></a>

此生命周期事件记录 AWS Control Tower 是否成功对 OU 启用了其监管功能。此事件与 AWS Control Tower `RegisterOrganizationalUnit` CloudTrail 事件相对应。该生命周期事件日志包含 AWS Control Tower 已纳入其监管之下的 OU 的 `organizationalUnitName` 和 `organizationalUnitId`。

```
{
    "version": "0",
    "id": "999cccaa-eaaa-0000-1111-123456789012",            
    "detail-type": "AWS Service Event via CloudTrail", 
    "source": "aws.controltower",
    "account": "123456789012",                               
    "time": "2018-08-30T21:42:18Z",                  
    "region": "us-east-1",                       
    "resources": [ ],
    "detail": {
        "eventVersion": "1.05",
        "userIdentity": {
            "accountId": "XXXXXXXXXXXX",                
            "invokedBy": "AWS Internal"
        },
        "eventTime": "2018-08-30T21:42:18Z",               
        "eventSource": "controltower.amazonaws.com",
        "eventName": "RegisterOrganizationalUnit",        
        "awsRegion": "us-east-1",                           
        "sourceIPAddress": "AWS Internal",
        "userAgent": "AWS Internal",
        "eventID": "0000000-0000-0000-1111-123456789012",    
        "readOnly": false,
        "eventType": "AwsServiceEvent",
        "serviceEventDetails": {
            "registerOrganizationalUnitStatus": {
                "state": "SUCCEEDED",                        

                "message": "AWS Control Tower successfully registered an organizational unit.",

                "organizationalUnit" :                        
                  {
                    "organizationalUnitName": "Test",            
                    "organizationalUnitId": "ou-adpf-302pk332"    
                  }
                "requestedTimestamp": "2018-08-30T21:42:18Z",
                "completedTimestamp": "2018-08-30T21:42:18Z" 
            }
        }
    }
}
```

## `DeregisterOrganizationalUnit`
<a name="deregister-organizational-unit"></a>

此生命周期事件记录 AWS Control Tower 是否成功对 OU 禁用了其监管功能。此事件与 AWS Control Tower `DeregisterOrganizationalUnit` CloudTrail 事件相对应。该生命周期事件日志包含 AWS Control Tower 已禁用其监管功能的 OU 的 `organizationalUnitName` 和 `organizationalUnitId`。

```
{
    "version": "0",
    "id": "999cccaa-eaaa-0000-1111-123456789012",    
    "detail-type": "AWS Service Event via CloudTrail",
    "source": "aws.controltower",
    "account": "XXXXXXXXXXXX",                  
    "time": "2018-08-30T21:42:18Z", 
    "region": "us-east-1",            
    "resources": [ ],
    "detail": {
        "eventVersion": "1.05",
        "userIdentity": {
            "accountId": "XXXXXXXXXXXX",              
            "invokedBy": "AWS Internal"
        },
        "eventTime": "2018-08-30T21:42:18Z",               
        "eventSource": "controltower.amazonaws.com",
        "eventName": "DeregisterOrganizationalUnit",     
        "awsRegion": "us-east-1",                       
        "sourceIPAddress": "AWS Internal",
        "userAgent": "AWS Internal",
        "eventID": "0000000-0000-0000-1111-123456789012", 
        "readOnly": false,
        "eventType": "AwsServiceEvent",
        "serviceEventDetails": {
            "deregisterOrganizationalUnitStatus": {                 
                "state": "SUCCEEDED",               
                "message": "AWS Control Tower successfully deregistered an organizational unit, and enabled mandatory guardrails on the new organizational unit.",
                "organizationalUnit" :                        
                  {
                    "organizationalUnitName": "Test",                   // Foundational OU name.
                    "organizationalUnitId": "ou-adpf-302pk332"          // Foundational OU ID.
                  },
                "requestedTimestamp": "2018-08-30T21:42:18Z", 
                "completedTimestamp": "2018-08-30T21:42:18Z"  
            }
            }
        }
    }
```

## `PrecheckOrganizationalUnit`
<a name="precheck-organizational-unit"></a>

此生命周期事件记录 AWS Control Tower 是否成功对 OU 执行了预检查。此事件与 AWS Control Tower `PrecheckOrganizationalUnit` CloudTrail 事件相对应。该生命周期事件日志包含 `Id`、`Name` 和 `failedPrechecks` 值对应的字段，用于记录在 OU 注册过程中 AWS Control Tower 对其执行了预检查的每项资源。

该事件日志还包含有关对其执行预检查的嵌套账户的信息，包括 `accountName`、`accountId` 和 `failedPrechecks` 字段。

如果 `failedPrechecks` 值为空，则表示该资源的所有预检查均成功通过。
+ 只有当预检查失败时，才会触发该事件。
+ 如果注册的是空 OU，则不会触发此事件。

事件示例：

```
{
  "eventVersion": "1.08",
  "userIdentity": {
    "accountId": "XXXXXXXXXXXX",
    "invokedBy": "AWS Internal"
  },
  "eventTime": "2021-09-20T22:45:43Z",
  "eventSource": "controltower.amazonaws.com",
  "eventName": "PrecheckOrganizationalUnit",
  "awsRegion": "us-west-2",
  "sourceIPAddress": "AWS Internal",
  "userAgent": "AWS Internal",
  "eventID": "b41a9d67-0da4-4dc5-a87a-25fa19dc5305",
  "readOnly": false,
  "eventType": "AwsServiceEvent",
  "managementEvent": true,
  "recipientAccountId": "XXXXXXXXXXXX",
  "serviceEventDetails": {
    "precheckOrganizationalUnitStatus": {
      "organizationalUnit": {
        "organizationalUnitName": "Ou-123",
        "organizationalUnitId": "ou-abcd-123456",
        "failedPrechecks": [
            "SCP_CONFLICT"
          ]
      },
      "accounts": [
        {
          "accountName": "Child Account 1",
          "accountId": "XXXXXXXXXXXX",
          "failedPrechecks": [
            "FAILED_TO_ASSUME_ROLE"
          ]
        },
        {
          "accountName": "Child Account 2",
          "accountId": "XXXXXXXXXXXX",
          "failedPrechecks": [
            "FAILED_TO_ASSUME_ROLE"
          ]
        },
        {
          "accountName": "Management Account",
          "accountId": "XXXXXXXXXXXX",
          "failedPrechecks": [
            "MISSING_PERMISSIONS_AF_PRODUCT"
          ]
        },
        {
          "accountName": "Child Account 3",
          "accountId": "XXXXXXXXXXXX",
          "failedPrechecks": []
        },
        ...
      ],
      "state": "FAILED",
      "message": "AWS Control Tower failed to register an organizational unit due to pre-check failures. Go to the OU details page to download a list of failed pre-checks for the OU and accounts within.",
      "requestedTimestamp": "2021-09-20T22:44:02+0000",
      "completedTimestamp": "2021-09-20T22:45:43+0000"
    }
  },
  "eventCategory": "Management"
}
```

## `EnableBaseline`
<a name="enable-baseline-lfc"></a>

此生命周期事件记录 AWS Control Tower 是否成功对 OU 下目标成员账户启用了基准。此事件与 AWS Control Tower `RegisterOrganizationalUnit` 或多个`EnableBaseline` CloudTrail 事件相对应。生命周期事件日志包括已启用的基准及其版本、启用基准的 `targetIdentifier`、在父 OU 上启用的基准的 `parentIdentifier` 和显示 SUCCEEDED 或 FAILED 状态的 `statusSummary`，以及操作的其他参数和时间戳。

```
{
    "eventVersion": "1.11",
    "userIdentity": {
        "accountId": "XXXXXXXXXXXX",
        "invokedBy": "AWS Internal"
    },
    "eventTime": "2025-02-10T17:14:57Z",
    "eventSource": "controltower.amazonaws.com",
    "eventName": "EnableBaseline",
    "awsRegion": "us-east-2",
    "sourceIPAddress": "AWS Internal",
    "userAgent": "AWS Internal",
    "requestParameters": null,
    "responseElements": null,
    "eventID": "366911a2-4fa6-4e4a-ac2b-280f627e0027",
    "readOnly": false,
    "eventType": "AwsServiceEvent",
    "managementEvent": true,
    "recipientAccountId": "XXXXXXXXXXXX",
    "serviceEventDetails": {
        "enableBaselineStatus": {
            "enabledBaselineDetails": {
                "arn": "arn:aws:controltower:us-east-2:XXXXXXXXXXXX:enabledbaseline/XXXXXXXXXXXXXXXX",
                "parentIdentifier": "arn:aws:controltower:us-east-2:XXXXXXXXXXXX:enabledbaseline/XXXXXXXXXXXXXXXX",
                "targetIdentifier": "arn:aws:organizations::XXXXXXXXXXXX:account/o-ern76xmzvf/XXXXXXXXXXXX",
                "baselineIdentifier": "arn:aws:controltower:us-east-2::baseline/XXXXXXXXXXXXXXX",
                "baselineVersion": "4.0",
                "statusSummary": {
                    "lastOperationIdentifier": "37f5eb68-e5b9-4c70-ae76-4ca15f6b16de",
                    "status": "SUCCEEDED"
                },
                "parameters": [
                    {
                        "key": "IdentityCenterEnabledBaselineArn",
                        "value": {
                            "untyped": {
                                "object": "arn:aws:controltower:us-east-2:XXXXXXXXXXXX:enabledbaseline/XXXXXXXXXXXXXXXX"                            }
                        }
                    }
                ]
            },
            "requestedTimestamp": "2025-02-10T17:07:09+0000",
            "completedTimestamp": "2025-02-10T17:14:57+0000"
        }
    },
    "eventCategory": "Management"
}
```

## `ResetEnabledBaseline`
<a name="reset-enabled-baseline-lfc"></a>

此生命周期事件记录 AWS Control Tower 是否成功对 OU 下目标成员账户重置了现有已启用的基准。此事件与 AWS Control Tower `RegisterOrganizationalUnit` 或多个`ResetEnabledBaseline` CloudTrail 事件相对应。生命周期事件日志包括已启用的基准及其版本、启用基准的 `targetIdentifier`、在父 OU 上启用的基准的 `parentIdentifier` 和显示 SUCCEEDED 或 FAILED 状态的 `statusSummary`，以及操作的其他参数和时间戳。

```
{
    "eventVersion": "1.11",
    "userIdentity": {
        "accountId": "XXXXXXXXXXXX",
        "invokedBy": "AWS Internal"
    },
    "eventTime": "2025-02-10T21:17:55Z",
    "eventSource": "controltower.amazonaws.com",
    "eventName": "ResetEnabledBaseline",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "AWS Internal",
    "userAgent": "AWS Internal",
    "requestParameters": null,
    "responseElements": null,
    "eventID": "c01a32e1-13ab-4b46-8f1b-00699ef6f989",
    "readOnly": false,
    "eventType": "AwsServiceEvent",
    "managementEvent": true,
    "recipientAccountId": "XXXXXXXXXXXX",
    "serviceEventDetails": {
        "resetEnabledBaselineStatus": {
            "enabledBaselineDetails": {
                "arn": "arn:aws:controltower:us-west-2:XXXXXXXXXXXX:enabledbaseline/XXXXXXXXXXXXXXXX",
                "parentIdentifier": "arn:aws:controltower:us-west-2:XXXXXXXXXXXX:enabledbaseline/XXXXXXXXXXXXXXXX",
                "targetIdentifier": "arn:aws:organizations::XXXXXXXXXXXX:account/o-0uh2kplf6d/XXXXXXXXXXXX",
                "baselineIdentifier": "arn:aws:controltower:us-west-2::baseline/XXXXXXXXXXXXXXX",
                "baselineVersion": "1.0",
                "statusSummary": {
                    "lastOperationIdentifier": "3e364c89-89fa-42b8-9776-9f7cc47ba1fa",
                    "status": "SUCCEEDED"
                },
                "parameters": []
            },
            "requestedTimestamp": "2025-02-10T21:14:24Z",
            "completedTimestamp": "2025-02-10T21:17:54+0000"
        }
    },
    "eventCategory": "Management"
}
```

## `UpdateEnabledBaseline`
<a name="update-enabled-baseline-lfc"></a>

此生命周期事件记录 AWS Control Tower 是否成功对 OU 下目标成员账户更新了现有已启用的基准。此事件与 AWS Control Tower `RegisterOrganizationalUnit` 或多个`UpdateEnabledBaseline` CloudTrail事件相对应。生命周期事件日志包括已启用的基准及其版本、启用基准的 `targetIdentifier`、在父 OU 上启用的基准的 `parentIdentifier` 和显示 SUCCEEDED 或 FAILED 状态的 `statusSummary`，以及操作的其他参数和时间戳。

```
{
    "eventVersion": "1.11",
    "userIdentity": {
        "accountId": "XXXXXXXXXXXX",
        "invokedBy": "AWS Internal"
    },
    "eventTime": "2025-02-10T19:45:28Z",
    "eventSource": "controltower.amazonaws.com",
    "eventName": "UpdateEnabledBaseline",
    "awsRegion": "us-east-2",
    "sourceIPAddress": "AWS Internal",
    "userAgent": "AWS Internal",
    "requestParameters": null,
    "responseElements": null,
    "eventID": "514f2aff-1a99-4912-bda1-0d4d6662c96e",
    "readOnly": false,
    "eventType": "AwsServiceEvent",
    "managementEvent": true,
    "recipientAccountId": "XXXXXXXXXXXX",
    "serviceEventDetails": {
        "updateEnabledBaselineStatus": {
            "enabledBaselineDetails": {
                "arn": "arn:aws:controltower:us-east-2:XXXXXXXXXXXX:enabledbaseline/XXXXXXXXXXXXXXXX",
                "parentIdentifier": "arn:aws:controltower:us-east-2:XXXXXXXXXXXX:enabledbaseline/XXXXXXXXXXXXXXXX",
                "targetIdentifier": "arn:aws:organizations::XXXXXXXXXXXX:account/o-ern76xmzvf/XXXXXXXXXXXX",
                "baselineIdentifier": "arn:aws:controltower:us-east-2::baseline/XXXXXXXXXXXXXXX",
                "baselineVersion": "4.0",
                "statusSummary": {
                    "lastOperationIdentifier": "ba3de28f-83fb-4c9a-8a8c-a4e15fac2c41",
                    "status": "SUCCEEDED"
                },
                "parameters": [
                    {
                        "key": "IdentityCenterEnabledBaselineArn",
                        "value": {
                            "untyped": {
                                "object": "arn:aws:controltower:us-east-2:XXXXXXXXXXXX:enabledbaseline/XXXXXXXXXXXXXXXX"                            }
                        }
                    }
                ]
            },
            "requestedTimestamp": "2025-02-10T19:39:35+0000",
            "completedTimestamp": "2025-02-10T19:45:28+0000"
        }
    },
    "eventCategory": "Management"
}
```

## `DisableBaseline`
<a name="disable-baseline-lfc"></a>

此生命周期事件记录 AWS Control Tower 是否成功对 OU 下目标成员账户禁用了现有已启用的基准。此事件与 AWS Control Tower `DisableBaseline` CloudTrail 事件相对应。生命周期事件日志包括已启用的基准及其版本、启用基准的 `targetIdentifier`、在父 OU 上启用的基准的 `parentIdentifier` 和显示 SUCCEEDED 或 FAILED 状态的 `statusSummary`，以及操作的其他参数和时间戳。

```
{
    "eventVersion": "1.11",
    "userIdentity": {
        "accountId": "XXXXXXXXXXXX",
        "invokedBy": "AWS Internal"
    },
    "eventTime": "2025-03-14T00:50:58Z",
    "eventSource": "controltower.amazonaws.com",
    "eventName": "DisableBaseline",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "AWS Internal",
    "userAgent": "AWS Internal",
    "requestParameters": null,
    "responseElements": null,
    "eventID": "704794c4-a32e-4960-8386-c7efaa5a22a1",
    "readOnly": false,
    "eventType": "AwsServiceEvent",
    "managementEvent": true,
    "recipientAccountId": "XXXXXXXXXXXX",
    "serviceEventDetails": {
        "disableBaselineStatus": {
            "enabledBaselineDetails": {
                "arn": "arn:aws:controltower:us-west-2:XXXXXXXXXXXX:enabledbaseline/XXXXXXXXXXXXXXXX",
                "parentIdentifier": "arn:aws:controltower:us-west-2:XXXXXXXXXXXX:enabledbaseline/XXXXXXXXXXXXXXXX",
                "targetIdentifier": "arn:aws:organizations::XXXXXXXXXXXX:account/o-0uh2kplf6d/XXXXXXXXXXXX",
                "baselineIdentifier": "arn:aws:controltower:us-west-2::baseline/XXXXXXXXXXXXXXX",
                "baselineVersion": "1.0",
                "statusSummary": {
                    "lastOperationIdentifier": "7b895594-0edb-48bc-9f3d-d88c2ad618df",
                    "status": "SUCCEEDED"
                },
                "parameters": []
            },
            "baselineDetails": {
                "arn": "arn:aws:controltower:us-west-2:XXXXXXXXXXXX:enabledbaseline/XXXXXXXXXXXXXXXX",
                "parentIdentifier": "arn:aws:controltower:us-west-2:XXXXXXXXXXXX:enabledbaseline/XXXXXXXXXXXXXXXX",
                "targetIdentifier": "arn:aws:organizations::XXXXXXXXXXXX:account/o-0uh2kplf6d/XXXXXXXXXXXX",
                "baselineIdentifier": "arn:aws:controltower:us-west-2::baseline/XXXXXXXXXXXXXXX",
                "baselineVersion": "1.0",
                "statusSummary": {
                    "lastOperationIdentifier": "7b895594-0edb-48bc-9f3d-d88c2ad618df",
                    "status": "SUCCEEDED"
                },
                "parameters": []
            },
            "requestedTimestamp": "2025-03-14T00:49:13Z",
            "completedTimestamp": "2025-03-14T00:50:58+0000"
        }
    },
    "eventCategory": "Management"
}
```

# 将AWS用户通知与AWS Control Tower
<a name="using-user-notifications"></a>

可以使用 [AWS用户通知](https://docs.aws.amazon.com/notifications/latest/userguide/what-is.html)来设置交付渠道，以获得有关AWS Control Tower事件的通知。当事件与指定的规则匹配时，会收到通知。您可以通过多个渠道接收事件通知，包括电子邮件、[聊天应用程序中的 Amazon Q 开发者版](https://docs.aws.amazon.com/chatbot/latest/adminguide/what-is.html)聊天通知或 [AWS控制台移动应用程序](https://docs.aws.amazon.com/consolemobileapp/latest/userguide/what-is-consolemobileapp.html)推送通知。还可以在控制台通知中心中查看通知。

AWS用户通知支持聚合，这可以减少您在特定事件期间收到的通知数量。您还可以在控制台通知中心中查看通知。

通过AWS用户通知订阅通知的优势 EventBridge 包括：
+ 更友好的用户界面（UI）。
+ 与AWS控制台集成，位于全局导航栏上的 bell/notifications 区域。
+ 原生支持电子邮件通知，无需设置 Amazon SNS。
+ 最值得注意的是，支持移动推送通知，仅限于AWS用户通知。

例如，您可能希望收到的一种通知是 Security Hub CSPM 发现的严重性和严重性很高的情况。用于设置通知订阅的 JSON 代码片段可能如下所示：

```
{
  "detail": {
    "findings": {
      "Compliance": {
        "Status": ["FAILED", "WARNING", "NOT_AVAILABLE"]
      },
      "RecordState": ["ACTIVE"],
      "Severity": {
        "Label": ["CRITICAL", "HIGH"]
      },
      "Workflow": {
        "Status": ["NEW", "NOTIFIED"]
      }
    }
  }
}
```

**事件筛选**
+ 您可以使用AWS用户通知控制台上提供的过滤器按服务和名称筛选事件。
+ 如果您根据 JSON 代码创建自己的 EventBridge 过滤器，则可以按特定属性筛选事件。

**示例AWS Control Tower事件**

以下是的通用示例事件。AWS Control Tower
+ 这是一个 EventBridge 事件。
+ 您可以使用AWS用户通知订阅 EventBridge 事件（例如此事件）。

```
{
    "version": "0",
    "id": "<id>", // alphanumeric string
    "detail-type": "AWS Service Event via CloudTrail",
    "source": "aws.controltower",
    "account": "<account ID>", // Management account ID. 
    "time": "<date>", // Format: yyyy-MM-dd'T'hh:mm:ssZ 
    "region": "<region>", // AWS Control Tower home region.
    "resources": [],
    "detail": {
        "eventVersion": "1.05",
        "userIdentity": {
            "accountId": "121212121212",
            "invokedBy": "AWS Internal"
        },
        "eventTime": "2018-08-30T21:42:18Z", // Timestamp when call was made. Format: yyyy-MM-dd'T'hh:mm:ssZ.
        "eventSource": "controltower.amazonaws.com",
        "eventName": "<event name>", // one of the 9 event names in https://docs.aws.amazon.com/controltower/latest/userguide/lifecycle-events.html
        "awsRegion": "<region>",
        "sourceIPAddress": "AWS Internal",
        "userAgent": "AWS Internal",
        "eventID": "<id>",
        "readOnly": false,
        "eventType": "AwsServiceEvent",
        "serviceEventDetails": {
            // the contents of this object vary depending on the event subtype and event state
        }
    }
}
```