

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

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

Image Builder 使用語意版本控制來組織資源，並確保資源具有唯一的 IDs。語意版本有四個節點：

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

您可以為前三個節點指派數值，並且可以篩選所有數值。

語意版本控制包含在每個物件的 Amazon Resource Name (ARN) 中，其層級適用於該物件，如下所示：

1. 無版本 ARNs 和名稱 ARNs 不會在任何節點中包含特定值。節點會完全關閉，或指定為萬用字元，例如：x.x.x。

1. 版本 ARNs僅有前三個節點：<major>.<minor>.<patch>

1. 組建版本 ARNs有全部四個節點，並指向特定版本物件的特定組建。

**指派：**對於前三個節點，您可以指派任何正整數值或零，每個節點的上限為 2^30-1 或 1073741823。Image Builder 會將建置編號自動指派給第四個節點。

**模式：**對於您可以指派的節點，您可以使用任何符合指派要求的數值模式。例如，您可以選擇 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 會自動在 `latestVersionReferences` 物件中提供具有萬用字元版本模式的預先建構 ARNs。當您想要使用萬用字元版本控制模式參考資源時，就不需要手動剖析和重建 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>

所有版本控制的映像建置器資源的 `Create`和 `Get` APIs都會傳回版本參考：
+ 元件 - `CreateComponent`、 `GetComponent`
+ 映像配方 - `CreateImageRecipe`、 `GetImageRecipe`
+ 容器配方 - `CreateContainerRecipe`、 `GetContainerRecipe`
+ 影像 - `CreateImage`、 `GetImage`
+ 工作流程 - `CreateWorkflow`、 `GetWorkflow`

*注意：*對於映像建置器受管工作流程，只會`latestVersionArn (x.x.x)`傳回 ，因為映像建置器要求您一律使用最新版本的映像建置器受管工作流程。