

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

# AWS RAM 中的日志记录和监控
<a name="security-monitoring"></a>

监控是保持 AWS RAM 和您的 AWS 解决方案的可靠性、可用性和性能的重要方面。您应该从 AWS 解决方案的各个部分收集监控数据，以便您可以更轻松地调试多点故障（如果发生）。AWS 提供了多种工具来监控您的 AWS RAM 资源并对潜在事件做出响应：

**Amazon EventBridge**  
提供近乎实时的系统事件流，这些系统事件描述 AWS 资源的变化。EventBridge 支持自动事件驱动型计算，因为您可以编写规则，以监控某些事件，并在这些事件发生时在其他 AWS 服务中触发自动操作。有关更多信息，请参阅 [AWS RAM 使用监控 EventBridge](using-eventbridge.md)。

**AWS CloudTrail**  
捕获由您的 AWS 账户或代表该账户发出的 API 调用和相关事件，并将日志文件传输到您指定的 Amazon S3 存储桶。您可以标识哪些用户和账户调用了 AWS、发出调用的源 IP 地址以及调用的发生时间。有关更多信息，请参阅 [使用记录 AWS RAM API 调用 AWS CloudTrail](cloudtrail-logging.md)。

# AWS RAM 使用监控 EventBridge
<a name="using-eventbridge"></a>

使用 Amazon EventBridge，您可以在中为特定事件设置自动通知 AWS RAM。来自 AWS RAM 的事件以近乎实时 EventBridge 的方式传送到。您可以配置 EventBridge 为监控事件并调用目标以响应表明您的资源共享发生变化的事件。对资源共享进行更改会针对资源共享的所有者以及获授权访问资源共享的主体触发事件。

当您创建事件模式时，源为 `aws.ram`。

**注意**  
在编写依赖于这些事件的代码时要小心。这些事件不能得到保证，但会尽最大努力发出。如果 AWS RAM 尝试发出事件时出现错误，则服务会再尝试几次。但是，它可能会超时并导致该特定事件丢失。

有关更多信息，请参阅 Amazon EventBridge 用户指南。

## 示例：在资源共享失败时发出警报
<a name="using-eventbridge-example-sharing"></a>

想想这样一个场景：您希望与组织中的其他账户共享 Amazon EC2 容量预留。这样做是降低成本的好方法。

