<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Diego Mujica</title>
    <description>The latest articles on DEV Community by Diego Mujica (@acijum81).</description>
    <link>https://dev.to/acijum81</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F877895%2F13e32279-884d-46ca-b841-f2c9777ddf2d.jpg</url>
      <title>DEV Community: Diego Mujica</title>
      <link>https://dev.to/acijum81</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/acijum81"/>
    <language>en</language>
    <item>
      <title>Desmantelar Landing Zone en Control Tower</title>
      <dc:creator>Diego Mujica</dc:creator>
      <pubDate>Sun, 28 Jan 2024 23:52:03 +0000</pubDate>
      <link>https://dev.to/acijum81/desmantelar-landing-zone-en-control-tower-4b9d</link>
      <guid>https://dev.to/acijum81/desmantelar-landing-zone-en-control-tower-4b9d</guid>
      <description>&lt;ol&gt;
&lt;li&gt;- Requisitos&lt;/li&gt;
&lt;li&gt;- Desmantelar Landing Zone en Control Tower&lt;/li&gt;
&lt;li&gt;- Pasos&lt;/li&gt;
&lt;li&gt;- Troubleshooting:&lt;/li&gt;
&lt;li&gt;- Configuración tras el desmantelamiento de una Landing zone:&lt;/li&gt;
&lt;li&gt;- Antes de configurar una nueva Región de AWS.&lt;/li&gt;
&lt;li&gt;- Links importantes:&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Requisitos
&lt;/h2&gt;

&lt;p&gt;Para poder realizar el desmantelamiento de los servicios de Control Tower, Vamos a necesitar un usuario con permisos de AdministratorAccess  para acceder a todos los recursos que se encuentran en la cuenta management (Main).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Usuario de IAM con acceso programático.&lt;/li&gt;
&lt;li&gt;Política atachada de AdministratorAccess.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Desmantelar Landing Zone en Control Tower
&lt;/h2&gt;

&lt;p&gt;Si ya no desea utilizar AWS Control Tower o requiere migrar  a otra region SSO + CT, la herramienta de desmantelamiento automático limpia los recursos asignados por AWS Control Tower. Para iniciar el proceso de desmantelamiento automatizado, vaya a Configuración de Landing Zone página, seleccione la pestaña de retirada y elija Landing Zone de desmantelamiento.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pasos
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Navega hasta la &lt;strong&gt;Configuración de Landing zone&lt;/strong&gt; página en la consola de AWS Control Tower. &lt;/li&gt;
&lt;li&gt;Elija &lt;strong&gt;Decommission your landing zone&lt;/strong&gt;  en la sección &lt;strong&gt;Decommission your landing zone&lt;/strong&gt;. &lt;/li&gt;
&lt;li&gt;Aparece un cuadro de diálogo en el que se explica la acción que está a punto de realizar, con un proceso de confirmación requerido. Para confirmar su intención de retirada, debe seleccionar todas las casillas y escribir la confirmación según lo solicitado.
&lt;strong&gt;importante una vez iniciado, El proceso de retirada no se puede deshacer.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Si confirma su intención de desmantelar su zona de aterrizaje, se le redirigirá a la página de inicio de AWS Control Tower mientras se lleve a cabo el desmantelamiento. El proceso puede requerir hasta dos horas.&lt;/li&gt;
&lt;li&gt;Cuando se haya desmantelado correctamente, debe eliminar los recursos restantes manualmente antes de configurar una nueva zona de aterrizaje desde la consola de AWS Control Tower. Estos recursos restantes incluyen algunos grupos específicos de Amazon S3, organizaciones yCloudWatchRegistra grupos de registros. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;nota&lt;br&gt;
_Estas acciones pueden tener consecuencias importantes para sus actividades de facturación y cumplimiento. Por ejemplo, si no se eliminan estos recursos, se pueden generar cargos inesperados.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Para obtener más información acerca de cómo eliminar recursos manualmente, consulte Acerca de la eliminación de recursos de AWS Control Control Control._&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Si tiene la intención de configurar una nueva zona de aterrizaje en un nuevoAWSRegión, sigue este paso adicional. Introduzca el siguiente comando a través de la CLI:
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;`aws organizations disable-aws-service-access --service-principal controltower.amazonaws.com`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Troubleshooting:
&lt;/h2&gt;

&lt;p&gt;En el caso de presentar alguna inconsistencia, se deben ejecutar los siguentes comandos en la cli (reemplazar accout id y region con la que corresponda):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;aws configservice delete-aggregation-authorization --authorized-account-id  --authorized-aws-region 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Configuración tras el desmantelamiento de una Landing zone:
&lt;/h2&gt;

