Este es un artículo introductorio sobre AWS Solutions Constructs. Si no está familiarizado con las construcciones de soluciones, en resumen, son un conjunto de componentes de arquitectura reutilizables que le permiten crear una mejor infraestructura como pilas de código y crearlas más rápido.
Primero hablemos de la infraestructura como código . En AWS, eso comienza con la formación de la nube de AWS, el servicio de infraestructura como código (IaS). La formación de nubes le permite definir arquitecturas de nube completas utilizando plantillas YAML o JSON declarativas. Estas plantillas son mecanismos increíblemente poderosos para crear infraestructura como código. Aquí hay un fragmento de JSON que define una cola SQS y una formación de nubes.
"gfg_queue 529S8454": { "Type": "AWS:: SQS::Queue", "Properties": { "MaximumMessageSize": 1130, "QueueName": "demo-queue" } }
Ahora, estas plantillas pueden crecer mucho y ser muy complejas, además de que, por naturaleza, son estáticas, por lo que variar la infraestructura en función de las condiciones de implementación es un desafío. Afortunadamente, hay una mejor manera de crear estas plantillas de formación de nubes que su editor de texto. El kit de desarrollo de la nube de AWS o AWS CDK proporciona una capa de abstracción sobre las plantillas de confirmación que le permite definir su infraestructura utilizando lenguajes de programación convencionales en lugar de marcado declarativo. Esto facilita la definición de pilas de formación de nubes y le brinda más poder. En CDK, la definición de una nueva cola se ve así:
new sqs.Queue (this, 'gfg-queue', { queueName: 'gfg-queue', maxMessageSizeBytes: 1130, });
Simplemente crea una instancia de un nuevo objeto de cola, pero dado que es un lenguaje de programación, puede crear cosas de forma más dinámica. Por ejemplo, si solo desea crear un recurso bajo ciertas condiciones, puede envolverlo en un condicional como se muestra a continuación:
if (environment == 'PROD') { new sqs.Queue (this, 'gfg-queue',{ queueName: 'demo-queue', maxMessageSizeBytes: 1130, }); }
Si desea múltiples recursos basados en valores de tiempo de ejecución, puede envolver la creación de instancias en un bucle como se muestra a continuación:
inputs.forEach( input => { new sqs.Queue (this, input-${input.id)', { queueName: input-${input.id}', maxMessageSizeBytes: 1130, }); });
Este ejemplo está escrito en TypeScript, pero también puede usar el CDK con python, .net y java. En el corazón de todo esto sigue estando la formación de nubes, pero esta abstracción sobre la formación de nubes sin procesar alivia la necesidad de crear YAML o JSON y hace que las pilas de formación de nubes sean más dinámicas.
Las construcciones de soluciones de AWS son implementaciones de patrones arquitectónicos comunes que puede conectar a sus pilas de CDK, ya sea solos o conectados a otras construcciones de soluciones. Todos están construidos sobre el CDK y, por lo tanto, sobre la formación de nubes debajo de eso. No solo le ahorran tiempo y código, sino que implementan el patrón utilizando las mejores prácticas e incluyen elementos arquitectónicos que puede pasar por alto si estuviera construyendo su pila desde cero.
Veamos AWS-SQS lambda, una construcción que implementa una SQS-Queue junto con una función lambda que se invoca cada vez que se almacena un mensaje en la cola. Así es como implementaría eso en su programa CDK simplemente instanciando un objeto SQS a lambda:
new SqsToLambda (this, 'SqsToLambdaPattern',{ lambdaFunctionProps: { runtime: lambda.Runtime. NODEJS_10_X, handler: 'function.handler', code: lambda.Code.fromAsset (`lambda) }, queue Props: { maxMessageSizeBytes: 1130, queueName: 'gfg-queue' });
La construcción implementa una cola y una función lambda, pero la interacción de estos dos servicios en realidad requiere varios otros recursos para ser funcional y segura, como:
Lista de recursos:
- AWS: : IAM: : Rol
- AWS: :IAM : : Política
- AWS: :Lambda:: Función
- AWS: :Lambda: : EventSourceMapping
- AWS: :SQS: : Cola
- AWS: :SQS : : Política de cola
- AWS: :SQS: : Cola (Letra fallida)
La construcción en realidad lanza 7 servicios para usted automáticamente. Proporciona mejores arquitecturas además de arquitecturas más rápidas porque las soluciones construyen todas las prácticas recomendadas o recomendadas de forma predeterminada. Algunas áreas donde verás esto son:
- Sus recursos que están todos encriptados por defecto
- Las funciones y políticas de IAM siguen el principio del privilegio mínimo que restringe las acciones permitidas y los recursos de destino
- La arquitectura de manejo de errores es una arquitectura configurada, como las colas de mensajes fallidos
Actualmente hay más de 35 construcciones de soluciones publicadas en la biblioteca y hay más en camino. Aquí hay un sistema de ingesta de datos simple donde los actores externos almacenan datos en una SQS-Queue, la cola activa una función lambda para procesar los datos y guardar los datos del proceso en una tabla de Dynamodb. Lanzar esto usando construcciones de soluciones es casi trivial. Puede crear esta arquitectura utilizando dos soluciones construidas AWS SQS lambda y AWS lambda Dynamodb.
Estas construcciones se pueden conectar a través de la función lambda para crear la arquitectura deseada.
Publicación traducida automáticamente
Artículo escrito por ddeevviissaavviittaa y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA