ECRBuildAndPublish ビルドアクションリファレンス - AWS CodePipeline

ECRBuildAndPublish ビルドアクションリファレンス

このビルドアクションにより、ソースで変更が発生したときに新しいイメージの構築とプッシュを自動化できます。このアクションは、指定された Docker ファイルの場所に基づいて構築され、イメージをプッシュします。このビルドアクションは、Amazon ECR ソースリポジトリで変更が発生したときにパイプラインをトリガーする CodePipeline の Amazon ECR ソースアクションとは異なります。このアクションの詳細については、「Amazon ECR ソースアクションリファレンス」を参照してください。

これは、パイプラインをトリガーするソースアクションではありません。このアクションはイメージをビルドし、Amazon ECR イメージリポジトリにプッシュします。

アクションをパイプラインに追加する前に、Amazon ECR リポジトリを作成し、GitHub などのソースコードリポジトリに Dockerfile を追加しておく必要があります。

重要

このアクションでは、CodePipeline マネージド CodeBuild コンピューティングを使用して、ビルド環境でコマンドを実行します。コマンドアクションを実行すると、AWS CodeBuild で別途料金が発生します。

注記

このアクションは V2 タイプのパイプラインでのみ使用できます。

アクションタイプ

  • カテゴリ: Build

  • 所有者: AWS

  • プロバイダー: ECRBuildAndPublish

  • バージョン: 1

設定パラメータ

ECRRepositoryName

必須: はい

イメージがプッシュされた Amazon ECR リポジトリの名前。

DockerFilePath

必須: いいえ

イメージのビルドに使用される Docker ファイルの場所。ルートレベルでない場合は、必要に応じて代替の docker ファイルの場所を指定できます。

注記

DockerFilePath の値を指定しない場合、値はデフォルトでソースリポジトリのルートレベルになります。

ImageTags

必須: いいえ

イメージに使用するタグ。複数のタグを文字列のカンマ区切りリストとして入力できます。

注記

ImageTags の値を指定しない場合、デフォルト値は latest になります。

RegistryType

必須: いいえ

リポジトリがパブリックかプライベートかを指定します。有効な値は private | public です。

注記

RegistryType の値を指定しない場合、デフォルト値は private になります。

入力アーティファクト

  • アーティファクトの数: 1

  • 説明: イメージのビルドに必要な Dockerfile を含むソースアクションによって生成されるアーティファクト。

出力アーティファクト

  • アーティファクトの数: 0

出力変数

このアクションを設定すると、パイプライン内のダウンストリームアクションのアクション設定によって参照できる変数が生成されます。このアクションは、アクションに名前空間がない場合でも、出力変数として表示できる変数を生成します。名前空間を使用してアクションを設定し、これらの変数をダウンストリームアクションの設定で使用できるようにします。

詳細については、「変数リファレンス」を参照してください。

ECRImageDigestId

イメージマニフェストの sha256 ダイジェスト。

ECRRepositoryName

イメージがプッシュされた Amazon ECR リポジトリの名前。

サービスロールのアクセス許可: ECRBuildAndPublish アクション

ECRBuildAndPublish アクションをサポートするには、以下をポリシーステートメントに追加します。

{ "Statement": [ { "Sid": "ECRRepositoryAllResourcePolicy", "Effect": "Allow", "Action": [ "ecr:DescribeRepositories", "ecr:GetAuthorizationToken", "ecr-public:DescribeRepositories", "ecr-public:GetAuthorizationToken" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ecr:GetAuthorizationToken", "ecr:InitiateLayerUpload", "ecr:UploadLayerPart", "ecr:CompleteLayerUpload", "ecr:PutImage", "ecr:GetDownloadUrlForLayer", "ecr:BatchCheckLayerAvailability" ], "Resource": "PrivateECR_Resource_ARN" }, { "Effect": "Allow", "Action": [ "ecr-public:GetAuthorizationToken", "ecr-public:DescribeRepositories", "ecr-public:InitiateLayerUpload", "ecr-public:UploadLayerPart", "ecr-public:CompleteLayerUpload", "ecr-public:PutImage", "ecr-public:BatchCheckLayerAvailability", "sts:GetServiceBearerToken" ], "Resource": "PublicECR_Resource_ARN" }, { "Effect": "Allow", "Action": [ "sts:GetServiceBearerToken" ], "Resource": "*" } ] }

さらに、Commands アクションにまだ追加されていない場合は、CloudWatch ログを表示するために、サービスロールに次のアクセス許可を追加します。

{ "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "resource_ARN" },
注記

サービスロールポリシーステートメントでリソースベースのアクセス許可を使用して、アクセス許可の範囲をパイプラインリソースレベルに絞り込みます。

このアクションの詳細については、「ECRBuildAndPublish ビルドアクションリファレンス」を参照してください。

アクションの宣言

YAML
name: ECRBuild actionTypeId: category: Build owner: AWS provider: ECRBuildAndPublish version: '1' runOrder: 1 configuration: ECRRepositoryName: actions/my-imagerepo outputArtifacts: [] inputArtifacts: - name: SourceArtifact region: us-east-1 namespace: BuildVariables
JSON
{ "name": "ECRBuild", "actionTypeId": { "category": "Build", "owner": "AWS", "provider": "ECRBuildAndPublish", "version": "1" }, "runOrder": 1, "configuration": { "ECRRepositoryName": "actions/my-imagerepo" }, "outputArtifacts": [], "inputArtifacts": [ { "name": "SourceArtifact" } ], "region": "us-east-1", "namespace": "BuildVariables" },

このアクションを利用する際に役立つ関連リソースは以下の通りです。