Tengo un servicio web que se ejecuta en AWS que consta de un clúster de servidores Nginx que se ejecutan en varias instancias de EC2, con equilibrio de carga mediante un Elastic Load Balancer. Cada instancia de Nginx es idéntica y el servicio se basa en un único archivo de datos de referencia que contiene filas de datos basados en texto que se utilizan para generar la respuesta a las solicitudes POST entrantes al servicio web (el contenido del archivo se lee en la memoria al inicio) .
Este archivo de datos de referencia se genera mediante un proceso independiente, se actualiza cada 24 horas y está disponible en un depósito S3 designado. Estoy tratando de decidir cuál es la forma más sólida de obtener el archivo actualizado de S3 en las instancias EC2 y hacer que Nginx los lea nuevamente (hacer que Nginx los lea nuevamente es la parte fácil: solo necesito enviar el Nginx maestro procesar un SIGHUP).
Los dos requisitos principales de la solución son que:
Las opciones que estoy considerando actualmente son:
¿Es viable la opción (2)? es decir, ¿es posible escribir un Lambda que pueda identificar todas las instancias EC2 en ejecución para la cuenta actual que coincidan con un patrón de nombre de instancia? Y habiendo identificado las instancias de EC2, ¿es posible que Lambda copie el archivo de S3 a cada instancia de EC2? No tengo muy claro lo que eso implica.
Suponiendo que sea posible, ¿la opción (2) me da alguna ventaja real sobre la opción (1)? Estoy abierto a escuchar otras formas de hacer esto también.