View a markdown version of this page

從 建立容器映像管道 AWS CLI - EC2 Image Builder

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

從 建立容器映像管道 AWS CLI

若要從 建立映像管道 AWS CLI,請使用適用於管道的組態選項來執行 create-image-pipeline命令。您可以選擇建立包含所有管道組態的 JSON 檔案,或在執行時間指定組態。本節使用 JSON 組態檔案方法來簡化命令。

管道建置新映像以納入基礎映像和元件中任何待定更新的頻率取決於schedule您設定的 。schedule 具有下列屬性:

  • scheduleExpression – 設定管道執行的時間排程,以評估 pipelineExecutionStartCondition並判斷是否應啟動建置。排程是以 cron 表達式設定。如需如何在 Image Builder 中格式化 cron 表達式的詳細資訊,請參閱 在映像建置器中使用 Cron 表達式

  • pipelineExecutionStartCondition – 判斷您的管道是否應該啟動建置。有效值包含:

    • EXPRESSION_MATCH_ONLY – 每次 Cron 表達式符合目前時間時,您的管道都會建立新的映像。

    • EXPRESSION_MATCH_AND_DEPENDENCY_UPDATES_AVAILABLE – 只有在排程表達式相符,且基礎映像或元件有待更新時,您的管道才會建立新的映像。如果沒有待定更新,則會略過組建。若要立即建置而不等待更新,請手動執行管道。

當您在 中執行 create-image-pipeline命令時 AWS CLI,許多組態資源都是選用的。不過,根據管道建立的影像類型,有些資源有條件要求。容器映像管道需要下列資源:

  • 容器配方 ARN

  • 基礎設施組態 ARN

如果您在執行 create-image-pipeline命令時未包含分佈組態資源,則輸出映像會存放在 ECR 儲存庫中,而您指定此儲存庫做為您執行命令之區域中容器配方中的目標儲存庫。如果您包含管道的分佈組態資源,則會使用您為分佈中的第一個區域指定的目標儲存庫。

  1. 建立 CLI 輸入 JSON 文件

    使用您最愛的檔案編輯工具,建立具有下列索引鍵的 JSON 檔案,以及適用於您環境的值。此範例使用名為 create-image-pipeline.json 的檔案:

    { "name": "MyWindows2019Pipeline", "description": "Builds Windows 2019 Images", "enhancedImageMetadataEnabled": true, "containerRecipeArn": "arn:aws:imagebuilder:us-west-2:123456789012:container-recipe/my-example-recipe/2020.12.03", "infrastructureConfigurationArn": "arn:aws:imagebuilder:us-west-2:123456789012:infrastructure-configuration/my-example-infrastructure-configuration", "distributionConfigurationArn": "arn:aws:imagebuilder:us-west-2:123456789012:distribution-configuration/my-example-distribution-configuration", "imageTestsConfiguration": { "imageTestsEnabled": true, "timeoutMinutes": 60 }, "schedule": { "scheduleExpression": "cron(0 0 * * SUN *)", "pipelineExecutionStartCondition": "EXPRESSION_MATCH_AND_DEPENDENCY_UPDATES_AVAILABLE" }, "status": "ENABLED" }
    注意
    • 您必須在 JSON 檔案路徑的開頭包括 file:// 標記。

    • JSON 檔案的路徑應遵循執行命令之基礎作業系統的適當慣例。例如,Windows 使用反斜線 (\) 來參考目錄路徑,而 Linux 和 macOS 則使用正斜線 (/)。

  2. 使用您建立做為輸入的檔案,執行下列命令。

    aws imagebuilder create-image-pipeline --cli-input-json file://create-image-pipeline.json
範例:使用映像掃描和自訂工作流程建立容器管道

此範例會設定容器管道,在 UTC 每週一上午 10:00 進行檢查,並只在有相依性更新可用時才執行。組態檔案會使用容器配方和基礎設施的現有資源。它使用 Amazon Inspector 和 ECR 整合啟用漏洞掃描。組態也會指定具有 執行角色的自訂工作流程。平行群組會同時執行安全和功能測試。管道日誌會傳送至自訂 CloudWatch 日誌群組

  1. 建立組態檔案

    建立名為 的 JSON 檔案create-container-pipeline-with-workflows.json。此檔案定義已啟用映像掃描和自訂測試工作流程的容器管道組態。將預留位置值取代為您自己的資源 ARNs。

    { "name": "MyContainerPipelineWithScanning", "description": "Container pipeline with vulnerability scanning and custom workflows", "containerRecipeArn": "arn:aws:imagebuilder:us-east-1:123456789012:container-recipe/my-container-recipe/1.0.0", "infrastructureConfigurationArn": "arn:aws:imagebuilder:us-east-1:123456789012:infrastructure-configuration/my-infra-config", "distributionConfigurationArn": "arn:aws:imagebuilder:us-east-1:123456789012:distribution-configuration/my-dist-config", "imageScanningConfiguration": { "imageScanningEnabled": true, "ecrConfiguration": { "repositoryName": "my-scanning-repo", "containerTags": ["scan-latest"] } }, "workflows": [ { "workflowArn": "arn:aws:imagebuilder:us-east-1:123456789012:workflow/build/my-build-workflow/1.0.0" }, { "workflowArn": "arn:aws:imagebuilder:us-east-1:123456789012:workflow/test/my-security-scan/1.0.0", "onFailure": "ABORT", "parallelGroup": "security" }, { "workflowArn": "arn:aws:imagebuilder:us-east-1:123456789012:workflow/test/my-compliance-check/1.0.0", "onFailure": "ABORT", "parallelGroup": "security" }, { "workflowArn": "arn:aws:imagebuilder:us-east-1:123456789012:workflow/test/my-functional-test/1.0.0", "onFailure": "CONTINUE", "parallelGroup": "functional" }, { "workflowArn": "arn:aws:imagebuilder:us-east-1:123456789012:workflow/test/my-performance-test/1.0.0", "onFailure": "CONTINUE", "parallelGroup": "functional" } ], "executionRole": "arn:aws:iam::123456789012:role/ImageBuilderExecutionRole", "loggingConfiguration": { "imageLogGroupName": "/aws/imagebuilder/my-container-pipeline-image-logs", "pipelineLogGroupName": "/aws/imagebuilder/my-container-pipeline-execution-logs" }, "imageTestsConfiguration": { "imageTestsEnabled": true, "timeoutMinutes": 120 }, "schedule": { "scheduleExpression": "cron(0 10 ? * MON *)", "pipelineExecutionStartCondition": "EXPRESSION_MATCH_AND_DEPENDENCY_UPDATES_AVAILABLE" }, "status": "ENABLED" }
    注意
    • 您必須在 JSON 檔案路徑的開頭包括 file:// 標記。

    • JSON 檔案的路徑應遵循執行命令之基礎作業系統的適當慣例。例如,Windows 使用反斜線 (\) 來參考目錄路徑,而 Linux 和 macOS 則使用正斜線 (/)。

  2. 執行 命令
    aws imagebuilder create-image-pipeline --cli-input-json file://create-container-pipeline-with-workflows.json