&lt;p&gt;Después de retirar la zona de inicio, no podrá ejecutar correctamente la configuración de nuevo hasta que haya finalizado la limpieza manual. Además, sin la limpieza manual de estos recursos restantes, puede incurrir en cargos de facturación inesperados. Debe atender estas cuestiones:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;La cuenta de administración de AWS Control Tower forma parte de AWS Control Tower OU raíz. Asegúrese de eliminar estas funciones y políticas de IAM de la cuenta de administración:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Roles:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AWSControlTowerAdmin&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AWSControlTowerCloudTrailRole&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AWSControlTowerStackSetRole&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Políticas:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AWSControlTowerAdminPolicy&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AWSControlTowerCloudTrailRolePolicy&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AWSControlTowerStackSetRolePolicy&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Puede que desee eliminar o actualizar la configuración existente de IAM Identity Center para AWS Control Tower antes de volver a subir una zona de aterrizaje, pero no es necesario que la elimine.&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Puede que desee eliminar la VPC creada por AWS Control Tower.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;La configuración falla si las direcciones de correo electrónico especificadas para las cuentas de registro o auditoría están asociadas a una cuenta existenteAWScuenta. Puede cerrar elAWScuentas o usa diferentes direcciones de correo electrónico para volver a configurar una zona de destino. Como alternativa, puede reutilizar estas cuentas compartidas existentes, con la función que le permite traer sus propias cuentas de registro y auditoría. Para obtener más información, consulte Consideraciones a la hora de incorporar las cuentas de registro o de seguridad existentes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;La configuración falla si ya existen buckets de Amazon S3 con los siguientes nombres reservados en la cuenta de registro:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;`aws-controltower-logs-{accountId}-{region} (utilizado para el bucket de registro).`

`aws-controltower-s3-access-logs-{accountId}-{region} (utilizado para el bucket de acceso de registro).`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Debe cambiar el nombre o quitar estos buckets o usar una cuenta diferente para la cuenta de registro.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;La configuración falla si la cuenta de administración tiene el grupo de registro existente,aws-controltower/CloudTrailLogs, enCloudWatchRegistros. Debe cambiar el nombre o quitar el grupo de registro.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Antes de configurar una nueva Región de AWS.
&lt;/h2&gt;

&lt;p&gt;Si tiene la intención de configurar una nueva zona de aterrizaje en un nuevo AWSRegión, sigue estos pasos adicionales.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flbnrtizo9wex8ov4d873.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flbnrtizo9wex8ov4d873.png" alt="Image description" width="800" height="509"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Introduzca el siguiente comando a través de la CLI:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
`aws organizations disable-aws-service-access --service-principal controltower.amazonaws.com`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Consideraciones
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Organizatios es un servicio Global&lt;/li&gt;
&lt;li&gt;Control Tower es un servicio regional&lt;/li&gt;
&lt;li&gt;AWS IAM Identity Center es un servicio regional&lt;/li&gt;
&lt;li&gt;No esta disponible en Sao Pablo&lt;/li&gt;
&lt;li&gt;Una vez que se despliega, las cuentas se crean SIEMPRE desde Control Tower.&lt;/li&gt;
&lt;li&gt;Si hay un SSO existente en otra region, se debe migrar a la region que se desea utilizar primero.&lt;/li&gt;
&lt;li&gt;al crear una landing zone de la accout factory o landing zone acelerator el alias del correo no debe superar los 64 caracteres.&lt;/li&gt;
&lt;li&gt;Permisson Set tiene un limite de 32 caracteres.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Pre requisitos
&lt;/h2&gt;

&lt;p&gt;1 - un ticket y pedir el siguiente incremento de limites:&lt;/p&gt;

&lt;p&gt;Service limit increase para un mínimo de 10 AWS accounts en AWS Organizations&lt;/p&gt;

&lt;p&gt;Service limit increase para un mínimo de 50 AWS CloudFormation StackSets&lt;/p&gt;

&lt;p&gt;2 - Solicitar 2 cuentas de correo, una para la Log Archive Account y otra para la Audit Account&lt;/p&gt;

</description>
    </item>
    <item>
      <title>DRP Windows Server with AWS DRS (Elastic Disaster Recovery)</title>
      <dc:creator>Diego Mujica</dc:creator>
      <pubDate>Wed, 19 Jul 2023 17:31:13 +0000</pubDate>
      <link>https://dev.to/acijum81/drp-windows-server-with-aws-drs-elastic-disaster-recovery-502c</link>
      <guid>https://dev.to/acijum81/drp-windows-server-with-aws-drs-elastic-disaster-recovery-502c</guid>
      <description>&lt;p&gt;&lt;strong&gt;Descripción&lt;/strong&gt;&lt;br&gt;
