Implementará gradualmente aplicaciones sin servidor - AWS Serverless Application Model

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.

Implementará gradualmente aplicaciones sin servidor

Si usaAWS SAMpara crear su aplicación sin servidor, esta solución se distribuye conCodeDeploypara proporcionar implementaciones graduales de Lambda. Con tan solo unas líneas de configuración,AWS SAMhace lo siguiente por usted:

  • Implementará nuevas versiones de su función Lambda y creará automáticamente alias que apunten a la nueva versión.

  • Moverá gradualmente el tráfico de los clientes a la nueva versión hasta que esté satisfecho con su funcionamiento o revertirá la actualización.

  • Define funciones de prueba anteriores y posteriores al tráfico para verificar que el código recién implementado está configurado correctamente y que la aplicación funciona según lo previsto.

  • Revertirá la implementación si se activan alarmas de CloudWatch.

nota

Si habilita implementaciones graduales a través de suAWS SAM, se crea automáticamente un recurso CodeDeploy para usted. Puede ver el recurso CodeDeploy directamente a través delAWS Management Console.

Ejemplo

El ejemplo siguiente muestra una versión sencilla de cómo usar CodeDeploy para transferir gradualmente a los clientes a su versión recién implementada:

Resources: MyLambdaFunction: Type: AWS::Serverless::Function Properties: Handler: index.handler Runtime: nodejs12.x CodeUri: s3://bucket/code.zip AutoPublishAlias: live DeploymentPreference: Type: Canary10Percent10Minutes Alarms: # A list of alarms that you want to monitor - !Ref AliasErrorMetricGreaterThanZeroAlarm - !Ref LatestVersionErrorMetricGreaterThanZeroAlarm Hooks: # Validation Lambda functions that are run before & after traffic shifting PreTraffic: !Ref PreTrafficLambdaFunction PostTraffic: !Ref PostTrafficLambdaFunction

Estas revisiones de laAWS SAMLa plantilla haga lo siguiente:

  • AutoPublishAlias: Al añadir esta propiedad y especificar un alias,AWS SAM:

    • Detectará cuándo se está implementando nuevo código, en función de los cambios realizados en el URI de Amazon S3 de la función Lambda.

    • Creará y publica una versión actualizada de esa función con el último código.

    • Creará un alias con el nombre que proporcione (a menos que ya exista un alias) y lo apuntará a la versión actualizada de la función Lambda. Las invocaciones de la función deben utilizar el cualificador de alias para poder usar esta característica. Si no está familiarizado con el control de versiones y los alias de las funciones Lambda, consulteAWS LambdaControl de versiones y alias de las funciones de.

  • Tipo de preferencia de implementación: En el ejemplo anterior, el 10 por ciento del tráfico de clientes se desplaza inmediatamente a la nueva versión. Transcurridos 10 minutos, todo el tráfico se desvía a la nueva versión. Sin embargo, si sugancho pregancho/postgancholas pruebas producen un error o si se activa una alarma de CloudWatch, CodeDeploy revertirá la implementación. En la tabla siguiente se describen otras opciones de desvío del tráfico disponibles además de la utilizada anteriormente. Tenga en cuenta lo siguiente:

    • Canario: El tráfico se desvía en dos incrementos. Puede elegir opciones «canary» predefinidas. Las opciones especifican 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.

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

    Tipo de preferencia de implementación

    Canary10Percent30Minutes

    Canary10Percent5Minutes

    Canary10Percent10Minutes

    Canary10Percent15Minutes

    Linear10PercentEvery10Minutes

    Linear10PercentEvery1Minute

    Linear10PercentEvery2Minutes

    Linear10PercentEvery3Minutes

    AllAtOnce

  • Alarmas: Se trata de alarmas de CloudWatch que se activan alarmas de si la implementación produce algún error. Revertir automáticamente la implementación. Un ejemplo es si el código actualizado que está implementando está creando errores dentro de la aplicación. es otro ejemplo si lo hayAWS Lambdao las métricas personalizadas de CloudWatch especificadas han superado el umbral de alarma.

  • hooks: Se trata de funciones de prueba anteriores y posteriores al tráfico que realizan comprobaciones antes de que el tráfico empiece a desviarse a la nueva versión y una vez completado el desvío de tráfico.

    • Tráfico previo: Antes de que comience el desvío de tráfico, CodeDeploy invocará la función Lambda anterior al tráfico. Esta función Lambda debe llamar a CodeDeploy e indicar si se ha ejecutado o no correctamente. Si la función falla, se anula e informa de un fallo aAWS CloudFormation. Si la función se ejecuta correctamente, CodeDeploy procede a cambiar el tráfico.

    • Tráfico posterior: Una vez completado el desvío de tráfico, CodeDeploy invocará la función Lambda posterior al tráfico. Esto es similar al enlace previo al tráfico, donde la función de debe llamar a CodeDeploy para informar del éxito o fracaso de la operación. Utilice enlaces posteriores al tráfico para ejecutar pruebas de integración u otras acciones de validación.

    Para obtener más información, consulte SAM Reference to Safe Deployments.