View a markdown version of this page

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

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

から AMI イメージパイプラインを作成する 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、設定リソースの多くはオプションです。ただし、パイプラインが作成するイメージのタイプによっては、条件付きの要件があるリソースもあります。AMI イメージパイプラインには、次のリソース識別子が必要です。

  • イメージレシピ ARN

  • インフラストラクチャ設定ARN

 

例: Windows 2019 イメージを作成する

この例では、毎週日曜日に実行するようにスケジュールされたパイプラインを設定します。最初のステップで示した設定ファイルは、イメージレシピ、インフラストラクチャ、ディストリビューション設定の既存のリソースと、Windows 2019 イメージを作成するためのその他の設定を使用します。

  1. 設定ファイルを作成する (オプション)

    この例では、 という名前の設定ファイルを使用してcreate-image-pipeline.json設定を 1 か所で設定します。または、コマンドを実行するときにコマンドラインオプションを使用して、設定ファイルに表示されるすべての詳細を指定することもできます。

    { "name": "ExampleWindows2019Pipeline", "description": "Builds Windows 2019 Images", "enhancedImageMetadataEnabled": true, "imageRecipeArn": "arn:aws:imagebuilder:us-west-2:123456789012:image-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. コマンドを実行してイメージを作成する

    この例では、最初のステップで作成した設定ファイルを create-image-pipeline コマンドへの入力として使用します。または、 コマンドを実行するときに、パイプラインの設定とリソースを直接指定することもできます。詳細については、「 AWS CLI リファレンス」のcreate-image-pipeline」を参照してください。

    aws imagebuilder create-image-pipeline --cli-input-json file://create-image-pipeline.json
例: イメージスキャンとカスタムワークフローを使用してパイプラインを作成する

この例では、7 日ごとに をチェックし、依存関係の更新が利用可能な場合にのみ実行するパイプラインを設定します。設定ファイルは、イメージレシピとインフラストラクチャの既存のリソースを使用します。Amazon Inspector で脆弱性スキャンを有効にします。設定では、実行ロールを持つカスタムワークフローも指定します。並列グループは、セキュリティテストと機能テストを同時に実行します。パイプラインログはカスタム CloudWatch ロググループに送信されます。

  1. 設定ファイルを作成する

    という名前の JSON ファイルを作成しますcreate-pipeline-with-workflows.json。このファイルは、イメージスキャンが有効になっているパイプライン設定とカスタムテストワークフローを定義します。プレースホルダー値を独自のリソース ARNs。

    { "name": "MyPipelineWithScanning", "description": "Pipeline with vulnerability scanning and custom workflows", "imageRecipeArn": "arn:aws:imagebuilder:us-west-2:123456789012:image-recipe/my-recipe/1.0.0", "infrastructureConfigurationArn": "arn:aws:imagebuilder:us-west-2:123456789012:infrastructure-configuration/my-infra-config", "distributionConfigurationArn": "arn:aws:imagebuilder:us-west-2:123456789012:distribution-configuration/my-dist-config", "imageScanningConfiguration": { "imageScanningEnabled": true }, "workflows": [ { "workflowArn": "arn:aws:imagebuilder:us-west-2:123456789012:workflow/build/my-build-workflow/1.0.0" }, { "workflowArn": "arn:aws:imagebuilder:us-west-2:123456789012:workflow/test/my-security-scan/1.0.0", "onFailure": "ABORT", "parallelGroup": "security" }, { "workflowArn": "arn:aws:imagebuilder:us-west-2:123456789012:workflow/test/my-compliance-check/1.0.0", "onFailure": "ABORT", "parallelGroup": "security" }, { "workflowArn": "arn:aws:imagebuilder:us-west-2:123456789012:workflow/test/my-functional-test/1.0.0", "onFailure": "CONTINUE", "parallelGroup": "functional" }, { "workflowArn": "arn:aws:imagebuilder:us-west-2: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-pipeline-image-logs", "pipelineLogGroupName": "/aws/imagebuilder/my-pipeline-execution-logs" }, "imageTestsConfiguration": { "imageTestsEnabled": true, "timeoutMinutes": 60 }, "schedule": { "scheduleExpression": "rate(7 days)", "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-pipeline-with-workflows.json