Este documento fue confeccionando con el fin de poder compartir el conocimiento adquirido mientras se ponía a prueba las capacidades de recuperación ante desastres de la herramienta AWS Elastic Disaster Recovery (DRS).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--G3pcqhqL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6bayk8hyytvi4vx7j1h4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--G3pcqhqL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6bayk8hyytvi4vx7j1h4.png" alt="Image description" width="800" height="325"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;¿Qué es Elastic Disaster Recovery?&lt;/strong&gt;&lt;br&gt;
Es una solución de AWS que minimiza el tiempo de inactividad y pérdida de datos con una recuperación rápida y confiable de las aplicaciones locales y basadas en la nube mediante almacenamiento asequible, computo mínimo y recuperación puntual.&lt;br&gt;
Puede aumentar la resiliencia de TI cuando utiliza AWS Elastic Disaster Recovery para replicar aplicaciones locales o basadas en la nube que se ejecutan en sistemas operativos compatibles. &lt;br&gt;
Use la Consola de administración de AWS para configurar los ajustes de replicación y lanzamiento, monitorear la replicación de datos y lanzar instancias para simulacros o recuperación.&lt;br&gt;
Configure AWS Elastic Disaster Recovery en sus servidores de origen para iniciar la replicación segura de datos. Sus datos se replican en una subred del área de preparación en su cuenta de AWS, en la región de AWS que seleccione. El diseño del área de preparación reduce los costos mediante el uso de almacenamiento asequible y recursos informáticos mínimos para mantener la replicación continua.&lt;br&gt;
Puede realizar pruebas no disruptivas para confirmar que la implementación está completa. Durante el funcionamiento normal, mantenga la preparación supervisando la replicación y ejecutando periódicamente simulacros de recuperación y conmutación por recuperación sin interrupciones. AWS Elastic Disaster Recovery convierte automáticamente sus servidores para que arranquen y se ejecuten de forma nativa en AWS cuando lanza instancias para simulacros o recuperación. Si necesita recuperar aplicaciones, puede lanzar instancias de recuperación en AWS en cuestión de minutos, utilizando el estado del servidor más actualizado o un momento anterior. Una vez que sus aplicaciones se ejecutan en AWS, puede optar por mantenerlas allí o puede iniciar la replicación de datos en su sitio principal cuando se resuelva el problema. Puede volver a su sitio principal cuando esté listo.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Instalación VM Onpremise&lt;/strong&gt;&lt;br&gt;
Para este demo empleamos una instancia creada en una máquina local con Hyper-v como hipervisor. (sistema operativo a usar es una versión de Trial de Windows Server 2019)&lt;br&gt;
Al comenzar la instalación, nos pide generar un usuario, para esto nos autenticamos con la cuenta &lt;strong&gt;&lt;a href="mailto:example.usuario@dominio.com"&gt;example.usuario@dominio.com&lt;/a&gt;&lt;/strong&gt; perteneciente a un dominio de Azure AD. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rxi4NM4a--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ote86xiymc3gkb5h0edv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rxi4NM4a--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ote86xiymc3gkb5h0edv.png" alt="Image description" width="800" height="653"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QuB2ujcx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zh1nzisc44u5m3fz2su5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QuB2ujcx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zh1nzisc44u5m3fz2su5.png" alt="Image description" width="800" height="655"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;IAM Policy&lt;/strong&gt;&lt;br&gt;
Mientras se realiza la instalación del sistema operativo y las actualizaciones de seguridad necesarias, nos dirigimos a la consola de AWS para agregar la política necesaria (AWSElasticDisasterRecoveryAgentInstallationPolicy) la cual nos permitirá instalar el agente y comenzar la replicación con la herramienta AWS DRS.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PbuIgc8I--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ohilmen3y0uaz4k65lbf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PbuIgc8I--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ohilmen3y0uaz4k65lbf.png" alt="Image description" width="800" height="48"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Instalación del Agente DRS&lt;/strong&gt;&lt;br&gt;
Una vez terminadas las actualizaciones de seguridad de nuestra VM procedemos a descargar el agente; en este caso utilizaremos: &lt;a href="https://aws-elastic-disaster-recovery-us-east-1.s3.amazonaws.com/latest/windows/AwsReplicationWindowsInstaller.exe"&gt;https://aws-elastic-disaster-recovery-us-east-1.s3.amazonaws.com/latest/windows/AwsReplicationWindowsInstaller.exe&lt;/a&gt;&lt;br&gt;
Al seguir los pasos que indica la documentación, nos pedirá especificar la región donde utilizaremos AWS RDS, nuestra Access key y securty Access key de nuestro usuario que ya cuenta con la política necesaria para este fin.&lt;/p&gt;

