Desviar el tráfico para un proyecto de AWS Lambda - AWS CodeStar

El 31 de julio de 2024, Amazon Web Services (AWS) dejará de ofrecer soporte para la creación y visualización de AWS CodeStar proyectos. Después del 31 de julio de 2024, ya no podrá acceder a la AWS CodeStar consola ni crear nuevos proyectos. Sin embargo, los AWS recursos creados mediante este cambio AWS CodeStar, incluidos los repositorios de código fuente, las canalizaciones y las compilaciones, no se verán afectados por este cambio y seguirán funcionando. AWS CodeStar Esta interrupción no afectará a las conexiones ni a las AWS CodeStar notificaciones.

 

Si desea realizar un seguimiento del trabajo, desarrollar código y crear, probar e implementar sus aplicaciones, Amazon CodeCatalyst ofrece un proceso de inicio simplificado y funciones adicionales para administrar sus proyectos de software. Obtén más información sobre las funciones y los precios de Amazon CodeCatalyst.

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.

Desviar el tráfico para un proyecto de AWS Lambda

AWS CodeDeploy admite las implementaciones de versiones de las funciones de AWS Lambda en sus proyectos de AWS CodeStar sin servidor. La implementación de AWS Lambda desvía el tráfico entrante de una función Lambda existente a una versión actualizada de la función Lambda. Le recomendamos que prueba una función Lambda actualizada mediante la implementación de una versión independiente y, a continuación, restaurando la implementación de la primera versión si es necesario.

Siga los pasos que se describen en esta sección para modificar la plantilla del proyecto de AWS CodeStar y actualizar los permisos de IAM del rol CodeStarWorker. Esta tarea inicia una respuesta automatizada en AWS CloudFormation que crea funciones de AWS Lambda asociadas y, a continuación, indica AWS CodeDeploy para desviar el tráfico a un entorno actualizado.

nota

Siga estos pasos solo si ha creado el proyecto de AWS CodeStar antes del 12 de diciembre de 2018.

AWS CodeDeploy tiene tres opciones de implementación que le permiten desviar el tráfico a versiones de su función AWS Lambda en su aplicación:

  • Valores controlados: el tráfico se desvía en dos incrementos. Puede elegir opciones "canary" predefinidas que especifiquen el porcentaje de tráfico desviado a la versión actualizada de la función Lambda en el primer incremento y el intervalo, en minutos, antes de que el tráfico restante se desvíe en el segundo incremento.

  • Lineal: el tráfico se desvía en incrementos iguales con el mismo número de minutos entre incrementos. Puede elegir opciones lineales predefinidas que especifiquen el porcentaje de tráfico desviado en cada incremento y el número de minutos entre cada incremento. El tráfico se desvía en incrementos iguales con el mismo número de minutos entre incrementos. Puede elegir opciones lineales predefinidas que especifiquen el porcentaje de tráfico desviado en cada incremento y el número de minutos entre cada incremento.

  • A la vez: todo el tráfico se desvía a la vez desde la función Lambda original a la versión de la función Lambda actualizada.

Tipo de preferencia de implementación
Canary10Percent30Minutes
Canary10Percent5Minutes
Canary10Percent10Minutes
Canary10Percent15Minutes
Linear10PercentEvery10Minutes
Linear10PercentEvery1Minute
Linear10PercentEvery2Minutes
Linear10PercentEvery3Minutes
AllAtOnce

Para obtener más información acerca de las implementaciones de AWS CodeDeploy en una plataforma de computación de AWS Lambda, consulte Implementaciones en una plataforma de computación de AWS Lambda.

Para obtener más información acerca de AWS SAM, consulte AWS Serverless Application Model (AWS SAM) en GitHub.

Requisitos previos:

Al crear un proyecto sin servidor, seleccione cualquier plantilla con la plataforma de computación Lambda. Debe haber iniciado sesión como administrador para llevar a cabo los pasos 4 a 6.

