Almacenamiento en caché de compilaciones de AWS CodeBuild - AWS CodeBuild

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.

Almacenamiento en caché de compilaciones de AWS CodeBuild

Puede ahorrar tiempo si compila su proyecto utilizando una caché. Una caché puede almacenar fragmentos reutilizables del entorno de compilación y utilizarlos en diferentes compilaciones. El proyecto de compilación puede utilizar uno de los dos tipos de almacenamiento en caché: Amazon S3 o local. Si utiliza una caché local, debe elegir uno o varios de los tres modos disponibles: caché de origen, caché de capas de Docker y caché personalizada.

nota

El modo de caché de capas de Docker solamente está disponible en los entornos Linux. Si eliges este modo, debes ejecutar tu compilación en modo privilegiado. CodeBuild los proyectos a los que se les concede el modo privilegiado otorgan a su contenedor acceso a todos los dispositivos. Para obtener más información, consulte la sección sobre privilegios en tiempo de ejecución y capacidades de Linux en el sitio web de Docker Docs.

Almacenamiento en caché de Amazon S3

El almacenamiento en caché de Amazon S3 aloja la caché en un bucket de Amazon S3 disponible en varios hosts de compilación. Esta opción resulta adecuada para artefactos de compilación de tamaño pequeño a intermedio que son más costosos de compilar que de descargar. Sin embargo, no es la mejor opción para los artefactos de compilación grandes, ya que tardan bastante tiempo en transferirse a través de la red, lo que puede afectar al rendimiento de la compilación. Tampoco es la mejor opción si usa capas de Docker.

Almacenamiento en la caché local

El almacenamiento en caché local aloja en una caché localmente en un host de compilación, que es el único host de compilación para el que está disponible la caché. Esta opción resulta adecuada para artefactos de compilación de tamaño intermedio a grande, ya que la caché está disponible de forma inmediata en el host de compilación. Esta no es la mejor opción si no hace muchas compilaciones. De este modo, el rendimiento de la compilación no se verá afectado por el tiempo de transferencia de la red.

Si elige la opción de almacenamiento en caché local, debe elegir uno o varios de los siguientes modos de caché:

  • El modo de caché de origen almacena en la caché los metadatos de Git del origen principal y los orígenes secundarios Una vez que se ha creado la caché, las compilaciones que se realicen posteriormente solo extraerán los cambios realizados entre las confirmaciones. Este modo es conveniente para los proyectos que tienen un directorio de trabajo limpio y un origen que es un gran repositorio de Git. Si eliges esta opción y tu proyecto no usa un repositorio de Git (AWS CodeCommit GitHub, GitHub Enterprise Server o Bitbucket), la opción se ignora.

  • El modo de caché de capas de Docker almacena en caché las capas de Docker existentes. Este modo es conveniente para los proyectos que compilan o extraen imágenes grandes de Docker. Puede evitar los problemas de rendimiento derivados de extraer imágenes grandes de Docker de la red.

    nota
    • Las cachés de capas de Docker solo pueden utilizarse en entornos Linux.

    • Es necesario establecer la marca privileged para que el proyecto tenga los permisos de Docker necesarios.

      De forma predeterminada, el daemon de Docker está habilitado para compilaciones que no son de VPC. Si quieres usar contenedores Docker para compilaciones de VPC, consulta Privilegios de tiempo de ejecución y capacidades de Linux en el sitio web de Docker Docs y habilita el modo privilegiado. Además, Windows no admite el modo privilegiado.

    • Debe tener en cuenta la implicación de seguridad antes de utilizar una caché de capas de Docker.

  • El modo de caché personalizada almacena en caché los directorios que se especifican en el archivo buildspec. Este modo es conveniente si el escenario de compilación no se ajusta a ninguno de los otros dos modos de caché local. Si utiliza una caché personalizada:

    • Solo se pueden especificar directorios para el almacenamiento en caché. No se pueden especificar archivos individuales.

    • Para hacer referencia a los directorios almacenados en la caché, se utiliza Symlinks.

    • Los directorios de la caché se asocian a la compilación antes de que se descarguen los orígenes del proyecto. Los elementos almacenados en la memoria caché invalidan los elementos de origen si tienen el mismo nombre. Los directorios se especifican utilizando rutas de caché en la archivo buildspec. Para obtener más información, consulte Sintaxis de buildspec.

    • Evite los nombres de directorio que sean los mismos en el origen y en la memoria caché. Los directorios almacenados localmente en la memoria caché pueden invalidar o eliminar el contenido de los directorios del repositorio de origen que tienen el mismo nombre.

nota

El tipo de entorno de LINUX_GPU_CONTAINER y el tipo de procesamiento de BUILD_GENERAL1_2XLARGE no son compatibles con el almacenamiento en caché local. Para obtener más información, consulte Modos y tipos de computación del entorno de compilación.

nota

No se admite el almacenamiento en caché local cuando se configura CodeBuild para trabajar con una VPC. Para obtener más información sobre el uso de VPC con CodeBuild, consulte. Uso de AWS CodeBuild con Amazon Virtual Private Cloud

Puede utilizar la AWS CLI, la consola, el SDK o AWS CloudFormation para especificar una caché local.

Especificar el almacenamiento en la caché local (CLI)

Puede utilizar el parámetro --cache de la AWS CLI para especificar cada uno de los tres tipos de caché local.

  • Para especificar una caché de origen:

    --cache type=LOCAL,mode=[LOCAL_SOURCE_CACHE]
  • Para especificar una caché de capas de Docker:

    --cache type=LOCAL,mode=[LOCAL_DOCKER_LAYER_CACHE]
  • Para especificar una caché personalizada:

    --cache type=LOCAL,mode=[LOCAL_CUSTOM_CACHE]

Para obtener más información, consulte Crear un proyecto de compilación (AWS CLI).

Especificar el almacenamiento en la caché local (consola)

Puede especificar una caché en la sección Artifacts (Artefactos) de la consola. En Tipo de caché, seleccione Amazon S3 o Local. Si elige Local, seleccione una o varias de los tres opciones de caché local.

Para obtener más información, consulte Creación de un proyecto de compilación (consola).

Especificar el almacenamiento en la caché local (AWS CloudFormation)

Si utiliza AWS CloudFormation para especificar una caché local, en la propiedad Cache, en Type, especifique LOCAL. En el siguiente ejemplo de código de AWS CloudFormation con formato YAML, se especifican los tres tipos de caché local. Puede especificar cualquier combinación de tipos. Si utiliza una caché de capas de Docker, en Environment, debe establecer PrivilegedMode en true y Type en LINUX_CONTAINER.

CodeBuildProject: Type: AWS::CodeBuild::Project Properties: Name: MyProject ServiceRole: <service-role> Artifacts: Type: S3 Location: <bucket-name> Name: myArtifact EncryptionDisabled: true OverrideArtifactName: true Environment: Type: LINUX_CONTAINER ComputeType: BUILD_GENERAL1_SMALL Image: aws/codebuild/standard:5.0 Certificate: <bucket/cert.zip> # PrivilegedMode must be true if you specify LOCAL_DOCKER_LAYER_CACHE PrivilegedMode: true Source: Type: GITHUB Location: <github-location> InsecureSsl: true GitCloneDepth: 1 ReportBuildStatus: false TimeoutInMinutes: 10 Cache: Type: LOCAL Modes: # You can specify one or more cache mode, - LOCAL_CUSTOM_CACHE - LOCAL_DOCKER_LAYER_CACHE - LOCAL_SOURCE_CACHE
nota

De forma predeterminada, el daemon de Docker está habilitado para compilaciones que no son de VPC. Si quieres usar contenedores Docker para compilaciones de VPC, consulta Privilegios de tiempo de ejecución y capacidades de Linux en el sitio web de Docker Docs y habilita el modo privilegiado. Además, Windows no admite el modo privilegiado.

Para obtener más información, consulte Crear un proyecto de compilación (AWS CloudFormation).