

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

# 监控 CodeArtifact 事件
<a name="monitoring-events"></a>

 CodeArtifact 与 Amazon 集成 EventBridge，Amazon 是一项自动处理和响应事件（包括 CodeArtifact 存储库中的更改）的服务。您可以为事件创建规则，并配置当事件与规则匹配时会发生什么。 EventBridge 以前叫做 “ CloudWatch 活动”。

事件会触发以下操作：
+  调用 AWS Lambda 函数。
+  激活 AWS Step Functions 状态机。
+  通知 Amazon SNS 主题或 Amazon SQS 队列。
+  在中启动管道 AWS CodePipeline。

 CodeArtifact 在创建、修改或删除软件包版本时创建事件。以下是 CodeArtifact 事件的示例：
+  发布新的程序包版本（例如，通过运行 `npm publish`）。
+  向现有程序包版本添加新资产（例如，通过将新的 JAR 文件推送到现有 Maven 程序包）。
+  使用 `copy-package-versions` 将程序包版本从一个存储库复制到另一个存储库。有关更多信息，请参阅 [在存储库之间复制程序包](copy-package.md)。
+  使用 `delete-package-versions` 删除程序包版本。有关更多信息，请参阅 [删除程序包或程序包版本](delete-package.md)。
+  使用 `delete-package` 删除程序包版本。为已删除程序包的每个版本发布一个事件。有关更多信息，请参阅 [删除程序包或程序包版本](delete-package.md)。
+  如果程序包版本是从上游存储库获取，则在下游存储库中保留该版本。有关更多信息，请参阅 [在中使用上游存储库 CodeArtifact](repos-upstream.md)。
+  将软件包版本从外部存储库摄取到存储库中。 CodeArtifact 有关更多信息，请参阅 [将 CodeArtifact 仓库连接到公共仓库](external-connection.md)。

事件会同时发送给拥有该域的账户和管理存储库的账户。例如，假设账户 `111111111111` 拥有域 `my_domain`。账户 `222222222222` 在 `my_domain` 中创建名为 `repo2` 的存储库。当新的软件包版本发布到时`repo2`，两个账户都会收到 EventBridge 事件。拥有域的账户 (`111111111111`) 会收到域中所有存储库的事件。如果一个账户同时拥有域及其中的存储库，则只会传送一个事件。

以下主题描述了 CodeArtifact 事件的格式。它们向您展示如何配置 CodeArtifact事件，以及如何将事件与其他 AWS 服务一起使用。有关更多信息，请参阅《[亚马逊* EventBridge 用户指南》 EventBridge中的 “亚马逊*入门](https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-getting-set-up.html)”。

## CodeArtifact 事件格式和示例
<a name="service-event-format-example"></a>

以下是事件字段和描述以及 CodeArtifact 事件示例。

### CodeArtifact 事件格式
<a name="service-event-format"></a>

 所有 CodeArtifact 事件都包含以下字段。


| 事件字段 | 说明 | 
| --- | --- | 
| version | 事件格式的版本。目前只有一个版本 0。 | 
| id | 事件的唯一标识符。 | 
| detail-type | 事件类型。这决定了 detail 对象中的字段。目前支持的一个 detail-type 是 CodeArtifact Package Version State Change。 | 
| source | 事件的源。因为 CodeArtifact，确实如此aws.codeartifact。 | 
| 账户 | 接收事件的账户的账户 ID。 AWS  | 
| 时间 | 触发事件的确切时间。 | 
| region | 触发了事件的区域。 | 
| 资源 | 一个列表，其中包含了已更改程序包的 ARN。该列表包含一个条目。有关程序包 ARN 格式的信息，请参阅[授予对程序包的写入权限](repo-policies.md#granting-write-access-to-specific-packages)。 | 
| domainName | 包含程序包的存储库所在的域。 | 
| domainOwner | 域名所有者的 AWS 账户 ID。 | 
| repositoryName | 包含程序包的存储库。 | 
| repositoryAdministrator | 存储库管理员的 AWS 账户 ID。 | 
| packageFormat | 触发了事件的程序包的格式。 | 
| packageNamespace | 触发了事件的程序包的命名空间。 | 
| packageName | 触发了事件的程序包的名称。 | 
| packageVersion | 触发了事件的程序包的版本。 | 
| packageVersionState | 触发事件时程序包版本的状态。可能的值为 Unfinished、Published、Unlisted、Archived 和 Disposed。 | 
| packageVersionRevision | 一个值，用于唯一地标识在触发事件时程序包版本的资产和元数据的状态。如果修改了程序包版本（例如，向 Maven 程序包添加另一个 JAR 文件），则 packageVersionRevision 会发生变化。 | 
| changes.assetsAdded | 添加到触发了事件的程序包中的资产数量。资产的示例包括 Maven JAR 文件或 Python Wheel。 | 
| changes.assetsRemoved | 从触发了事件的程序包中删除的资产数量。 | 
| changes.assetsUpdated | 触发了事件的程序包中已修改的资产数量。 | 
| changes.metadataUpdated | 一个布尔值，如果事件包括已修改的程序包级元数据，则设置为 true。例如，一个事件可能会修改 Maven pom.xml 文件。 | 
| changes.statusChanged | 一个布尔值，如果修改了事件的 packageVersionStatus（例如，如果 packageVersionStatus 从 Unfinished 更改为 Published），则设置为 true。 | 
| operationType | 描述程序包版本更改的概要类型。可能的值为 Created、Updated 和 Deleted。 | 
| sequenceNumber | 一个整数，指定了程序包的事件编号。程序包中的每个事件都会使 sequenceNumber 递增，因此可以按顺序排列事件。事件可以使 sequenceNumber 按任意整数递增。  EventBridge 接收事件的顺序可能不正确。 `sequenceNumber`可以用来确定它们的实际顺序。  | 
| eventDeduplicationId | 用于区分重复 EventBridge 事件的 ID。在极少数情况下， EventBridge 可能会在单个事件或预定时间内多次触发相同的规则。或者，EventBridge 可能会为给定的触发规则多次调用同一个目标。 | 

### CodeArtifact 事件示例
<a name="service-event-sample"></a>

 以下是发布 npm 包时可能触发 CodeArtifact 的事件示例。

```
{
      "version":"0",
      "id":"73f03fec-a137-971e-6ac6-07c8ffffffff",
      "detail-type":"CodeArtifact Package Version State Change",
      "source":"aws.codeartifact",
      "account":"123456789012",
      "time":"2019-11-21T23:19:54Z",
      "region":"us-west-2",
      "resources":["arn:aws:codeartifact:us-west-2:111122223333:package/my_domain/myrepo/npm//mypackage"],
      "detail":{
        "domainName":"my_domain",
        "domainOwner":"111122223333",
        "repositoryName":"myrepo",
        "repositoryAdministrator":"123456789012",
        "packageFormat":"npm",
        "packageNamespace":null,
        "packageName":"mypackage",
        "packageVersion":"1.0.0",
        "packageVersionState":"Published",
        "packageVersionRevision":"0E5DE26A4CD79FDF3EBC4924FFFFFFFF",
        "changes":{
          "assetsAdded":1,
          "assetsRemoved":0,
          "metadataUpdated":true,
          "assetsUpdated":0,
          "statusChanged":true
        },
        "operationType":"Created",
        "sequenceNumber":1,
        "eventDeduplicationId":"2mEO0A2Ke07rWUTBXk3CAiQhdTXF4N94LNaT/ffffff="
      }
    }
```