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

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

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 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 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. Sustituya template.yml por la AWS SAM plantilla de su aplicación y el nombre de bucket 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. Inicia sesión en la CodePipeline consola AWS Management Console y ábrela en https://console.aws.amazon.com/codepipeline/.

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

  3. Seleccione Create pipeline. En la página Choose pipeline settings (Elegir configuración de canalización), en Pipeline name (Nombre de canalización), escriba el nombre de la canalización.

  4. En Tipo de canalización, elija V1 para los fines de este tutorial. También puede elegir V2; sin embargo, tenga en cuenta que los tipos de canalización difieren en cuanto a características y precio. Para obtener más información, consulte Tipos de canalización.

  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 IAM.

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

  7. En la página Añadir etapa de origen, en Proveedor de origen, elija GitHub.

  8. 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.

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

  10. En Branch, elige tu GitHub sucursal.

  11. Deje los valores predeterminados restantes para la acción de origen. Elija Siguiente.

  12. En la página Add build stage (Añadir etapa de compilación), añada una etapa de compilació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 usa un rol de servicio para administrar Servicio de AWS los permisos. Es posible que este paso tarde un par de minutos.

    9. Elija Siguiente.

  13. En la página Add deploy stage (Añadir etapa de implementación), elija Skip deploy stage (Omitir etapa de implementación) y, a continuación, acepte el mensaje de advertencia eligiendo Skip (Omitir) una vez más. Elija Siguiente.

  14. Seleccione Create pipeline. Debe ver un diagrama que muestra las etapas de código fuente y de compilación.

  15. 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. Sustituya bucketname por el nombre del bucket 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. Seleccione 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.