Tutorial: Crear una canalización que utilice Amazon S3 como proveedor de implementación - AWS CodePipeline

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.

Tutorial: Crear una canalización que utilice Amazon S3 como proveedor de implementación

En este tutorial, va a configurar una canalización que enviará constantemente archivos utilizando Amazon S3 como proveedor de acciones de implementación en la etapa de implementación. La canalización completa detecta cambios cuando se realiza un cambio en los archivos de código fuente en el repositorio de código fuente. Esto hace que la canalización utilice Amazon S3 para implementar los archivos en el bucket. Cada vez que modifique o añada los archivos del sitio web en su ubicación de origen, la implementación creará el sitio web con los archivos más recientes.

importante

Como parte de la creación de una canalización, se utilizará un depósito de artefactos de S3 proporcionado por el cliente CodePipeline para los artefactos. (Es diferente del depósito que se usa para una acción de origen de S3). Si el depósito de artefactos de S3 está en una cuenta diferente a la cuenta de tu canalización, asegúrate de que el depósito de artefactos de S3 pertenezca Cuentas de AWS a una persona segura y fiable.

nota

Incluso si elimina archivos del repositorio de origen, la acción de implementación de S3 no elimina los objetos de S3 correspondientes a los archivos eliminados.

En este tutorial, encontrará dos opciones:

importante

Muchas de las acciones que añada a la canalización en este procedimiento implican AWS recursos que debe crear antes de crear la canalización. AWS Los recursos para las acciones de origen siempre deben crearse en la misma AWS región en la que se creó la canalización. Por ejemplo, si creas tu canalización en la región EE.UU. Este (Ohio), tu CodeCommit repositorio debe estar en la región EE.UU. Este (Ohio).

Puedes añadir acciones entre regiones al crear tu canalización. AWS los recursos para las acciones entre regiones deben estar en la misma AWS región en la que planeas ejecutar la acción. Para obtener más información, consulte Añadir una acción interregional en CodePipeline.

Opción 1: Implementar los archivos de un sitio web estático en Amazon S3

En este ejemplo, descarga el archivo de plantilla de sitio web estático de ejemplo, carga los archivos en su AWS CodeCommit repositorio, crea su depósito y lo configura para el alojamiento. A continuación, utilice la AWS CodePipeline consola para crear su canalización y especificar una configuración de despliegue de Amazon S3.

Requisitos previos

Debe disponer de lo siguiente:

  • Un CodeCommit repositorio. Puedes usar el AWS CodeCommit repositorio en el que lo creasteTutorial: Crear una canalización sencilla (CodeCommitrepositorio).

  • Archivos de código fuente del sitio web estático. Utilice este enlace para descargar un ejemplo de sitio web estático. La descarga de sample-website.zip produce los siguientes archivos:

    • Un archivo index.html

    • Un archivo main.css

    • Un archivo graphic.jpg

  • Un bucket de S3 configurado para alojar sitios web. Consulte Alojamiento de un sitio web estático en Amazon S3. No olvide que el bucket debe crearse en la misma región que la canalización.

    nota

    Para alojar un sitio web, el bucket debe tener acceso de lectura público, lo que concede acceso a todo el mundo. Salvo en el caso del alojamiento de sitios web, debe dejar la configuración de acceso predeterminada que bloquea el acceso público a los buckets de S3.

Paso 1: Envía los archivos fuente a tu CodeCommit repositorio

En esta sección, debe enviar los archivos de código fuente al repositorio que utiliza la canalización para la etapa de código fuente.

Para enviar archivos a tu CodeCommit repositorio
  1. Extraiga los archivos de ejemplo que ha descargado. No subas el ZIP archivo a tu repositorio.

  2. Envía o sube los archivos a tu CodeCommit repositorio. Estos archivos son el artefacto fuente creado por el asistente Create Pipeline para tu acción de despliegue en CodePipeline él. Sus archivos deberían ser parecidos a estos en su directorio local:

    index.html main.css graphic.jpg
  3. Puedes usar Git o la CodeCommit consola para cargar tus archivos:

    1. Para utilizar la línea de comandos de Git desde un repositorio clonado en el equipo local:

      1. Ejecute el siguiente comando para preparar todos los archivos de una vez:

        git add -A
      2. Ejecute el siguiente comando para confirmar los archivos con un mensaje de confirmación:

        git commit -m "Added static website files"
      3. Ejecuta el siguiente comando para enviar los archivos de tu repositorio local a tu CodeCommit repositorio:

        git push
    2. Para usar la CodeCommit consola para cargar tus archivos:

      1. Abre la CodeCommit consola y elige tu repositorio en la lista de repositorios.

      2. Elija Add file (Añadir archivo) y, a continuación, Upload file (Cargar archivo).

      3. Seleccione Choose file (Elegir archivo) y, a continuación, busque el archivo. Para confirmar el cambio, introduzca su nombre de usuario y la dirección de correo electrónico. Seleccione Confirmar cambios.

      4. Repita este paso para cada archivo que desee cargar.

