Automatice la implementación de productos y la cartera de AWS Service Catalog mediante AWS CDK
Sandeep Gawande, Viyoma Sachdeva y RAJNEESH TYAGI, Amazon Web Services
Resumen
AWS Service Catalog le ayuda a administrar de forma centralizada los catálogos de servicios de TI o productos aprobados para su uso en el entorno de AWS de su organización. La cartera es una colección de productos que, además, contiene información de configuración. Con AWS Service Catalog, puede crear una cartera de productos personalizada para cada tipo de usuario de su organización y conceder acceso a la cartera de productos apropiada. Después, esos usuarios pueden implementar rápidamente cualquier producto que necesiten de la cartera.
Si tiene una infraestructura de red compleja, como arquitecturas en múltiples regiones y cuentas, se recomienda crear y administrar las carteras de Service Catalog en una única cuenta centralizada. Este patrón describe cómo usar AWS Cloud Development Kit (AWS CDK) para automatizar la creación de carteras de Service Catalog en una cuenta central, conceder a los usuarios finales acceso a ellas y, opcionalmente, aprovisionar productos en una o más cuentas de AWS de destino. Esta solución lista para usar crea las carteras de Service Catalog en la cuenta de origen. Opcionalmente, también aprovisiona productos en las cuentas de destino mediante pilas de AWS CloudFormation y le ayuda a configurar TagOptions para los productos:
AWS CloudFormation StackSets: puede usar StackSets para lanzar productos del catálogo de servicios en varias regiones y cuentas de AWS. La implementación de esta solución le permite aprovisionar productos automáticamente. Para obtener más información, consulte Uso de AWS CloudFormation StackSets (documentación de Service Catalog) y Conceptos de StackSets (documentación de CloudFormation).
Biblioteca TagOption: puede administrar las etiquetas de los productos aprovisionados mediante la biblioteca TagOption. TagOption es un par de clave-valor administrado en AWS Service Catalog. No es una etiqueta de AWS, pero sirve como plantilla para crear una etiqueta de AWS basada en la TagOption. Para obtener más información, consulte biblioteca de TagOption (documentación de Service Catalog).
Requisitos previos y limitaciones
Requisitos previos
Una cuenta de AWS activa que quiera usar como cuenta de supervisión para administrar carteras de Service Catalog.
Si usa esta solución para aprovisionar productos en una o más cuentas de destino, la cuenta de destino debe existir ya y estar activa.
Permisos de AWS Identity and Access Management (IAM) para acceder a AWS Service Catalog, AWS CloudFormation y AWS IAM.
Versiones de producto
AWS CDK versión 2.27.0
Arquitectura
Pila de tecnología de destino
Carteras de Service Catalog en una cuenta de AWS centralizada
Productos de Service Catalog implementados en la cuenta de destino
Arquitectura de destino

