

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# AWS Service Catalog Aprovisione productos en función de AWS CloudFormation plantillas mediante GitHub acciones
<a name="provision-aws-service-catalog-products-using-github-actions"></a>

*Ashish Bhatt y Ruchika Modi, Amazon Web Services*

## Resumen
<a name="provision-aws-service-catalog-products-using-github-actions-summary"></a>

Este patrón proporciona a las organizaciones un enfoque simplificado que utiliza [AWS Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/introduction.html)productos y carteras para aprovisionar de forma estandarizada y compatible con Servicios de AWS todos los equipos. [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)ayuda a combinar los componentes esenciales de los productos y carteras de Service Catalog para aprovisionar la infraestructura de red base. Nube de AWS[Este patrón también promueve DevOps prácticas al integrar la infraestructura como código (IaC) en los flujos de trabajo de desarrollo automatizados mediante Actions. GitHub ](https://github.com/features/actions)

AWS Service Catalog permite a las organizaciones crear y gestionar servicios de TI aprobados AWS, lo que ofrece ventajas como la estandarización, el control centralizado, el aprovisionamiento de autoservicio y la gestión de costes. Al automatizar la implementación de las carteras y productos de Service Catalog mediante GitHub Actions, las empresas pueden hacer lo siguiente:
+ Lograr implementaciones consistentes y repetibles. 
+ Usar el control de versiones para la IaC. 
+ Integrar la administración de recursos en la nube con los flujos de trabajo de desarrollo existentes. 

Esta combinación optimiza las operaciones en la nube, refuerza la conformidad y acelera la prestación de los servicios aprobados a la par que reduce los errores manuales y mejora la eficiencia general.

## Requisitos previos y limitaciones
<a name="provision-aws-service-catalog-products-using-github-actions-prereqs"></a>

**Requisitos previos**
+ Un activo Cuenta de AWS 
+ Acceso al [GitHub repositorio](https://docs.github.com/en/get-started/quickstart/create-a-repo)
+ Comprensión básica de AWS CloudFormation y AWS Service Catalog
+ Un depósito de Amazon Simple Storage Service (Amazon S3) para alojar plantillas CloudFormation 
+ Un nombre de rol AWS Identity and Access Management (IAM) `github-actions` que se utiliza para la conectividad entre y GitHub AWS

**Limitaciones**
+ El código reutilizable de este patrón solo se ha probado con GitHub Actions.
+ Algunos Servicios de AWS no están disponibles en todos Regiones de AWS. Para obtener información sobre la disponibilidad en regiones, consulte [Servicios de AWS by Region](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Para ver los puntos de conexión específicos, consulte [Service endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) y elija el enlace del servicio.

**Versiones de producto**

La solución de este patrón se creó mediante las siguientes acciones de [GitHub Marketplace](https://github.com/marketplace) y sus versiones respectivas:
+ `actions/checkout@v4`
+ `aws-actions/configure-aws-credentials@v2`
+ `aws-actions/aws-cloudformation-github-deploy@v1.2.0`

## Arquitectura
<a name="provision-aws-service-catalog-products-using-github-actions-architecture"></a>

En el siguiente diagrama se muestra la arquitectura para esta solución.

![\[Uso de GitHub Actions para aprovisionar productos de Service Catalog en función CloudFormation de plantillas.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/49f82fa7-0c74-4581-bf92-95505dca264c/images/a13c7b41-534e-4a9e-bdca-2974fa40a49a.png)


1. Los administradores o los ingenieros de plataformas CloudFormation envían las plantillas estandarizadas a un GitHub repositorio, donde se guardan. El GitHub repositorio también contiene flujos de trabajo que automatizan el aprovisionamiento o el AWS Service Catalog uso GitHub de Actions.

1. GitHub Las acciones activan un flujo de trabajo que se conecta al Nube de AWS uso de un proveedor de OpenID Connect (OIDC) para aprovisionar Service Catalog.

1. Service Catalog contiene la cartera y los productos que los desarrolladores pueden utilizar directamente para aprovisionar AWS recursos estandarizados. Este patrón agrupa AWS recursos como nubes privadas virtuales (VPCs), subredes, pasarelas de Internet y NAT y tablas de enrutamiento.

1. Una vez que el desarrollador crea un producto de Service Catalog, Service Catalog lo convierte en AWS recursos estandarizados y preconfigurados. Como resultado, los desarrolladores ahorran tiempo porque no tienen que aprovisionar recursos individuales ni configurarlos manualmente.

## Tools (Herramientas)
<a name="provision-aws-service-catalog-products-using-github-actions-tools"></a>

**Servicios de AWS**
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)le ayuda a configurar AWS los recursos, aprovisionarlos de forma rápida y coherente y gestionarlos a lo largo de su ciclo de vida en todo el mundo Cuentas de AWS . Regiones de AWS Se trata de un servicio de infraestructura como código (IaC) que se puede utilizar fácilmente como uno de los tipos de productos con AWS Service Catalog los que cuenta.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) le ayuda a administrar de forma segura el acceso a sus AWS recursos al controlar quién está autenticado y autorizado a usarlos.
+ [AWS Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/getstarted.html)le ayuda a gestionar de forma centralizada el catálogo de servicios de TI aprobados. 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.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) es un servicio de almacenamiento de objetos basado en la nube que lo ayuda a almacenar, proteger y recuperar cualquier cantidad de datos.

**Otros**
+ [GitHub Actions](https://docs.github.com/en/actions) es una plataforma de integración y entrega continuas (CI/CD) que está estrechamente integrada con GitHub los repositorios. Puedes usar GitHub Actions para automatizar tu proceso de creación, prueba e implementación.

**Repositorio de código**

El código de este patrón está disponible en el repositorio GitHub [service-catalog-with-github-actions](https://github.com/aws-samples/service-catalog-with-github-actions). El repositorio contiene los siguientes archivos de interés:
+ `github/workflows`:
  + `e2e-test.yaml`: este archivo llama a `workflow.yaml`, que es el [flujo de trabajo reutilizable](https://docs.github.com/en/actions/sharing-automations/reusing-workflows). Este flujo de trabajo se activa en cuanto hay una confirmación y una inserción en una rama.
  + `workflow.yaml`: este archivo contiene el flujo de trabajo reutilizable de esta solución; está configurado con `workflow_call` como desencadenador. Al tratarse de un flujo de trabajo reutilizable, `workflow.yaml` se puede invocar desde cualquier otro flujo de trabajo.
+ `templates`:
  + `servicecatalog-portfolio.yaml`— Esta CloudFormation plantilla incluye recursos que aprovisionan la cartera de Service Catalog y el producto Service Catalog. La plantilla contiene un conjunto de parámetros que se utilizan al aprovisionar la cartera y los productos de Service Catalog. Un parámetro acepta la URL de un archivo de Amazon S3 en la que se carga la plantilla `vpc.yaml`. Si bien este patrón incluye el `vpc.yaml` archivo para aprovisionar AWS los recursos, también puede utilizar la URL del archivo S3 del parámetro para la configuración.
  + `vpc.yaml`— Esta CloudFormation plantilla contiene AWS los recursos que se van a añadir al producto Service Catalog. AWS los recursos incluyen subredes VPCs, puertas de enlace de Internet, puertas de enlace NAT y tablas de enrutamiento. La `vpc.yaml` plantilla es un ejemplo de cómo puede utilizar cualquier CloudFormation plantilla con una plantilla de productos y portafolios de Service Catalog.

## Prácticas recomendadas
<a name="provision-aws-service-catalog-products-using-github-actions-best-practices"></a>
+ Consulte [las prácticas recomendadas de seguridad AWS Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/security-best-practices.html) en la AWS Service Catalog documentación. 
+ Consulte [Refuerzo de la seguridad para GitHub las acciones](https://docs.github.com/en/actions/security-for-github-actions/security-guides/security-hardening-for-github-actions) en la GitHub documentación.

## Epics
<a name="provision-aws-service-catalog-products-using-github-actions-epics"></a>

### Configuración de la estación de trabajo local
<a name="set-up-local-workstation"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure Git en su estación de trabajo. | Para instalar y configurar Git en su estación de trabajo local, siga las instrucciones de [Getting Started – Installing Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) en la documentación de Git. | Desarrollador de aplicaciones | 
| Clona el repositorio GitHub del proyecto. | Para clonar el repositorio GitHub del proyecto, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/provision-aws-service-catalog-products-using-github-actions.html) | DevOps ingeniero | 

### Configuración del proveedor de OIDC
<a name="set-up-the-oidc-provider"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Configure un proveedor de OIDC. | Cree un proveedor de OpenID Connect (OIDC) que permita a los flujos de trabajo de GitHub Actions acceder a los recursos sin necesidad de almacenar las AWS credenciales como secretos de larga duración. AWS GitHub Para obtener instrucciones, consulte [Configuración de OpenID Connect en Amazon Web Services](https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services) en la GitHub documentación.Una vez configurado un proveedor de OIDC, se actualizará la política de confianza del rol de IAM `github-actions`, mencionada anteriormente en [Requisitos previos](#provision-aws-service-catalog-products-using-github-actions-prereqs). | Administrador de AWS DevOps, AWS general | 

### Proceso de activación de GitHub Actions para implementar la cartera y los productos de Service Catalog
<a name="trigger-github-actions-pipeline-to-deploy-sc-portfolio-and-products"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Actualizar `e2e-test.yaml`. | El archivo `e2e-test.yaml` desencadena el flujo de trabajo reutilizable en `workflow.yaml`. Actualice y valide los valores de los siguientes parámetros de entrada en `e2e-test.yaml`:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/provision-aws-service-catalog-products-using-github-actions.html) | DevOps ingeniero | 

### Validación de la implementación
<a name="validate-deployment"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Valide los recursos de Service Catalog. | Para validar los recursos de Service Catalog, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/provision-aws-service-catalog-products-using-github-actions.html) | AWS DevOps | 

### Eliminar recursos
<a name="clean-up-resources"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Elimine la CloudFormation pila. | Para eliminar la CloudFormation pila, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/provision-aws-service-catalog-products-using-github-actions.html)Para obtener más información, consulte [Eliminar una pila de la CloudFormation consola](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-delete-stack.html) en la CloudFormation documentación | DevOps ingeniero, administrador de AWS | 

## Resolución de problemas
<a name="provision-aws-service-catalog-products-using-github-actions-troubleshooting"></a>


| Problema | Solución | 
| --- | --- | 
| `e2e-test``Can't find 'action.yml', 'action.yaml' or 'Dockerfile' under '*/home/runner/work/service-catalog-with-github-actions/service-catalog-with-github-actions``Did you forget to run actions/checkout before running your local action?` | Para asegurarse de que ha activado la configuración de repositorio correcta, haga lo siguiente:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/provision-aws-service-catalog-products-using-github-actions.html) | 

## Recursos relacionados
<a name="provision-aws-service-catalog-products-using-github-actions-resources"></a>

**AWS documentación**
+ [Descripción general de Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/what-is_concepts.html)

**Otros recursos**
+ [Acerca de los eventos que desencadenan los flujos de trabajo](https://docs.github.com/en/actions/writing-workflows/choosing-when-your-workflow-runs/events-that-trigger-workflows#about-events-that-trigger-workflows) (GitHub documentación)
+ [Reutilización de flujos de trabajo](https://docs.github.com/en/actions/sharing-automations/reusing-workflows) (GitHub documentación)

## Información adicional
<a name="provision-aws-service-catalog-products-using-github-actions-additional"></a>

Para ver capturas de pantalla relacionadas con las [epopeyas](#provision-aws-service-catalog-products-using-github-actions-epics), ve a la carpeta **Imágenes** del repositorio de este patrón. GitHub Están disponibles las siguientes capturas de pantalla:
+ [AWS Service Catalog portafolio, sección de administración](https://github.com/aws-samples/service-catalog-with-github-actions/blob/main/images/SC_portfolio.png)
+ [AWS Service Catalog producto, sección de administración](https://github.com/aws-samples/service-catalog-with-github-actions/blob/main/images/SC_Product.png)
+ [AWS Service Catalog producto, User/Provisioning sección](https://github.com/aws-samples/service-catalog-with-github-actions/blob/main/images/SC_Product_User.png)