Paso 2: Crear la canalización

En esta sección, debe crear una canalización con las siguientes acciones:

  • Una etapa de origen con una CodeCommit acción en la que los artefactos de origen son los archivos de tu sitio web.

  • Una etapa de implementación con una acción de implementación de Amazon S3.

Para crear una canalización con el asistente
  1. Inicie sesión AWS Management Console y abra la CodePipeline consola en http://console.aws.amazon.com/codesuite/codepipeline/home.

  2. En la página Bienvenido, Introducción o en la página Canalizaciones, elija Crear canalización.

  3. En Step 1: Choose pipeline settings (Paso 1: Elegir configuración de canalización), en Pipeline name (Nombre de canalización), escriba MyS3DeployPipeline.

  4. En Tipo de canalización, selecciona V2. Para obtener más información, consulte Tipos de canalización. Elija Next (Siguiente).

  5. En Función de servicio, elija Nueva función de servicio CodePipeline para permitir la creación de una función de servicio en ellaIAM.

  6. En Advanced settings (Configuración avanzada), deje los valores predeterminados y elija Next (Siguiente).

  7. En el Step 2: Add source stage (Paso 2: Añadir etapa de código fuente), en Source provider (Proveedor de código fuente), elija AWS CodeCommit. En Nombre del repositorio, elija el nombre del CodeCommit repositorio en el que lo creóPaso 1: Crear un CodeCommit repositorio. En Nombre de ramificación, elija el nombre de la ramificación que incluye la última actualización del código. A menos que haya creado otra ramificación, solo estará disponible main.

    Tras seleccionar el nombre y la sucursal del repositorio, se muestra la regla de Amazon CloudWatch Events que se va a crear para esta canalización.

    Elija Next (Siguiente).

  8. En Step 3: Add build stage (Paso 3: Añadir etapa de compilación), elija Skip build stage (Omitir etapa de compilación) y, a continuación, acepte el mensaje de advertencia eligiendo Skip (Omitir) una vez más.

    Elija Next (Siguiente).

  9. En Step 4: Add deploy stage (Paso 4: Añadir una etapa de implementación):

    1. En Deploy provider (Proveedor de implementación), elija Amazon S3.

    2. En Bucket, especifique el nombre del bucket público.

    3. Seleccione Extract file before deploy (Extraer el archivo antes de la implementación).

      nota

      Si no selecciona Extraer el archivo antes de la implementación, se produce un error en la implementación. Esto se debe a que la AWS CodeCommit acción de la canalización comprime los artefactos de origen y el archivo es un ZIP archivo.

      Cuando se selecciona Extract file before deploy (Extraer el archivo antes de la implementación), se muestra Deployment path (Ruta de implementación). Especifique el nombre de la ruta que desea utilizar. Esto crea una estructura de carpetas en Amazon S3 en la que se extraen los archivos. Para este tutorial, deje en blanco este campo.

      La página Paso 4: Despliegue de una acción de despliegue de S3 con una fuente AWS CodeCommit
    4. (Opcional) En las ACL opciones almacenadas, puedes aplicar un conjunto de concesiones predefinidas, conocidas como predefinidas ACL, a los artefactos cargados.

    5. (Opcional) En Cache control (Control del caché) introduzca los parámetros de caché. Puede establecerlo para controlar el comportamiento del caché para las solicitudes/respuestas. Para ver los valores válidos, consulte el campo de Cache-Controlencabezado para ver HTTP las operaciones.

    6. Elija Next (Siguiente).

  10. En Step 5: Review, revise la información y después elija Create pipeline.

  11. Después de la canalización se ejecute correctamente, abra la consola de Amazon S3 y compruebe que los archivos aparecen en el bucket público, tal como se muestra a continuación:

    index.html main.css graphic.jpg
  12. Obtenga acceso al punto de enlace para probar el sitio web. El punto de enlace tiene este formato: http://bucket-name.s3-website-region.amazonaws.com/.

    Ejemplo de punto de enlace: http://my-bucket.s3-website-us-west-2.amazonaws.com/.

    Aparece la siguiente página web de muestra.