En la cuenta de cartera (u origen), debe actualizar el archivo config.json con la información de la cuenta de AWS, la región de AWS, el rol de IAM, la cartera y el producto para su caso de uso.
Implemente la aplicación AWS CDK.
La aplicación AWS CDK asume el rol de IAM de implementación y crea las carteras y los productos de Service Catalog definidos en el archivo config.json.
Si ha configurado StackSets para implementar productos en una cuenta de destino, el proceso continuará. Si no ha configurado StackSets para aprovisionar ningún producto, el proceso estará completo.
La aplicación AWS CDK asume el rol de administrador de StackSet e implementa el conjunto de pilas de AWS CloudFormation que definió en el archivo config.json.
En la cuenta de destino, StackSets asume el rol de ejecución de StackSet y aprovisiona los productos.
Herramientas
Servicios de AWS
AWS Cloud Development Kit (AWS CDK) es un marco de desarrollo de software que le ayuda a definir y aprovisionar la infraestructura de la nube de AWS en código.
El Kit de herramientas de AWS CDK es un kit de desarrollo en la nube de línea de comandos que le ayuda a interactuar con su aplicación AWS CDK.
AWS CloudFormation le permite configurar los recursos de AWS, aprovisionarlos de forma rápida y coherente y administrarlos durante todo su ciclo de vida en todas las cuentas y regiones de AWS.
AWS Identity and Access Management (IAM) le permite administrar de forma segura el acceso a los recursos de AWS mediante el control de quién está autenticado y autorizado a utilizarlos.
AWS Service Catalog le ayuda a administrar de forma centralizada los catálogos de servicios de TI aprobados para AWS. Los usuarios finales pueden implementar rápidamente solo los servicios de TI aprobados que necesitan, de acuerdo con las limitaciones establecidas por su organización.
Repositorio de código
El código de este patrón está disponible en el repositorio de GitHub aws-cdk-servicecatalog-automation
cdk-sevicecatalog-app: esta carpeta contiene la aplicación AWS CDK para esta solución.
config: esta carpeta contiene el archivo config.json y la plantilla de CloudFormation para implementar los productos de la cartera de Service Catalog.
config/config.json: este archivo contiene toda la información de configuración. Actualice este archivo para personalizar esta solución según su caso de uso.
config/templates: esta carpeta contiene las plantillas de CloudFormation para los productos de Service Center.
setup.sh: este script implementa la solución.
uninstall.sh: este script elimina la pila y todos los recursos de AWS creados al implementar esta solución.
Para usar el código de muestra, siga las instrucciones en sección Epics.
Prácticas recomendadas
Los roles de IAM usados para implementar esta solución deben cumplir con el principio de privilegio mínimo (documentación de IAM).
Respete las Prácticas recomendadas para desarrollar aplicaciones en la nube con AWS CDK
(publicación del blog de AWS). Siga las Prácticas recomendadas de AWS CloudFormation (documentación de CloudFormation).
Epics
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Instale el kit de herramientas de AWS CDK. | Asegúrese de tener instalado el kit de herramientas de AWS CDK. Ejecute el siguiente comando para confirmar si está instalado y verifique la versión.
Si el kit de herramientas de AWS CDK no está instalado, ejecute el siguiente comando para instalarlo.
Si la versión del kit de herramientas de AWS CDK es anterior a la 2.27.0, ejecute el siguiente comando para actualizarla a la versión 2.27.0.
| DevOps de AWS, ingeniero de DevOps |
Clonar el repositorio. | Escriba el siguiente comando. En Clonar el repositorio, en la sección Información adicional, puede copiar el comando completo que contiene la URL del repositorio. Se clonará el repositorio aws-cdk-servicecatalog-automation
Se creará la carpeta
| DevOps de AWS, ingeniero de DevOps |
Configure las credenciales de AWS. | Introduzca los comandos siguientes. Se exportan las siguientes variables, que definen la cuenta y la región de AWS en las que se va a implementar la pila.
Las credenciales de AWS para AWS CDK se proporcionan a través de variables de entorno. | DevOps de AWS, ingeniero de DevOps |
Configurar permisos de roles de IAM para usuarios finales. | Si va a usar roles de IAM para conceder acceso a la cartera y a los productos que contiene, estos roles deben tener permisos para que los asuma la entidad principal servicecatalog.amazonaws.com. Para obtener instrucciones sobre cómo conceder estos permisos, consulte Habilitar acceso de confianza con Service Catalog (documentación de AWS Organizations). | DevOps de AWS, ingeniero de DevOps |
Configure los roles de IAM requeridos por StackSets. | Si usa StackSets para aprovisionar automáticamente los productos en las cuentas de destino, debe configurar los roles de IAM que administran y ejecutan el conjunto de pilas.
| DevOps de AWS, ingeniero de DevOps |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Cree las plantillas de CloudFormation. | En la carpeta | Desarrollador de aplicaciones, DevOps de AWS, ingeniero de DevOps |
Personalice el archivo de configuración. | En la carpeta En la sección
avisoLos usuarios de IAM tienen credenciales de larga duración, lo que supone un riesgo de seguridad. Para ayudar a mitigar este riesgo, le recomendamos que brinde a estos usuarios únicamente los permisos que necesitan para realizar la tarea y que los elimine cuando ya no los necesiten. importante
Para ver un ejemplo de un archivo de configuración completo, consulte el Ejemplo de archivo de configuración en la sección Información adicional. | Desarrollador de aplicaciones, ingeniero de DevOps, DevOps de AWS |
Implemente la solución. | Escriba el siguiente comando. Esto implementa la aplicación AWS CDK y aprovisiona las carteras y productos de Service Catalog, tal y como se especifica en el archivo config.json.
| Desarrollador de aplicaciones, ingeniero de DevOps, DevOps de AWS |
Comprobar la implementación. | Compruebe que la implementación se ha realizado correctamente de la siguiente manera:
| AWS general |
(Opcional) Actualice las carteras y los productos. | Si desea usar esta solución para actualizar las carteras o los productos, o para aprovisionar nuevos productos:
Por ejemplo, puede añadir carteras adicionales o aprovisionar más recursos. La aplicación AWS CDK implementará solo los cambios. Si no hay cambios en las carteras o los productos implementados anteriormente, la reimplementación no les afectará. | Desarrollador de aplicaciones, ingeniero de DevOps, AWS general |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
(Opcional) Elimine los recursos de AWS implementados por esta solución. | Si desea eliminar un producto aprovisionado, siga las instrucciones de Eliminar productos aprovisionados (documentación de Service Catalog). Si desea eliminar todos los recursos creados por esta solución, ejecute el siguiente comando.
| DevOps de AWS, ingeniero de DevOps, desarrollador de aplicaciones |
Recursos relacionados
Biblioteca de constructos de AWS Service Catalog (referencia de API de AWS)
Conceptos de StackSets (documentación de CloudFormation)
AWS Service Catalog
(marketing de AWS) Uso de Service Catalog con AWS CDK
(taller de AWS)
Información adicional
Clone el repositorio
Introduzca el siguiente comando para clonar el repositorio de GitHub.
git clone https://github.com/aws-samples/aws-cdk-servicecatalog-automation.git
Ejemplo de archivo de configuración
El siguiente es un archivo de muestra config.json con valores de ejemplo.
{ "portfolios": [ { "displayName": "EC2 Product Portfolio", "providerName": "User1", "description": "Test1", "roles": [ "<Names of IAM roles that can access the products>" ], "users": [ "<Names of IAM users who can access the products>" ], "groups": [ "<Names of IAM user groups that can access the products>" ] }, { "displayName": "Autoscaling Product Portfolio", "providerName": "User2", "description": "Test2", "roles": [ "<Name of IAM role>" ] } ], "tagOption": [ { "key": "Group", "value": [ "finance", "engineering", "marketing", "research" ] }, { "key": "CostCenter", "value": [ "01", "02", "03", "04" ] }, { "key": "Environment", "value": [ "dev", "prod", "stage" ] } ], "products": [ { "portfolioName": "EC2 Product Profile", "productName": "Ec2", "owner": "owner1", "productVersionName": "v1", "templatePath": "../../config/templates/template1.json" }, { "portfolioName": "Autoscaling Product Profile", "productName": "autoscaling", "owner": "owner1", "productVersionName": "v1", "templatePath": "../../config/templates/template2.json", "deployWithStackSets": { "accounts": [ "012345678901", ], "regions": [ "us-west-2" ], "stackSetAdministrationRoleName": "AWSCloudFormationStackSetAdministrationRole", "stackSetExecutionRoleName": "AWSCloudFormationStackSetExecutionRole" } } ] }