&lt;p&gt;Ejecutamos la sincronización con DRS, esta puede variar según los recursos que tenga VM, espacio usado en storage y ancho de banda del origen.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--F0EQPr_y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/abn2ypavua08qnj280bx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--F0EQPr_y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/abn2ypavua08qnj280bx.png" alt="Image description" width="800" height="225"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZvKfCxZR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k3skz47kpbtoesfswx38.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZvKfCxZR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k3skz47kpbtoesfswx38.png" alt="Image description" width="800" height="262"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Proceso de Recuperación&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Una vez terminada la replicación ejecutamos una prueba de recuperación.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_f9Co9qp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ptmqgmnvnrr2xkcqamp0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_f9Co9qp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ptmqgmnvnrr2xkcqamp0.png" alt="Image description" width="800" height="155"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gOrG52qE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tsin2zbruo9vmb6x9b02.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gOrG52qE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tsin2zbruo9vmb6x9b02.png" alt="Image description" width="800" height="324"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Una vez terminada la replicación:&lt;/strong&gt;&lt;br&gt;
Nos dirigimos al panel de administración de EC2 y agregamos una Elastic IP para poder acceder. Posterior a esto agregamos la creamos las reglas nescesarias en el Security Group, luego de esto podemos establecer la conexión por medio del cliente RDP (para producción se recomienda usar AWS System Mangeger Fleet manager), pero al momento de autenticarnos con el usuario y contraseña de AZURE AD nos indica que no son correctos y no permite acceder a la instancia.&lt;br&gt;
Lo extraño es que las credenciales funcionan en la VM sin problemas.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Troubleshooting&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Borramos todo lo relacionado a la instancia en el panel de administración de AWS DRS, una vez realizado esto nos dirigimos la VM Onpremise y habilitamos el usuario Administrador local que viene desactivado por defecto en Windows, abrimos un terminal de PowerShell como administrador utilizamos los siguientes comandos: &lt;strong&gt;Net user administrador /active:yes&lt;/strong&gt; y luego el siguiente comando: &lt;strong&gt;control userpasswords2&lt;/strong&gt; para reestablecer la contraseña, reiniciamos el VM y procedemos a iniciarla con el usuario creado.&lt;br&gt;
Ejecutamos nuevamente la instalación del agente para comenzar la replicación y ejecutamos los mismos pasos mencionados anteriormente.&lt;/p&gt;

&lt;p&gt;Esta vez con el usuario Administrador podemos arrancar la instancia EC2 sin problemas en AWS.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5TWTuGEp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sp5nkbf04koeku5q5tw3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5TWTuGEp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sp5nkbf04koeku5q5tw3.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>AWS Organizatios Service control policies (SCPs)</title>
      <dc:creator>Diego Mujica</dc:creator>
      <pubDate>Tue, 04 Jul 2023 02:09:09 +0000</pubDate>
      <link>https://dev.to/acijum81/aws-organizatios-service-control-policies-scps-4d98</link>
      <guid>https://dev.to/acijum81/aws-organizatios-service-control-policies-scps-4d98</guid>
      <description>&lt;p&gt;¿Qué son las SCPs? Las políticas de control de servicios (SCP) son un tipo de política de organización que puede utilizar para administrar permisos en su organización. Las políticas de control de servicios (SCP) ofrecen un control central sobre los máximos permisos disponibles para todas las cuentas de su organización. Las políticas de control de servicios le ayudan a garantizar que sus cuentas se mantengan dentro de las directrices de control de acceso de su organización. Las SCP solo están disponibles en las organizaciones que tienen todas las características habilitadas. Las SCP no están disponibles si su organización ha habilitado únicamente las características de facturación unificada. Para obtener instrucciones sobre cómo habilitar SCP, consulte Habilitar y deshabilitar tipos de política.&lt;/p&gt;

&lt;p&gt;Las SCP por sí solas no son suficientes para conceder permisos a las cuentas de la organización. Una SCP no concede permisos. Una SCP define una barandilla, o establece límites, en las acciones que el administrador de la cuenta puede delegar a los usuarios de IAM y roles en las cuentas afectadas. El administrador aún debe adjuntar Políticas basadas en identidad o políticas basadas en recursos a los usuarios o roles de IAM, o a los recursos de sus cuentas para conceder permisos realmente. Los permisos efectivos son la intersección lógica entre lo que permite la SCP y lo que permite la IAM y las políticas basadas en recursos.&lt;/p&gt;

&lt;p&gt;Ejemplos de SCP&lt;/p&gt;

