

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Referência da ação de compilação `ECRBuildAndPublish`
<a name="action-reference-ECRBuildAndPublish"></a>

Esta ação de compilação permite automatizar a compilação e o envio de uma nova imagem quando ocorre uma alteração na origem. Esta ação é compilada com base em uma localização específica do arquivo do Docker e envia a imagem por push. Essa ação de criação não é a mesma que a ação de origem do Amazon ECR em CodePipeline, que aciona o pipeline quando ocorre uma alteração no seu repositório de origem do Amazon ECR. Para obter informações sobre essa ação, consulte [Referência da ação de origem do Amazon ECR](action-reference-ECR.md).

Esta não é uma ação de origem que vai disparar o pipeline. Esta ação compila uma imagem e a envia para o repositório de imagens do Amazon ECR.

Você já deve ter criado um repositório Amazon ECR e ter adicionado um Dockerfile ao seu repositório de código-fonte, por exemplo GitHub, antes de adicionar a ação ao seu pipeline.

**Importante**  
Essa ação usa CodeBuild computação CodePipeline gerenciada para executar comandos em um ambiente de compilação. A execução da ação Comandos incorrerá em cobranças separadas no AWS CodeBuild.

**nota**  
Esta só está disponível para pipelines do tipo V2.

**Topics**
+ [Tipo de ação](#action-reference-ECRBuildAndPublish-type)
+ [Parâmetros de configuração](#action-reference-ECRBuildAndPublish-config)
+ [Input artifacts (Artefatos de entrada)](#action-reference-ECRBuildAndPublish-input)
+ [Artefatos de saída](#action-reference-ECRBuildAndPublish-output)
+ [Variáveis de saída](#action-reference-ECRBuildAndPublish-output-variables)
+ [Permissões do perfil de serviço: ação `ECRBuildAndPublish`](#edit-role-ECRBuildAndPublish)
+ [Declaração de ação](#action-reference-ECRBuildAndPublish-example)
+ [Consulte também](#action-reference-ECRBuildAndPublish-links)

## Tipo de ação
<a name="action-reference-ECRBuildAndPublish-type"></a>
+ Categoria: `Build`
+ Proprietário: `AWS`
+ Fornecedor: `ECRBuildAndPublish`
+ Versão: `1`

## Parâmetros de configuração
<a name="action-reference-ECRBuildAndPublish-config"></a>

**ECRRepositoryNome**  
Obrigatório: Sim  
O nome do repositório do Amazon ECR para o qual a imagem é enviada por push.

**DockerFilePath**  
Obrigatório: não  
O local do arquivo do Docker usado para compilar a imagem. Você também poderá oferecer um local de arquivo do docker alternativo, se não estiver no nível raiz.  
Se um valor para `DockerFilePath` não for especificado, o valor assumirá o nível raiz do repositório de origem como padrão.

**ImageTags**  
Obrigatório: não  
As tags usadas para a imagem. Você pode inserir várias tags como uma lista de strings delimitada por vírgulas.  
Se não for especificado um valor para `ImageTags`, o valor assumirá `latest` como padrão.

**RegistryType**  
Obrigatório: não  
Especifica se o repositório é público ou privado. O valor válido é `private | public`.  
Se não for especificado um valor para `RegistryType`, o valor assumirá `private` como padrão.

## Input artifacts (Artefatos de entrada)
<a name="action-reference-ECRBuildAndPublish-input"></a>
+ **Número de artefatos:** `1`
+ **Descrição:** o artefato produzido pela ação de origem que contém o Dockerfile necessário para compilar a imagem.

## Artefatos de saída
<a name="action-reference-ECRBuildAndPublish-output"></a>
+ **Número de artefatos:** `0` 

## Variáveis de saída
<a name="action-reference-ECRBuildAndPublish-output-variables"></a>

Quando configurada, essa ação produz variáveis que podem ser referenciadas pela configuração de ação de uma ação downstream no pipeline. Esta ação produz variáveis que podem ser visualizadas como variáveis de saída, mesmo que a ação não tenha um namespace. Configure uma ação com um namespace a fim de disponibilizar as variáveis para a configuração de ações downstream. 

Para obter mais informações, consulte [Referência de variáveis](reference-variables.md).

**ECRImageDigestId **  
O resumo `sha256` do manifesto da imagem.

**ECRRepositoryNome **  
O nome do repositório do Amazon ECR ao qual a imagem foi enviada por push.

## Permissões do perfil de serviço: ação `ECRBuildAndPublish`
<a name="edit-role-ECRBuildAndPublish"></a>

Para suporte à ação `ECRBuildAndPublish`, adicione o seguinte à declaração da política:

```
{
    "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": "*"
        }
    ]
}
```

Além disso, se ainda não tiver sido adicionada à `Commands` ação, adicione as seguintes permissões à sua função de serviço para visualizar CloudWatch os registros.

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

**nota**  
Restrinja as permissões ao nível de recurso do pipeline aplicando permissões baseadas em recurso na declaração de política do perfil de serviço.

Para obter mais informações sobre a ação, consulte [Referência da ação de compilação `ECRBuildAndPublish`](#action-reference-ECRBuildAndPublish).

## Declaração de ação
<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"
},
```

------

## Consulte também
<a name="action-reference-ECRBuildAndPublish-links"></a>

Os recursos relacionados a seguir podem ajudar você à medida que trabalha com esta ação.
+ [Tutorial: Crie e envie uma imagem do Docker para o Amazon ECR com CodePipeline (tipo V2)](tutorials-ecr-build-publish.md): este tutorial apresenta um Dockerfile de amostra e instruções para criar um pipeline que envia por push a imagem para o ECR em uma alteração feita no repositório de origem e, em seguida, implanta-a no Amazon ECS.