

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

# Image Builder 中的语义版本控制
<a name="ibhow-semantic-versioning"></a>

Image Builder 使用语义版本控制来组织资源并确保资源具有唯一性。 IDs语义版本有四个节点：

*{{<major>}}。 {{<minor>}}。 {{<patch>}}*/<build>

您可以为前三个分配值，并且可以筛选所有这些值。

语义版本控制包含在每个对象的 Amazon 资源名称 (ARN) 中，其级别适用于该对象，如下所示：

1. 无版本 ARNs 和 Name 在任何节点中都 ARNs 不包含特定值。节点要么完全省略，要么被指定为通配符，例如：x.x.x。

1. 版本 ARNs 只有前三个节点:<major>. <minor>。 <patch>

1. 构建版本 ARNs 包含所有四个节点，并指向对象的特定版本的特定构建。

**分配：**对于前三个节点，您可以为每个节点分配任何正整数值或零，上限为 2^30-1 或 1073741823。映像生成器会自动将内部版本号分配给第四个节点。

**模式：**您可以使用符合可分配节点分配要求的任何数字模式。例如，您可以选择软件版本模式（例如 1.0.0）或日期（例如 2021.01.01）。

**选择：**通过语义版本控制，您可以灵活地使用通配符（x）在为食谱选择基本映像或组件时指定最新版本或节点。在任何节点中使用通配符时，第一个通配符右侧的所有节点必须也是通配符。

例如，给定以下最新版本：2.2.4、1.7.8 和 1.6.8，使用通配符选择版本会产生以下结果：
+ `x.x.x` = 2.2.4
+ `1.x.x`= 1.7.8
+ `1.6.x`= 1.6.8
+ `x.2.x` 无效，并产生了错误
+ `1.x.8` 无效，并产生了错误

## 生命周期策略中的通配符版本控制
<a name="lifecycle-wildcard-versioning"></a>

在生命周期策略配方选择中，您可以对语义版本使用通配符模式，以使用单个策略定位配方的多个版本。这样就无需为每个配方版本创建单独的策略，从而简化了生命周期管理。

生命周期策略配方版本支持以下通配符模式：
+ `x.x.x`— 匹配食谱的所有版本。
+ `1.x.x`— 匹配主版本 1 中的所有次要版本和补丁版本。
+ `1.0.x`— 匹配版本 1.0 中的所有补丁版本。

运行带有通配符模式的生命周期策略时，Image Builder 会在执行时将通配符解析为所有匹配的配方版本。这将为该执行创建不可变的版本列表。在策略执行开始后创建的新配方版本将自动包含在下一次计划执行中。

有关使用通配符版本控制创建生命周期策略的更多信息，请参阅。[创建生命周期策略](create-lifecycle-policies.md)

## 使用版本引用
<a name="using-version-references"></a>

 版本引用是 ready-to-use ARN 字符串，它根据您创建或检索的资源的语义版本包含通配符模式。Image Builder 不是编写自定义代码来解析 ARNs 和插入通配符，而是为你完成这项工作。

当您创建或检索 Image Builder 资源时，Image Builder 会自动在对象中提供 ARNs 带有通配符的`latestVersionReferences`预构版本模式。 ARNs 当你想使用通配符版本控制模式引用资源时，这样就无需手动解析和重建。

例如，当您创建带有版本`1.2.3`的组件时，Image Builder 会返回：

```
{
    "componentBuildVersionArn": "arn:aws:imagebuilder:us-west-2:123456789012:component/my-component/1.2.3/1",
    "latestVersionReferences": {
        "latestVersionArn": "arn:aws:imagebuilder:us-west-2:123456789012:component/my-component/x.x.x",
        "latestMajorVersionArn": "arn:aws:imagebuilder:us-west-2:123456789012:component/my-component/1.x.x",
        "latestMinorVersionArn": "arn:aws:imagebuilder:us-west-2:123456789012:component/my-component/1.2.x",
        "latestPatchVersionArn": "arn:aws:imagebuilder:us-west-2:123456789012:component/my-component/1.2.3"
    }
}
```

## 可用的版本参考模式
<a name="available-reference-patterns"></a>

该`latestVersionReferences`对象包含四个 ARN 模式：
+ latestVersionArn (x.x.x)-始终解析为绝对最新版本。
+ atestMajorVersionArn (1.x.x)-解析为主要版本中的最新次要版本和补丁版本。
+ latestMinorVersionArn (1.2.x)-解析为特定次要版本中的最新补丁版本。
+ latestPatchVersionArn (1.2.3)-引用特定的语义版本并解析为支持多个编译版本的资源的最新编译版本。

## 返回版本引用的资源
<a name="resources-returning-references"></a>

所有版本控制的 Image Builder 资源均返回版本引用：`Create``Get` APIs 
+ 组件-`CreateComponent`，`GetComponent`
+ 图片食谱-`CreateImageRecipe`，`GetImageRecipe`
+ 容器食谱-`CreateContainerRecipe`, `GetContainerRecipe` 
+ 图片-`CreateImage`，`GetImage`
+ 工作流程-`CreateWorkflow`，`GetWorkflow`

*注意：*由于Image Builder要求您始终使用最新版本的图像生成器管理的工作流程，因此仅`latestVersionArn (x.x.x)`返回图像生成器管理的工作流程。