

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Referencia de la acción de compilación `ECRBuildAndPublish`
<a name="action-reference-ECRBuildAndPublish"></a>

Esta acción de compilación permite automatizar la compilación e inserción de una nueva imagen cuando se produce un cambio en el origen. Esta acción realiza la compilación a partir de una ubicación especificada en el archivo Docker e inserta la imagen. Esta acción de compilación no es la misma que la acción de origen de Amazon ECR CodePipeline, que activa la canalización cuando se produce un cambio en el repositorio de código fuente de Amazon ECR. Para obtener información acerca de esa acción, consulte [Referencia de acciones de origen de Amazon ECR](action-reference-ECR.md).

No se trata de una acción de origen que vaya a desencadenar la canalización. Esta acción compila una imagen y la inserta en el repositorio de imágenes de Amazon ECR.

Debe haber creado ya un repositorio de Amazon ECR y haber añadido un Dockerfile a su repositorio de código fuente, por ejemplo GitHub, antes de añadir la acción a su canalización.

**importante**  
Esta acción utiliza la CodeBuild computación CodePipeline gestionada para ejecutar comandos en un entorno de compilación. Si ejecuta la acción de Comandos, se le cobrarán cargos por separado en AWS CodeBuild.

**nota**  
Esta acción solo está disponible para canalizaciones de tipo V2.

**Topics**
+ [Tipo de acción](#action-reference-ECRBuildAndPublish-type)
+ [Parámetros de configuración](#action-reference-ECRBuildAndPublish-config)
+ [Artefactos de entrada](#action-reference-ECRBuildAndPublish-input)
+ [Artefactos de salida](#action-reference-ECRBuildAndPublish-output)
+ [Variables de salida](#action-reference-ECRBuildAndPublish-output-variables)
+ [Permisos del rol de servicio: acción `ECRBuildAndPublish`](#edit-role-ECRBuildAndPublish)
+ [Declaración de acciones](#action-reference-ECRBuildAndPublish-example)
+ [Véase también](#action-reference-ECRBuildAndPublish-links)

## Tipo de acción
<a name="action-reference-ECRBuildAndPublish-type"></a>
+ Categoría: `Build`
+ Propietario: `AWS`
+ Proveedor: `ECRBuildAndPublish`
+ Versión: `1` 

## Parámetros de configuración
<a name="action-reference-ECRBuildAndPublish-config"></a>

**ECRRepositoryNombre**  
Obligatorio: sí  
Nombre del repositorio de Amazon ECR donde se inserta la imagen.

**DockerFilePath**  
Obligatorio: no  
Ubicación del archivo Docker utilizado para compilar la imagen. Opcionalmente, puede proporcionar una ubicación alternativa para el archivo docker si no está en el nivel raíz.  
Si no se especifica ningún valor para `DockerFilePath`, el valor predeterminado es el nivel raíz del repositorio de origen.

**ImageTags**  
Obligatorio: no  
Etiquetas utilizadas para la imagen. Puede introducir varias etiquetas como una lista de cadenas delimitadas por comas.  
Si no se especifica un valor para `ImageTags`, el valor predeterminado es `latest`.

**RegistryType**  
Obligatorio: no  
Especifica si el repositorio es público o privado. Los valores válidos son `private | public`.  
Si no se especifica un valor para `RegistryType`, el valor predeterminado es `private`.

## Artefactos de entrada
<a name="action-reference-ECRBuildAndPublish-input"></a>
+ **Número de artefactos:** `1`
+ **Descripción:** el artefacto generado por la acción de origen que contiene el Dockerfile necesario para compilar la imagen.

## Artefactos de salida
<a name="action-reference-ECRBuildAndPublish-output"></a>
+ **Número de artefactos:** `0` 

## Variables de salida
<a name="action-reference-ECRBuildAndPublish-output-variables"></a>

Cuando se configura, esta acción produce variables a las que se puede hacer referencia mediante la configuración de acción de una acción descendente en la canalización. Esta acción produce variables que se pueden ver como variables de salida, incluso si la acción no tiene un espacio de nombres. Configure una acción con un espacio de nombres para que esas variables estén disponibles para la configuración de las acciones posteriores. 

Para obtener más información, consulte [Referencia de variables](reference-variables.md).

**ECRImageDigestId **  
El resumen `sha256` del manifiesto de la imagen.

**ECRRepositoryNombre **  
El nombre del repositorio de Amazon ECR al que se envió la imagen.

## Permisos del rol de servicio: acción `ECRBuildAndPublish`
<a name="edit-role-ECRBuildAndPublish"></a>

Para la compatibilidad con la acción `ECRBuildAndPublish`, agregue lo siguiente a su declaración de 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": "*"
        }
    ]
}
```

Además, si aún no los has agregado para la `Commands` acción, agrega los siguientes permisos a tu rol de servicio para ver CloudWatch los registros.

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

**nota**  
Reduzca los permisos al nivel de recursos de la canalización a través de los permisos basados en recursos de la declaración de la política del rol de servicio.

Para obtener más información sobre esta acción, consulte [Referencia de la acción de compilación `ECRBuildAndPublish`](#action-reference-ECRBuildAndPublish).

## Declaración de acciones
<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"
},
```

------

## Véase también
<a name="action-reference-ECRBuildAndPublish-links"></a>

Los recursos relacionados siguientes pueden serle de ayuda cuando trabaje con esta acción.
+ [Tutorial: Cree e inserte una imagen de Docker en Amazon ECR con CodePipeline (tipo V2)](tutorials-ecr-build-publish.md). Este tutorial proporciona un ejemplo de Dockerfile e instrucciones para crear una canalización que inserta la imagen en ECR con un cambio en el repositorio de origen y, a continuación, la implementa en Amazon ECS.