Paso 3: Realizar un cambio en cualquier archivo de código fuente y verificar la implementación

Realice un cambio en los archivos código fuente y, a continuación, envíe ese cambio al repositorio. Esto desencadena la ejecución de la canalización. Compruebe que el sitio web se actualiza.

Opción 2: Implementar archivos compilados archivados en Amazon S3 desde un bucket de origen de S3

En esta opción, los comandos de compilación de la fase de compilación compilan el TypeScript código en JavaScript código y despliegan el resultado en el bucket de destino de S3 en una carpeta independiente con fecha y hora. Primero, crea el TypeScript código y un archivo buildspec.yml. Tras combinar los archivos fuente en un ZIP archivo, se carga el ZIP archivo fuente en el depósito de origen de S3 y se utiliza una CodeBuild fase para implementar un ZIP archivo de aplicación creado en el depósito de destino de S3. El código compilado se conserva en formato comprimido en el bucket de destino.

Requisitos previos

Debe disponer de lo siguiente:

  • Un bucket de origen de S3. Puede utilizar el bucket que creó en Tutorial: Crear una canalización simple (bucket de S3).

  • Un bucket de destino de S3. Consulte Alojamiento de un sitio web estático en Amazon S3. Asegúrese de crear su bucket de la Región de AWS misma manera que la canalización que desea crear.

    nota

    En este ejemplo, se muestra la implementación de archivos en un bucket privado. No habilite el bucket de destino para el alojamiento de sitios web ni le asocie políticas que lo conviertan en un bucket público.

Paso 1: Crear y cargar los archivos de código fuente en un bucket de código fuente de S3

En esta sección, debe crear y cargar los archivos de código fuente en el bucket que utiliza la canalización para la etapa de código fuente. En esta sección, se proporcionan instrucciones para la creación de los siguientes archivos de código fuente:

  • Un buildspec.yml archivo que se utiliza para proyectos de CodeBuild construcción.

  • Un archivo index.ts.

Para crear un archivo buildspec.yml
  • Cree un archivo denominado buildspec.yml con el siguiente contenido. Estos comandos de compilación instalan TypeScript y utilizan el TypeScript compilador para reescribir el código en index.ts código. JavaScript

    version: 0.2 phases: install: commands: - npm install -g typescript build: commands: - tsc index.ts artifacts: files: - index.js
Para crear un archivo index.ts
  • Cree un archivo denominado index.ts con el siguiente contenido.

    interface Greeting { message: string; } class HelloGreeting implements Greeting { message = "Hello!"; } function greet(greeting: Greeting) { console.log(greeting.message); } let greeting = new HelloGreeting(); greet(greeting);
Para cargar los archivos en un bucket de código fuente de S3
  1. Sus archivos deberían ser parecidos a estos en su directorio local:

    buildspec.yml index.ts

    Comprima los archivos y asigne al archivo el nombre source.zip.

  2. En la consola de Amazon S3, para el bucket de origen, elija Cargar. Selecciona Añadir archivos y, a continuación, busca el ZIP archivo que has creado.

  3. Seleccione Cargar. Estos archivos son el artefacto de origen creado por el asistente de creación de canalización para la acción de despliegue en CodePipeline ellos. El archivo debería aparecer así en el bucket:

    source.zip

Paso 2: Crear la canalización

En esta sección, debe crear una canalización con las siguientes acciones:

  • Una etapa de origen con una acción de Amazon S3 en la que los artefactos de origen son los archivos de la aplicación descargable.

  • Una etapa de implementación con una acción de implementación de Amazon S3.

