Administre los productos de AWS Service Catalog en varias cuentas y regiones de AWS - Recomendaciones de AWS

Administre los productos de AWS Service Catalog en varias cuentas y regiones de AWS

Ram Kandaswamy, Amazon Web Services

Resumen

Service Catalog, de Amazon Web Services (AWS), simplifica y acelera la gobernanza y la distribución de plantillas de infraestructura como código (IaC) para las empresas. Emplea plantillas de AWS CloudFormation para definir el conjunto de recursos de AWS (pilas) necesarios para un producto. AWS CloudFormation StackSets amplía esta funcionalidad al permitirle crear, actualizar o eliminar pilas de varias cuentas y regiones de AWS con una sola operación.

Los administradores de AWS Service Catalog crean productos mediante plantillas de CloudFormation diseñadas por los desarrolladores y los publican. A continuación, estos productos se asocian a una cartera y se imponen restricciones en materia de gobernanza. Para poner sus productos a disposición de usuarios de otras cuentas o unidades organizativas (OU) de AWS, normalmente comparte su cartera con ellos. Este patrón describe un enfoque alternativo, basado en AWS CloudFormation StackSets, para administrar las ofertas de productos de AWS Service Catalog. En lugar de compartir carteras, se usan restricciones de conjuntos de pilas para establecer las regiones y cuentas de AWS en las que se puede implementar y usar su producto. Con este enfoque puede aprovisionar sus productos de AWS Service Catalog en varias cuentas, unidades organizativas y regiones de AWS, y administrarlos desde una ubicación centralizada, a la vez que cumple con sus necesidades de gobernanza. 

Ventajas de este enfoque:

  • El producto se aprovisiona y administra desde la cuenta principal y no se comparte con otras cuentas.

  • Este enfoque proporciona una vista consolidada de todos los productos aprovisionados (pilas) basados en un producto específico.

  • La configuración con AWS Service Management Connector es más sencilla, ya que solo se dirige a una cuenta.

  • Es más fácil consultar y usar los productos de AWS Service Catalog.

Requisitos previos y limitaciones

Requisitos previos

  • Plantillas de AWS CloudFormation para IaC y control de versiones

  • Configuración de múltiples cuentas y AWS Service Catalog para aprovisionar y administrar los recursos de AWS

Limitaciones

  • Este enfoque emplea AWS CloudFormation StackSets, por lo que se aplican sus limitaciones:

    • StackSets no permite implementar plantillas de CloudFormation a través de macros. Si usa una macro para preprocesar la plantilla, no podrá realizar una implementación basada en Stacksets.

    • StackSets ofrece la posibilidad de desasociar una pila del conjunto de pilas, lo que le permite segmentar una pila específica para solucionar un problema. Sin embargo, una pila disociada no se puede volver a asociar al conjunto de pilas.

  • AWS Service Catalog genera automáticamente los nombres de StackSets. Actualmente, la solución no es personalizable.

Arquitectura

Arquitectura de destino

El usuario administra el producto AWS Service Catalog mediante la plantilla AWS CloudFormation y StackSets.
  1. El usuario crea una plantilla de AWS CloudFormation para aprovisionar recursos de AWS, en formato JSON o YAML.

  2. La plantilla de CloudFormation crea un producto en AWS Service Catalog, que se añade a una cartera.

  3. El usuario crea un producto aprovisionado que, a su vez, crea pilas de CloudFormation en las cuentas de destino.

  4. Cada pila aprovisiona los recursos especificados en las plantillas de CloudFormation.

Herramientas

Servicios de AWS

  • 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.

  • La interfaz de la línea de comandos de AWS (AWS CLI) es una herramienta de código abierto que le permite interactuar con los servicios de AWS mediante comandos en su intérprete de comandos de línea de comandos.

  • 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.

Epics

TareaDescripciónHabilidades requeridas

Cree una cartera.

Una cartera es un contenedor que incluye uno o más productos agrupados en función de criterios específicos. El uso de una cartera para sus productos le ayuda a aplicar restricciones comunes a todo su conjunto de productos.

Para crear una cartera, siga las instrucciones de la documentación de AWS Service Catalog. Si usa la CLI de AWS, aquí tiene un comando de ejemplo:

aws servicecatalog create-portfolio --provider-name my-provider --display-name my-portfolio

Para obtener más información, consulte la documentación de AWS CLI.

AWS Service Catalog, IAM

Cree una plantilla de CloudFormation.

Cree una plantilla de CloudFormation que describa los recursos. Los valores de las propiedades de los recursos deben parametrizarse cuando proceda.

AWS CloudFormation, JSON/YAML

Cree un producto con información sobre la versión.

La plantilla de CloudFormation se convierte en un producto cuando se publica en AWS Service Catalog. Proporcione valores para los parámetros de detalle de versión opcionales, como el título de la versión y la descripción. Estos datos le resultarán útiles para realizar consultas sobre el producto más adelante.

Para crear un producto, siga las instrucciones de la documentación de AWS Service Catalog. Si utiliza la CLI de AWS, aquí tiene un comando de ejemplo:

aws servicecatalog create-product --cli-input-json file://create-product-input.json

create-product-input.json es el archivo que transfiere los parámetros del producto. Para obtener un ejemplo de este archivo, consulte la sección Información adicional. Para obtener más información, consulte la documentación de AWS CLI.

AWS Service Catalog

Aplique restricciones.

Aplique restricciones de conjunto de paquetes a la cartera para configurar las opciones de implementación del producto, como múltiples permisos, cuentas y regiones de AWS. Para obtener instrucciones, consulte la documentación de AWS Service Catalog.

AWS Service Catalog

Añada permisos.

Conceda permisos a los usuarios para que lancen los productos de la cartera. Para obtener instrucciones sobre su consola, consulte la documentación de AWS Service Catalog. Si usa la CLI de AWS, aquí tiene un comando de ejemplo:

aws servicecatalog associate-principal-with-portfolio \ --portfolio-id port-2s6abcdefwdh4 \ --principal-arn arn:aws:iam::444455556666:role/Admin \ --principal-type IAM

Para obtener más información, consulte la documentación de AWS CLI.

AWS Service Catalog, IAM

Aprovisione el producto.

Un producto aprovisionado es una instancia con recursos de un producto. Por ejemplo, el aprovisionamiento de un producto en función de una plantilla de CloudFormation lanza una pila de CloudFormation y sus recursos subyacentes.

Aprovisione el producto definiendo las regiones y cuentas de AWS aplicables en función de las restricciones del conjunto de pilas. En el AWS de CLI, se muestra un ejemplo de comando:

aws servicecatalog provision-product \ --product-id prod-abcdfz3syn2rg \ --provisioning-artifact-id pa-abc347pcsccfm \ --provisioned-product-name "mytestppname3"

Para obtener más información, consulte la documentación de AWS CLI.

AWS Service Catalog

Recursos relacionados

Referencias

Tutoriales y videos 

Información adicional

Al usar el comando create-product, el parámetro cli-input-json apunta a un archivo que especifica información como el propietario del producto, el correo electrónico de soporte y los detalles de la plantilla de CloudFormation. A continuación se muestra un ejemplo de este archivo:

{ "Owner": "Test admin", "SupportDescription": "Testing", "Name": "SNS", "SupportEmail": "example@example.com", "ProductType": "CLOUD_FORMATION_TEMPLATE", "AcceptLanguage": "en", "ProvisioningArtifactParameters": { "Description": "SNS product", "DisableTemplateValidation": true, "Info": { "LoadTemplateFromURL": "<url>" }, "Name": "version 1" }