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
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.
-
Está familiarizado con AWS Serverless Application Model (AWS SAM) y con el AWS Serverless Application Repository.
-
Tiene alojada una aplicación sin servidor GitHub que ha publicado en ella AWS Serverless Application Repository mediante. AWS SAM CLI Para publicar una aplicación de ejemplo en el AWS Serverless Application Repository, consulte Inicio rápido: publicación de aplicaciones en la Guía para AWS Serverless Application Repository desarrolladores. Para publicar su propia aplicación en la AWS Serverless Application Repository, consulte Publicar aplicaciones mediante la AWS SAM CLI en la Guía para AWS Serverless Application Model desarrolladores.
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-bucketbucketname
--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.
Inicie sesión en AWS Management Console y abra la CodePipeline consola en https://console.aws.amazon.com/codepipeline/
. -
Si es necesario, cambie al Región de AWS lugar donde desee publicar la aplicación sin servidor.
-
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.
-
En Tipo de canalización, elija V2. Para obtener más información, consulte Tipos de canalización. Elija Next (Siguiente).
-
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.
-
En Advanced settings (Configuración avanzada), deje los valores predeterminados y elija Next (Siguiente).
-
En la página Agregar etapa de origen, en Proveedor de origen, elija GitHub.
-
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.
-
En Repositorio, elige tu repositorio GitHub de origen.
-
En Branch, elige tu GitHub sucursal.
-
Deje los valores predeterminados restantes para la acción de origen. Elija Next (Siguiente).
-
En la página Add build stage (Añadir etapa de compilación), añada una etapa de compilación:
-
En Build provider (Proveedor de compilación), elija AWS CodeBuild. En Region (Región), utilice la región de la canalización.
-
Elija Crear proyecto.
-
En Project name (Nombre de proyecto), escriba un nombre para este proyecto de compilación.
-
En Environment image (Imagen de entorno), elija Managed image (Imagen administrada). En Operating system (Sistema operativo), elija Ubuntu.
-
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.
-
En Service role (Rol de servicio), elija New service role (Nuevo rol de servicio).
-
En Build specifications (Especificaciones de compilación), elija Use a buildspec file (Usar un archivo buildspec).
-
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. -
Elija Next (Siguiente).
-
-
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).
-
Seleccione Create pipeline. Debe ver un diagrama que muestra las etapas de código fuente y de compilación.
-
Conceda permiso al rol de CodeBuild servicio para acceder al bucket de S3 donde está almacenada la aplicación empaquetada.
-
En la etapa de creación de su nueva canalización, elija CodeBuild.
-
Elija la pestaña Build details (Detalles de compilación).
-
En Entorno, elige el rol de CodeBuild servicio para abrir la IAM consola.
-
Amplíe la selección para
CodeBuildBasePolicy
y elija Edit policy (Editar política). -
Elija JSON.
-
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" ] } -
Elija Revisar política.
-
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.
-
Vaya a la página de la aplicación
y elija Deploy (Implementar). -
Selecciona Acepto que esta aplicación crea IAM roles personalizados.
-
Elija Implementar.
-
Selecciona Ver AWS CloudFormation pila para abrir la AWS CloudFormation consola.
-
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.
-
Abre la CodePipeline consola en https://console.aws.amazon.com/codepipeline/
. -
En la sección de navegación izquierda, elija la canalización que desea editar.
-
Elija Editar.
-
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). -
En la nueva etapa, elija +Add action group (+Añadir grupo de acciones).
-
Introduzca un nombre para la acción. En Action provider (Proveedor de acción), en Invoke (Invocar), elija AWS Lambda.
-
En Artefactos de entrada, elija BuildArtifact.
-
En Nombre de función, elija el ID físico de la función de Lambda que ha anotado en el paso anterior.
-
Elija Save (Guardar) para la acción.
-
Elija Done (Listo) para la etapa.
-
En la parte superior derecha, elija Save (Guardar).
-
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.