

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

# Amazon ECR 监控
<a name="monitoring"></a>

您可以通过亚马逊监控您的 Amazon ECR API 使用情况 CloudWatch，亚马逊会收集来自亚马逊 ECR 的原始数据并将其处理为可读的、近乎实时的指标。这些统计数据会保存两周，以便您访问历史信息并更好地了解 API 使用情况。Amazon ECR 指标数据将在一分钟 CloudWatch 内自动发送到。有关的更多信息 CloudWatch，请参阅 [Amazon CloudWatch 用户指南](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/)。

Amazon ECR 基于您的 API 用量提供指标，这些指标适用于授权、镜像推送和镜像提取操作。

监控是维护 Amazon ECR 和您的 AWS 解决方案的可靠性、可用性和性能的重要组成部分。我们建议您从构成 AWS 解决方案的资源中收集监控数据，以便在出现多点故障时可以更轻松地进行调试。不过，在开始监控 Amazon ECR 之前，您应制定一个监控计划并在计划中回答下列问题：
+ 监控目的是什么？
+ 您将监控哪些资源？
+ 监控这些资源的频率如何？
+ 您将使用哪些监控工具？
+ 谁负责执行监控任务？
+ 出现错误时应通知谁？

下一步，通过在不同时间和不同负载条件下测量性能，在您的环境中建立正常 Amazon ECR 性能的基准。在监控 Amazon ECR 时，存储历史监控数据，以便将此数据与新的性能数据进行比较，确定正常性能模式和性能异常，并设计解决问题的方法。

**Topics**
+ [

# 可视化 Service Quotas 并设置警报
](monitoring-quotas-alarms.md)
+ [

# Amazon ECR 用量指标
](monitoring-usage.md)
+ [

# Amazon ECR 用量报告
](usage-reports.md)
+ [

# Amazon ECR 存储库指标
](ecr-repository-metrics.md)
+ [

# 亚马逊 ECR 事件和 EventBridge
](ecr-eventbridge.md)
+ [

# 使用记录 Amazon ECR 操作 AWS CloudTrail
](logging-using-cloudtrail.md)

# 可视化 Service Quotas 并设置警报
<a name="monitoring-quotas-alarms"></a>

您可以使用 CloudWatch 控制台直观显示您的服务配额，并查看您的当前使用量与服务配额的对比情况。还可以设置警报，从而在接近配额时向您发送通知。

**可视化服务配额并选择性地设置警报**

1. 打开 CloudWatch 控制台，网址为[https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)。

1. 在导航窗格中，选择**指标**。

1. 在**所有指标**选项卡上，选择**用量**，然后选择**按 AWS 资源**。

   这将显示服务配额用量指标的列表。

1. 选中其中一个指标旁边的复选框。

   该图表显示您当前对该 AWS 资源的使用情况。

1. 要将服务配额添加到图表，请执行以下操作：

   1. 选择 **Graphed metrics**（绘制的指标）选项卡。

   1. 选择**数学表达式**、**从空表达式开始**。然后在新行中，在**详细信息**下，输入 **SERVICE\$1QUOTA(m1)**。

      这将向图表中添加一个新行，并显示指标中表示的资源的服务配额。

1. 要以配额百分比的形式查看您的当前用量，请添加新的表达式或更改当前 **SERVICE\$1QUOTA** 表达式。对于新的表达式，请使用 **m1/60/SERVICE\$1QUOTA(m1)\$1100**。

1. (可选) 要设置一个警报，以便在接近服务配额时向您发送通知，请执行以下操作：

   1. 在 **m1/60/SERVICE\$1QUOTA(m1)\$1100** 行上的**操作**下，选择警报图标。该图标看起来像一个铃铛。

      这将显示警报创建页面。

   1. 在**条件**下，确保**阈值类型**为**静态**，并将**当 Expression1 为**设置为**大于**。在**多于**下，输入 **80**。这将创建一个警报，当用量超过配额的 80％ 时，该警报将进入 ALARM 状态。

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

   1. 在下一页上，选择一个 Amazon SNS 主题或创建一个新主题。当警报进入 ALARM 状态时，会向此主题发送通知。然后选择**下一步**。

   1. 在下一页上，输入警报的名称和描述，然后选择**下一步**。

   1. 选择**创建警报**。

# Amazon ECR 用量指标
<a name="monitoring-usage"></a>

您可以使用 CloudWatch 使用量指标来了解您的账户的资源使用情况。使用这些指标在 CloudWatch 图表和仪表板上可视化您当前的服务使用情况。

Amazon ECR 使用率指标与 AWS 服务配额相对应。您可以配置警报，以在用量接近服务配额时向您发出警报。有关 Amazon ECR 默认服务配额的更多信息，请参阅 [Amazon ECR 服务配额](service-quotas.md)。

Amazon ECR 在 `AWS/Usage` 命名空间中发布以下指标。


|  指标  |  说明  | 
| --- | --- | 
|  `CallCount`  |  从您的账户调用 API 操作的次数。资源由与指标关联的维度定义。 此指标最有用的统计数据是 `SUM`，表示定义时段内来自所有贡献者的值的总和。  | 
|  `ResourceCount`  |  您账户中指定资源的数量。资源由与指标关联的维度定义。 此指标最有用的统计数据是`MAXIMUM`，它表示在 5 分钟内使用的最大资源数。  | 

以下维度用于完善 Amazon ECR 发布的 API 使用量指标。


|  维度  |  说明  | 
| --- | --- | 
|  `Service`  |  包含资源的 AWS 服务的名称。对于 Amazon ECR 用量指标，此维度的值为 `ECR`。  | 
|  `Type`  |  正在报告的实体的类型。目前，Amazon ECR API 使用率指标的唯一有效值是`API`。  | 
|  `Resource`  |  正在运行的资源的类型。目前，Amazon ECR 会返回有关以下 API 操作的 API 用量的信息。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonECR/latest/userguide/monitoring-usage.html)  | 
|  Class  |  所跟踪的资源的类。Amazon ECR 目前不使用类维度。  | 

以下维度用于完善 Amazon ECR 发布的资源使用量指标。


|  维度  |  说明  | 
| --- | --- | 
|  `Service`  |  包含资源的 AWS 服务的名称。对于 Amazon ECR 用量指标，此维度的值为 `ECR`。  | 
|  `Type`  |  正在报告的实体的类型。目前，Amazon ECR 资源使用量指标的唯一有效值是`RESOURCE`。  | 
|  `Resource`  |  正在运行的资源的类型。目前，Amazon ECR 会返回有关以下指标的资源使用情况的信息。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonECR/latest/userguide/monitoring-usage.html)  | 
|  `ResourceId`  |  产生使用量的资源的标识符。当前， ResourceId 仅与相关`ImagesPerRepositoryCount`且其值格式为 “repository/your\$1repository\$1name. For example: "repository/my-repo”，返回存储库中名为 “my-repo” 的图像数量。  | 