&lt;p&gt;SCP Para denegar Classic ELB&lt;br&gt;
&lt;strong&gt;Archivo Deny-classic-ELB.json:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DenyAllClassicELB",
      "Effect": "Deny",
      "Action": [
        "elasticloadbalancing:ConfigureHealthCheck",
        "elasticloadbalancing:SetLoadBalancerPoliciesOfListener",
        "elasticloadbalancing:CreateLoadBalancerPolicy"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;SCP para crear instancia EC2 con Keypair&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Archivo ec2-without-keypair.json:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "CustomGuardrails",
            "Effect": "Deny",
            "Action": [
                "ec2:CreateKeyPair"
            ],
            "Resource": [
                "*"
            ],
            "Condition": {
                "ArnNotLike": {
                    "aws:PrincipalARN": [
                        "arn:aws:iam::*:role/AWSControlTowerExecution",
                        "arn:aws:iam::*:role/AWSAFTExecution"
                    ]
                }
            }
        },
        {
            "Sid": "GRNewInstanceWithKeyPair",
            "Effect": "Deny",
            "Action": [
                "ec2:RunInstances"
            ],
            "Resource": "*",
            "Condition": {
                "Null": {
                    "ec2:KeyPairName": "false"
                }
            }
        }
    ]
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
    <item>
      <title>Amazon Connect with Terraform deploy.</title>
      <dc:creator>Diego Mujica</dc:creator>
      <pubDate>Mon, 03 Jul 2023 20:48:14 +0000</pubDate>
      <link>https://dev.to/acijum81/amazon-connect-with-terraform-deploy-4kbf</link>
      <guid>https://dev.to/acijum81/amazon-connect-with-terraform-deploy-4kbf</guid>
      <description>&lt;h1&gt;
  
  
  Amazon Connect
&lt;/h1&gt;

&lt;p&gt;¿Qué es Amazon Connect?&lt;/p&gt;

&lt;p&gt;Amazon Connect es un centro de contacto en la nube de pago por uso. No hay tarifas mínimas obligatorias, compromisos a largo plazo o cargos de licencias iniciales, y los precios no se basan en la capacidad máxima, los puestos de agente ni el mantenimiento; solo paga po lo que usa. Amazon Connect ofrece capacidad para su centro de contacto y espacio de trabajo de los agentes, entre los que la previsión, planificación de capacidad, programación y campañas salientes, así como la voz, conversación, tareas, Perfiles de clientes, Contact Lens, ID de voz, Wisdom, casos y guías.&lt;/p&gt;

&lt;h2&gt;
  
  
  Nivel gratuito de AWS
&lt;/h2&gt;

&lt;p&gt;Como parte del nivel gratuito de AWS, puede comenzar a utilizar Amazon Connect de manera gratuita.&lt;/p&gt;

&lt;p&gt;Durante los primeros 12 meses de la implementación inicial del centro de contacto en la nube de Amazon Connect en cualquier región, recibirá:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;90 minutos al mes de uso del servicio Amazon Connect&lt;/li&gt;
&lt;li&gt;Un número de marcación interna directa (DID) del país en el que se encuentra la región de AWS&lt;/li&gt;
&lt;li&gt;30 minutos al mes de llamadas DID entrantes&lt;/li&gt;
&lt;li&gt;30 minutos al mes de llamadas salientes realizadas a números en el país en el que se encuentra la región de AWS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Para las regiones de EE. UU., también recibe:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Un número gratuito de EE. UU.&lt;/li&gt;
&lt;li&gt;30 minutos al mes de llamadas entrantes gratuitas realizadas desde EE. UU.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Por ejemplo, si crea su instancia en la región Asia-Pacífico (Sídney), obtiene un número DID de Australia, recibe 30 minutos de llamadas DID entrantes a ese número y puede usar Amazon Connect para hacer 30 minutos de llamadas salientes a números de Australia.&lt;/p&gt;

&lt;p&gt;Otras capacidades de Amazon Connect que también forman parte del nivel gratuito durante su primer año incluyen:&lt;/p&gt;

&lt;p&gt;500 mensajes al mes del chat de Amazon Connect&lt;br&gt;
100 tareas al mes con Amazon Connect&lt;br&gt;
1000 perfiles de cliente al mes con Perfiles de clientes de Amazon Connect&lt;br&gt;
90 minutos al mes para llamadas de audio con Amazon Connect Contact Lens&lt;br&gt;
500 mensajes al mes para mensajes de chat con Amazon Connect Contact Lens&lt;br&gt;
180 transacciones por mes con Amazon Connect Voice ID, repartidas de manera equitativa entre inscripciones, autenticación y detección de fraude&lt;br&gt;
90 días de uso gratuito de previsión, planificación de capacidad y programación de Amazon Connect al activar la característica por primera vez&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--61vSuX8k--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/aq9qvwky9k42ydxi2r94.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--61vSuX8k--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/aq9qvwky9k42ydxi2r94.png" alt="Image description" width="800" height="336"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Despliegue de instancia de Connect con 3 Contact Flow
&lt;/h2&gt;

