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
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)
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
-
Abra la consola de AWS CodeStar en https://console.aws.amazon.com/codestar/
. -
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 denominadatemplate.yml
que debe modificarse. -
Abra el archivo
template.yml
en su IDE o repositorio local. Copie el siguiente texto para añadir una secciónGlobals
al archivo. El texto de muestra de este tutorial elige la opciónCanary10Percent5Minutes
.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
: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
-
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. -
Elija el proyecto sin servidor existente y, a continuación, abra la página Recursos del proyecto.
-
En Recursos, elija el rol de IAM creado para el rol CodeStarWorker/AWS CloudFormation. El rol se abrirá en la consola de IAM.
-
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
. -
En el campo JSON, añada las siguientes instrucciones de la política al elemento
Statement
. Sustituya los marcadores de posición deregion
eid
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" } -
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
-
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.
-
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. -
-
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.
-
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.
-
Para ver los detalles de cada revisión, en Revisiones, elija el enlace al grupo de implementaciones de AWS CodeDeploy.
-
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.