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

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 Añadir una acción interregional 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. Reemplazar template.yml con la AWS SAM plantilla de su aplicación y bucketname con el depósito 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 su 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. 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 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 la página Agregar 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 Next (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 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).

  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 Next (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 de creación de su nueva canalización, elija CodeBuild.

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

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

    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. Reemplazar bucketname con el nombre de su 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. Selecciona Acepto que esta aplicación crea IAM roles personalizados.

  3. Elija Implementar.

  4. Selecciona Ver AWS CloudFormation pila para abrir la AWS CloudFormation consola.

  5. Amplíe la sección Resources (Recursos). Verá ServerlessRepoPublish, que es del tipo AWS: :Lambda: :Function. Anote el ID físico de este recurso para el siguiente paso. Este identificador físico se utiliza al crear la nueva acción de publicación 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. Abre 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.