本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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
将程序包版本从一个存储库复制到另一个存储库。有关更多信息,请参阅 在存储库之间复制程序包。 -
使用
delete-package-versions
删除程序包版本。有关更多信息,请参阅 删除软件包或软件包版本。 -
使用
delete-package
删除程序包版本。为已删除程序包的每个版本发布一个事件。有关更多信息,请参阅 删除软件包或软件包版本。 -
如果程序包版本是从上游存储库获取,则在下游存储库中保留该版本。有关更多信息,请参阅 在中使用上游存储库 CodeArtifact。
-
将软件包版本从外部存储库摄取到存储库中。 CodeArtifact 有关更多信息,请参阅 将 CodeArtifact 仓库连接到公共仓库。
事件会同时发送给拥有该域的账户和管理存储库的账户。例如,假设账户 111111111111
拥有域 my_domain
。账户 222222222222
在 my_domain
中创建名为 repo2
的存储库。当新的软件包版本发布到时repo2
,两个账户都会收到 EventBridge 事件。拥有域的账户 (111111111111
) 会收到域中所有存储库的事件。如果一个账户同时拥有域及其中的存储库,则只会传送一个事件。
以下主题描述了 CodeArtifact 事件的格式。它们向您展示如何配置 CodeArtifact事件,以及如何将事件与其他 AWS 服务一起使用。有关更多信息,请参阅《亚马逊 EventBridge 用户指南》 EventBridge中的 “亚马逊入门”。
CodeArtifact 事件格式和示例
以下是事件字段和描述以及 CodeArtifact 事件示例。
CodeArtifact 事件格式
所有 CodeArtifact 事件都包含以下字段。
事件字段 | 描述 |
---|---|
version | 事件格式的版本。目前只有一个版本 0 。 |
id | 事件的唯一标识符。 |
detail-type | 事件类型。这决定了 detail 对象中的字段。目前支持的一个 detail-type 是 CodeArtifact Package Version State Change 。 |
源 | 事件的源。因为 CodeArtifact,确实如此aws.codeartifact 。 |
账户 | 接收事件的账户的账户 ID。 AWS |
时间 | 触发事件的确切时间。 |
region | 触发了事件的区域。 |
resources | 一个列表,其中包含了已更改程序包的 ARN。该列表包含一个条目。有关程序包 ARN 格式的信息,请参阅授予对程序包的写入权限。 |
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 接收事件的顺序可能不正确。 |
eventDeduplicationId | 用于区分重复 EventBridge 事件的 ID。在极少数情况下, EventBridge 可能会在单个事件或预定时间内多次触发相同的规则。或者,EventBridge 可能会为给定的触发规则多次调用同一个目标。 |
CodeArtifact 事件示例
以下是发布 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="
}
}