&lt;p&gt;Este repositorio contiene los archivos necesarios para desplegar una instancia de Connect en AWS, junto con 3 flujos de contacto (Contact Flow), una tabla DynamoDB y una función Lambda.&lt;/p&gt;
&lt;h2&gt;
  
  
  Recursos desplegados en este manifiesto:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Instancia de Connect&lt;/li&gt;
&lt;li&gt;3 Contact Flow&lt;/li&gt;
&lt;li&gt;Tabla DynamoDB&lt;/li&gt;
&lt;li&gt;Función Lambda&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Solución - Diagrama:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Hu9zI2iU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zozs21hv2vlzodmqruxy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Hu9zI2iU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zozs21hv2vlzodmqruxy.png" alt="Image description" width="800" height="409"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Probado con:
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Ambiente&lt;/th&gt;
&lt;th&gt;Aplicación&lt;/th&gt;
&lt;th&gt;Versión&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;WSL2 Ubuntu 20.04&lt;/td&gt;
&lt;td&gt;Terraform&lt;/td&gt;
&lt;td&gt;v1.4.6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;WSL2 Ubuntu 20.04&lt;/td&gt;
&lt;td&gt;aws-cli&lt;/td&gt;
&lt;td&gt;v2.7.9&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;h2&gt;
  
  
  Procedimiento de implementación:
&lt;/h2&gt;

&lt;p&gt;Antes de desplegar los recursos, asegúrate de tener los siguientes archivos en el directorio:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;main.tf&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;provider.tf&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;default.auto.tfvars&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;variable.tf&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A continuación, proporciona la siguiente información en cada archivo:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Archivo &lt;code&gt;main.tf&lt;/code&gt;:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight hcl"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Create Instace Connect&lt;/span&gt;
&lt;span class="nx"&gt;module&lt;/span&gt; &lt;span class="s2"&gt;"lambda"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;source&lt;/span&gt;      &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"./module/lambda"&lt;/span&gt;
  &lt;span class="nx"&gt;table_name&lt;/span&gt;  &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;var&lt;/span&gt;&lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;table_name&lt;/span&gt;
  &lt;span class="nx"&gt;name_prefix&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;var&lt;/span&gt;&lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name_prefix&lt;/span&gt;
  &lt;span class="nx"&gt;lambda_name&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;var&lt;/span&gt;&lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;lambda_name&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;module&lt;/span&gt; &lt;span class="s2"&gt;"connect"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;source&lt;/span&gt;                   &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"./module/connect"&lt;/span&gt;
  &lt;span class="nx"&gt;aws_profile&lt;/span&gt;              &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;var&lt;/span&gt;&lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;aws_profile&lt;/span&gt;
  &lt;span class="nx"&gt;aws_region&lt;/span&gt;               &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;var&lt;/span&gt;&lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;aws_region&lt;/span&gt;
  &lt;span class="nx"&gt;identity_management_type&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;var&lt;/span&gt;&lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;identity_management_type&lt;/span&gt;
  &lt;span class="nx"&gt;instance_alias&lt;/span&gt;           &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;var&lt;/span&gt;&lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;instance_alias&lt;/span&gt;
  &lt;span class="nx"&gt;name_user&lt;/span&gt;                &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;var&lt;/span&gt;&lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name_user&lt;/span&gt;
  &lt;span class="nx"&gt;password_user&lt;/span&gt;            &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;var&lt;/span&gt;&lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;password_user&lt;/span&gt;
  &lt;span class="nx"&gt;first_name&lt;/span&gt;               &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;var&lt;/span&gt;&lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;first_name&lt;/span&gt;
  &lt;span class="nx"&gt;last_name&lt;/span&gt;                &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;var&lt;/span&gt;&lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;last_name&lt;/span&gt;
  &lt;span class="nx"&gt;country_code&lt;/span&gt;             &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;var&lt;/span&gt;&lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;country_code&lt;/span&gt;
  &lt;span class="nx"&gt;name_prefix&lt;/span&gt;              &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;var&lt;/span&gt;&lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name_prefix&lt;/span&gt;
  &lt;span class="nx"&gt;phone_type&lt;/span&gt;               &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;var&lt;/span&gt;&lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;phone_type&lt;/span&gt;
  &lt;span class="nx"&gt;type_contactflow&lt;/span&gt;         &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;var&lt;/span&gt;&lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;type_contactflow&lt;/span&gt;
  &lt;span class="nx"&gt;lambda_arn&lt;/span&gt;               &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;lambda&lt;/span&gt;&lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;lambda_arn&lt;/span&gt;
  &lt;span class="nx"&gt;lambda_name&lt;/span&gt;              &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;var&lt;/span&gt;&lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;lambda_name&lt;/span&gt;

  &lt;span class="nx"&gt;depends_on&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;lambda&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Archivo&lt;code&gt;provider.tf&lt;/code&gt;:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# AWS provider version definition&lt;/span&gt;