# Amazon ECR 用量报告
<a name="usage-reports"></a>

AWS 提供名为 Cost Explorer 的免费报告工具，使您能够分析 Amazon ECR 资源的成本和使用情况。

使用 Cost Explorer 查看用量和成本的图表。您可以查看之前 13 个月的数据，并预测您在接下来三个月内可能产生的费用。您可以使用 Cost Explorer 查看有关您一段时间内在 AWS 资源方面的费用的模式、确定需要进一步查询的方面以及查看可用于了解您的成本的趋势。您还可以指定数据的时间范围，并按天或按月查看时间数据。

成本和用量报告中的计量数据显示跨所有 Amazon ECR 存储库的用量。有关更多信息，请参阅 [标记资源以便于计费](ecr-using-tags.md#tag-resources-for-billing)。

有关创建 AWS 成本和使用情况报告的更多信息，请参阅《*AWS Billing 用户指南》*中的[AWS 成本和使用情况报告](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/billing-reports-costusage.html)。

# Amazon ECR 存储库指标
<a name="ecr-repository-metrics"></a>

Amazon ECR 向亚马逊 CloudWatch发送存储库提取计数指标。Amazon ECR 指标数据会 CloudWatch 在 1 分钟内自动发送到。有关的更多信息 CloudWatch，请参阅 [Amazon CloudWatch 用户指南](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/)。

**Topics**
+ [

## 启用 CloudWatch 指标
](#enable_cloudwatch)
+ [

## 可用指标和维度
](#available_cloudwatch_metrics)
+ [

## 使用控制台查看 Amazon ECR 指标 CloudWatch
](#viewing_metrics_console)

## 启用 CloudWatch 指标
<a name="enable_cloudwatch"></a>

Amazon ECR 自动发送所有存储库的存储库指标。无需执行任何手动步骤。

## 可用指标和维度
<a name="available_cloudwatch_metrics"></a>

以下部分列出了 Amazon ECR 发送给亚马逊 CloudWatch的指标和维度。

### Amazon ECR 指标
<a name="ecr-metrics"></a>

Amazon ECR 提供了可用于监控存储库的指标。您可以测量拉取计数。

`AWS/ECR` 命名空间包括以下指标。

`RepositoryPullCount`  
对存储库中映像的总拉取次数。  
有效维度：`RepositoryName`。  
有效统计数据：平均值、最小值、最大值、总计和样本数。最有用的统计指标是和。  
单位：整数。

### Amazon ECR 指标的维度
<a name="ecs-metrics-dimensions"></a>

Amazon ECR 指标使用 `AWS/ECR` 命名空间并提供以下维度的指标。

`RepositoryName`  
此维度将筛选您为指定存储库中所有容器映像请求的数据。

## 使用控制台查看 Amazon ECR 指标 CloudWatch
<a name="viewing_metrics_console"></a>

您可以在 CloudWatch 控制台上查看 Amazon ECR 存储库指标。 CloudWatch 控制台可对您的资源进行精细且可自定义的显示。有关更多信息，请参阅 [Amazon CloudWatch 用户指南](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/)。

# 亚马逊 ECR 事件和 EventBridge
<a name="ecr-eventbridge"></a>

Amazon EventBridge 使您能够实现 AWS 服务自动化，并自动响应系统事件，例如应用程序可用性问题或资源更改。来自 AWS 服务的事件几乎是实时的。 EventBridge 您可以编写简单规则来指示您关注的事件，并包括要在事件匹配规则时执行的自动化操作。可自动触发的操作包括：
+ 将事件添加到日志中的 CloudWatch 日志组
+ 调用函数 AWS Lambda 
+ 调用 Amazon EC2 Run Command
+ 将事件中继到 Amazon Kinesis Data Streams
+ 激活 AWS Step Functions 状态机
+ 通知 Amazon SNS 主题或 Amazon SQS 队列

有关更多信息，请参阅《[亚马逊* EventBridge 用户指南》 EventBridge中的 “亚马逊*入门](https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-getting-set-up.html)”。

## 来自 Amazon ECR 的示例事件
<a name="ecr-eventbridge-bus"></a>

以下是来自 Amazon ECR 的示例事件。尽最大努力发出事件。

**已完成镜像推送的事件**

每个镜像推送完成后，将发送以下事件。有关更多信息，请参阅 [将 Docker 映像推送到 Amazon ECR 私有存储库](docker-push-ecr-image.md)。

```
{
    "version": "0",
    "id": "13cde686-328b-6117-af20-0e5566167482",
    "detail-type": "ECR Image Action",
    "source": "aws.ecr",
    "account": "123456789012",
    "time": "2019-11-16T01:54:34Z",
    "region": "us-west-2",
    "resources": [],
    "detail": {
        "result": "SUCCESS",
        "repository-name": "my-repository-name",
        "image-digest": "sha256:7f5b2640fe6fb4f46592dfd3410c4a79dac4f89e4782432e0378abcd1234",
        "action-type": "PUSH",
        "image-tag": "latest"
    }
}
```

**缓存提取操作的事件**

尝试缓存提取操作时，将发送以下事件。有关更多信息，请参阅 [将上游注册表与 Amazon ECR 私有注册表同步](pull-through-cache.md)。

```
{
    "version": "0",
    "id": "85fc3613-e913-7fc4-a80c-a3753e4aa9ae",
    "detail-type": "ECR Pull Through Cache Action",
    "source": "aws.ecr",
    "account": "123456789012",
    "time": "2023-02-29T02:36:48Z",
    "region": "us-west-2",
    "resources": [
        "arn:aws:ecr:us-west-2:123456789012:repository/docker-hub/alpine"
    ],
    "detail": {
        "rule-version": "1",
        "sync-status": "SUCCESS",
        "ecr-repository-prefix": "docker-hub",
        "repository-name": "docker-hub/alpine",
        "upstream-registry-url": "public.ecr.aws",
        "image-tag": "3.17.2",
        "image-digest": "sha256:4aa08ef415aecc80814cb42fa41b658480779d80c77ab15EXAMPLE",
    }
}
```

**已完成镜像扫描的事件（基本扫描）**

为注册表启用基本扫描后，当每个镜像扫描完成时，会发送以下事件。`finding-severity-counts` 参数仅返回严重性级别的值 (如果存在)。例如，如果镜像不包含任何 `CRITICAL` 级别的结果，则不会返回任何关键计数。有关更多信息，请参阅 [在 Amazon ECR 中扫描映像是否存在操作系统漏洞](image-scanning-basic.md)。

**注意**  
有关启用增强扫描后 Amazon Inspector 发出的事件的详细信息，请参阅 [EventBridge 为了在 Amazon ECR 中进行增强扫描而发送的事件](image-scanning-enhanced-events.md)。

```
{
    "version": "0",
    "id": "85fc3613-e913-7fc4-a80c-a3753e4aa9ae",
    "detail-type": "ECR Image Scan",
    "source": "aws.ecr",
    "account": "123456789012",
    "time": "2019-10-29T02:36:48Z",
    "region": "us-east-1",
    "resources": [
        "arn:aws:ecr:us-east-1:123456789012:repository/my-repository-name"
    ],
    "detail": {
        "scan-status": "COMPLETE",
        "repository-name": "my-repository-name",
        "finding-severity-counts": {
	       "CRITICAL": 10,
	       "MEDIUM": 9
	     },
        "image-digest": "sha256:7f5b2640fe6fb4f46592dfd3410c4a79dac4f89e4782432e0378abcd1234",
        "image-tags": []
    }
}
```

**启用了增强扫描的资源的变更通知事件（增强扫描）**

为注册表启用增强扫描后，当启用了增强扫描的资源发生更改时，Amazon ECR 将发送以下事件。这包括正在创建的新存储库、正在更改的存储库的扫描频率，或者在启用了增强扫描功能的存储库中创建或删除镜像的时间。有关更多信息，请参阅 [在 Amazon ECR 中扫描映像是否存在软件漏洞](image-scanning.md)。

```
{
	"version": "0",
	"id": "0c18352a-a4d4-6853-ef53-0ab8638973bf",
	"detail-type": "ECR Scan Resource Change",
	"source": "aws.ecr",
	"account": "123456789012",
	"time": "2021-10-14T20:53:46Z",
	"region": "us-east-1",
	"resources": [],
	"detail": {
		"action-type": "SCAN_FREQUENCY_CHANGE",
		"repositories": [{
				"repository-name": "repository-1",
				"repository-arn": "arn:aws:ecr:us-east-1:123456789012:repository/repository-1",
				"scan-frequency": "SCAN_ON_PUSH",
				"previous-scan-frequency": "MANUAL"
			},
			{
				"repository-name": "repository-2",
				"repository-arn": "arn:aws:ecr:us-east-1:123456789012:repository/repository-2",
				"scan-frequency": "CONTINUOUS_SCAN",
				"previous-scan-frequency": "SCAN_ON_PUSH"
			},
			{
				"repository-name": "repository-3",
				"repository-arn": "arn:aws:ecr:us-east-1:123456789012:repository/repository-3",
				"scan-frequency": "CONTINUOUS_SCAN",
				"previous-scan-frequency": "SCAN_ON_PUSH"
			}
		],
		"resource-type": "REPOSITORY",
		"scan-type": "ENHANCED"
	}
}
```

**镜像删除的事件**

删除镜像时将发送以下事件。有关更多信息，请参阅 [删除 Amazon ECR 中的映像](delete_image.md)。

```
{
    "version": "0",
    "id": "dd3b46cb-2c74-f49e-393b-28286b67279d",
    "detail-type": "ECR Image Action",
    "source": "aws.ecr",
    "account": "123456789012",
    "time": "2019-11-16T02:01:05Z",
    "region": "us-west-2",
    "resources": [],
    "detail": {
        "result": "SUCCESS",
        "repository-name": "my-repository-name",
        "image-digest": "sha256:7f5b2640fe6fb4f46592dfd3410c4a79dac4f89e4782432e0378abcd1234",
        "action-type": "DELETE",
        "image-tag": "latest"
    }
}
```

**图像存档操作的事件**

存档图像时会发送以下事件。该`target-storage-class`字段将设置为`ARCHIVE`。该事件包括清单和构件媒体类型，用于标识要存档的内容的类型。

```
{
    "version": "0",
    "id": "4f5ec4d5-4de4-7aad-a046-EXAMPLE",
    "detail-type": "ECR Image Action",
    "source": "aws.ecr",
    "account": "123456789012",
    "time": "2019-08-06T00:58:09Z",
    "region": "us-east-1",
    "resources": [],
    "detail": {
        "action-type": "UPDATE_STORAGE_CLASS",
        "target-storage-class": "ARCHIVE",
        "image-digest": "sha256:f98d67af8e53a536502bfc600de3266556b06ed635a32d60aa7a5fe6d7e609d7",
        "repository-name": "ubuntu",
        "result": "SUCCESS",
        "manifest-media-type": "application/vnd.oci.image.manifest.v1+json",
        "artifact-media-type": "application/vnd.oci.image.config.v1+json"
    }
}
```

**图像恢复操作的事件**

恢复存档图像时会发送以下事件。该`target-storage-class`字段将设置为`STANDARD`。该事件包括一个显示图像上次恢复时间的`last-activated-at`字段。

```
{
    "version": "0",
    "id": "7b8fc5e6-5ef5-8bbe-b157-EXAMPLE",
    "detail-type": "ECR Image Action",
    "source": "aws.ecr",
    "account": "123456789012",
    "time": "2019-08-06T01:15:22Z",
    "region": "us-east-1",
    "resources": [],
    "detail": {
        "action-type": "UPDATE_STORAGE_CLASS",
        "target-storage-class": "STANDARD",
        "image-digest": "sha256:f98d67af8e53a536502bfc600de3266556b06ed635a32d60aa7a5fe6d7e609d7",
        "repository-name": "ubuntu",
        "result": "SUCCESS",
        "manifest-media-type": "application/vnd.oci.image.manifest.v1+json",
        "artifact-media-type": "application/vnd.oci.image.config.v1+json",
        "last-activated-at": "2025-10-10T19:13:02.74Z"
    }
}
```

**反向链接恢复操作的事件**

恢复存档的反向链接（参考对象，例如 SBOM、签名或证明）时，将发送以下事件。请注意，`detail-type`是`ECR Referrer Action`为了将其与常规图像操作区分开来。`manifest-media-type`和`artifact-media-type`字段用于标识要恢复的反向链接的特定类型。在本示例中，正在恢复 SBOM 对象。

```
{
    "version": "0",
    "id": "8c9gd6f7-6fg6-9ccf-c268-EXAMPLE",
    "detail-type": "ECR Referrer Action",
    "source": "aws.ecr",
    "account": "123456789012",
    "time": "2019-08-06T01:20:45Z",
    "region": "us-east-1",
    "resources": [],
    "detail": {
        "action-type": "UPDATE_STORAGE_CLASS",
        "target-storage-class": "STANDARD",
        "image-digest": "sha256:f98d67af8e53a536502bfc600de3266556b06ed635a32d60aa7a5fe6d7e609d7",
        "repository-name": "sbom",
        "result": "SUCCESS",
        "manifest-media-type": "application/vnd.cncf.oras.artifact.manifest.v1+json",
        "artifact-media-type": "text/sbom+json",
        "last-activated-at": "2025-10-10T19:13:02.74Z"
    }
}
```

**已完成映像复制的事件**

每个映像复制完成后，将发送以下事件。有关更多信息，请参阅 [Amazon ECR 中的私有映像复制](replication.md)。

```
{
  "version": "0",
  "id": "c8b133b1-6029-ee73-e2a1-4f466b8ba999",
  "detail-type": "ECR Replication Action",
  "source": "aws.ecr",
  "account": "123456789012",
  "time": "2024-05-08T20:44:54Z",
  "region": "us-east-1",
  "resources": [
    "arn:aws:ecr:us-east-1:123456789012:repository/docker-hub/alpine"
  ],
  "detail": {
    "result": "SUCCESS",
    "repository-name": "docker-hub/alpine",
    "image-digest": "sha256:7f5b2640fe6fb4f46592dfd3410c4a79dac4f89e4782432e0378abcd1234",
    "source-account": "123456789012",
    "action-type": "REPLICATE",
    "source-region": "us-west-2",
    "image-tag": "3.17.2"
  }
}
```

**映像复制失败的事件**

映像复制失败时，将发送以下事件。`result` 字段将包含 `FAILED`，其他错误信息可能包含在事件详细信息中。

```
{
  "version": "0",
  "id": "d9c244c2-7130-ff84-f3b2-5g577c9cb000",
  "detail-type": "ECR Replication Action",
  "source": "aws.ecr",
  "account": "123456789012",
  "time": "2024-05-08T20:45:12Z",
  "region": "us-east-1",
  "resources": [
    "arn:aws:ecr:us-east-1:123456789012:repository/my-app"
  ],
  "detail": {
    "result": "FAILED",
    "repository-name": "my-app",
    "image-digest": "sha256:8g6c3751gf7gc5g47603ege4511d5a80ead5g90f5893543f1489bde2345",
    "source-account": "123456789012",
    "action-type": "REPLICATE",
    "source-region": "us-west-2",
    "image-tag": "latest"
  }
}
```

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

Amazon ECR 与 AWS CloudTrail一项服务集成，该服务提供用户、角色或 AWS 服务在 Amazon ECR 中采取的操作的记录。 CloudTrail 将以下 Amazon ECR 操作捕获为事件：
+ 所有 API 调用，包括来自 Amazon ECR 控制台的调用
+ 由于存储库上的加密设置而采取的所有操作
+ 由于生命周期策略规则而采取的所有操作，包括成功和不成功的操作
**重要**  
由于单个 CloudTrail 事件的大小限制，对于 10 张或更多图像过期的生命周期策略操作，Amazon ECR 会向发送多个事件。 CloudTrail此外，Amazon ECR 中每个镜像最多可包含 100 个标签。

创建跟踪后，您可以允许将 CloudTrail 事件持续传输到 Amazon S3 存储桶，包括 Amazon ECR 的事件。如果您未配置跟踪，您仍然可以在 CloudTrail 控制台的 “事件**历史记录” 中查看最新的事件**。使用此信息，您可以确定向 Amazon ECR 发出了什么请求、发出请求的 IP 地址、何人发出的请求、请求的发出时间以及其他详细信息。

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

## 亚马逊 ECR 信息位于 CloudTrail
<a name="service-name-info-in-cloudtrail"></a>

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

要持续记录您的 AWS 账户中的事件，包括 Amazon ECR 的事件，请创建跟踪。跟踪允许 CloudTrail 将日志文件传输到 Amazon S3 存储桶。在控制台中创建跟踪时，您可以将跟踪应用到单个区域或所有区域。跟踪记录 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)

所有 Amazon ECR API 操作均由《亚马逊弹性容器注册表 API 参考》记录 CloudTrail 并记录在《[亚马逊弹性容器注册表 API 参考](https://docs.aws.amazon.com/AmazonECR/latest/APIReference/)》中。执行常见任务时，会在 CloudTrail 日志文件中为该任务中的每个 API 操作生成部分。例如，当您创建存储库时 `GetAuthorizationToken``CreateRepository`，会在 CloudTrail 日志文件中生成`SetRepositoryPolicy`章节。当您将图像推送到存储库时，、`InitiateLayerUpload`、`UploadLayerPart``CompleteLayerUpload``PutImage`、和，如果启用了 blob 挂载，则会生成`MountLayer`部分。当您提取镜像时，则将生成 `GetDownloadUrlForLayer` 和 `BatchGetImage` 部分。存档或恢复时，会生成图像`UpdateImageStorageClass`部分。当支持该OCI 1.1规范的OCI客户端使用 Referrers API 获取图片的反向链接或引用工件列表时，会触发一个`ListImageReferrers` CloudTrail 事件。有关这些常见任务的示例，请参阅 [CloudTrail 日志条目示例](#cloudtrail-examples)。

每个事件或日志条目都包含有关生成请求的人员信息。身份信息有助于您确定以下内容：
+ 请求是使用根用户凭证还是 用户凭证发出的
+ 请求是使用角色还是联合用户的临时安全凭证发出的
+ 请求是否由其他 AWS 服务发出

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

## 了解 Amazon ECR 日志文件条目
<a name="understanding-service-name-entries"></a>

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

### CloudTrail 日志条目示例
<a name="cloudtrail-examples"></a>

以下是一些常见 Amazon ECR 任务的 CloudTrail 日志条目示例。

为提高可读性，这些示例已进行格式化处理。在 CloudTrail 日志文件中，所有条目和事件都连接成一行。此外，该示例限于一个 Amazon ECR 条目。在真实的 CloudTrail 日志文件中，您可以看到来自多个 AWS 服务的条目和事件。

**重要**  
**来源IPAddress**是发出请求的 IP 地址。对于源自服务控制台的操作，报告的地址针对的是基础资源而不是控制台 Web 服务器。对于中的服务 AWS，仅显示 DNS 名称。即使对 AWS 服务 DNS 名称进行了编辑，我们仍会使用客户端源 IP 来评估身份验证。

**Topics**
+ [

#### 示例：创建存储库操作
](#cloudtrail-examples-create-repository)
+ [

#### 示例：创建 Amazon ECR 存储库时的 AWS KMS `CreateGrant` API 操作
](#cloudtrail-examples-create-repository-kms)
+ [

#### 示例：镜像推送操作
](#cloudtrail-examples-push-image)
+ [

#### 示例：镜像提取操作
](#cloudtrail-examples-image-pull)
+ [

#### 示例：镜像生命周期策略操作
](#cloudtrail-examples-lcp)
+ [

#### 示例：图像存档操作
](#cloudtrail-examples-image-archive)
+ [

#### 示例：图像恢复操作
](#cloudtrail-examples-image-restore)
+ [

#### 示例：映像引用站点操作
](#cloudtrail-examples-image-referrers-action)

#### 示例：创建存储库操作
<a name="cloudtrail-examples-create-repository"></a>

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

```
{
    "eventVersion": "1.04",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AIDACKCEVSQ6C2EXAMPLE:account_name",
        "arn": "arn:aws:sts::123456789012:user/Mary_Major",
        "accountId": "123456789012",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
        "sessionContext": {
            "attributes": {
                "mfaAuthenticated": "false",
                "creationDate": "2018-07-11T21:54:07Z"
            },
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AIDACKCEVSQ6C2EXAMPLE",
                "arn": "arn:aws:iam::123456789012:role/Admin",
                "accountId": "123456789012",
                "userName": "Admin"
            }
        }
    },
    "eventTime": "2018-07-11T22:17:43Z",
    "eventSource": "ecr.amazonaws.com",
    "eventName": "CreateRepository",
    "awsRegion": "us-east-2",
    "sourceIPAddress": "203.0.113.12",
    "userAgent": "console.amazonaws.com",
    "requestParameters": {
        "repositoryName": "testrepo"
    },
    "responseElements": {
        "repository": {
            "repositoryArn": "arn:aws:ecr:us-east-2:123456789012:repository/testrepo",
            "repositoryName": "testrepo",
            "repositoryUri": "123456789012.dkr.ecr.us-east-2.amazonaws.com/testrepo",
            "createdAt": "Jul 11, 2018 10:17:44 PM",
            "registryId": "123456789012"
        }
    },
    "requestID": "cb8c167e-EXAMPLE",
    "eventID": "e3c6f4ce-EXAMPLE",
    "resources": [
        {
            "ARN": "arn:aws:ecr:us-east-2:123456789012:repository/testrepo",
            "accountId": "123456789012"
        }
    ],
    "eventType": "AwsApiCall",
    "recipientAccountId": "123456789012"
}
```

#### 示例：创建 Amazon ECR 存储库时的 AWS KMS `CreateGrant` API 操作
<a name="cloudtrail-examples-create-repository-kms"></a>

以下示例显示了一个 CloudTrail 日志条目，该条目演示了在启用了 KMS 加密的情况下创建 Amazon ECR 存储库时的 AWS KMS `CreateGrant`操作。对于每个启用 KMS 加密创建的存储库，您应该会在中看到两个`CreateGrant`日志条目 CloudTrail。

```
{
    "eventVersion": "1.05",
    "userIdentity": {
        "type": "IAMUser",
        "principalId": "AIDAIEP6W46J43IG7LXAQ",
        "arn": "arn:aws:iam::123456789012:user/Mary_Major",
        "accountId": "123456789012",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
        "userName": "Mary_Major",
        "sessionContext": {
            "sessionIssuer": {
                
            },
            "webIdFederationData": {
                
            },
            "attributes": {
                "mfaAuthenticated": "false",
                "creationDate": "2020-06-10T19:22:10Z"
            }
        },
        "invokedBy": "AWS Internal"
    },
    "eventTime": "2020-06-10T19:22:10Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "CreateGrant",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "203.0.113.12",
    "userAgent": "console.amazonaws.com",
    "requestParameters": {
        "keyId": "4b55e5bf-39c8-41ad-b589-18464af7758a",
        "granteePrincipal": "ecr.us-west-2.amazonaws.com",
        "operations": [
            "GenerateDataKey",
            "Decrypt"
        ],
        "retiringPrincipal": "ecr.us-west-2.amazonaws.com",
        "constraints": {
            "encryptionContextSubset": {
                "aws:ecr:arn": "arn:aws:ecr:us-west-2:123456789012:repository/testrepo"
            }
        }
    },
    "responseElements": {
        "grantId": "3636af9adfee1accb67b83941087dcd45e7fadc4e74ff0103bb338422b5055f3"
    },
    "requestID": "047b7dea-b56b-4013-87e9-a089f0f6602b",
    "eventID": "af4c9573-c56a-4886-baca-a77526544469",
    "readOnly": false,
    "resources": [
        {
            "accountId": "123456789012",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-west-2:123456789012:key/4b55e5bf-39c8-41ad-b589-18464af7758a"
        }
    ],
    "eventType": "AwsApiCall",
    "recipientAccountId": "123456789012"
}
```

#### 示例：镜像推送操作
<a name="cloudtrail-examples-push-image"></a>

以下示例显示了一个 CloudTrail 日志条目，该条目演示了使用该`PutImage`操作的图像推送。

**注意**  
推送图像时，您还将在 CloudTrail 日志中看到`InitiateLayerUpload``UploadLayerPart`、和`CompleteLayerUpload`引用。

```
{
    "eventVersion": "1.04",
    "userIdentity": {
    "type": "IAMUser",
    "principalId": "AIDACKCEVSQ6C2EXAMPLE:account_name",
    "arn": "arn:aws:sts::123456789012:user/Mary_Major",
    "accountId": "123456789012",
    "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
		"userName": "Mary_Major",
		"sessionContext": {
			"attributes": {
				"mfaAuthenticated": "false",
				"creationDate": "2019-04-15T16:42:14Z"
			}
		}
	},
	"eventTime": "2019-04-15T16:45:00Z",
	"eventSource": "ecr.amazonaws.com",
	"eventName": "PutImage",
	"awsRegion": "us-east-2",
	"sourceIPAddress": "AWS Internal",
	"userAgent": "AWS Internal",
	"requestParameters": {
		"repositoryName": "testrepo",
		"imageTag": "latest",
		"registryId": "123456789012",
		"imageManifest": "{\n   \"schemaVersion\": 2,\n   \"mediaType\": \"application/vnd.docker.distribution.manifest.v2+json\",\n   \"config\": {\n      \"mediaType\": \"application/vnd.docker.container.image.v1+json\",\n      \"size\": 5543,\n      \"digest\": \"sha256:000b9b805af1cdb60628898c9f411996301a1c13afd3dbef1d8a16ac6dbf503a\"\n   },\n   \"layers\": [\n      {\n         \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n         \"size\": 43252507,\n         \"digest\": \"sha256:3b37166ec61459e76e33282dda08f2a9cd698ca7e3d6bc44e6a6e7580cdeff8e\"\n      },\n      {\n         \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n         \"size\": 846,\n         \"digest\": \"sha256:504facff238fde83f1ca8f9f54520b4219c5b8f80be9616ddc52d31448a044bd\"\n      },\n      {\n         \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n         \"size\": 615,\n         \"digest\": \"sha256:ebbcacd28e101968415b0c812b2d2dc60f969e36b0b08c073bf796e12b1bb449\"\n      },\n      {\n         \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n         \"size\": 850,\n         \"digest\": \"sha256:c7fb3351ecad291a88b92b600037e2435c84a347683d540042086fe72c902b8a\"\n      },\n      {\n         \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n         \"size\": 168,\n         \"digest\": \"sha256:2e3debadcbf7e542e2aefbce1b64a358b1931fb403b3e4aeca27cb4d809d56c2\"\n      },\n      {\n         \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n         \"size\": 37720774,\n         \"digest\": \"sha256:f8c9f51ad524d8ae9bf4db69cd3e720ba92373ec265f5c390ffb21bb0c277941\"\n      },\n      {\n         \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n         \"size\": 30432107,\n         \"digest\": \"sha256:813a50b13f61cf1f8d25f19fa96ad3aa5b552896c83e86ce413b48b091d7f01b\"\n      },\n      {\n         \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n         \"size\": 197,\n         \"digest\": \"sha256:7ab043301a6187ea3293d80b30ba06c7bf1a0c3cd4c43d10353b31bc0cecfe7d\"\n      },\n      {\n         \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n         \"size\": 154,\n         \"digest\": \"sha256:67012cca8f31dc3b8ee2305e7762fee20c250513effdedb38a1c37784a5a2e71\"\n      },\n      {\n         \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n         \"size\": 176,\n         \"digest\": \"sha256:3bc892145603fffc9b1c97c94e2985b4cb19ca508750b15845a5d97becbd1a0e\"\n      },\n      {\n         \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n         \"size\": 183,\n         \"digest\": \"sha256:6f1c79518f18251d35977e7e46bfa6c6b9cf50df2a79d4194941d95c54258d18\"\n      },\n      {\n         \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n         \"size\": 212,\n         \"digest\": \"sha256:b7bcfbc2e2888afebede4dd1cd5eebf029bb6315feeaf0b56e425e11a50afe42\"\n      },\n      {\n         \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n         \"size\": 212,\n         \"digest\": \"sha256:2b220f8b0f32b7c2ed8eaafe1c802633bbd94849b9ab73926f0ba46cdae91629\"\n      }\n   ]\n}"
	},
	"responseElements": {
		"image": {
			"repositoryName": "testrepo",
			"imageManifest": "{\n   \"schemaVersion\": 2,\n   \"mediaType\": \"application/vnd.docker.distribution.manifest.v2+json\",\n   \"config\": {\n      \"mediaType\": \"application/vnd.docker.container.image.v1+json\",\n      \"size\": 5543,\n      \"digest\": \"sha256:000b9b805af1cdb60628898c9f411996301a1c13afd3dbef1d8a16ac6dbf503a\"\n   },\n   \"layers\": [\n      {\n         \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n         \"size\": 43252507,\n         \"digest\": \"sha256:3b37166ec61459e76e33282dda08f2a9cd698ca7e3d6bc44e6a6e7580cdeff8e\"\n      },\n      {\n         \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n         \"size\": 846,\n         \"digest\": \"sha256:504facff238fde83f1ca8f9f54520b4219c5b8f80be9616ddc52d31448a044bd\"\n      },\n      {\n         \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n         \"size\": 615,\n         \"digest\": \"sha256:ebbcacd28e101968415b0c812b2d2dc60f969e36b0b08c073bf796e12b1bb449\"\n      },\n      {\n         \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n         \"size\": 850,\n         \"digest\": \"sha256:c7fb3351ecad291a88b92b600037e2435c84a347683d540042086fe72c902b8a\"\n      },\n      {\n         \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n         \"size\": 168,\n         \"digest\": \"sha256:2e3debadcbf7e542e2aefbce1b64a358b1931fb403b3e4aeca27cb4d809d56c2\"\n      },\n      {\n         \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n         \"size\": 37720774,\n         \"digest\": \"sha256:f8c9f51ad524d8ae9bf4db69cd3e720ba92373ec265f5c390ffb21bb0c277941\"\n      },\n      {\n         \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n         \"size\": 30432107,\n         \"digest\": \"sha256:813a50b13f61cf1f8d25f19fa96ad3aa5b552896c83e86ce413b48b091d7f01b\"\n      },\n      {\n         \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n         \"size\": 197,\n         \"digest\": \"sha256:7ab043301a6187ea3293d80b30ba06c7bf1a0c3cd4c43d10353b31bc0cecfe7d\"\n      },\n      {\n         \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n         \"size\": 154,\n         \"digest\": \"sha256:67012cca8f31dc3b8ee2305e7762fee20c250513effdedb38a1c37784a5a2e71\"\n      },\n      {\n         \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n         \"size\": 176,\n         \"digest\": \"sha256:3bc892145603fffc9b1c97c94e2985b4cb19ca508750b15845a5d97becbd1a0e\"\n      },\n      {\n         \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n         \"size\": 183,\n         \"digest\": \"sha256:6f1c79518f18251d35977e7e46bfa6c6b9cf50df2a79d4194941d95c54258d18\"\n      },\n      {\n         \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n         \"size\": 212,\n         \"digest\": \"sha256:b7bcfbc2e2888afebede4dd1cd5eebf029bb6315feeaf0b56e425e11a50afe42\"\n      },\n      {\n         \"mediaType\": \"application/vnd.docker.image.rootfs.diff.tar.gzip\",\n         \"size\": 212,\n         \"digest\": \"sha256:2b220f8b0f32b7c2ed8eaafe1c802633bbd94849b9ab73926f0ba46cdae91629\"\n      }\n   ]\n}",
			"registryId": "123456789012",
			"imageId": {
				"imageDigest": "sha256:98c8b060c21d9adbb6b8c41b916e95e6307102786973ab93a41e8b86d1fc6d3e",
				"imageTag": "latest"
			}
		}
	},
	"requestID": "cf044b7d-5f9d-11e9-9b2a-95983139cc57",
	"eventID": "2bfd4ee2-2178-4a82-a27d-b12939923f0f",
	"resources": [{
		"ARN": "arn:aws:ecr:us-east-2:123456789012:repository/testrepo",
		"accountId": "123456789012"
	}],
	"eventType": "AwsApiCall",
	"recipientAccountId": "123456789012"
}
```

#### 示例：镜像提取操作
<a name="cloudtrail-examples-image-pull"></a>

以下示例显示了一个 CloudTrail 日志条目，该条目演示了使用该`BatchGetImage`操作的图像拉取。

**注意**  
当拉取映像时，如果本地尚没有映像，您在 CloudTrail 日志中还将看到 `GetDownloadUrlForLayer` 引用。

```
{
    "eventVersion": "1.04",
    "userIdentity": {
    "type": "IAMUser",
    "principalId": "AIDACKCEVSQ6C2EXAMPLE:account_name",
    "arn": "arn:aws:sts::123456789012:user/Mary_Major",
    "accountId": "123456789012",
    "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
		"userName": "Mary_Major",
		"sessionContext": {
			"attributes": {
				"mfaAuthenticated": "false",
				"creationDate": "2019-04-15T16:42:14Z"
			}
		}
	},
	"eventTime": "2019-04-15T17:23:20Z",
	"eventSource": "ecr.amazonaws.com",
	"eventName": "BatchGetImage",
	"awsRegion": "us-east-2",
	"sourceIPAddress": "ecr.amazonaws.com",
	"userAgent": "ecr.amazonaws.com",
	"requestParameters": {
		"imageIds": [{
			"imageTag": "latest"
		}],
		"acceptedMediaTypes": [
			"application/json",
			"application/vnd.oci.image.manifest.v1+json",
			"application/vnd.oci.image.index.v1+json",
			"application/vnd.docker.distribution.manifest.v2+json",
			"application/vnd.docker.distribution.manifest.list.v2+json",
			"application/vnd.docker.distribution.manifest.v1+prettyjws"
		],
		"repositoryName": "testrepo",
		"registryId": "123456789012"
	},
	"responseElements": null,
	"requestID": "2a1b97ee-5fa3-11e9-a8cd-cd2391aeda93",
	"eventID": "c84f5880-c2f9-4585-9757-28fa5c1065df",
	"resources": [{
		"ARN": "arn:aws:ecr:us-east-2:123456789012:repository/testrepo",
		"accountId": "123456789012"
	}],
	"eventType": "AwsApiCall",
	"recipientAccountId": "123456789012"
}
```

#### 示例：镜像生命周期策略操作
<a name="cloudtrail-examples-lcp"></a>

以下示例显示了一个 CloudTrail 日志条目，该条目演示了图像何时因生命周期策略规则而过期。可通过筛选事件名称字段的 `PolicyExecutionEvent` 来定位此事件类型。

当您测试生命周期策略预览时，Amazon ECR 会生成一个 CloudTrail 日志条目，其事件名称字段为`DryRunEvent`，其结构与完全相同。`PolicyExecutionEvent`通过将事件名称更改为 `DryRunEvent`，您可以改为筛选试运行事件。

**重要**  
由于单个 CloudTrail 事件的大小限制，对于 10 张或更多图像过期的生命周期策略操作，Amazon ECR 会向发送多个事件。 CloudTrail此外，Amazon ECR 中每个镜像最多可包含 100 个标签。

```
{
    "eventVersion": "1.05",
    "userIdentity": {
        "accountId": "123456789012",
        "invokedBy": "AWS Internal"
    },
    "eventTime": "2020-03-12T20:22:12Z",
    "eventSource": "ecr.amazonaws.com",
    "eventName": "PolicyExecutionEvent",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "AWS Internal",
    "userAgent": "AWS Internal",
    "requestParameters": null,
    "responseElements": null,
    "eventID": "9354dd7f-9aac-4e9d-956d-12561a4923aa",
    "readOnly": true,
    "resources": [
        {
            "ARN": "arn:aws:ecr:us-west-2:123456789012:repository/testrepo",
            "accountId": "123456789012",
            "type": "AWS::ECR::Repository"
        }
    ],
    "eventType": "AwsServiceEvent",
    "recipientAccountId": "123456789012",
    "serviceEventDetails": {
        "repositoryName": "testrepo",
        "lifecycleEventPolicy": {
            "lifecycleEventRules": [
                {
                    "rulePriority": 1,
                    "description": "remove all images > 2",
                    "lifecycleEventSelection": {
                        "tagStatus": "Any",
                        "tagPrefixList": [],
                        "countType": "Image count more than",
                        "countNumber": 2
                    },
                    "action": "expire"
                }
            ],
            "lastEvaluatedAt": 0,
            "policyVersion": 1,
            "policyId": "ceb86829-58e7-9498-920c-aa042e33037b"
        },
        "lifecycleEventImageActions": [
            {
                "lifecycleEventImage": {
                    "digest": "sha256:ddba4d27a7ffc3f86dd6c2f92041af252a1f23a8e742c90e6e1297bfa1bc0c45",
                    "tagStatus": "Tagged",
                    "tagList": [
                        "alpine"
                    ],
                    "pushedAt": 1584042813000
                },
                "rulePriority": 1
            },
            {
                "lifecycleEventImage": {
                    "digest": "sha256:6ab380c5a5acf71c1b6660d645d2cd79cc8ce91b38e0352cbf9561e050427baf",
                    "tagStatus": "Tagged",
                    "tagList": [
                        "centos"
                    ],
                    "pushedAt": 1584042842000
                },
                "rulePriority": 1
            }
        ],
        "lifecycleEventFailureDetails": [
            {
                "lifecycleEventImage": {
                    "digest": "sha256:9117e1bc28cd20751e584b4ccd19b1178d14cf02d134b04ce6be0cc51bff762a",
                    "tagStatus": "Untagged",
                    "tagList": [],
                    "pushedAt": 1584042844000
                },
                "rulePriority": 1,
                "failureCode": "ImageReferencedByManifestList",
                "failureReason": "Requested image referenced by manifest list: [sha256:4b27c83d44a18c31543039d9e8b2786043ec6c8d00804d5800c5148d6b6f65bc]"
            }
        ]
    }
}
```

#### 示例：图像存档操作
<a name="cloudtrail-examples-image-archive"></a>

以下示例显示了一个 CloudTrail 日志条目，该条目演示了使用`targetStorageClass`设置为的`UpdateImageStorageClass`操作对图像进行存档`ARCHIVE`。

```
{
    "eventVersion": "1.11",
    "userIdentity": {
        "type": "IAMUser",
        "principalId": "AIDACKCEVSQ6C2EXAMPLE:account_name",
        "arn": "arn:aws:sts::123456789012:user/Mary_Major",
        "accountId": "123456789012",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
		"userName": "Mary_Major",
		"sessionContext": {
			"attributes": {
				"mfaAuthenticated": "false",
				"creationDate": "2019-04-15T16:42:14Z"
			}
		}
	},
	"eventTime": "2019-04-15T16:45:00Z",
	"eventSource": "ecr.amazonaws.com",
	"eventName": "UpdateImageStorageClass",
	"awsRegion": "us-east-2",
	"sourceIPAddress": "AWS Internal",
	"userAgent": "AWS Internal",
	"requestParameters": {
		"repositoryName": "testrepo",
		"imageId": {
			"imageDigest": "sha256:98c8b060c21d9adbb6b8c41b916e95e6307102786973ab93a41e8b86d1fc6d3e"
		},
		"targetStorageClass": "ARCHIVE",
		"registryId": "123456789012"
	},
	"responseElements": {
		"image": {
			"registryId": "123456789012",
			"repositoryName": "testrepo",
			"imageId": {
				"imageDigest": "sha256:98c8b060c21d9adbb6b8c41b916e95e6307102786973ab93a41e8b86d1fc6d3e"
			},
			"imageStatus": "ARCHIVED"
		}
	},
	"requestID": "cf044b7d-EXAMPLE",
	"eventID": "2bfd4ee2-EXAMPLE",
	"readOnly": false,
	"resources": [{
		"ARN": "arn:aws:ecr:us-east-2:123456789012:repository/testrepo",
		"accountId": "123456789012"
	}],
	"eventType": "AwsApiCall",
	"managementEvent": true,
	"recipientAccountId": "123456789012",
	"eventCategory": "Management"
}
```

#### 示例：图像恢复操作
<a name="cloudtrail-examples-image-restore"></a>

以下示例显示了演示图像正在恢复的 CloudTrail 日志条目。恢复存档图像时，会生成两个事件：

1. 启动恢复时的 API 调用事件

1. 异步还原操作完成时的服务事件

**API 调用事件（恢复启动）**

以下示例显示了使用`targetStorageClass`设置为的`UpdateImageStorageClass`操作恢复图像的初始 API 调用`STANDARD`。响应将图像状态显示为`ACTIVATING`。

```
{
    "eventVersion": "1.11",
    "userIdentity": {
        "type": "IAMUser",
        "principalId": "AIDACKCEVSQ6C2EXAMPLE:account_name",
        "arn": "arn:aws:sts::123456789012:user/Mary_Major",
        "accountId": "123456789012",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
		"userName": "Mary_Major",
		"sessionContext": {
			"attributes": {
				"mfaAuthenticated": "false",
				"creationDate": "2019-04-15T16:42:14Z"
			}
		}
	},
	"eventTime": "2019-04-15T16:45:00Z",
	"eventSource": "ecr.amazonaws.com",
	"eventName": "UpdateImageStorageClass",
	"awsRegion": "us-east-2",
	"sourceIPAddress": "AWS Internal",
	"userAgent": "AWS Internal",
	"requestParameters": {
		"repositoryName": "testrepo",
		"imageId": {
			"imageDigest": "sha256:98c8b060c21d9adbb6b8c41b916e95e6307102786973ab93a41e8b86d1fc6d3e"
		},
		"targetStorageClass": "STANDARD",
		"registryId": "123456789012"
	},
	"responseElements": {
		"image": {
			"registryId": "123456789012",
			"repositoryName": "testrepo",
			"imageId": {
				"imageDigest": "sha256:98c8b060c21d9adbb6b8c41b916e95e6307102786973ab93a41e8b86d1fc6d3e"
			},
			"imageStatus": "ACTIVATING"
		}
	},
	"requestID": "cf044b7d-EXAMPLE",
	"eventID": "2bfd4ee2-EXAMPLE",
	"readOnly": false,
	"resources": [{
		"ARN": "arn:aws:ecr:us-east-2:123456789012:repository/testrepo",
		"accountId": "123456789012"
	}],
	"eventType": "AwsApiCall",
	"managementEvent": true,
	"recipientAccountId": "123456789012",
	"eventCategory": "Management"
}
```

**服务事件（恢复完成）**

以下示例显示了异步还原操作完成时生成的服务事件。可通过筛选事件名称字段的 `ImageActivationEvent` 来定位此事件类型。该`serviceEventDetails`部分包含还原结果和最终映像状态。

```
{
    "eventVersion": "1.11",
    "userIdentity": {
        "accountId": "123456789012",
        "invokedBy": "AWS Internal"
    },
    "eventTime": "2020-03-12T20:22:12Z",
    "eventSource": "ecr.amazonaws.com",
    "eventName": "ImageActivationEvent",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "AWS Internal",
    "userAgent": "AWS Internal",
    "requestParameters": null,
    "responseElements": null,
    "eventID": "9354dd7f-EXAMPLE",
    "readOnly": true,
    "resources": [
        {
            "ARN": "arn:aws:ecr:us-west-2:123456789012:repository/testrepo",
            "accountId": "123456789012",
            "type": "AWS::ECR::Repository"
        }
    ],
    "eventType": "AwsServiceEvent",
    "managementEvent": true,
    "recipientAccountId": "123456789012",
    "serviceEventDetails": {
        "repositoryName": "testrepo",
        "imageDigest": "sha256:98c8b060c21d9adbb6b8c41b916e95e6307102786973ab93a41e8b86d1fc6d3e",
        "targetStorageClass": "STANDARD",
        "result": "SUCCESS",
        "imageStatus": "ACTIVE"
    },
    "eventCategory": "Management"
}
```

#### 示例：映像引用站点操作
<a name="cloudtrail-examples-image-referrers-action"></a>

以下示例显示了一个 AWS CloudTrail 日志条目，该条目演示了OCI 1.1合规的客户端何时使用 API 获取图片的反向链接或参考构件列表。`Referrers`

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AIDACKCEVSQ6C2EXAMPLE:account_name",
        "arn": "arn:aws:sts::123456789012:user/Mary_Major",
        "accountId": "123456789012",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AIDACKCEVSQ6C2EXAMPLE",
                "arn": "arn:aws:iam::123456789012:role/Admin",
                "accountId": "123456789012",
                "userName": "Admin"
            },
            "webIdFederationData": {},
            "attributes": {
                "creationDate": "2024-10-08T16:38:39Z",
                "mfaAuthenticated": "false"
            },
            "ec2RoleDelivery": "2.0"
        },
        "invokedBy": "ecr.amazonaws.com"
    },
    "eventTime": "2024-10-08T17:22:51Z",
    "eventSource": "ecr.amazonaws.com",
    "eventName": "ListImageReferrers",
    "awsRegion": "us-east-2",
    "sourceIPAddress": "ecr.amazonaws.com",
    "userAgent": "ecr.amazonaws.com",
    "requestParameters": {
        "registryId": "123456789012",
        "repositoryName": "testrepo",
        "subjectId": {
            "imageDigest": "sha256:000b9b805af1cdb60628898c9f411996301a1c13afd3dbef1d8a16ac6dbf503a"
        },
        "nextToken": "urD72mdD/mC8b5-EXAMPLE"
    },
    "responseElements": null,
    "requestID": "cb8c167e-EXAMPLE",
    "eventID": "e3c6f4ce-EXAMPLE",
    "readOnly": true,
    "resources": [
        {
            "accountId": "123456789012",
            "ARN": "arn:aws:ecr:us-east-2:123456789012:repository/testrepo"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "123456789012",
    "eventCategory": "Management"
}
```