Tutorial: Cree una canalización que publique su aplicación sin servidor en el AWS Serverless Application Repository - 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: Cree una canalización que publique su aplicación sin servidor en el AWS Serverless Application Repository

Puede utilizarlo AWS CodePipeline para entregar continuamente su aplicación AWS SAM sin servidor al. AWS Serverless Application Repository

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 almacenar artefactos. (Es diferente del bucket 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 de tu canalización, asegúrate de que el depósito de artefactos de S3 pertenezca a una Cuentas de AWS persona segura y fiable.

En este tutorial se muestra cómo crear y configurar una canalización para crear una aplicación sin servidor alojada en ella GitHub y publicarla en ella automáticamente. AWS Serverless Application Repository La canalización GitHub se utiliza como proveedor de código fuente y CodeBuild como proveedor de compilación. Para publicar su aplicación sin servidor en AWS Serverless Application Repository, debe implementar una aplicación (desde AWS Serverless Application Repository) y asociar la función Lambda creada por esa aplicación como un proveedor de acciones de invocación en su canalización. De este modo, podrá enviar actualizaciones de la aplicación de forma continua a AWS Serverless Application Repository, sin necesidad de escribir ningún código.

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 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 Agregar una acción entre regiones en CodePipeline.

Antes de empezar

En este tutorial, se presupone lo siguiente.

Paso 1: Crear un archivo buildspec.yml

Cree un buildspec.yml archivo con el siguiente contenido y agréguelo al GitHub repositorio de su aplicación sin servidor. template.ymlSustitúyalo por la AWS SAM plantilla de la aplicación y bucketname por el depósito de S3 en el que se almacena la aplicación empaquetada.

version: 0.2 phases: install: runtime-versions: python: 3.8 build: commands: - sam package --template-file template.yml --s3-bucket bucketname --output-template-file packaged-template.yml artifacts: files: - packaged-template.yml

Paso 2: Crear y configurar la canalización

Siga estos pasos para crear su canalización en el Región de AWS lugar donde desee publicar la aplicación sin servidor.

  1. Inicie sesión en AWS Management Console y abra la CodePipeline consola en https://console.aws.amazon.com/codepipeline/.

  2. Si es necesario, cambie al Región de AWS lugar donde desee publicar la aplicación sin servidor.

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

  4. En la página Paso 1: elección de la opción de creación, en Opciones de creación, seleccione la opción Crear una canalización personalizada. Elija Next (Siguiente).

  5. Seleccione Create pipeline. En la página Paso 2: elegir la configuración de la canalización, en Nombre de la canalización, escriba el nombre de la canalización.

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

  7. En Función de servicio, elija Nueva función de servicio para poder CodePipeline crear una función de servicio en IAM.

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

  9. En la página Paso 3: Añadir la fase de origen, en Proveedor de origen, seleccione GitHub.

  10. En Conexión, seleccione una conexión existente o cree una nueva. Para crear o gestionar una conexión para la acción GitHub de origen, consulteGitHub conexiones.

  11. En Repositorio, elige tu repositorio GitHub de origen.

  12. En Branch, elige tu GitHub sucursal.

  13. Deje los valores predeterminados restantes para la acción de origen. Elija Next (Siguiente).

  14. En la página Paso 4: Añadir una fase de creación, añade una fase de creación:

    1. En Build provider (Proveedor de compilación), elija AWS CodeBuild. En Region (Región), utilice la región de la canalización.

    2. Elija Crear proyecto.

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

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

    5. En Runtime (Tiempo de ejecución) y Runtime version (Versión de tiempo de ejecución), elija el tiempo de ejecución y la versión necesarios para la aplicación sin servidor.

    6. En Service role (Rol de servicio), elija New service role (Nuevo rol de servicio).

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

    8. Selecciona Continuar a CodePipeline. De este modo, se abre la CodePipeline consola y se crea un CodeBuild proyecto que lo utiliza buildspec.yml en su repositorio para la configuración. El proyecto de compilación utiliza un rol de servicio para administrar los permisos del Servicio de AWS . Es posible que este paso tarde un par de minutos.

    9. Elija Next (Siguiente).

  15. En el paso 5: Agregar la etapa de prueba, elija Omitir la etapa de prueba y, a continuación, acepte el mensaje de advertencia seleccionando Omitir de nuevo.

    Elija Next (Siguiente).

  16. En la página Paso 6: Añadir fase de despliegue, seleccione Omitir fase de despliegue y, a continuación, acepte el mensaje de advertencia seleccionando Omitir de nuevo. Elija Next (Siguiente).

  17. En el paso 7: Revisar, selecciona Crear canalización. Deberías ver un diagrama que muestra las etapas.

  18. Conceda permiso al rol de CodeBuild servicio para acceder al bucket de S3 donde está almacenada la aplicación empaquetada.

    1. En la etapa Build (Compilación) de la canalización nueva, elija CodeBuild.

    2. Elija la pestaña Build details (Detalles de compilación).

    3. En Entorno, elija el rol CodeBuild de servicio para abrir la consola de IAM.

    4. Amplíe la selección para CodeBuildBasePolicy y elija Edit policy (Editar política).

    5. Elija JSON.

    6. Añada una instrucción de política nueva con el siguiente contenido. La declaración permite CodeBuild colocar objetos en el depósito de S3 donde se almacena la aplicación empaquetada. bucketnameSustitúyalo por el nombre del depósito de S3.

      { "Effect": "Allow", "Resource": [ "arn:aws:s3:::bucketname/*" ], "Action": [ "s3:PutObject" ] }
    7. Elija Revisar política.

    8. Elija Guardar cambios.

Paso 3: Implementar la aplicación de publicación

Siga estos pasos para implementar la aplicación que contiene la función de Lambda que lleva a cabo la publicación en el AWS Serverless Application Repository. Esta aplicación es aws-serverless-codepipeline-serverlessrepo-publish.

nota

Debes implementar la aplicación en el mismo lugar Región de AWS que tu canalización.

  1. Vaya a la página de la aplicación y elija Deploy (Implementar).

  2. Seleccione I acknowledge that this app creates custom IAM roles (Confirmo que esta aplicación puede crear roles de IAM personalizados).

  3. Elija Implementar.

  4. Selecciona View AWS CloudFormation Stack para abrir la AWS CloudFormation consola.

  5. Amplíe la sección Resources (Recursos). Verás ServerlessRepoPublish, que es de ese tipo AWS::Lambda::Function. Anote el ID físico de este recurso para el siguiente paso. Lo utilizará al crear la acción de publicación nueva en CodePipeline.

Paso 4: Crear la acción de publicación

Siga estos pasos para crear la acción de publicación en la canalización.

  1. Abra la CodePipeline consola en https://console.aws.amazon.com/codepipeline/.

  2. En la sección de navegación izquierda, elija la canalización que desea editar.

  3. Elija Editar.

  4. Después de la última etapa de la canalización actual, elija + Add stage (Añadir etapa). En Stage name (Nombre de etapa), escriba un nombre, por ejemplo Publish, y elija Add stage (Añadir etapa).

  5. En la nueva etapa, elija +Add action group (+Añadir grupo de acciones).

  6. Introduzca un nombre para la acción. En Action provider (Proveedor de acción), en Invoke (Invocar), elija AWS Lambda.

  7. En Artefactos de entrada, elija BuildArtifact.

  8. En Nombre de función, elija el ID físico de la función de Lambda que ha anotado en el paso anterior.

  9. Elija Save (Guardar) para la acción.

  10. Elija Done (Listo) para la etapa.

  11. En la parte superior derecha, elija Save (Guardar).

  12. Para verificar tu canalización, realiza un cambio en tu aplicación en GitHub. Por ejemplo, cambia la descripción de la aplicación en la Metadata sección del archivo de AWS SAM plantilla. Confirma el cambio y envíalo a tu GitHub sucursal. Esto desencadena la ejecución de la canalización. Cuando la canalización esté completa, compruebe que la aplicación se ha actualizado con el cambio en el AWS Serverless Application Repository.