terraform &lt;span class="o"&gt;{&lt;/span&gt;
  required_providers &lt;span class="o"&gt;{&lt;/span&gt;
    aws &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
      &lt;span class="nb"&gt;source&lt;/span&gt;  &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"hashicorp/aws"&lt;/span&gt;
      version &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"~&amp;gt; 4.0"&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
  &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="c"&gt;#Provider for the network account&lt;/span&gt;
provider &lt;span class="s2"&gt;"aws"&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
  region  &lt;span class="o"&gt;=&lt;/span&gt; var.aws_region
  profile &lt;span class="o"&gt;=&lt;/span&gt; var.aws_profile
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Archivo &lt;code&gt;default.auto.tfvars&lt;/code&gt;:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#Variable Generales&lt;/span&gt;
aws_profile              &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"connect"&lt;/span&gt;
aws_region               &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"us-east-1"&lt;/span&gt;
name_prefix              &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"First-Release"&lt;/span&gt;
project-tags &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
  DeployBy   &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"example"&lt;/span&gt;,
  Enviroment &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"Dev"&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="c"&gt;#Variable Connect&lt;/span&gt;
instance_alias           &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"example-demo-connect-terraform"&lt;/span&gt;
name_user                &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"connect"&lt;/span&gt;
password_user            &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"Password123"&lt;/span&gt;
first_name               &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"FirstName"&lt;/span&gt;
last_name                &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"LastName"&lt;/span&gt;
country_code             &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"AR"&lt;/span&gt; &lt;span class="c"&gt;## https://countrycode.org/&lt;/span&gt;
phone_type               &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"SOFT_PHONE"&lt;/span&gt;      &lt;span class="c"&gt;## otras opciones (DESK_PHONE)&lt;/span&gt;
identity_management_type &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"CONNECT_MANAGED"&lt;/span&gt; &lt;span class="c"&gt;## Otra opciones (SAML, EXISTING_DIRECTORY)&lt;/span&gt;
type_contactflow         &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"CONTACT_FLOW"&lt;/span&gt;    &lt;span class="c"&gt;## Otras opciones (CUSTOMER_QUEUE, CUSTOMER_HOLD, CUSTOMER_WHISPER, AGENT_HOLD, AGENT_WHISPER, OUTBOUND_WHISPER, AGENT_TRANSFER, QUEUE_TRANSFER )&lt;/span&gt;

&lt;span class="c"&gt;#Variable Dynamo y lambda&lt;/span&gt;
table_name               &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"pedidos_y_facturas"&lt;/span&gt;
lambda_name              &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"Lambda-valicacion-flow"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Archivo &lt;code&gt;variable.tf&lt;/code&gt;:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;variable &lt;span class="s2"&gt;"aws_profile"&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
  description &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"[REQUERIDO] Profile utilizado para realizar el despliegue."&lt;/span&gt;
  &lt;span class="nb"&gt;type&lt;/span&gt;        &lt;span class="o"&gt;=&lt;/span&gt; string
&lt;span class="o"&gt;}&lt;/span&gt;

variable &lt;span class="s2"&gt;"aws_region"&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
  description &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"[REQUERIDO] El AWS Region para implementar los recursos."&lt;/span&gt;
  &lt;span class="nb"&gt;type&lt;/span&gt;        &lt;span class="o"&gt;=&lt;/span&gt; string
&lt;span class="o"&gt;}&lt;/span&gt;

variable &lt;span class="s2"&gt;"identity_management_type"&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
  description &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"[REQUERIDO] Tipo de gestión de identidad adjunto a la instancia."&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

variable &lt;span class="s2"&gt;"instance_alias"&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
  description &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"[REQUERIDO] Alias de la instancia de Connect."&lt;/span&gt;
  &lt;span class="nb"&gt;type&lt;/span&gt;        &lt;span class="o"&gt;=&lt;/span&gt; string
&lt;span class="o"&gt;}&lt;/span&gt;

