

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

# `ECRBuildAndPublish` ビルドアクションリファレンス
<a name="action-reference-ECRBuildAndPublish"></a>

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

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

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

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

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

**Topics**
+ [アクションタイプ](#action-reference-ECRBuildAndPublish-type)
+ [設定パラメータ](#action-reference-ECRBuildAndPublish-config)
+ [入力アーティファクト](#action-reference-ECRBuildAndPublish-input)
+ [出力アーティファクト](#action-reference-ECRBuildAndPublish-output)
+ [出力変数](#action-reference-ECRBuildAndPublish-output-variables)
+ [サービスロールのアクセス許可: `ECRBuildAndPublish` アクション](#edit-role-ECRBuildAndPublish)
+ [アクションの宣言](#action-reference-ECRBuildAndPublish-example)
+ [関連情報](#action-reference-ECRBuildAndPublish-links)

## アクションタイプ
<a name="action-reference-ECRBuildAndPublish-type"></a>
+ カテゴリ:`Build`
+ 所有者: `AWS`
+ プロバイダー: `ECRBuildAndPublish`
+ バージョン: `1`

## 設定パラメータ
<a name="action-reference-ECRBuildAndPublish-config"></a>

**ECRRepositoryName**  
必須: はい  
イメージがプッシュされた Amazon ECR リポジトリの名前。

**DockerFilePath**  
必須: いいえ  
イメージのビルドに使用される Docker ファイルの場所。ルートレベルでない場合は、必要に応じて代替の docker ファイルの場所を指定できます。  
`DockerFilePath` の値を指定しない場合、値はデフォルトでソースリポジトリのルートレベルになります。

**ImageTags**  
必須: いいえ  
イメージに使用するタグ。複数のタグを文字列のカンマ区切りリストとして入力できます。  
`ImageTags` の値を指定しない場合、デフォルト値は `latest` になります。

**RegistryType**  
必須: いいえ  
リポジトリがパブリックかプライベートかを指定します。有効な値は `private | public` です。  
`RegistryType` の値を指定しない場合、デフォルト値は `private` になります。

## 入力アーティファクト
<a name="action-reference-ECRBuildAndPublish-input"></a>
+ **アーティファクトの数:** `1`
+ **説明:** イメージのビルドに必要な Dockerfile を含むソースアクションによって生成されるアーティファクト。

## 出力アーティファクト
<a name="action-reference-ECRBuildAndPublish-output"></a>
+ **アーティファクトの数:** `0` 

## 出力変数
<a name="action-reference-ECRBuildAndPublish-output-variables"></a>

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

詳細については、「[変数リファレンス](reference-variables.md)」を参照してください。

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

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

## サービスロールのアクセス許可: `ECRBuildAndPublish` アクション
<a name="edit-role-ECRBuildAndPublish"></a>

`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` ビルドアクションリファレンス](#action-reference-ECRBuildAndPublish)」を参照してください。

## アクションの宣言
<a name="action-reference-ECRBuildAndPublish-example"></a>

------
#### [ 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"
},
```

------

## 関連情報
<a name="action-reference-ECRBuildAndPublish-links"></a>

このアクションを利用する際に役立つ関連リソースは以下の通りです。
+ [チュートリアル: CodePipeline (V2 タイプ) を使用して Docker イメージを構築し Amazon ECR にプッシュする](tutorials-ecr-build-publish.md) – このチュートリアルでは、サンプル Dockerfile と、ソースリポジトリへの変更時にイメージを ECR にプッシュし、Amazon ECS にデプロイするパイプラインを作成する手順について説明します。