但是，如果您不满足[共享容量预留的所有先决条件](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/capacity-reservation-sharing.html#sharing-cr-prereq)，则共享资源所涉及的异步任务执行可能会静默失败。如果共享操作失败，并且其他账户中的用户试图启动具有其中一个容量预留的实例，则 Amazon EC2 就会像容量预留已满一样执行操作，并将该实例作为按需实例启动。这可能导致成本高于预期。

要监控资源共享故障，请设置 Amazon EventBridge 规则，在 AWS RAM 资源共享失败时提醒您。以下教程过程使用亚马逊简单通知服务 (SNS) Simple Notification Service 主题在 EventBridge 发现资源共享失败时通知所有主题订阅者。有关 Amazon SNS 的更多信息，请参阅 [Amazon Simple Notification Service 开发人员指南](https://docs.aws.amazon.com/sns/latest/dg/)。

**要创建在资源共享失败时通知您的规则，请执行以下操作：**

1. 打开 [Amazon EventBridge 控制台](https://console.aws.amazon.com/events)。

1. 在导航窗格中，选择**规则**，然后在**规则**列表中，选择**创建规则**。

1. 输入规则的名称和描述（可选），然后选择**下一步**。

1. 向下滚动到**事件模式**框，然后选择**自定义模式（JSON 编辑器）**。

1. 复制并粘贴以下事件模式：

   ```
   {
     "source": ["aws.ram"],
     "detail-type": ["Resource Sharing State Change"],
     "detail": {
       "event": ["Resource Share Association"],
       "status": ["failed"]
     }
   }
   ```

1. 选择**下一步**。

1. 对于**目标 1**，在**目标类型**下选择 **AWS 服务**。

1. 对于**选择一个目标**，选择 **SNS 主题**。

1. 对于**主题**，选择要发布通知的 SNS 主题。此主题必须已经存在。

1. 选择**下一步**，然后再次选择**下一步**，以查看您的配置。

1. 如果您对选项感到满意，请选择**创建规则**。

1. 返回到**规则**页面，确保将您的新规则标记为**已启用**。如有必要，选择规则名称旁边的单选按钮，然后选择**启用**。

只要启用该规则，任何失败的 AWS RAM 资源共享都会向您发布的主题的收件人发出 SNS 警报。

您还可以尝试[在 Amazon EC2 控制台中通过共享容量预留的账户查看共享容量预留](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/capacity-reservation-sharing.html#identifying-shared-cr)，从而确认共享容量预留是否可供这些账户访问。

# 使用记录 AWS RAM API 调用 AWS CloudTrail
<a name="cloudtrail-logging"></a>

AWS RAM 与 AWS CloudTrail一项服务集成，该服务提供用户、角色或 AWS 服务在中执行的操作的记录 AWS RAM。 CloudTrail 将所有 API 调用捕获 AWS RAM 为事件。捕获的调用包括来自 AWS RAM 控制台的调用和对 AWS RAM API 操作的代码调用。如果您创建跟踪，则可以允许将 CloudTrail 事件持续传输到您指定的 Amazon S3 存储桶，包括的事件 AWS RAM。如果您未配置跟踪，您仍然可以在 CloudTrail 控制台的 “事件**历史记录” 中查看最新的事件**。使用收集的信息来确定 CloudTrail 向何人发出了请求 AWS RAM、请求的 IP 地址、请求者、何时发出以及其他详细信息。

有关的更多信息 CloudTrail，请参阅《[AWS CloudTrail 用户指南》](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/)。

## AWS RAM 信息在 CloudTrail
<a name="ram-info-in-cloudtrail"></a>

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

对于 AWS 账户中的事件的持续记录（包括 AWS RAM的事件），请创建跟踪记录。*跟踪*允许 CloudTrail 将日志文件传输到 Amazon S3 存储桶。默认情况下，当您在控制台中创建跟踪时，该跟踪将应用于所有 AWS 区域。此跟踪记录在 AWS 分区中记录所有区域中的事件，并将日志文件传送至您指定的 Amazon S3 存储桶。此外，您可以配置其他 AWS 服务，以进一步分析和处理 CloudTrail 日志中收集的事件数据。有关更多信息，请参阅下列内容：
+ [为您创建路线 AWS 账户](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html)
+ [AWS 服务 与 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 RAM 操作均由《API 参考》记录 CloudTrail 并记录在《[AWS RAM API 参考](https://docs.aws.amazon.com/ram/latest/APIReference/)》中。例如，对 `CreateResourceShare`、`AssociateResourceShare` 和 `EnableSharingWithAwsOrganization` 操作的调用会在 CloudTrail 日志文件中生成条目。

每个事件或日志条目都包含相应信息，可帮助您确定提出请求的人员。
+ AWS 账户 根证书
+ 来自 AWS Identity and Access Management (IAM) 角色或联合用户的临时安全证书。
+ 来自 IAM 用户的长期安全凭证。
+ 另一项 AWS 服务。

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

## 了解 AWS RAM 日志文件条目
<a name="understanding-ram-entries"></a>

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

以下示例显示了该`CreateResourceShare`操作的 CloudTrail 日志条目。

```
{
    "eventVersion": "1.05",
    "userIdentity": {
        "type": "IAMUser",
        "principalId": "NOPIOSFODNN7EXAMPLE",
        "arn": "arn:aws:iam::111122223333:user/admin",
        "accountId": "111122223333",
        "accessKeyId": "BCDIOSFODNN7EXAMPLE",
        "userName": "admin"
    },
    "eventTime": "2018-11-03T04:23:19Z",
    "eventSource": "ram.amazonaws.com",
    "eventName": "CreateResourceShare",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "192.0.1.0",
    "userAgent": "aws-cli/1.16.2 Python/2.7.10 Darwin/16.7.0 botocore/1.11.2",
    "requestParameters": {
        "name": "foo"
    },
    "responseElements": {
        "resourceShare": {
            "allowExternalPrincipals": true,
            "name": "foo",
            "owningAccountId": "111122223333",
            "resourceShareArn": "arn:aws:ram:us-east-1:111122223333:resource-share/EXAMPLE0-1234-abcd-1212-987656789098",
            "status": "ACTIVE"
        }
    },
    "requestID": "EXAMPLE0-abcd-1234-mnop-987654567876",
    "eventID": "EXAMPLE0-1234-abcd-hijk-543234565434",
    "readOnly": false,
    "eventType": "AwsApiCall",
    "recipientAccountId": "111122223333"
}
```