View a markdown version of this page

からコンテナイメージパイプラインを作成する AWS CLI - EC2 イメージビルダー

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

からコンテナイメージパイプラインを作成する AWS CLI

からイメージパイプラインを作成するには AWS CLI、パイプラインに適用される設定オプションを指定して create-image-pipeline コマンドを実行します。すべてのパイプライン設定を含む JSON ファイルを作成するか、実行時に設定を指定することができます。このセクションでは、JSON 設定ファイルメソッドを使用してコマンドを簡素化します。

ベースイメージとコンポーネントからの保留中の更新を組み込むために、パイプラインが新しいイメージをビルドする頻度は、設定した schedule 内容によって異なります。各 schedule には次の属性があります。

  • scheduleExpression— パイプラインの実行スケジュールを設定して、そのパイプラインを評価し、 pipelineExecutionStartCondition とビルドを開始すべきかどうかを判断します。スケジュールは cron 式で設定されます。Image Builder で cron 式を書式設定する方法については、「Image Builder での 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
例: イメージスキャンとカスタムワークフローを使用してコンテナパイプラインを作成する

この例では、毎週月曜日の午前 10:00 UTC に をチェックし、依存関係の更新が利用可能な場合にのみ実行されるコンテナパイプラインを設定します。設定ファイルは、コンテナレシピとインフラストラクチャの既存のリソースを使用します。これにより、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