Para crear una canalización con el asistente
  1. Inicie sesión en la CodePipeline consola AWS Management Console y ábrala en http://console.aws.amazon.com/codesuite/codepipeline/home.

  2. En la página Bienvenido, Introducción o en la página Canalizaciones, elija Crear canalización.

  3. En Step 1: Choose pipeline settings (Paso 1: Elegir configuración de canalización), en Pipeline name (Nombre de canalización), escriba MyS3DeployPipeline.

  4. En Función de servicio, selecciona Nueva función de servicio para CodePipeline poder crear una función de servicio en ellaIAM.

  5. En Advanced settings (Configuración avanzada), deje los valores predeterminados y elija Next (Siguiente).

  6. En el Step 2: Add source stage (Paso 2: Añadir una etapa de código fuente), en Source provider (Proveedor de código fuente), elija Amazon S3. En Bucket, elija el nombre del bucket de código fuente. En la clave de objeto de S3, introduce el nombre del ZIP archivo fuente. Asegúrese de incluir la extensión de archivo .zip.

    Elija Next (Siguiente).

  7. En Step 3: Add build stage (Paso 3: Agregar una etapa de compilación):

    1. En Build provider (Proveedor de compilación), elija CodeBuild.

    2. Elija Crear el proyecto de compilación. En la página Create project (Crear proyecto):

    3. En Project name (Nombre de proyecto), escriba un nombre para este proyecto de compilación.

    4. En Environment (Entorno), elija Managed image (Imagen administrada). En Operating system (Sistema operativo), elija Ubuntu.

    5. En Runtime, elija Standard (Estándar). En Runtime version (Versión de tiempo de ejecución), elija aws/codebuild/standard:1.0.

    6. En Image version (Version de la imagen), elija Always use the latest image for this runtime version (Utilizar siempre la imagen más reciente para esta versión del tiempo de ejecución).

    7. En Función de servicio, elija su función de CodeBuild servicio o cree una.

    8. En Build specifications (Especificaciones de compilación), elija Use a buildspec file (Usar un archivo buildspec).

    9. Selecciona Continuar a CodePipeline. Se muestra un mensaje si el proyecto se ha creado correctamente.

    10. Elija Next (Siguiente).

  8. En Step 4: Add deploy stage (Paso 4: Añadir una etapa de implementación):

    1. En Deploy provider (Proveedor de implementación), elija Amazon S3.

    2. En Bucket, especifique el nombre del bucket de destino de S3.

    3. Asegúrese de que no está seleccionada la opción Extract file before deploy (Extraer el archivo antes de la implementación).

      Cuando no está seleccionada la opción Extract file before deploy (Extraer el archivo antes de la implementación), se muestra S3 object key (Clave de objeto de S3). Especifique el nombre de la ruta que desea utilizar: js-application/{datetime}.zip.

      Esto crea una carpeta js-application en Amazon S3 en la que se extraen los archivos. En esta carpeta, la variable {datetime} crea una marca de tiempo en cada archivo de salida cuando se ejecuta la canalización.

      La página Paso 4: Implementación para una acción de implementación de Amazon S3 con origen de Amazon S3
    4. (Opcional) En la ACL versión guardada, puedes aplicar un conjunto de concesiones predefinidas, conocidas como predefinidas ACL, a los artefactos cargados.

    5. (Opcional) En Cache control (Control del caché) introduzca los parámetros de caché. Puede establecerlo para controlar el comportamiento del caché para las solicitudes/respuestas. Para ver los valores válidos, consulte el campo de Cache-Controlencabezado para ver HTTP las operaciones.

    6. Elija Next (Siguiente).

  9. En Step 5: Review, revise la información y después elija Create pipeline.

  10. Después de que la canalización se ejecute correctamente, visualice el bucket en la consola de Amazon S3. Compruebe que el ZIP archivo implementado se muestre en el depósito de destino, debajo de la js-application carpeta. El JavaScript archivo contenido en el ZIP archivo debe serindex.js. El archivo index.js contiene la salida siguiente:

    var HelloGreeting = /** @class */ (function () { function HelloGreeting() { this.message = "Hello!"; } return HelloGreeting; }()); function greet(greeting) { console.log(greeting.message); } var greeting = new HelloGreeting(); greet(greeting);

Paso 3: Realizar un cambio en cualquier archivo de código fuente y verificar la implementación

Realice un cambio en los archivos de código fuente y, a continuación, cárguelos en el bucket de código fuente. Esto desencadena la ejecución de la canalización. Visualice el bucket de destino y verifique que los archivos de salida implementados estén disponibles en la carpeta js-application, tal y como se muestra a continuación:

ZIPDescarga de muestra