variable &lt;span class="s2"&gt;"name_user"&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
  description &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"[REQUERIDO] Nombre para la creación de usuario."&lt;/span&gt;
  &lt;span class="nb"&gt;type&lt;/span&gt;        &lt;span class="o"&gt;=&lt;/span&gt; string
&lt;span class="o"&gt;}&lt;/span&gt;

variable &lt;span class="s2"&gt;"password_user"&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
  description &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"[REQUERIDO] Contraseña para la creación de usuario."&lt;/span&gt;
  &lt;span class="nb"&gt;type&lt;/span&gt;        &lt;span class="o"&gt;=&lt;/span&gt; string
&lt;span class="o"&gt;}&lt;/span&gt;

variable &lt;span class="s2"&gt;"first_name"&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
  description &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"[REQUERIDO] Nombre del usuario."&lt;/span&gt;
  &lt;span class="nb"&gt;type&lt;/span&gt;        &lt;span class="o"&gt;=&lt;/span&gt; string
&lt;span class="o"&gt;}&lt;/span&gt;

variable &lt;span class="s2"&gt;"last_name"&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
  description &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"[REQUERIDO] Apellido del usuario."&lt;/span&gt;
  &lt;span class="nb"&gt;type&lt;/span&gt;        &lt;span class="o"&gt;=&lt;/span&gt; string
&lt;span class="o"&gt;}&lt;/span&gt;

variable &lt;span class="s2"&gt;"country_code"&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
  description &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"[REQUERIDO] Código telefónico del país."&lt;/span&gt;
  &lt;span class="nb"&gt;type&lt;/span&gt;        &lt;span class="o"&gt;=&lt;/span&gt; string
&lt;span class="o"&gt;}&lt;/span&gt;

variable &lt;span class="s2"&gt;"name_prefix"&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
  description &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"[REQUERIDO] Prefijo del nombre."&lt;/span&gt;
  &lt;span class="nb"&gt;type&lt;/span&gt;        &lt;span class="o"&gt;=&lt;/span&gt; string
&lt;span class="o"&gt;}&lt;/span&gt;

variable &lt;span class="s2"&gt;"phone_type"&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
  description &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"[REQUERIDO] Tipo de número de teléfono."&lt;/span&gt;
  &lt;span class="nb"&gt;type&lt;/span&gt;        &lt;span class="o"&gt;=&lt;/span&gt; string
&lt;span class="o"&gt;}&lt;/span&gt;

variable &lt;span class="s2"&gt;"type_contactflow"&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
  description &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"[REQUERIDO] Tipo de flujo de contacto."&lt;/span&gt;
  &lt;span class="nb"&gt;type&lt;/span&gt;        &lt;span class="o"&gt;=&lt;/span&gt; string
&lt;span class="o"&gt;}&lt;/span&gt;

variable &lt;span class="s2"&gt;"table_name"&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
  description &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"[REQUERIDO] Nombre de la tabla de DynamoDB."&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

variable &lt;span class="s2"&gt;"lambda_name"&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
  description &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"[REQUERIDO] Nombre de la función Lambda."&lt;/span&gt;
  &lt;span class="nb"&gt;type&lt;/span&gt;        &lt;span class="o"&gt;=&lt;/span&gt; string
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="c"&gt;# Variables de Etiquetas #&lt;/span&gt;
variable &lt;span class="s2"&gt;"project-tags"&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
  &lt;span class="nb"&gt;type&lt;/span&gt;    &lt;span class="o"&gt;=&lt;/span&gt; map&lt;span class="o"&gt;(&lt;/span&gt;string&lt;span class="o"&gt;)&lt;/span&gt;
  default &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;{}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ubicado en el directorio donde se crearon los archivos antes mencionados, iniciamos nuestro proyecto y desplegamos el manifiesto de la siguiente forma:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;terraform init     &lt;span class="o"&gt;=&lt;/span&gt; Inicializamos terraform
terraform &lt;span class="nb"&gt;fmt&lt;/span&gt;      &lt;span class="o"&gt;=&lt;/span&gt; Para darle formato a los archivos
terraform validate &lt;span class="o"&gt;=&lt;/span&gt; Validamos que no tengamos alguna inconsistencia en los recursos
terraform plan     &lt;span class="o"&gt;=&lt;/span&gt; Realizamos un plan para verificar los recursos a desplegar
terraform apply    &lt;span class="o"&gt;=&lt;/span&gt; Realizamos ya el despliegue de los recursos
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  authors:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;👩‍💻  Hermes Vargas&lt;/li&gt;
&lt;li&gt;👩‍💻  Diego Mujica&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
  </channel>
</rss>
