amazon web services - services - CloudFormation no se implementa en las etapas de la puerta de enlace API en la actualizaciĆ³n
que es amazon web services (3)
Cuando ejecuto el deploy
CloudFormation usando una plantilla con recursos de la puerta de enlace de la API, la primera vez que lo ejecuto, se crea y despliega en etapas. Las siguientes veces que lo ejecuto, actualiza los recursos pero no se implementa en etapas.
¿Es ese comportamiento según lo previsto? En caso afirmativo, ¿cómo puedo implementarlo en etapas cada vez que se actualiza?
(Terraform menciona un problema similar: https://github.com/hashicorp/terraform/issues/6613 )
CloudFormation en las palabras de Amazon es:
AWS CloudFormation se encarga de aprovisionar y configurar esos recursos para usted http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html
La redistribución de las API no es una tarea de aprovisionamiento ... Es una actividad de promoción que forma parte de una etapa en el proceso de lanzamiento de su software.
CodePipeline de AWS es un servicio de entrega continua que puede utilizar para modelar, visualizar y automatizar los pasos necesarios para lanzar su software. http://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html
CodePipeline también admite la ejecución de funciones Lambda desde Acciones en la tubería. Entonces, como se aconsejó anteriormente, cree una función Lambda para implementar su API pero llámela desde Codepipeline en lugar de CloudFormation.
Consulte esta página para obtener más información: http://docs.aws.amazon.com/codepipeline/latest/userguide/actions-invoke-lambda-function.html
Cuando su plantilla especifica una implementación, CloudFormation creará esa implementación solo si no existe. Cuando intenta ejecutarlo de nuevo, observa que el despliegue aún existe, por lo que no lo volverá a crear, por lo tanto, no se implementará. Necesita un nuevo ID de recurso para la implementación para que cree una nueva implementación. Lea esto para obtener más información: https://currentlyunnamed-theclassic.blogspot.com/2018/12/mastering-cloudformation-for-api.html
Parece que no hay manera de crear fácilmente una nueva Implementación cada vez que uno de sus Recursos de Formación en la Nube cambie.
Una forma de evitarlo sería utilizar un recurso personalizado respaldado por Lambda (consulte http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-custom-resources.html ).
Lambda debe crear la nueva Implementación, solo si uno de sus Recursos ha sido actualizado. Para determinar si uno de sus recursos ha sido actualizado,
probablemente tendrá que implementar lógica personalizada en torno a esta llamada a la API: http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_DescribeStackEvents.html
Para activar las actualizaciones en su recurso personalizado, le sugiero que proporcione un parámetro de formación de nube que se utilizará para forzar una actualización de su recurso personalizado (por ejemplo, la hora actual o un número de versión).
Tenga en cuenta que tendrá que agregar una cláusula DependsOn
a su recurso personalizado que incluirá todos los recursos relevantes para su API. De lo contrario, su implementación podría crearse antes de que se actualicen todos sus Recursos API.
Espero que esto ayude.