Temas
    Paso 1: Modificar la plantilla de SAM para añadir los parámetros de implementación de la versión de AWS Lambda
    1. Abra la consola de AWS CodeStar en https://console.aws.amazon.com/codestar/.

    2. Cree un proyecto o elija un proyecto existente con un archivo template.yml y, a continuación, abra la página Code (Código). En la parte superior del repositorio, anote la ubicación de la plantilla de SAM denominada template.yml que debe modificarse.

    3. Abra el archivo template.yml en su IDE o repositorio local. Copie el siguiente texto para añadir una sección Globals al archivo. El texto de muestra de este tutorial elige la opción Canary10Percent5Minutes.

      Globals: Function: AutoPublishAlias: live DeploymentPreference: Enabled: true Type: Canary10Percent5Minutes

      En este ejemplo se muestra una plantilla modificada después de añadir la sección Globals:

      AWS CloudFormation template with Transform, Parameters, Globals, and Resources sections for a serverless function.

      Para obtener más información, consulte la guía de referencia Globals Section para plantillas de SAM.

    Paso 2: Editar el rol de AWS CloudFormation para añadir permisos
    1. Inicie sesión en la AWS Management Console y abra la consola de AWS CodeStar en https://console.aws.amazon.com/codestar/.

      nota

      Debe iniciar sesión en la AWS Management Console con las credenciales asociadas al usuario de IAM que haya creado o identificado en Configuración AWS CodeStar. Este usuario debe tener la política administrada de AWS denominada AWSCodeStarFullAccess asociada.

    2. Elija el proyecto sin servidor existente y, a continuación, abra la página Recursos del proyecto.

    3. En Recursos, elija el rol de IAM creado para el rol CodeStarWorker/AWS CloudFormation. El rol se abrirá en la consola de IAM.

    4. En la pestaña Permissions, en Inline Policies, en la fila de su política de rol de servicio, elija Edit Policy. Elija la pestaña JSON para editar la política en formato JSON.

      nota

      El rol de servicio se llama CodeStarWorkerCloudFormationRolePolicy.

    5. En el campo JSON, añada las siguientes instrucciones de la política al elemento Statement. Sustituya los marcadores de posición de region e id por su región e ID de cuenta.

      { "Action": [ "s3:GetObject", "s3:GetObjectVersion", "s3:GetBucketVersioning" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::codepipeline*" ], "Effect": "Allow" }, { "Action": [ "lambda:*" ], "Resource": [ "arn:aws:lambda:region:id:function:*" ], "Effect": "Allow" }, { "Action": [ "apigateway:*" ], "Resource": [ "arn:aws:apigateway:region::*" ], "Effect": "Allow" }, { "Action": [ "iam:GetRole", "iam:CreateRole", "iam:DeleteRole", "iam:PutRolePolicy" ], "Resource": [ "arn:aws:iam::id:role/*" ], "Effect": "Allow" }, { "Action": [ "iam:AttachRolePolicy", "iam:DeleteRolePolicy", "iam:DetachRolePolicy" ], "Resource": [ "arn:aws:iam::id:role/*" ], "Effect": "Allow" }, { "Action": [ "iam:PassRole" ], "Resource": [ "*" ], "Effect": "Allow" }, { "Action": [ "codedeploy:CreateApplication", "codedeploy:DeleteApplication", "codedeploy:RegisterApplicationRevision" ], "Resource": [ "arn:aws:codedeploy:region:id:application:*" ], "Effect": "Allow" }, { "Action": [ "codedeploy:CreateDeploymentGroup", "codedeploy:CreateDeployment", "codedeploy:DeleteDeploymentGroup", "codedeploy:GetDeployment" ], "Resource": [ "arn:aws:codedeploy:region:id:deploymentgroup:*" ], "Effect": "Allow" }, { "Action": [ "codedeploy:GetDeploymentConfig" ], "Resource": [ "arn:aws:codedeploy:region:id:deploymentconfig:*" ], "Effect": "Allow" }
    6. Elija Revisar política para asegurarse de que la política no contiene errores. Si no surgen errores, elija Guardar cambios.

    Paso 3: Confirmar y enviar el cambio en la plantilla para iniciar el desvío de la versión de AWS Lambda
    1. Confirme y envíe los cambios realizados en el archivo template.yml que ha guardado en el paso 1.

      nota

      Esto iniciará la canalización. Si confirma los cambios antes de actualizar los permisos de IAM, se iniciará la canalización y la actualización de la pila de AWS CloudFormation se topará con errores por lo que se revertirá la actualización de la pila. Si esto ocurre, corrija los permisos y, a continuación, reinicie la canalización.

    2. La actualización de la pila de AWS CloudFormation se inicia cuando la canalización del proyecto inicia la etapa de implementación. Para ver la notificación de la actualización de la pila cuando se inicie la implementación, en el panel de AWS CodeStar, seleccione la etapa AWS CloudFormation en la canalización.

      Durante la actualización de la pila, AWS CloudFormation actualiza automáticamente los recursos del proyecto tal y como se indica a continuación:

      • AWS CloudFormation procesa el archivo template.yml mediante la creación de funciones Lambda, enlaces de eventos y recursos.

      • AWS CloudFormation llama a Lambda para crear la versión nueva de la función.

      • AWS CloudFormation crea un archivo AppSpec y llama a AWS CodeDeploy para desviar el tráfico.

      Para obtener más información acerca de la publicación de funciones de Lambda asociadas en SAM, consulte la referencia de la plantilla AWS Serverless Application Model (SAM). Para obtener más información acerca de los enlaces de eventos y los recursos en el archivo AppSpec de AWS CodeDeploy, consulte la sección “recursos” de AppSpec (solo para implementaciones de AWS Lambda) y la sección “enlaces” de AppSpec para una implementación de AWS Lambda.

    3. Después de completar correctamente la canalización, los recursos se crean en la pila de AWS CloudFormation. En la página Proyecto, en la lista Recursos del proyecto, consulte la aplicación de AWS CodeDeploy, el grupo de implementación de AWS CodeDeploy y los recursos del rol de servicio de AWS CodeDeploy creados para el proyecto.

    4. Para crear una nueva versión, realice un cambio en la función Lambda en el repositorio. La nueva implementación se inicia y desvía el tráfico de acuerdo con el tipo de implementación indicado en la plantilla de SAM. Para ver el estado del tráfico que se desvía a la nueva versión, en la página Proyecto, en la lista Recursos del proyecto, seleccione el enlace a la implementación de AWS CodeDeploy.

    5. Para ver los detalles de cada revisión, en Revisiones, elija el enlace al grupo de implementaciones de AWS CodeDeploy.

    6. En su directorio de trabajo local, puede realizar cambios en la función de AWS Lambda y confirmar el cambio en el repositorio del proyecto. AWS CloudFormation admite AWS CodeDeploy para que administre la próxima revisión de la misma manera. Para obtener más información acerca de volver a implementar, detener o revertir una implementación de Lambda, consulte la sección Implementaciones en una plataforma de computación de AWS Lambda.