

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# `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을 사용하여 Docker 이미지를 빌드하고 Amazon ECR에 푸시(V2 유형)](tutorials-ecr-build-publish.md) - 이 자습서에서는 샘플 Dockerfile과 소스 리포지토리 변경 시 이미지를 ECR에 푸시한 다음 Amazon ECS에 배포하는 파이프라인을 생성하는 지침을 제공합니다.