Blog de Amazon Web Services (AWS)
Aumente la visibilidad y el gobierno de sus aplicaciones con AWS Service Catalog AppRegistry
Por Remek Hetman, Principal Cloud Architect
Muchos clientes despliegan aplicaciones con una gran cantidad de recursos usando plantillas de AWS CloudFormation. A medida que los clientes empiezan a escalar, estas plantillas a menudo se reutilizan en varias aplicaciones. En este momento, tareas importantes como identificar aplicaciones desplegadas e identificar a qué stacks de CloudFormation están asociadas a una aplicación se vuelve más difícil. La visibilidad es un componente importante para una práctica madura de DevOps y SecOps. Hasta ahora, los clientes utilizaban herramientas complejas hechas a medida o soluciones de terceros para resolver este problema.
En el último re:Invent, AWS Service Catalog lanzó una nueva funcionalidad llamada AppRegistry para ayudar a los clientes a crear, de forma nativa, un inventario de recursos de AWS que contenga información sobre el uso de los mismos en todas las aplicaciones.
AWS Service Catalog AppRegistry permite crear un repositorio de aplicaciones y recursos asociados. Asismismo, puede definir y administrar metadatos de sus aplicaciones. Esto le permite comprender el contexto de las aplicaciones y de los recursos en cada uno de los ambientes. Estas capacidades permiten que los equipos del negocio puedan obtener la información que necesitan para tomar decisiones estratégicas y tácticas informadas sobre los recursos de la nube.
AppRegistry proporciona una forma de agrupar aplicaciones y sus recursos. Puede definir aplicaciones proporcionando un nombre, una descripción, enlaces a stacks de CloudFormation y asociaciones a metadatos de aplicaciones. Los equipos de finanzas, seguridad y TI crean y administran atributos para capturar los metadatos importantes de las aplicaciones. Estos atributos de aplicación emplean un estándar JSON abierto, brindandole flexibilidad para capturar la complejidad de metadatos corporativos. Los atributos de aplicaciones pueden incluir metadatos como la clasificación de seguridad de la aplicación, la propiedad de la organización, el tipo de aplicación, el centro de costos e información de soporte. Luego, los desarrolladores pueden asociar los atributos que requieran sus aplicaciones.
El uso de AppRegistry está destinado a múltiples equipos dentro de una organización:
Centros de Excelencia en la Nube (CCOE): AppRegistry permite que este equipo pueda comprender el conjunto completo de aplicaciones y recursos aprovisionados por equipos de desarrollo y líneas de negocio. Esto puede ayudar a responder preguntas de gobierno como: “¿Se implementó la aplicación desde una plantilla aprobada?”
Desarrolladores: AppRegistry permite que los desarrolladores puedan encontrar todos los recursos asociados a una aplicación. Pueden buscar por diferentes criterios, como instancias de aplicación, Región, cuenta u otras dimensiones habilitadas para etiquetas y metadatos. Esto ayuda a responder preguntas como: “¿Cuántas versiones de la aplicación se están ejecutando en el entorno de desarrollo?”
DevOps: AppRegistry permite buscar y consultar operaciones sobre recursos, que fueron aprobadas en todos los dominios. Esto ayuda a responder preguntas como: “¿Qué aplicaciones requieren actualización?”
Ejecutivos de nivel C (CIO, CTO, CISO): AppRegistry permite tener una vista completa de los despliegues en la nube, incluidas todas las instancias y recursos de aplicaciones en los ambientes de TI.
Seguridad: AppRegistry permite que los equipos de seguridad puedan identificar los recursos involucrados en un incidente de seguridad. Esto ayuda a responder la pregunta: “¿Cuántas aplicaciones con esta clasificación de datos están utilizando una versión no compatible de un componente específico o un recurso?”
Cumplimiento: AppRegistry permite que los miembros del equipo de riesgos y cumplimiento puedan obtener información sobre todos los recursos de una aplicación que actualmente está sujeta a certificaciones específicas de cumplimiento. Esto ayuda a responder la pregunta: “¿Qué aplicaciones deben ser compatibles con HIPAA, FISMA o FedRAMP, pero tienen recursos que no cumplen con esta calificación?”
Registrar una aplicación en AppRegIstry
Primero los guiaré en los pasos necesarios para crear grupos de atributos y aplicaciones. A continuación, asociaremos una aplicación con grupos de atributos y stacks de AWS CloudFormation.
Primer paso
El administrador de CCOE define un conjunto de grupos de atributos comunes a toda la empresa.
La creación de estos grupos establece normas para que una aplicación se pueda encontrar de forma consistente utilizando los mismos criterios. Por ejemplo, definir la ubicación organizativa de la aplicación, la clasificación de la aplicación, etc.
Ejemplos de comandos de la CLI de AWS para crear un grupo de atributos:
aws servicecatalog-appregistry create-attribute-group --name "Corp_DataScience_SalesAnalytics" --description "Sales analytics applications managed by the data science teams." --attributes '{"Department":"datascience","CostCenter":"cc1","Team":"salesanalytics"}'
aws servicecatalog-appregistry create-attribute-group --name "Corp_Application_Classification_High" --description "Applications classified as high." --attributes '{"ApplicationResilience":"high","DataSecurity":"high","DataSensitivity":"high"}'
Ejemplo de salida:
{ "attributeGroup": { "id": "0bf2qf4xa67ghtip6xzfnwonpr", "arn": "arn:aws:servicecatalog:us-east-1:XXXXXXXXXX:/attribute-groups/0bf2qf4xa67ghtip6xzfnwonpr", "name": "Corp_Application_Classification_High", "description": "Applications classified as high.", "creationTime": "2020-11-13T15:12:29.958404+00:00", "lastUpdateTime": "2020-11-13T15:12:29.958404+00:00", "tags": {} } }
Segundo paso
El equipo de desarrollo configura grupos de atributos.
Esto se hace para incluir información específica relacionada al equipo y/o a la aplicación que pueda ser necesaria para generar informes y/o contribuir a la gestión. La aplicabilidad de estos grupos debe regstringirse a la aplicación en cuestión.
Ejemplos de comandos de la CLI de AWS sobre cómo crear un grupo de atributos:
aws servicecatalog-appregistry create-attribute-group --name "Commerce_AnalyticsEngine" --description "Real-time sales analytics applications managed by the data science teams." --attributes '{"Team":"developers","app-type":"processing","SLA":"1h","Runtime":"Python-3.6","Support":{"Phone":"XXX-XXX-XXXX","Email":"support@app.com"},"Compliance":["SOC-1","ISO-27018"]}}'
aws servicecatalog-appregistry create-attribute-group --name "Commerce_Payments" --description "24X7 real-time payments processing." --attributes '{"Team":"payments","app-type":"processing","SLA":"0.1h","Runtime":"Java-12","Support":{"Phone":"XXX-XXX-XXXX","Email":"support@app.com"},"Compliance":["SOC-1","PCI"]}}'
Tenga en cuenta que los atributos pueden tener estructuras anidada o incluir listas.
Ejemplo de salida:
{ "attributeGroup": { "id": "0bwdgnibevsc5clgtm7hehuljh", "arn": "arn:aws:servicecatalog:us-east-1: XXXXXXXXXX:/attribute-groups/0bwdgnibevsc5clgtm7hehuljh", "name": "Commerce_Payments", "description": "24X7 real-time payments processing.", "creationTime": "2020-11-13T15:20:19.248896+00:00", "lastUpdateTime": "2020-11-13T15:20:19.248896+00:00", "tags": {} } }
Paso 3
El equipo de desarrollo crea aplicaciones en AppRegistry.
Ejemplos de comandos de la CLI de AWS sobre cómo crear una aplicación:
aws servicecatalog-appregistry create-application --name "CC_Recommendation_App" --description "Real-Time Recommendation Engine Application." --tags Name=RecommendationEngine,ApplicationId=AppXYZ,ProductLine=PR10,BusinessUnit=BU1
aws servicecatalog-appregistry create-application --name "CC_Payments_App" --description "Real-time payments service for processing customer orders." --tags Name=ProcessingEngine,ApplicationId=AppXYZ,ProductLine=PR11,BusinessUnit=BU1
Ejemplo de salida:
{ "application": { "id": "021n7zom01q573k7pfv404oj19", "arn": "arn:aws:servicecatalog:us-east-1: XXXXXXXXXX:/applications/021n7zom01q573k7pfv404oj19", "name": "CC_Payments_App", "description": "Real-time payments service for processing customer orders.", "creationTime": "2020-11-13T15:31:05.117977+00:00", "lastUpdateTime": "2020-11-13T15:31:05.117977+00:00", "tags": { "ApplicationId": "AppXYZ", "BusinessUnit": "BU1", "Name": "ProcessingEngine", "ProductLine": "PR11" } } }
Paso 4
El equipo de desarrollo asocia grupos de atributos a sus aplicaciones.
Ejemplos de comandos de la CLI de AWS sobre cómo asociar aplicaciones a grupos de atributos:
aws servicecatalog-appregistry associate-attribute-group --application "CC_Recommendation_App" --attribute-group "Commerce_AnalyticsEngine"
aws servicecatalog-appregistry associate-attribute-group --application "CC_Payments_App" --attribute-group "Commerce_Payments"
aws servicecatalog-appregistry associate-attribute-group --application "CC_Recommendation_App" --attribute-group "Corp_DataScience_SalesAnalytics"
aws servicecatalog-appregistry associate-attribute-group --application "CC_Recommendation_App" --attribute-group "Corp_DataScience_SalesAnalytics"
aws servicecatalog-appregistry associate-attribute-group --application "CC_Payments_App" --attribute-group "Corp_Application_Classification_High"
Ejemplo de salida:
{ "applicationArn": "arn:aws:servicecatalog:us-east-1: XXXXXXXXXX:/applications/021n7zom01q573k7pfv404oj19", "attributeGroupArn": "arn:aws:servicecatalog:us-east-1: XXXXXXXXXX:/attribute-groups/0bf2qf4xa67ghtip6xzfnwonpr" }
Paso 5
El equipo de desarrollo asocia los stacks existentes de AWS CloudFormation a sus aplicaciones.
Ejemplos de comandos de la CLI de AWS sobre cómo asociar un stack existente de AWS CloudFormation a una aplicación:
aws servicecatalog-appregistry associate-resource --application CC_Recommendation_App --resource-type CFN_STACK --resource cc_recomendation_app-CloudFormation-stack-name
aws servicecatalog-appregistry associate-resource --application CC_Payments_App --resource-type CFN_STACK --resource cc_payment_app_cfn_stack
Ejemplo de salida:
{ "applicationArn": "arn:aws:servicecatalog:us-east-1: XXXXXXXXXX:/applications/021n7zom01q573k7pfv404oj19", "resourceArn": "arn:aws:cloudformation:us-east-1: XXXXXXXXXX:stack/cc_payment_app_cfn_stack/9b137f20-e081-11e9-b842-12069a319f62" }
Consultar AppRegistry
En esta sección, le mostraré cómo consultar AppRegistry para enumerar las aplicaciones que cumplen cono determinados criterios.
Primero, “Enumerar las aplicaciones que tengo en el registro”.
aws servicecatalog-appregistry list-applications
Ejemplo de salida:
{ "applications": [ { "id": "021n7zom01q573k7pfv404oj19", "arn": "arn:aws:servicecatalog:us-east-1: XXXXXXXXXX:/applications/021n7zom01q573k7pfv404oj19", "name": "CC_Payments_App", "description": "Real-time payments service for processing customer orders.", "creationTime": "2020-11-13T15:31:05.117000+00:00", "lastUpdateTime": "2020-11-13T15:31:05.117000+00:00" }, { "id": "02rsoggaiagoa64bo4pd41yvkc", "arn": "arn:aws:servicecatalog:us-east-1: XXXXXXXXXX:/applications/02rsoggaiagoa64bo4pd41yvkc", "name": "CC_Recommendation_App", "description": "Real-Time Recommendation Engine Application.", "creationTime": "2020-11-13T15:25:39.683000+00:00", "lastUpdateTime": "2020-11-13T15:25:39.683000+00:00" } ] }
Segundo, “Describir las aplicaciones y sus atributos para poder verlas”
#!/bin/bash
listApps=$(aws servicecatalog-appregistry list-applications --query 'applications[*].[name]' --output text)
for app in ${listApps[*]}
do
attrGroup=$(aws servicecatalog-appregistry list-associated-attribute-groups --application $app --max-results 1 --query 'attributeGroups[0]' --output text)
printf "Attributes for $app\n"
aws servicecatalog-appregistry get-attribute-group --attribute-group $attrGroup --query 'attributes'
done
Ejemplo de salida:
Attributes for CC_Payments_App
"{\"ApplicationResilience\":\"high\",\"DataSecurity\":\"high\",\"DataSensitivity\":\"high\"}"
Attributes for CC_Recommendation_App
"{\"Department\":\"datascience\",\"CostCenter\":\"cc1\",\"Team\":\"salesanalytics\"}"
“Enumere los stacks y características de la aplicación.”
aws servicecatalog-appregistry list-associated-resources --application CC_Recommendation_App --query 'resources[*].[name]' --output text
Ejemplo de salida:
cc_recomendation_app-CloudFormation-stack-name
Por último, puede buscar aplicaciones asociadas con el grupo.
#!/bin/bash
searchGroupName=Corp_Application_Classification_High
listApps=$(aws servicecatalog-appregistry list-applications --query 'applications[*].[name]' --output text)
for app in ${listApps[*]}
do
attrGroup=$(aws servicecatalog-appregistry list-associated-attribute-groups --application $app --max-results 1 --query 'attributeGroups[0]' --output text)
groupName=$(aws servicecatalog-appregistry get-attribute-group --attribute-group $attrGroup --query 'name' --output text)
if [ $groupName = $searchGroupName ]; then printf "$app\n"; fi
done
Ejemplo de salida:
CC_Payments_App
Conclusión
En este blog post, introducimos una nueva funcionalidad de AWS Service Catalog llamada AppRegistry. Esta funcionalidad permite que las organizaciones puedan crear un inventario de aplicaciones y recursos aprovisionados con AWS. Vimos algunos ejemplos donde las aplicaciones pueden agruparse con varios atributos. Esto permite que diferentes equipos indentifiquen aplicaciones en función de su necesidades. También permite identificar stacks de AWS CloudFormation que fueron utilizadas para crear los recursos.
Este artículo fue traducido del Blog en Inglés .
Sobre el autor
Remek Hetman é Principal Cloud Architect
Revisores
Juliana Mayumi Takeuchi es arquitecta de soluciones de AWS y trabaja para ayudar y apoyar a los clientes en su viaje a la nube.
Federico Fernández Feijóo es Gerente del equipo de Arquitectura de Soluciones del sector privado para Argentina, Paraguay y Uruguay.