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 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.
Para usar Amazon S3 en una compilación, puede especificar las rutas de los archivos que desea almacenar en cachébuildspec.yml. CodeBuild almacenará y actualizará automáticamente la caché en la ubicación de Amazon S3 configurada en el proyecto. Si no especifica las rutas de los archivos, CodeBuild hará todo lo posible por almacenar en caché las dependencias de los idiomas más comunes para ayudarle a acelerar las compilaciones. Puede ver los detalles de la memoria caché en los registros de compilación.
Además, si quieres tener varias versiones de caché, puedes definir una clave de caché en. buildspec.yml CodeBuild almacena la caché en el contexto de esta clave de caché y crea una copia de caché única que no se actualizará una vez creada. Las claves de caché también se pueden compartir entre proyectos. Las características como claves dinámicas, control de versiones de caché y uso compartido de memoria caché entre compilaciones solo están disponibles cuando se especifica una clave.
Para obtener más información sobre la sintaxis de la caché en el archivo buildspec, consulte cache en la referencia de buildspec.
Temas
Generación de claves dinámicas
Una clave de caché puede incluir comandos de intérprete de comandos y variables de entorno para que sea única, lo que permite actualizaciones de caché automáticas cuando cambia la clave. Por ejemplo, puede definir una clave utilizando el hash del archivo package-lock.json. Cuando las dependencias de ese archivo cambian, cambia el hash y, por tanto, la clave de caché, lo que desencadena la creación automática de una nueva caché.
cache: key: npm-key-$(codebuild-hash-files package-lock.json)
CodeBuild evaluará la expresión $(codebuild-hash-files package-lock.json) para obtener la clave final:
npm-key-abc123
También puede definir una clave de caché mediante variables de entorno, como CODEBUILD_RESOLVED_SOURCE_VERSION. Esto garantiza que cada vez que cambie la fuente, se genere una nueva clave, lo que provocará que se guarde automáticamente una nueva caché:
cache: key: npm-key-$CODEBUILD_RESOLVED_SOURCE_VERSION
CodeBuild evaluará la expresión y obtendrá la clave final:
npm-key-046e8b67481d53bdc86c3f6affdd5d1afae6d369
codebuild-hash-files
codebuild-hash-fileses una herramienta CLI que calcula un hash SHA-256 para un conjunto de archivos del directorio de CodeBuild origen mediante patrones globales:
codebuild-hash-files<glob-pattern-1><glob-pattern-2>...
Algunos ejemplos de uso de codebuild-hash-files:
codebuild-hash-files package-lock.json codebuild-hash-files '**/*.md'
Versión de caché
La versión de caché es un hash generado a partir de las rutas de los directorios que se almacenan en caché. Si dos cachés tienen versiones diferentes, se tratan como cachés distintas durante el proceso de coincidencia. Por ejemplo, las dos cachés siguientes se consideran diferentes porque hacen referencia a rutas diferentes:
version: 0.2 phases: build: commands: - pip install pandas==2.2.3 --target pip-dependencies cache: key: pip-dependencies paths: - "pip-dependencies/**/*"
version: 0.2 phases: build: commands: - pip install pandas==2.2.3 --target tmp/pip-dependencies cache: key: pip-dependencies paths: - "tmp/pip-dependencies/**/*"
Uso compartido de caché entre proyectos
Puede usar el campo cacheNamespace de la API en la sección cache para compartir una caché entre varios proyectos. Este campo define el ámbito de la caché. Para compartir una caché, debe hacer lo siguiente:
-
Usa lo mismo.
cacheNamespace -
Especifique la misma
keyde caché. -
Defina rutas de caché idénticas.
-
Utilice los mismos buckets de Amazon S3 y
pathPrefixsi están configurados.
Esto garantiza la coherencia y permite compartir la caché entre los proyectos.
Especifique un espacio de nombres de caché (consola)
-
Abre la AWS CodeBuild consola en https://console.aws.amazon.com/codesuite/codebuild/home
. -
Elija Crear proyecto. Para obtener más información, consulte Creación de un proyecto de compilación (consola) y Ejecutar una compilación (consola).
-
En Artefactos, elija Configuración adicional.
-
En Tipo de caché, elija Amazon S3.
-
En Espacio de nombres de caché: opcional, introduzca un valor de espacio de nombres.
-
Continúe con los valores predeterminados y, a continuación, elija Crear el proyecto de compilación.
Especifique un espacio de nombres de caché (AWS CLI)
Puede utilizar el --cache parámetro de AWS CLI para especificar un espacio de nombres de caché.
--cache '{"type": "S3", "location": "your-s3-bucket", "cacheNamespace": "test-cache-namespace"}'
Ejemplos de buildspec
A continuación, se ofrecen varios ejemplos de buildspec para idiomas comunes:
Temas
Dependencias de Node.js de caché
Si el proyecto incluye un archivo package-lock.json y utiliza npm para administrar dependencias de Node.js, en el siguiente ejemplo se muestra cómo configurar almacenamiento en caché. De forma predeterminada, npm instala dependencias en el directorio node_modules.
version: 0.2 phases: build: commands: - npm install cache: key: npm-$(codebuild-hash-files package-lock.json) paths: - "node_modules/**/*"
Dependencias de Python de caché
Si el proyecto incluye un archivo requirements.txt y utiliza pip para administrar dependencias de Python, en el siguiente ejemplo se muestra cómo configurar almacenamiento en caché. De forma predeterminada, pip instala paquetes en el directorio site-packages del sistema.
version: 0.2 phases: build: commands: - pip install -r requirements.txt cache: key: python-$(codebuild-hash-files requirements.txt) paths: - "/root/.pyenv/versions/${python_version}/lib/python${python_major_version}/site-packages/**/*"
Además, puede instalar dependencias en un directorio específico y configurar el almacenamiento en caché para ese directorio.
version: 0.2 phases: build: commands: - pip install -r requirements.txt --target python-dependencies cache: key: python-$(codebuild-hash-files requirements.txt) paths: - "python-dependencies/**/*"
Dependencias de Ruby de caché
Si el proyecto incluye un archivo Gemfile.lock y utiliza Bundler para administrar dependencias de gemas, en el siguiente ejemplo se muestra cómo configurar correctamente almacenamiento en caché.
version: 0.2 phases: build: commands: - bundle install --path vendor/bundle cache: key: ruby-$(codebuild-hash-files Gemfile.lock) paths: - "vendor/bundle/**/*"
Dependencias de Go de caché
Si el proyecto incluye un archivo go.sum y utiliza módulos de Go para administrar dependencias, en el siguiente ejemplo se muestra cómo configurar almacenamiento en caché. De forma predeterminada, los módulos de Go se descargan y almacenan en el directorio ${GOPATH}/pkg/mod.
version: 0.2 phases: build: commands: - go mod download cache: key: go-$(codebuild-hash-files go.sum) paths: - "/go/pkg/mod/**/*"