> ## Documentation Index
> Fetch the complete documentation index at: https://translations.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Obtenga información sobre el flujo de trabajo de implementación de ACUL

# Flujo de trabajo de implementación de ACUL

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Para seguir este flujo de trabajo, asegúrese de contar con lo siguiente:

  * Un inquilino de desarrollo de Auth0 configurado con [Universal Login](docs/authenticate/login/auth0-universal-login) y un [dominio personalizado](/es/docs/customize/custom-domains).
  * Una [aplicación de primera parte](/es/docs/get-started/auth0-overview/create-applications#create-applications) de Auth0
  * [Identifier First Authentication](/es/docs/authenticate/login/auth0-universal-login/identifier-first) habilitado en su inquilino de Auth0.
  * Una cuenta de AWS con permisos para crear roles de IAM, buckets de S3 y configurar CloudFront
  * Un repositorio de GitHub que contenga sus pantallas de inicio de sesión personalizadas
</Callout>

El flujo de trabajo de implementación de ACUL en producción compila e implementa sus pantallas de ACUL y configura su inquilino para usarlas. Utiliza GitHub Actions para:

* Compilar los paquetes de recursos de sus pantallas
  * El flujo de trabajo lee el archivo [config/deploy\_config.yml](https://github.com/auth0-samples/auth0-acul-samples/blob/6cb4dcc43defd1a9cf586da9307d7d2348e696ae/react/.github/config/deploy_config.yml) para determinar qué pantallas están marcadas para su implementación.
  * Si encuentra destinos de implementación, el flujo de trabajo compila sus recursos de ACUL con Vite y genera el código en el directorio `/dist`.
  * Cargar sus recursos en AWS S3
    * El flujo de trabajo se autentica de forma segura en AWS mediante [OpenID Connect (OIDC)](docs/authenticate/protocols/openid-connect-protocol).
    * Carga el contenido del directorio `/dist` en su bucket de S3.
  * Configurar su inquilino de Auth0
    * El flujo de trabajo usa [Auth0 CLI](https://auth0.github.io/auth0-cli/) con una aplicación M2M para configurar las pantallas en su inquilino.
    * Asigna cada pantalla a la pantalla correcta de Auth0 mediante el archivo [config/screen-to-prompt-mapping.js](https://github.com/auth0-samples/auth0-acul-samples/blob/6cb4dcc43defd1a9cf586da9307d7d2348e696ae/react/.github/config/screen-to-prompt-mapping.js).
    * Actualiza la configuración de personalización de pantallas de Auth0 para que apunte a sus recursos en la CDN de CloudFront.

Una vez configurado, un `git push` a la rama `main` de su proyecto inicia el flujo de trabajo de GitHub.

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Para consultar un ejemplo completo del flujo de trabajo de implementación de ACUL en producción, lea [ACUL GITHUB ACTIONS](https://github.com/auth0-samples/auth0-acul-samples/blob/6cb4dcc43defd1a9cf586da9307d7d2348e696ae/react/.github/GITHUB_ACTIONS.md) en GitHub.
</Callout>

<div id="1-auth0-configuration">
  ### 1. Configuración de Auth0
</div>

Cree una aplicación de [Machine-to-Machine](/es/docs/get-started/auth0-overview/create-applications/machine-to-machine-apps) para que el flujo de trabajo de GitHub pueda actualizar la configuración de su inquilino.

1. Vaya a [Auth0 Dashboard > Applications](https://manage.auth0.com/#/applications).
2. Seleccione **Create Application**.
3. Seleccione **Machine to Machine Applications**.
4. En **Name**, introduzca un nombre descriptivo, por ejemplo: `GitHub ACUL Deployment`.
5. Seleccione **Create**.
6. En **Authorize Machine to Machine Application**, seleccione **Auth0 Management API**.
7. Seleccione estos permisos específicos:
   * `read:branding`
   * `update:branding`
   * `read:prompts`
   * `update:prompts`
   * `read:custom_domains`
8. Seleccione **Authorize**.
9. Vaya a la pestaña **Settings** y tome nota de lo siguiente:
   * `Domain`
   * `Client ID`
   * `Client Secret`

<div id="2-upload-and-serve-your-assets-with-amazon-web-services">
  ### 2. Cargue y publique sus recursos con Amazon Web Services
</div>

Para cargar y publicar sus recursos, necesita un bucket de AWS S3 y configurar CloudFront como CDN.

* **Cree un bucket de AWS S3**. Bloquee todo el acceso público para que este bucket sea privado. Este bucket privado almacena sus recursos.
* **Configure una distribución de CloudFront**. Este CDN publica sus recursos de forma segura. Debe configurarse para usar su bucket de S3 como `Origin` mediante Origin Access Control (OAC).

<div id="3-create-an-aws-iam-role-for-github-action">
  ### 3. Cree un rol de IAM de AWS para GitHub Action
</div>

Cree un **rol de IAM** en AWS para otorgar a GitHub Actions permisos para cargar archivos en AWS S3.

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  * Este rol de IAM debe usar Web Identity (OIDC) y confiar en `token.actions.githubusercontent.com`.
  * El rol necesita una política que otorgue los permisos `s3:PutObject`, `s3:DeleteObject` y `s3:ListBucket` en su bucket de S3.
</Callout>

<div id="4-configure-your-github-repository">
  ### 4. Configure el repositorio de GitHub
</div>

Para configurar el repositorio de GitHub:

1. Vaya a **GitHub > Settings**.
2. Seleccione **Secrets and Variables** y, a continuación, **Actions**.
3. Seleccione **New repository secret**.

Agregue los siguientes secretos del repositorio:

* `AWS_S3_ARN`: El ARN del rol de IAM que creó.
  * `S3_BUCKET_NAME`: El nombre de su bucket de S3.
  * `AWS_REGION`: La región en la que se encuentra su bucket de S3. Por ejemplo, `us-east-1`.
  * `S3_CDN_URL`: El nombre de dominio de su distribución de CloudFront. No agregue una barra diagonal al final. Por ejemplo, [https://d1234abcdef.cloudfront.net](https://d1234abcdef.cloudfront.net).
  * `AUTH0_DOMAIN`: El dominio de su inquilino de Auth0.
  * `AUTH0_CLIENT_ID`: El ID de cliente de su aplicación M2M.
  * `AUTH0_CLIENT_SECRET`: El Secreto del cliente de su aplicación M2M.

<div id="5-configure-your-deployment">
  ### 5. Configure su implementación
</div>

Puede controlar qué pantallas se despliegan editando los archivos de configuración ubicados en el directorio `.github/config/`:

* [`config/deploy_config.yml`](https://github.com/auth0-samples/auth0-acul-samples/blob/6cb4dcc43defd1a9cf586da9307d7d2348e696ae/react/.github/config/deploy_config.yml): Su panel de control principal. Configure una pantalla con `true` para desplegarla o con `false` para omitirla.
* [`config/screen-to-prompt-mapping.js`](https://github.com/auth0-samples/auth0-acul-samples/blob/6cb4dcc43defd1a9cf586da9307d7d2348e696ae/react/.github/config/screen-to-prompt-mapping.js): Asocia los nombres internos de directorio de sus pantallas con el nombre oficial del prompt de Auth0. Ejemplo: `mfa-sms-challenge` con el nombre oficial del prompt de Auth0 `mfa-sms`.
* [`config/context-configuration.js`](https://github.com/auth0-samples/auth0-acul-samples/blob/6cb4dcc43defd1a9cf586da9307d7d2348e696ae/react/.github/config/context-configuration.js): Define los datos de contexto de Auth0. Ejemplo: la configuración de marca debe estar disponible para sus pantallas personalizadas.
