<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Tutoriales &#8211; Cloud IO Strategy</title>
	<atom:link href="https://cloudiostrategy.com/category/tutoriales/feed/" rel="self" type="application/rss+xml" />
	<link>https://cloudiostrategy.com</link>
	<description></description>
	<lastBuildDate>Fri, 02 Aug 2024 16:07:06 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://cloudiostrategy.com/wp-content/uploads/2023/06/cropped-favicon-32x32.png</url>
	<title>Tutoriales &#8211; Cloud IO Strategy</title>
	<link>https://cloudiostrategy.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Despliegue de una Aplicación Java con Spring Boot y Docker en Elastic Beanstalk</title>
		<link>https://cloudiostrategy.com/despliegue-de-una-aplicacion-java-con-spring-boot-y-docker-en-elastic-beanstalk/</link>
					<comments>https://cloudiostrategy.com/despliegue-de-una-aplicacion-java-con-spring-boot-y-docker-en-elastic-beanstalk/#respond</comments>
		
		<dc:creator><![CDATA[Fernando Paz]]></dc:creator>
		<pubDate>Thu, 01 Aug 2024 21:41:02 +0000</pubDate>
				<category><![CDATA[Artículos]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[AWS Elastic Beanstalk]]></category>
		<category><![CDATA[Contenedores]]></category>
		<category><![CDATA[Docker]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Spring Boot]]></category>
		<guid isPermaLink="false">https://cloudiostrategy.com/?p=3280</guid>

					<description><![CDATA[En este tutorial vamos a ver el despliegue de una Aplicación Java con Spring Boot y Docker en Elastic Beanstalk de AWS, paso a paso y estudiando los temas principales […]]]></description>
										<content:encoded><![CDATA[
<p>En este tutorial vamos a ver el despliegue de una Aplicación Java con Spring Boot y Docker en Elastic Beanstalk de AWS, paso a paso y estudiando los temas principales de este servicio.</p>



<h2 class="wp-block-heading has-black-color has-text-color has-link-color wp-elements-0f0542c934550aea46e386dd01df8722">¿Qué es Elastic Beanstalk?</h2>



<p>Elastic Beanstalk es un servicio de AWS que simplifica el despliegue de aplicaciones en la nube. ¿Cómo lo hace? Este servicio tiene más de 100 servicios asociados y es compatible con aplicaciones desarrolladas en los lenguajes Go, Java, .NET, Node.js, PHP, Python y Ruby, y los orquesta creando una infraestructura basada en el código desplegado de la aplicación y archivos de configuración adicionados en el despliegue.</p>



<p>El desarrollador no tiene que aprovisionar nada.. o casi nada manualmente.</p>



<h2 class="wp-block-heading has-black-color has-text-color has-link-color wp-elements-56d65a66c4ef39f428b38e4a10c0bd6d">¿Porqué este tutorial?</h2>



<p>Actualmente, existen muchos ejemplos de cómo desplegar aplicaciones en Elastic Beanstalk, y los puedes encontrar <a href="https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/tutorials.html" rel="nofollow noopener" target="_blank">aquí</a>. Sin embargo, ninguno de ellos aborda específicamente el despliegue de una aplicación Java con Spring Boot y Docker en Elastic Beanstalk. Este artículo asume que tienes conocimientos básicos de este servicio, por lo que si aún no estás familiarizado con el mismo, revisa <a href="https://docs.aws.amazon.com/es_es/elasticbeanstalk/latest/dg/Welcome.html" rel="nofollow noopener" target="_blank">aquí</a>.</p>



<h2 class="wp-block-heading has-black-color has-text-color has-link-color wp-elements-d94aa0534dd43a5a5312895e4b4ab341">Contenido</h2>



<p>En este tutorial, vamos a ver cómo desplegar una aplicación de ejemplo desarrollada con Java, utilizando el framework Spring Boot y diseñada para ser desplegada como contenedor Docker. </p>



<p>Además, realizaremos el proceso manualmente (por línea de comandos) y no a través de la consola web de AWS, ya que interactuar con la consola web cada vez que queremos hacer cambios en una aplicación y subirla a la nube, no es automatizable y puede ser largo y complejo.</p>



<p>Por lo tanto, los pasos a seguir son:</p>



<ol class="wp-block-list">
<li>Descargar la aplicación y probarla localmente.</li>



<li>Instalar y configurar el cliente Elastic Beanstalk CLI.</li>



<li>Desplegar una primera versión en desarrollo (dev).</li>



<li>Desplegar una versión en QA (próximamente).</li>
</ol>



<h3 class="wp-block-heading has-black-color has-text-color has-link-color wp-elements-ffa1d60609aa3c83d13fa5eca73cd5ae">Descargar la aplicación y probarla localmente</h3>



<p>La aplicación de ejemplo es un simple CRUD, que puedes descargar <a href="https://github.com/pazfernando/crud-spring-boot-example" rel="nofollow noopener" target="_blank">aquí</a> con el comando:</p>



<pre class="wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-353bd963de96f8af2187cff817f5282a"><code>git clone https://github.com/pazfernando/crud-spring-boot-example.git</code></pre>



<p>Ve a la carpeta donde se descargó y compílala con (requieres tener instalado Java 17+):</p>



<pre class="wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-ad79f40a87cddd1efc1bbba320eb14cd"><code>cd crud-spring-boot-example
./mvnw clean install</code></pre>



<p>Ejecuta la aplicación con:</p>



<pre class="wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-a93961128fa231458b89989426196a8a"><code>java -jar target/crud-0.0.1-SNAPSHOT.war</code></pre>



<p>Prueba la aplicación en tu navegador con: </p>



<p><a href="http://localhost:8080/" rel="nofollow noopener" target="_blank">http://localhost:8080/</a></p>



<h3 class="wp-block-heading has-black-color has-text-color has-link-color wp-elements-e37d6d9947b20bd54fafd16ebbe966fb">Instalar y configurar el cliente Elastic Beanstalk CLI</h3>



<p><strong>IMPORTANTE:</strong> El procedimiento a continuación es para ambiente Linux, ya que tiene mejor soporte para herramientas y frameworks de desarrollo en general. Si no tienes Linux o Mac, instala WSL en Windows. Mira las instrucciones <a href="https://learn.microsoft.com/es-mx/windows/wsl/install" rel="nofollow noopener" target="_blank">aquí</a>. Por defecto tendrás un Ubuntu instalado en Windows y podrás usarlo ejecutando en PowerShell lo siguiente:</p>



<pre class="wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-6b320e48590f1b78928a7d7b9554446e"><code>wsl</code></pre>



<p>Listo, asumimos desde aquí que tienes Linux, Mac o WSL en Windows.</p>



<h4 class="wp-block-heading has-black-color has-text-color has-link-color wp-elements-53d696e7e44e8b361e0a0516a219d238">Instalación de pyenv</h4>



<p>Empezamos instalando un manejador de versiones de Python llamado pyenv. Encuentra cómo <a href="https://github.com/pyenv/pyenv#basic-github-checkout" rel="nofollow noopener" target="_blank">aquí</a>.</p>



<h5 class="wp-block-heading has-black-color has-text-color has-link-color wp-elements-090330abbf7897197fb9f1d6cbc62abd">Post instalación de pyenv</h5>



<p>Añade o verifica estas líneas en .bashrc de $HOME:</p>



<pre class="wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-42f00763f2ea9271df904cf4cc0b0b62"><code>export PYENV_ROOT="$HOME/.pyenv"
&#091;&#091; -d $PYENV_ROOT/bin ]] &amp;&amp; export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"</code></pre>



<p>Actualiza tu .bashrc con:</p>



<pre class="wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-ba2a4e69ad9708425f853d7191805498"><code>source ~/.bashrc</code></pre>



<h4 class="wp-block-heading has-black-color has-text-color has-link-color wp-elements-5d50a13f5f2afa2d41ad1490adae17be">Instala la última versión estable de Python</h4>



<p>Encuentra la documentación de versiones estables en <a href="https://devguide.python.org/versions/" rel="nofollow noopener" target="_blank">https://devguide.python.org/versions/</a>. La instalación es con el comando:</p>



<pre class="wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-3cf0fa226a6542dc0853fc0774bbb543"><code>pyenv install 3.11</code></pre>



<p><strong>IMPORTANTE:</strong> A la fecha de creación de este artículo, puedes usar Python 3.11 máximo.</p>



<p>Configura esta versión como la de defecto en tu ambiente:</p>



<pre class="wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-a5a25d87cf9490cf7ebc3aa4e3f21047"><code>pyenv global 3.11</code></pre>



<h4 class="wp-block-heading has-black-color has-text-color has-link-color wp-elements-8441201c381c559f507acaff115d6b64">Instala virtualenv para aislar tu ambiente de Python</h4>



<p>Encuentra cómo hacerlo <a href="https://virtualenv.pypa.io/en/latest/installation.html#via-pip" rel="nofollow noopener" target="_blank">aquí</a>.</p>



<h4 class="wp-block-heading has-black-color has-text-color has-link-color wp-elements-61c50b8b91a672872e5fce27a235f68e">Instala Elastic Beanstalk CLI</h4>



<p>Encuentra cómo hacerlo <a href="https://github.com/aws/aws-elastic-beanstalk-cli-setup" rel="nofollow noopener" target="_blank">aquí</a>.</p>



<p>Actualiza tu <code>.bash_profile</code> para incluir los ejecutables de Elastic Beanstalk CLI en tu PATH:</p>



<pre class="wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-aedd48dc5e16de73b389832b7b4d94b0"><code>echo 'export PATH="/home/pazfernando/.ebcli-virtual-env/executables:$PATH"' &gt;&gt; ~/.bash_profile</code></pre>



<p>Refresca tus archivos de ambiente en tu <code>$HOME</code>:</p>



<pre class="wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-5d6b232e7f70fec71c70ebb19b60da44"><code>source ~/.bash_profile
source ~/.profile</code></pre>



<h3 class="wp-block-heading has-black-color has-text-color has-link-color wp-elements-6efb651eab5873eab9d401687ba782d3">Desplegar una primera versión en desarrollo (dev)</h3>



<p>Ve a la carpeta del proyecto (donde se descargó).</p>



<p>Configura el Elastic Beanstalk CLI, mira cómo hacerlo <a href="https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb-cli3-configuration.html" rel="nofollow noopener" target="_blank">aquí</a>.</p>



<h4 class="wp-block-heading has-black-color has-text-color has-link-color wp-elements-e8418abcb52c17b65c6148f03dd995e4">Aspectos importantes previos</h4>



<p>Antes de desplegar la aplicación, hay ciertos puntos esenciales a entender acerca de Elastic Beanstalk, ya que este conocimiento nos dará el entendimiento de por qué se despliega una aplicación de una forma u otra.</p>



<p><strong>Ignorando archivos con .ebignore</strong></p>



<p>Cuando desplegamos aplicaciones con Elastic Beanstalk CLI, debemos saber qué archivos son ejecutables, cuáles son de configuración, cuáles son de apoyo, etc. Esto se debe a que CLI empaqueta dichos archivos en un archivo <code>.zip</code> para luego extraerlo y desplegarlo en la instancia o instancias de la infraestructura que sirve la aplicación.</p>



<p>Por defecto, Elastic Beanstalk CLI busca el archivo <code>.gitignore</code> para saber, desde la carpeta donde se están ejecutando los comandos, qué archivos debe excluir de este archivo <code>.zip</code>. Pero como sabemos, para los proyectos Java, el archivo <code>.gitignore</code> excluye el directorio <code>target/</code>, el cual es esencial pues tiene el artefacto compilado del proyecto, y en su lugar empaqueta <code>src/</code> y otros archivos que son fuentes de la aplicación, y que en este caso no aplican.</p>



<p>Esta estrategia funciona muy bien en proyectos tipo Python o PHP donde no hay compilados, pero no en el caso de Java. Aquí aparece otro archivo, <code><strong>.ebignore</strong></code>, que es otro recurso que busca por defecto Elastic Beanstalk CLI ante la ausencia de un archivo <code>.gitignore</code> o incluso lo precede si existiera. Por esta razón, el archivo <code>.ebignore</code> en este tipo de proyectos es tan importante, y por eso nosotros tenemos en los fuentes este contenido:</p>



<pre class="wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-5dc9257befada7b79cb42ca738f8e645"><code>HELP.md
src/
*
!Dockerfile
!target/
!.ebextensions</code></pre>



<p>Esto asegura y le dice a Elastic Beanstalk CLI qué ignorar y por ende qué sí empaquetar. En nuestro caso, es importante <code>Dockerfile</code>, <code>target/</code> y <code>.ebextensions</code>.</p>



<p><strong>Configuración avanzada con .ebextensions</strong></p>



<p>Desplegar una aplicación con Elastic Beanstalk no es siempre, o nunca lo es, algo tan simple como desplegar un artefacto. Si bien la infraestructura se aprovisiona automáticamente, la aplicación suele requerir de variables de ambiente, datos de conexión con servicios externos, capacidades mínimas, etc.</p>



<p>¿Cómo especificamos esto sin tocar el código? La respuesta es con archivos de configuración o archivos <code><strong>.ebextensions</strong></code>.</p>



<p>En nuestro caso, tenemos el archivo <code>env-vars.config</code> donde configuramos ciertas variables de ambiente para que funcione la aplicación:</p>



<pre class="wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-7ea978c726f039fde67d3ddaf22e9b62"><code>option_settings:
  aws:elasticbeanstalk:application:environment:
    SPRING_PROFILES_ACTIVE: dev
    CRUD_DB_URL: 'jdbc:postgresql://${RDS_ENDPOINT}/crud_spring_boot_example'
    CRUD_DB_USERNAME: ebroot
    CRUD_DB_PASSWORD: clave</code></pre>



<p>Algo a destacar es <code>SPRING_PROFILES_ACTIVE</code> que determina cómo va a funcionar la aplicación Java + Spring Boot. En la vida real, tenemos cientos de configuraciones posibles que podemos hacer a través de estos archivos. Puedes aprender más <a href="https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/ebextensions.html" rel="nofollow noopener" target="_blank">aquí</a>.</p>



<p>La documentación es un poco confusa, por eso te dejo dos enlaces más de los tipos de opciones: <a href="https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/command-options.html" rel="nofollow noopener" target="_blank">comando opciones</a> y de las opciones a detalle <a href="https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/command-options-general.html" rel="nofollow noopener" target="_blank">aquí</a>.</p>



<p><strong>Trabajando con aplicaciones del tipo Docker</strong></p>



<p>Para empezar, necesitas un <code>Dockerfile</code> que en nuestro caso contiene:</p>



<pre class="wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-ce5121ce18b95d70226e37db736c01d1"><code>FROM amazoncorretto:17.0.11-alpine
ARG JAR_FILE=target/*.war
COPY ${JAR_FILE} app.jar
EXPOSE 8080
CMD &#091;"java", "-jar", "/app.jar"]</code></pre>



<p>Muy simple y claro, y que será incluido en el archivo <code>.zip</code> gracias a nuestro archivo <code>.ebignore</code>.</p>



<p>No tenemos en este caso Docker Compose y lo haremos a partir de ese archivo. Sin embargo, si quieres saber más de las opciones de despliegue, puedes mirarlo <a href="https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/docker.html" rel="nofollow noopener" target="_blank">aquí</a>.</p>



<p><strong>IMPORTANTE:</strong> Hay otra forma de hacerlo en un clúster de Amazon ECS (Elastic Container Service), que está fuera de esta explicación pero que puedes consultarla <a href="https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_docker_ecs.html" rel="nofollow noopener" target="_blank">aquí</a>.</p>



<h4 class="wp-block-heading has-black-color has-text-color has-link-color wp-elements-91d0f00e8e0f879e5b9e78a281651244">Despliega la aplicación</h4>



<p>Excelente, ahora para desplegar vamos a ejecutar el comando:</p>



<pre class="wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-35e5416c17c138e1809f5eb489c403ac"><code>eb create --single</code></pre>



<p>El <code>--single</code> nos ayuda a desplegar una infraestructura simple, sin redundancia y alta disponibilidad, y que aplica en este caso del tutorial.</p>



<p>Verás algo como:</p>



<pre class="wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-7460199a80ee33a00af60e8f96d6207b"><code>Enter Environment Name
(default is crud-spring-boot-example-dev): 
Enter DNS CNAME prefix
(default is crud-spring-boot-example-dev): 

Would you like to enable Spot Fleet requests for this environment? (y/N): 
Creating application version archive "app-0048-240801_111838855018".
Uploading: &#091;##################################################] 100% Done...
...
2024-08-01 16:21:52    INFO    Application available at crud-spring-boot-example-dev.us-east-1.elasticbeanstalk.com.
2024-08-01 16:21:54    INFO    Successfully launched environment: crud-spring-boot-example-dev</code></pre>



<p><strong>IMPORTANTE</strong>: Si no eliges <code>--single</code>, adicionalmente te preguntarán alguna información necesaria para el despliegue, sigue las siguientes recomendaciones:</p>



<ul class="wp-block-list">
<li>Usa Application Load Balancer ALB (por defecto)</li>



<li>Di que no a Spot Fleet (por defecto)</li>



<li>Todo lo demás que no sepas deja por defecto.</li>
</ul>



<p>Prueba tu aplicación visitando precisamente el url de la salida:</p>



<p><a href="http://crud-spring-boot-example-dev.us-east-1.elasticbeanstalk.com/" target="_blank" rel="noreferrer noopener nofollow">http://crud-spring-boot-example-dev.us-east-1.elasticbeanstalk.com/</a></p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="472" src="https://cloudiostrategy.com/wp-content/uploads/2024/08/Captura-de-pantalla-2024-08-01-142824-1024x472.png" alt="" class="wp-image-3293" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/08/Captura-de-pantalla-2024-08-01-142824-1024x472.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2024/08/Captura-de-pantalla-2024-08-01-142824-300x138.png 300w, https://cloudiostrategy.com/wp-content/uploads/2024/08/Captura-de-pantalla-2024-08-01-142824-768x354.png 768w, https://cloudiostrategy.com/wp-content/uploads/2024/08/Captura-de-pantalla-2024-08-01-142824.png 1068w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Finaliza el despliegue <strong>IMPORTANTE</strong> <strong>IMPORTANTE</strong> <strong>IMPORTANTE</strong></p>



<p>Si fallas este paso tu <strong><span style="text-decoration: underline;">factura puede salir muy alta</span></strong>, especialmente si no usaste <code>--single</code>, así que ejecuta este comando para finalizar el tutorial:</p>



<pre class="wp-block-code has-white-color has-black-background-color has-text-color has-background has-link-color wp-elements-b87a52ee7dc1699ac6540e507f44bd0c"><code>eb terminate</code></pre>



<h2 class="wp-block-heading has-black-color has-text-color has-link-color wp-elements-ecc7229c9a6201903bcbb934ebce2fdb">Pensamientos finales</h2>



<p>Desplegar una aplicación Java con Spring Boot en Elastic Beanstalk de AWS utilizando Docker es algo más complejo, pero siguiendo estos pasos detallados, el proceso se vuelve manejable y entendible, por lo que espero que sea de valor para ustedes.</p>



<p>Elastic Beanstalk de AWS simplifica enormemente el proceso de despliegue y gestión de aplicaciones, permitiendo enfocarte en el desarrollo sin preocuparte por la infraestructura. Utilizar Docker agrega una capa de consistencia y portabilidad, asegurando que tu aplicación funcione de la misma manera en cualquier entorno.</p>



<p>Es vital seguir entender prácticas como el uso adecuado de archivos <code>.ebignore</code> y <code>.ebextensions</code> para asegurar que solo los archivos necesarios se incluyan en el despliegue y que la configuración de tu aplicación sea flexible y segura. Además, siempre finaliza los entornos no utilizados para evitar costos innecesarios.</p>



<p>Usar perfiles de Maven es un poco más complicado, pero la idea es trabajar con <code>.ebextension</code> para configurar los valores requeridos, si hay recursos relacionados como bases de datos servicios colas y demás, la recomendación es que se creen fuera de el scope de la aplicación.</p>



<p>La implementación de una aplicación en la nube es un proceso iterativo. A medida que te familiarices con Elastic Beanstalk y Docker, encontrarás formas de optimizar y mejorar tu flujo de trabajo. Comparte tus experiencias y cualquier obstáculo que encuentres, y sigue aprendiendo de la documentación y la comunidad de AWS.</p>


		<div data-elementor-type="wp-post" data-elementor-id="2262" class="elementor elementor-2262">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-c716dfe elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="c716dfe" data-element_type="section" data-e-type="section" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-fe781c2" data-id="fe781c2" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-3d599a0 elementor-widget elementor-widget-text-editor" data-id="3d599a0" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><strong>Las empresas en su Industria ya están innovando</strong>.  El Lead Time y el Time to Market son la diferencia entre las empresas que perdurarán en el mercado.  Conozca que posibilidades le ofrece AWS para su Transformación Digital en un <strong>entrenamiento gratuito</strong> para usted y su equipo de TI.</p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-e9a0648 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="e9a0648" data-element_type="section" data-e-type="section" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-014da33" data-id="014da33" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-d893d0c elementor-widget elementor-widget-html" data-id="d893d0c" data-element_type="widget" data-e-type="widget" data-widget_type="html.default">
				<div class="elementor-widget-container">
					<div class="wp-block-button is-style-fill" style="text-align: center"><a class="wp-block-button__link has-black-color has-luminous-vivid-amber-background-color has-text-color has-background" href="https://cloudiostrategy.com/entrenamiento-gratuito-transformacion-digital-en-aws/" target="_blank" rel="noopener"><strong>Registrarme al Entrenamiento Gratuito: Transformación Digital en AWS</strong></a></div>				</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		
]]></content:encoded>
					
					<wfw:commentRss>https://cloudiostrategy.com/despliegue-de-una-aplicacion-java-con-spring-boot-y-docker-en-elastic-beanstalk/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Explorando Límites de AWS Lambda</title>
		<link>https://cloudiostrategy.com/explorando-limites-de-aws-lambda/</link>
					<comments>https://cloudiostrategy.com/explorando-limites-de-aws-lambda/#respond</comments>
		
		<dc:creator><![CDATA[Fernando Paz]]></dc:creator>
		<pubDate>Tue, 30 Jan 2024 21:28:05 +0000</pubDate>
				<category><![CDATA[Artículos]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[Amazon API Gateway]]></category>
		<category><![CDATA[AWS Lambda]]></category>
		<category><![CDATA[DynamoDB]]></category>
		<category><![CDATA[serverless]]></category>
		<guid isPermaLink="false">https://cloudiostrategy.com/?p=3241</guid>

					<description><![CDATA[En este post Explorando Límites de AWS Lambda, les traemos un proyecto Playbook OpenSource base que puede ayudarlos a crear y preparar su infraestructura para probar los límites de Lambda […]]]></description>
										<content:encoded><![CDATA[
<p>En este post Explorando Límites de AWS Lambda, les traemos un proyecto Playbook OpenSource base que puede ayudarlos a crear y preparar su infraestructura para probar los límites de Lambda para sus casos de uso.</p>



<h2 class="wp-block-heading">Explorando Límites de AWS Lambda &#8211; Porque</h2>



<p>Es muy común implementar una solución Serverless en AWS utilizando los servicios API Gateway, AWS Lambda y DynamoDB, y, probar esta arquitectura para nuestro caso de uso es crucial al diseñar una solución.  </p>



<p>Así, cuando trabajamos la charla <a href="https://speakerdeck.com/pazfernando/como-manejar-100k-conexiones-simultaneas-en-aws" target="_blank" rel="noreferrer noopener nofollow">¿Como manejar 100K conexiones simultáneas en AWS?</a> en Serverless o probamos los nuevos límites de AWS Lambda de acuerdo al anuncio <a href="https://aws.amazon.com/blogs/aws/aws-lambda-functions-now-scale-12-times-faster-when-handling-high-volume-requests/" target="_blank" rel="noreferrer noopener nofollow">Las funciones de AWS Lambda ahora escalan 12 veces más rápido cuando manejan solicitudes de gran volumen</a>, nos vimos en la necesidad de crear recursos y ambientes, una y otra vez hasta crear el escenario perfecto.</p>



<p>Por eso decidimos crear un proyecto base como infraestructura como código que pueda apoyarlos para sus propias pruebas.  El repositorio es público y de código abierto, y lo pueden encontrar aquí <a href="https://github.com/pazfernando/serverless-limits-playbook-test" target="_blank" rel="noreferrer noopener nofollow">serverless-limits-playbook-test</a>.</p>



<figure class="wp-block-image aligncenter size-large"><a href="https://github.com/pazfernando/serverless-limits-playbook-test" target="_blank" rel="noreferrer noopener nofollow"><img decoding="async" width="1024" height="409" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-from-2024-01-30-13-31-55-1024x409.webp" alt="" class="wp-image-3253" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-from-2024-01-30-13-31-55-1024x409.webp 1024w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-from-2024-01-30-13-31-55-300x120.webp 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-from-2024-01-30-13-31-55-768x307.webp 768w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-from-2024-01-30-13-31-55-1536x614.webp 1536w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-from-2024-01-30-13-31-55.webp 1591w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<h3 class="wp-block-heading">Arquitectura</h3>



<p>La idea principal en esta versión es crear una arquitectura de un API RESTful con API Gateway integrado a un función AWS Lambda para llamadas sincrónicas, y crear una instancia EC2 con una instalación de JMeter para lanzar pruebas de carga.</p>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69ddfdfc0b681&quot;}" data-wp-interactive="core/image" data-wp-key="69ddfdfc0b681" class="wp-block-image aligncenter size-full wp-lightbox-container"><img decoding="async" width="736" height="369" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/AWS-Lambda-Limits-Test.webp" alt="" class="wp-image-3258" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/AWS-Lambda-Limits-Test.webp 736w, https://cloudiostrategy.com/wp-content/uploads/2024/01/AWS-Lambda-Limits-Test-300x150.webp 300w" sizes="(max-width: 736px) 100vw, 736px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandar"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<p>Aunque en el código podrán observar también:</p>



<ul class="wp-block-list">
<li>Habilitación de CORS</li>



<li>Bloque de código para llamadas asincrónicas (comentado)</li>



<li>Configuración para <strong>reserve concurrency</strong> en AWS Lambda.</li>



<li>El script <code>setup.sh</code> para adicionar configuraciones a su instancia EC2.</li>



<li>El script <code>index.mjs</code> para definir la implementación real de su función AWs Lambda.</li>



<li>Un identificador único para peticiones desde a lambda (opcional podrían eliminarlo).</li>
</ul>



<h3 class="wp-block-heading">Prerequisitos</h3>



<p>Dependiendo de su caso de uso necesitarán configuraciones generales en su cuenta, pero aquí presentamos las básicas.</p>



<ul class="wp-block-list">
<li>Tener una Default VPC en la region que vayan a probar.</li>



<li>Crear un Role en IAM que permita escribir desde API Gateway a CloudWatch.</li>



<li>Asignar dicho rol a las configuraciones del servicio API Gateway en la región donde se va ha hacer pruebas.</li>



<li>Tener los Server Limits adecuados a su prueba, especialmente los de AWS Lambda &#8220;<strong>Burst Concurrency</strong>&#8221; y &#8220;<strong>Concurrent Executions</strong>&#8220;.</li>
</ul>



<h3 class="wp-block-heading">Despliegue de recursos</h3>



<p>Al ser un proyecto IaaC construido con AWS CDK, pues evidentemente usamos los comando apropiados.  A continuación la lista de pasos:</p>



<ul class="wp-block-list">
<li>Cambiar las variables <code><strong>const targetRegion</strong></code> y <strong><code>const targetAccount</code></strong> en el archivo de los fuentes <code><strong>/bin/infra.ts</strong></code> apropiadamente.</li>



<li><a href="https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html" target="_blank" rel="noreferrer noopener nofollow">Instala AWS CLI la última versión</a>.</li>



<li><a href="https://nodejs.org/en/learn/getting-started/how-to-install-nodejs" target="_blank" rel="noreferrer noopener nofollow">Instala Node.js 20 o superior</a>.</li>



<li><a href="https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html#getting_started_install" target="_blank" rel="noreferrer noopener nofollow">Instala el último AWS CDK</a>.</li>



<li>En la carpeta del proyecto corre cdk boostrap para preparar la región para IaaC.</li>



<li>Ejecuta cdk synth para verificar que tus fuentes estén correctos.</li>



<li>Ejecuta cdk deploy para crear los recursos descritos en la arquitectura.</li>
</ul>



<p>Usamos <a href="https://docs.aws.amazon.com/cdk/" target="_blank" rel="noreferrer noopener nofollow">AWS CDK</a> para este proyecto, pero podrías reemplazar o hacer tus versiones con <a href="https://www.terraform.io/" target="_blank" rel="noreferrer noopener nofollow">Terraform</a> u <a href="https://opentofu.org/" target="_blank" rel="noreferrer noopener nofollow">OpenTofu</a> respectivamente.  Hacerlo con AWS Cloud Formation es otra opción aunque no lo recomiendo. </p>



<h3 class="wp-block-heading">Lanzamiento de carga masiva</h3>



<p>Para ejecutar las pruebas masivas con JMeter es necesario ingresar a la instancia EC2 creada a través de la Consola Web y con EC2 Instance Connect, dado que no se asoció un server key al momento de su creación.  </p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure data-wp-context="{&quot;imageId&quot;:&quot;69ddfdfc0c11e&quot;}" data-wp-interactive="core/image" data-wp-key="69ddfdfc0c11e" class="wp-block-image size-full wp-lightbox-container"><img loading="lazy" decoding="async" width="628" height="142" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/ec21.webp" alt="" class="wp-image-3248" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/ec21.webp 628w, https://cloudiostrategy.com/wp-content/uploads/2024/01/ec21-300x68.webp 300w" sizes="(max-width: 628px) 100vw, 628px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandar"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure data-wp-context="{&quot;imageId&quot;:&quot;69ddfdfc0c9cd&quot;}" data-wp-interactive="core/image" data-wp-key="69ddfdfc0c9cd" class="wp-block-image size-full wp-lightbox-container"><img loading="lazy" decoding="async" width="819" height="704" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/ec22.webp" alt="" class="wp-image-3249" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/ec22.webp 819w, https://cloudiostrategy.com/wp-content/uploads/2024/01/ec22-300x258.webp 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/ec22-768x660.webp 768w" sizes="(max-width: 819px) 100vw, 819px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandar"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</div>
</div>



<p>Una vez en el shell los comandos son los siguientes:</p>



<ul class="wp-block-list">
<li>Cambia a root el usuario: <code><strong>sudo -i</strong></code>.</li>



<li>Edita el archivo LambdaConcurrencyLimits.jmx con <code><strong>vi /tmp/LambdaConcurrencyLimits.jmx</strong></code> con el url de tu API RESTful (esa url la obtienes como salida del comando cdk deploy al final del log).</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="907" height="178" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/cdkdeployoutput.webp" alt="" class="wp-image-3250" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/cdkdeployoutput.webp 907w, https://cloudiostrategy.com/wp-content/uploads/2024/01/cdkdeployoutput-300x59.webp 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/cdkdeployoutput-768x151.webp 768w" sizes="(max-width: 907px) 100vw, 907px" /></figure>



<p>Ejecuta los test JMeter de carga con </p>



<pre class="wp-block-code"><code><strong>rm -Rf /var/www/html/stats/* &amp;&amp; rm -f /tmp/stats.jtl &amp;&amp; /opt/apache-jmeter-5.6.2/bin/jmeter -n -t /tmp/LambdaConcurrencyLimits.jmx -l /tmp/stats.jtl -e -o /var/www/html/stats.</strong></code></pre>



<h3 class="wp-block-heading">Pruebas en JMeter</h3>



<p>Mientras se puede escribir un blog entero de pruebas en JMeter, el archivo creado esta compuesto de las siguintes características:</p>



<ul class="wp-block-list">
<li>Cinco grupos de usuarios (hilos)</li>



<li>Primer grupo lanza 1001 usuarios en 10 segundos.</li>



<li>Segundo grupo lanza 2001 usuarios en 20 segundos.</li>



<li>Tercer grupo lanza 3001 usuarios en 30 segundos.</li>



<li>Cuarto y quinto grupo lanza 0 usuarios, y están en el archivo jmx para que los usen como lo prefieran para su caso de prueba.</li>



<li>Se prueba una URL con un HTTP Request de tipo GET al API RESTful creado.</li>



<li>El  URL del API Gateway RESTful esta externalizado en el argumento <strong><code>url-api-gateway</code></strong>.</li>
</ul>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="936" height="176" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-from-2024-01-30-15-46-08.webp" alt="" class="wp-image-3261" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-from-2024-01-30-15-46-08.webp 936w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-from-2024-01-30-15-46-08-300x56.webp 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-from-2024-01-30-15-46-08-768x144.webp 768w" sizes="(max-width: 936px) 100vw, 936px" /></figure>



<div style="height:50px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Evidentemente estas pruebas no se ajustan a tu caso de uso y deberás cambiarlas apropiadamente, sin embargo el mecanismo de lanzamiento y la instancia EC2 configurada va a reducir el tiempo para esta operación.</p>



<h3 class="wp-block-heading">Métricas</h3>



<p>Una vez desplegada la infraestructura, y ejecutados las pruebas podremos monitorear los recursos y tomar las acciones correspondientes.</p>



<p>A continuación algunos gráficos que vamos a poder obtener:</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<p>API Gateway</p>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69ddfdfc0e439&quot;}" data-wp-interactive="core/image" data-wp-key="69ddfdfc0e439" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="328" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-from-2024-01-30-15-52-14-1024x328.webp" alt="" class="wp-image-3263" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-from-2024-01-30-15-52-14-1024x328.webp 1024w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-from-2024-01-30-15-52-14-300x96.webp 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-from-2024-01-30-15-52-14-768x246.webp 768w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-from-2024-01-30-15-52-14-1536x492.webp 1536w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-from-2024-01-30-15-52-14.webp 1564w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandar"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<p>AWS Lambda</p>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69ddfdfc0ed60&quot;}" data-wp-interactive="core/image" data-wp-key="69ddfdfc0ed60" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="294" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-from-2024-01-30-15-50-59-1024x294.webp" alt="" class="wp-image-3262" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-from-2024-01-30-15-50-59-1024x294.webp 1024w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-from-2024-01-30-15-50-59-300x86.webp 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-from-2024-01-30-15-50-59-768x221.webp 768w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-from-2024-01-30-15-50-59.webp 1030w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandar"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</div>
</div>



<p>Además siempre vamos a tener Grupos de Logs en Amazon CloudWatch apropiados para el caso de uso y por servicio para analizar los resultados:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="241" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-from-2024-01-30-15-55-59-1024x241.webp" alt="" class="wp-image-3264" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-from-2024-01-30-15-55-59-1024x241.webp 1024w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-from-2024-01-30-15-55-59-300x71.webp 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-from-2024-01-30-15-55-59-768x181.webp 768w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-from-2024-01-30-15-55-59-1536x361.webp 1536w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-from-2024-01-30-15-55-59.webp 1565w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p><strong>IMPORTANTE</strong>: siempre al finalizar las pruebas no olviden ejecutar <strong><code>cdk destroy</code></strong> para decomisar los recursos usados y evitar facturación innecesaria.</p>



<h3 class="wp-block-heading">Conclusiones y Pensamientos Finales</h3>



<p>En este Playbook Explorando Límites de AWS Lambda, hemos podido plasmar un proyecto de código abierto para que puedan acelerar sus pruebas de implementaciones.  Sin embargo hay mucho que mejorar en el mismo, como la inclusión de secrets con Secrets Manager para gestionar números de cuenta y otros parámetros sensibles y que <strong><span style="text-decoration: underline;">NO</span></strong> deben estar en su repositorio de fuentes.</p>



<p>También este proyecto nos ayuda en la inmersión en el mundo apasionante que significa AWS CDK, y con el cual pueden gestionar su infraestructura de forma completamente automatizada.</p>



<p>Vale mencionar que en un proyecto de AWS CDK <span style="text-decoration: underline;"><strong>jamás deben subir el directorio cdk.out</strong></span>, dado que aquí como resultado de la compilación de los archivos Typescript a archivos propios de AWS Cloud Formation ((JSON por ejemplo), puede y va a quedar información sensible como números de cuenta y/o claves.</p>



<p>Para hacer uso de este enfoque de despliegue es necesario estar familiarizado con AWS CLI ya que con este generarán perfiles que contengan accesos de los usuarios de su cuenta, y con tales accesos se crearán los recursos.  Entonces es importante que los usuarios asociados tengan los permisos correspondientes.</p>



<p>Los límites que tengan para su cuenta y por región van a incidir directamente en sus pruebas en caso de altas cargas de procesamiento, por lo que se debe tener en cuenta los mismos al momento de planificar la implementación.</p>



<p>Les animamos a dejar su feedback para mejorar el proyecto, sea aquí o en el repositorio de GitHub, y esperamos que sea de utilidad este proyecto &#8220;Explorando Límites de AWs Lambda&#8221;.</p>


		<div data-elementor-type="wp-post" data-elementor-id="2262" class="elementor elementor-2262">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-c716dfe elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="c716dfe" data-element_type="section" data-e-type="section" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-fe781c2" data-id="fe781c2" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-3d599a0 elementor-widget elementor-widget-text-editor" data-id="3d599a0" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><strong>Las empresas en su Industria ya están innovando</strong>.  El Lead Time y el Time to Market son la diferencia entre las empresas que perdurarán en el mercado.  Conozca que posibilidades le ofrece AWS para su Transformación Digital en un <strong>entrenamiento gratuito</strong> para usted y su equipo de TI.</p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-e9a0648 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="e9a0648" data-element_type="section" data-e-type="section" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-014da33" data-id="014da33" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-d893d0c elementor-widget elementor-widget-html" data-id="d893d0c" data-element_type="widget" data-e-type="widget" data-widget_type="html.default">
				<div class="elementor-widget-container">
					<div class="wp-block-button is-style-fill" style="text-align: center"><a class="wp-block-button__link has-black-color has-luminous-vivid-amber-background-color has-text-color has-background" href="https://cloudiostrategy.com/entrenamiento-gratuito-transformacion-digital-en-aws/" target="_blank" rel="noopener"><strong>Registrarme al Entrenamiento Gratuito: Transformación Digital en AWS</strong></a></div>				</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		
]]></content:encoded>
					
					<wfw:commentRss>https://cloudiostrategy.com/explorando-limites-de-aws-lambda/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Endpoint Proxy con API Gateway</title>
		<link>https://cloudiostrategy.com/endpoint-proxy-con-api-gateway/</link>
					<comments>https://cloudiostrategy.com/endpoint-proxy-con-api-gateway/#respond</comments>
		
		<dc:creator><![CDATA[Fernando Paz]]></dc:creator>
		<pubDate>Mon, 22 Jan 2024 14:47:00 +0000</pubDate>
				<category><![CDATA[Tecnologías]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[Amazon API Gateway]]></category>
		<category><![CDATA[API RESTful]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[Endpoint Proxy]]></category>
		<category><![CDATA[serverless]]></category>
		<guid isPermaLink="false">https://cloudiostrategy.com/?p=3126</guid>

					<description><![CDATA[Muchas veces nos encontramos en la necesidad de exponer un API de negocio en la Nube, y mientras existen muchas formas que requieren de más o menos esfuerzo, en una […]]]></description>
										<content:encoded><![CDATA[
<p>Muchas veces nos encontramos en la necesidad de exponer un API de negocio en la Nube, y mientras existen muchas formas que requieren de más o menos esfuerzo, en una primera etapa de migración (Rehost) una estrategia común es implementar un Endpoint Proxy con API Gateway.</p>



<p>Esta estrategia, Endpoint Proxy en API Gateway, es muy adecuada especialmente porque tenemos los siguientes beneficios:con </p>



<ul class="wp-block-list">
<li>Implementar el escenario Rehost (lift and shift) para una migración.</li>



<li>No realizar ninguna modificación a la implementación del API.</li>



<li>Mantener el servicio web en una red privada y sin acceso a internet.</li>



<li>Acceder a mejoras de seguridad del API de negocio y poder monitorearlo, dado que vamos a usar API Gateway.</li>



<li>Posibilita el versionamiento del API de negocio con menor esfuerzo.</li>



<li>Integración con el escudo de seguridad AWS WAF.</li>
</ul>



<h2 class="wp-block-heading">Tutorial Endpoint Proxy con API Gateway</h2>



<p>Se piensa en implementar con Amazon API Gateway un Endpoint Proxy de tipo HTTP API, que puede brindar la solución a lo requerido.</p>



<h3 class="wp-block-heading">Escenario API Público</h3>



<p>Para este escenario vamos a utilizar el API ejemplo de Swagger https://petstore.swagger.io/ como referencia, que nos ayuda a probar operaciones RESTful comunes.</p>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69ddfdfc16506&quot;}" data-wp-interactive="core/image" data-wp-key="69ddfdfc16506" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="551" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-094910-1024x551.png" alt="" class="wp-image-3128" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-094910-1024x551.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-094910-300x161.png 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-094910-768x413.png 768w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-094910-1536x826.png 1536w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-094910.png 1839w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandar"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Probamos la operación https://petstore.swagger.io/#/pet/findPetsByStatus para mirar los datos disponibles.</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="padding-right:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="811" height="736" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-094954-1.png" alt="" class="wp-image-3130" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-094954-1.png 811w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-094954-1-300x272.png 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-094954-1-768x697.png 768w" sizes="(max-width: 811px) 100vw, 811px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure data-wp-context="{&quot;imageId&quot;:&quot;69ddfdfc16e12&quot;}" data-wp-interactive="core/image" data-wp-key="69ddfdfc16e12" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="332" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-095127-1024x332.png" alt="" class="wp-image-3131" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-095127-1024x332.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-095127-300x97.png 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-095127-768x249.png 768w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-095127-1536x497.png 1536w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-095127.png 1773w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandar"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69ddfdfc174ca&quot;}" data-wp-interactive="core/image" data-wp-key="69ddfdfc174ca" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="629" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-095218-1024x629.png" alt="" class="wp-image-3132" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-095218-1024x629.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-095218-300x184.png 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-095218-768x472.png 768w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-095218-1536x944.png 1536w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-095218.png 1771w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandar"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</div>
</div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Ok, el API está funcionando correctamente.</p>



<p>Definimos una arquitectura Cloud para este efecto en AWS.</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="408" height="144" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/proxy-restful-with-apigateway-API-Public.webp" alt="" class="wp-image-3134" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/proxy-restful-with-apigateway-API-Public.webp 408w, https://cloudiostrategy.com/wp-content/uploads/2024/01/proxy-restful-with-apigateway-API-Public-300x106.webp 300w" sizes="(max-width: 408px) 100vw, 408px" /></figure>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Creamos el API Gateway HTTP con el nombre proxy-swagger-api.</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-f1061711 wp-block-columns-is-layout-flex" style="padding-right:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="padding-right:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)">
<figure data-wp-context="{&quot;imageId&quot;:&quot;69ddfdfc18558&quot;}" data-wp-interactive="core/image" data-wp-key="69ddfdfc18558" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="858" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-111409-1024x858.png" alt="" class="wp-image-3135" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-111409-1024x858.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-111409-300x251.png 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-111409-768x644.png 768w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-111409.png 1100w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandar"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69ddfdfc18d14&quot;}" data-wp-interactive="core/image" data-wp-key="69ddfdfc18d14" class="wp-block-image size-full wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="654" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-111518.png" alt="" class="wp-image-3136" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-111518.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-111518-300x192.png 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-111518-768x491.png 768w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandar"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="padding-right:0;padding-left:0">
<figure data-wp-context="{&quot;imageId&quot;:&quot;69ddfdfc19519&quot;}" data-wp-interactive="core/image" data-wp-key="69ddfdfc19519" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="975" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-111644-1024x975.png" alt="" class="wp-image-3137" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-111644-1024x975.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-111644-300x286.png 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-111644-768x732.png 768w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-111644.png 1034w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandar"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69ddfdfc19a57&quot;}" data-wp-interactive="core/image" data-wp-key="69ddfdfc19a57" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="309" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-113156-1024x309.png" alt="" class="wp-image-3138" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-113156-1024x309.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-113156-300x91.png 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-113156-768x232.png 768w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-113156.png 1522w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandar"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</div>
</div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Creamos la ruta $default.</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-f1061711 wp-block-columns-is-layout-flex" style="padding-right:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="padding-right:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)">
<figure data-wp-context="{&quot;imageId&quot;:&quot;69ddfdfc1a09b&quot;}" data-wp-interactive="core/image" data-wp-key="69ddfdfc1a09b" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="275" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-113325-1024x275.png" alt="" class="wp-image-3141" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-113325-1024x275.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-113325-300x81.png 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-113325-768x206.png 768w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-113325-1536x413.png 1536w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-113325.png 1869w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandar"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69ddfdfc1a685&quot;}" data-wp-interactive="core/image" data-wp-key="69ddfdfc1a685" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="299" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-113415-1024x299.png" alt="" class="wp-image-3142" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-113415-1024x299.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-113415-300x88.png 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-113415-768x225.png 768w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-113415-1536x449.png 1536w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-113415.png 1867w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandar"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="padding-right:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)">
<figure data-wp-context="{&quot;imageId&quot;:&quot;69ddfdfc1acf7&quot;}" data-wp-interactive="core/image" data-wp-key="69ddfdfc1acf7" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="317" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-113525-1-1024x317.png" alt="" class="wp-image-3146" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-113525-1-1024x317.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-113525-1-300x93.png 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-113525-1-768x238.png 768w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-113525-1-1536x475.png 1536w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-113525-1.png 1869w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandar"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</div>
</div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<p>La ruta $default actúa como un &#8220;catch-all&#8221; es decir gestiona cualquier petición que no coincida con otras rutas definidas.  Puedes saber más <a href="http://$default route that acts as a catch-all for requests that don’t match any other routes" target="_blank" rel="noreferrer noopener nofollow">aquí</a>.</p>



<p>Creamos la integración.</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-f1061711 wp-block-columns-is-layout-flex" style="padding-right:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="padding-right:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)">
<figure data-wp-context="{&quot;imageId&quot;:&quot;69ddfdfc1b526&quot;}" data-wp-interactive="core/image" data-wp-key="69ddfdfc1b526" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="331" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-113708-1-1024x331.png" alt="" class="wp-image-3147" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-113708-1-1024x331.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-113708-1-300x97.png 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-113708-1-768x248.png 768w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-113708-1-1536x497.png 1536w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-113708-1.png 1871w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandar"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69ddfdfc1bec0&quot;}" data-wp-interactive="core/image" data-wp-key="69ddfdfc1bec0" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="676" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-113939-1-1024x676.png" alt="" class="wp-image-3148" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-113939-1-1024x676.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-113939-1-300x198.png 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-113939-1-768x507.png 768w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-113939-1.png 1518w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandar"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure data-wp-context="{&quot;imageId&quot;:&quot;69ddfdfc1c59f&quot;}" data-wp-interactive="core/image" data-wp-key="69ddfdfc1c59f" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="646" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-114014-1024x646.png" alt="" class="wp-image-3149" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-114014-1024x646.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-114014-300x189.png 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-114014-768x485.png 768w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-114014.png 1494w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandar"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</div>
</div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Probamos el API RESTful de la misma forma que lo hicimos al inicio. </p>



<p>Debemos cambiar el Endpoint a el nuevo del API Gateway: https://gl1p0rt1gc.execute-api.us-east-2.amazonaws.com/ (reemplaza para tu caso con el apropiado).</p>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69ddfdfc1cd61&quot;}" data-wp-interactive="core/image" data-wp-key="69ddfdfc1cd61" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="389" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-184121-1024x389.png" alt="" class="wp-image-3211" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-184121-1024x389.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-184121-300x114.png 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-184121-768x292.png 768w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-184121-1536x584.png 1536w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-184121.png 1839w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandar"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<p>Esta vez la prueba la vamos ha hacer desde <a href="https://www.postman.com/downloads/" data-type="link" data-id="https://www.postman.com/downloads/" target="_blank" rel="noreferrer noopener nofollow">Postman</a>.</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-f1061711 wp-block-columns-is-layout-flex" style="padding-right:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="padding-right:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)">
<figure data-wp-context="{&quot;imageId&quot;:&quot;69ddfdfc1d3eb&quot;}" data-wp-interactive="core/image" data-wp-key="69ddfdfc1d3eb" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="780" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-115233-1024x780.png" alt="" class="wp-image-3151" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-115233-1024x780.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-115233-300x229.png 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-115233-768x585.png 768w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-115233.png 1194w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandar"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69ddfdfc1da35&quot;}" data-wp-interactive="core/image" data-wp-key="69ddfdfc1da35" class="wp-block-image size-full wp-lightbox-container"><img loading="lazy" decoding="async" width="826" height="329" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-115301.png" alt="" class="wp-image-3152" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-115301.png 826w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-115301-300x119.png 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-115301-768x306.png 768w" sizes="(max-width: 826px) 100vw, 826px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandar"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="padding-right:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)">
<figure data-wp-context="{&quot;imageId&quot;:&quot;69ddfdfc1df94&quot;}" data-wp-interactive="core/image" data-wp-key="69ddfdfc1df94" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="433" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-115435-1024x433.png" alt="" class="wp-image-3153" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-115435-1024x433.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-115435-300x127.png 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-115435-768x325.png 768w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-115435.png 1513w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandar"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69ddfdfc1e426&quot;}" data-wp-interactive="core/image" data-wp-key="69ddfdfc1e426" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="566" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-115514-1024x566.png" alt="" class="wp-image-3154" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-115514-1024x566.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-115514-300x166.png 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-115514-768x425.png 768w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-115514.png 1458w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandar"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</div>
</div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-f1061711 wp-block-columns-is-layout-flex" style="padding-right:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)">
<div class="wp-block-column is-layout-flow wp-container-core-column-is-layout-7c6f89b2 wp-block-column-is-layout-flow" style="padding-right:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)">
<figure data-wp-context="{&quot;imageId&quot;:&quot;69ddfdfc1eac1&quot;}" data-wp-interactive="core/image" data-wp-key="69ddfdfc1eac1" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="371" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-115622-1024x371.png" alt="" class="wp-image-3155" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-115622-1024x371.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-115622-300x109.png 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-115622-768x278.png 768w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-115622-1536x556.png 1536w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-115622.png 1644w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandar"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69ddfdfc1f038&quot;}" data-wp-interactive="core/image" data-wp-key="69ddfdfc1f038" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="428" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-115735-1024x428.png" alt="" class="wp-image-3156" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-115735-1024x428.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-115735-300x125.png 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-115735-768x321.png 768w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-115735-1536x642.png 1536w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-115735.png 1624w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandar"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</div>



<div class="wp-block-column is-layout-flow wp-container-core-column-is-layout-85e0d46d wp-block-column-is-layout-flow" style="padding-top:0;padding-right:var(--wp--preset--spacing--20);padding-bottom:0;padding-left:var(--wp--preset--spacing--20)">
<figure data-wp-context="{&quot;imageId&quot;:&quot;69ddfdfc1f69d&quot;}" data-wp-interactive="core/image" data-wp-key="69ddfdfc1f69d" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="661" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-120031-1024x661.png" alt="" class="wp-image-3157" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-120031-1024x661.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-120031-300x194.png 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-120031-768x496.png 768w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-120031-1536x992.png 1536w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Screenshot-2024-01-18-120031.png 1859w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandar"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</div>
</div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<p>¡Excelente! Funciona igual y como un Endpoint Proxy con las ventajas y funcionalidades que ofrece API Gateway.</p>



<h3 class="wp-block-heading">Escenario API Privado</h3>



<p>¿En la vida real como sería un ejemplo?</p>



<p>Vamos a ver una arquitectura donde este API es una implementación privada que esta en una instancia EC2 en una subred privada de una VPC de la empresa. Por tanto el único que permite acceso y controla los flujos es el API Gateway.</p>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69ddfdfc1fecc&quot;}" data-wp-interactive="core/image" data-wp-key="69ddfdfc1fecc" class="wp-block-image aligncenter size-full wp-lightbox-container"><img loading="lazy" decoding="async" width="614" height="411" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/proxy-restful-with-apigateway-API-Private.webp" alt="Endpoint Proxy con API Gateway" class="wp-image-3219" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/proxy-restful-with-apigateway-API-Private.webp 614w, https://cloudiostrategy.com/wp-content/uploads/2024/01/proxy-restful-with-apigateway-API-Private-300x201.webp 300w" sizes="(max-width: 614px) 100vw, 614px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandar"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Para este escenario vamos a usar la implementación de un <a href="https://github.com/pazfernando/crud-spring-boot-example" target="_blank" rel="noreferrer noopener nofollow">CRUD API RESTful construído con Spring de Código Libre / Opensource en GitHub</a>.</p>



<p>Descargamos el proyecto en la instancia EC2 en la red privada, lo compilamos y corremos de acuerdo a las instrucciones del archivo README.mb en el código .fuente.</p>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69ddfdfc20451&quot;}" data-wp-interactive="core/image" data-wp-key="69ddfdfc20451" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="953" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/image-1024x953.png" alt="" class="wp-image-3162" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/image-1024x953.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2024/01/image-300x279.png 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/image-768x715.png 768w, https://cloudiostrategy.com/wp-content/uploads/2024/01/image.png 1154w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandar"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Seguido a esto hacemos una prueba.  En este caso nos ayudamos de AWS CloudShell.</p>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69ddfdfc20a60&quot;}" data-wp-interactive="core/image" data-wp-key="69ddfdfc20a60" class="wp-block-image size-full wp-lightbox-container"><img loading="lazy" decoding="async" width="938" height="903" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-082722-1.png" alt="" class="wp-image-3165" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-082722-1.png 938w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-082722-1-300x289.png 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-082722-1-768x739.png 768w" sizes="(max-width: 938px) 100vw, 938px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandar"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Son dos comandos curl, que insertan un registro visita y luego recuperan todas los registros visitas.</p>



<p>Cabe mencionar que antes debemos conectarnos a esa máquina con los protocoles estándar de SSH + Server Key, y, primero pasando por un Bastion Host&#8230; ya se mucha información pero ese es el camino dado que el servidor EC2 esta en una subred privada.</p>



<p>Creamos un Endpoint Proxy de tipo HTTP API, igual que en primer escenario.</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-f1061711 wp-block-columns-is-layout-flex" style="padding-right:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="padding-right:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)">
<figure data-wp-context="{&quot;imageId&quot;:&quot;69ddfdfc21486&quot;}" data-wp-interactive="core/image" data-wp-key="69ddfdfc21486" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="482" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-084223-1024x482.png" alt="" class="wp-image-3166" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-084223-1024x482.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-084223-300x141.png 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-084223-768x361.png 768w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-084223.png 1031w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandar"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure data-wp-context="{&quot;imageId&quot;:&quot;69ddfdfc21b97&quot;}" data-wp-interactive="core/image" data-wp-key="69ddfdfc21b97" class="wp-block-image size-full wp-lightbox-container"><img loading="lazy" decoding="async" width="1020" height="973" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-084352.png" alt="" class="wp-image-3167" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-084352.png 1020w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-084352-300x286.png 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-084352-768x733.png 768w" sizes="(max-width: 1020px) 100vw, 1020px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandar"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</div>
</div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Creamos una Route (ruta) proxy $default.</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-f1061711 wp-block-columns-is-layout-flex" style="padding-right:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure data-wp-context="{&quot;imageId&quot;:&quot;69ddfdfc222d7&quot;}" data-wp-interactive="core/image" data-wp-key="69ddfdfc222d7" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="351" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-084548-1024x351.png" alt="" class="wp-image-3168" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-084548-1024x351.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-084548-300x103.png 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-084548-768x263.png 768w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-084548.png 1519w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandar"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69ddfdfc2299d&quot;}" data-wp-interactive="core/image" data-wp-key="69ddfdfc2299d" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="449" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-084650-1024x449.png" alt="" class="wp-image-3169" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-084650-1024x449.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-084650-300x131.png 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-084650-768x337.png 768w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-084650.png 1515w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandar"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="padding-right:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)">
<figure data-wp-context="{&quot;imageId&quot;:&quot;69ddfdfc23038&quot;}" data-wp-interactive="core/image" data-wp-key="69ddfdfc23038" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="378" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-084717-1024x378.png" alt="" class="wp-image-3170" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-084717-1024x378.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-084717-300x111.png 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-084717-768x284.png 768w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-084717.png 1470w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandar"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</div>
</div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Para poder direccionar el tráfico a un recurso en una red privada, vamos a usar un Aplication Load Balancer (ALB), el mismo que va incluir en su Target Group a la instancia EC2 que provee el API privado.</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-f1061711 wp-block-columns-is-layout-flex" style="padding-right:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="padding-right:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)">
<figure data-wp-context="{&quot;imageId&quot;:&quot;69ddfdfc236a0&quot;}" data-wp-interactive="core/image" data-wp-key="69ddfdfc236a0" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="314" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-084904-1024x314.png" alt="" class="wp-image-3171" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-084904-1024x314.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-084904-300x92.png 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-084904-768x236.png 768w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-084904-1536x471.png 1536w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-084904.png 1549w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandar"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure data-wp-context="{&quot;imageId&quot;:&quot;69ddfdfc23c6a&quot;}" data-wp-interactive="core/image" data-wp-key="69ddfdfc23c6a" class="wp-block-image size-medium wp-lightbox-container"><img loading="lazy" decoding="async" width="104" height="300" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-084942-104x300.png" alt="" class="wp-image-3172" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-084942-104x300.png 104w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-084942.png 332w" sizes="(max-width: 104px) 100vw, 104px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandar"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</div>
</div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-f1061711 wp-block-columns-is-layout-flex" style="padding-right:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure data-wp-context="{&quot;imageId&quot;:&quot;69ddfdfc24331&quot;}" data-wp-interactive="core/image" data-wp-key="69ddfdfc24331" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="706" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-085310-1024x706.png" alt="" class="wp-image-3173" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-085310-1024x706.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-085310-300x207.png 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-085310-768x530.png 768w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-085310.png 1383w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandar"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69ddfdfc248ad&quot;}" data-wp-interactive="core/image" data-wp-key="69ddfdfc248ad" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="647" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-085537-1024x647.png" alt="" class="wp-image-3174" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-085537-1024x647.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-085537-300x189.png 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-085537-768x485.png 768w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-085537.png 1349w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandar"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="padding-right:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)">
<figure data-wp-context="{&quot;imageId&quot;:&quot;69ddfdfc2514f&quot;}" data-wp-interactive="core/image" data-wp-key="69ddfdfc2514f" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="502" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-090001-1024x502.png" alt="" class="wp-image-3175" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-090001-1024x502.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-090001-300x147.png 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-090001-768x376.png 768w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-090001.png 1351w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandar"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</div>
</div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<p>El ALB debe ser de tipo &#8220;internal&#8221; es decir solo se puede usar dentro de la VPC (no desde Internet).</p>



<p>Evidentemente necesitas tener un Target Group que contenga el servidor EC2 privado donde esta el API al cual el ALB va a dirigir las peticiones.  Por esto en medio de la creación del ALB tendrás que crear este Target Group.</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-f1061711 wp-block-columns-is-layout-flex" style="padding-right:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="padding-right:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)">
<figure data-wp-context="{&quot;imageId&quot;:&quot;69ddfdfc25930&quot;}" data-wp-interactive="core/image" data-wp-key="69ddfdfc25930" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="393" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-090023-1024x393.png" alt="" class="wp-image-3179" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-090023-1024x393.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-090023-300x115.png 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-090023-768x295.png 768w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-090023.png 1480w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandar"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure data-wp-context="{&quot;imageId&quot;:&quot;69ddfdfc260de&quot;}" data-wp-interactive="core/image" data-wp-key="69ddfdfc260de" class="wp-block-image size-full wp-lightbox-container"><img loading="lazy" decoding="async" width="998" height="981" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-091818.png" alt="" class="wp-image-3182" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-091818.png 998w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-091818-300x295.png 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-091818-768x755.png 768w" sizes="(max-width: 998px) 100vw, 998px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandar"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</div>
</div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-f1061711 wp-block-columns-is-layout-flex" style="padding-right:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="padding-right:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)">
<figure data-wp-context="{&quot;imageId&quot;:&quot;69ddfdfc272fd&quot;}" data-wp-interactive="core/image" data-wp-key="69ddfdfc272fd" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="319" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-115316-1-1024x319.png" alt="" class="wp-image-3184" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-115316-1-1024x319.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-115316-1-300x93.png 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-115316-1-768x239.png 768w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-115316-1.png 1388w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandar"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69ddfdfc278f8&quot;}" data-wp-interactive="core/image" data-wp-key="69ddfdfc278f8" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="349" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-120315-1024x349.png" alt="" class="wp-image-3188" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-120315-1024x349.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-120315-300x102.png 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-120315-768x262.png 768w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-120315.png 1395w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandar"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure data-wp-context="{&quot;imageId&quot;:&quot;69ddfdfc2807b&quot;}" data-wp-interactive="core/image" data-wp-key="69ddfdfc2807b" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="496" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-115632-1024x496.png" alt="" class="wp-image-3186" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-115632-1024x496.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-115632-300x145.png 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-115632-768x372.png 768w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-115632.png 1501w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandar"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69ddfdfc28648&quot;}" data-wp-interactive="core/image" data-wp-key="69ddfdfc28648" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="268" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-115649-1024x268.png" alt="" class="wp-image-3187" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-115649-1024x268.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-115649-300x79.png 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-115649-768x201.png 768w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-115649.png 1484w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandar"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</div>
</div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Debes asegurarte que el grupo de seguridad del ALB permite el tráfico al puerto donde esta el listener.</p>



<p>Continúa con la creación del ALB.</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-f1061711 wp-block-columns-is-layout-flex" style="padding-right:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="padding-right:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)">
<figure data-wp-context="{&quot;imageId&quot;:&quot;69ddfdfc28f69&quot;}" data-wp-interactive="core/image" data-wp-key="69ddfdfc28f69" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="496" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-090936-1024x496.png" alt="" class="wp-image-3189" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-090936-1024x496.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-090936-300x145.png 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-090936-768x372.png 768w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-090936.png 1351w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandar"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure data-wp-context="{&quot;imageId&quot;:&quot;69ddfdfc29755&quot;}" data-wp-interactive="core/image" data-wp-key="69ddfdfc29755" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="333" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-091000-1024x333.png" alt="" class="wp-image-3190" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-091000-1024x333.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-091000-300x98.png 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-091000-768x250.png 768w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-091000.png 1384w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandar"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69ddfdfc29d4b&quot;}" data-wp-interactive="core/image" data-wp-key="69ddfdfc29d4b" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="225" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-091511-1024x225.png" alt="" class="wp-image-3191" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-091511-1024x225.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-091511-300x66.png 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-091511-768x169.png 768w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-091511-1536x337.png 1536w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-091511.png 1799w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandar"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</div>
</div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Bien, vamos a continuar con la creación de la integración de nuestro API proxy-api-crud, para esto vamos al servicio API Gateway para iniciar.</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-f1061711 wp-block-columns-is-layout-flex" style="padding-right:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="331" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-121935-1024x331.png" alt="" class="wp-image-3194" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-121935-1024x331.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-121935-300x97.png 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-121935-768x248.png 768w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-121935.png 1521w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="352" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-122013-1024x352.png" alt="" class="wp-image-3195" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-122013-1024x352.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-122013-300x103.png 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-122013-768x264.png 768w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-122013-1536x528.png 1536w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-122013.png 1868w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="461" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-121953-1024x461.png" alt="" class="wp-image-3196" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-121953-1024x461.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-121953-300x135.png 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-121953-768x346.png 768w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-121953.png 1521w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>
</div>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<p>La integración debe ser de tipo &#8220;Private resource&#8221; y en método seleccionamo9s &#8220;Select manually&#8221; para tener la opción de elegir un ALB/NLB como Target service.</p>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69ddfdfc2aaf1&quot;}" data-wp-interactive="core/image" data-wp-key="69ddfdfc2aaf1" class="wp-block-image size-large is-style-default wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="714" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-122437-1024x714.png" alt="" class="wp-image-3197" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-122437-1024x714.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-122437-300x209.png 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-122437-768x535.png 768w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-122437.png 1440w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandar"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<p>En la lista desplegada de los ALBs, seleccionamos nuestro proxy-alb recién creado.. Además vamos a tener que crear &#8220;Create new VPC link&#8221; en la selección correspondiente, ya que este será el puente entre nuestro API creado con API Gateway y por defecto en una red propia de AWS, con nuestra VPC propia de la empresa.</p>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69ddfdfc2b156&quot;}" data-wp-interactive="core/image" data-wp-key="69ddfdfc2b156" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="686" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-124107-1024x686.png" alt="" class="wp-image-3202" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-124107-1024x686.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-124107-300x201.png 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-124107-768x515.png 768w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-124107.png 1422w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandar"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Para este caso la VPC es proxy-vpc-vpx, pero debes elegir la correspondiente en tu infraestructura.</p>



<p>Aquí una ampliación al concepto de VPC Link, un VPC Link es un recurso que permite crear una integración con los recursos privados de una VPC desde una ruta del API Gateway de tipo HTTP.  De esta forma no tienes que exponer ningún recurso de la VPC al público e igual puedes usarlo como destino final de un API Gateway que si sea público.  Si quieres saber más de integraciones privadas para API Gateway HTTP a recursos de tu VPC puedes mirar <a href="https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-private.html" data-type="link" data-id="https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-private.html" target="_blank" rel="noreferrer noopener nofollow">aquí</a>.</p>



<p>Luego en las opciones siguientes es importante elegir a qué subredes tiene acceso este nuevo VPC Link y que grupos de seguridad se le asignan.  </p>



<p>Las subredes son importantes porque <strong>deben</strong> ser las subredes asociadas a tu ALB y su correspondiente Target Group.</p>



<p>El grupo de seguridad, es que que <strong>permite</strong> el acceso al puerto correspondiente donde el Listener del ALB esta escuchando peticiones.</p>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69ddfdfc2b89a&quot;}" data-wp-interactive="core/image" data-wp-key="69ddfdfc2b89a" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="686" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-123920-1024x686.png" alt="" class="wp-image-3200" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-123920-1024x686.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-123920-300x201.png 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-123920-768x515.png 768w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-123920.png 1421w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandar"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Realizada la integración vamos a identificar el url (Invoke URL) del Endpoint Proxy con API Gateway creado.</p>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69ddfdfc2c126&quot;}" data-wp-interactive="core/image" data-wp-key="69ddfdfc2c126" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="391" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-181810-1024x391.png" alt="" class="wp-image-3204" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-181810-1024x391.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-181810-300x115.png 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-181810-768x293.png 768w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-181810-1536x587.png 1536w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-181810.png 1832w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandar"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Listo, con ese url, si todo es correcto podemos hacer las siguientes peticiones:</p>



<p>Para crear una visita:</p>



<pre class="wp-block-code"><code>curl --location 'https://bg4gmloull.execute-api.us-east-2.amazonaws.com/api/visits' \<br>--header 'Content-Type: application/json' \<br>--data '{"date":"2024-01-19","name":"Fer","comment":"by CloudIO Strategy"}'</code></pre>



<p>Para consultar visitas:</p>



<pre class="wp-block-code"><code>curl --location 'https://bg4gmloull.execute-api.us-east-2.amazonaws.com/api/visits'</code></pre>



<p>Son las mismas peticiones que usamos con consultar el servicio web RESTful desde el shell de la instancia EC2 mostrada en el ejemplo.</p>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69ddfdfc2cbd1&quot;}" data-wp-interactive="core/image" data-wp-key="69ddfdfc2cbd1" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="957" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-145946-1024x957.png" alt="" class="wp-image-3206" srcset="https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-145946-1024x957.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-145946-300x280.png 300w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-145946-768x718.png 768w, https://cloudiostrategy.com/wp-content/uploads/2024/01/Captura-de-pantalla-2024-01-19-145946.png 1114w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Agrandar"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<div style="height:30px" aria-hidden="true" class="wp-block-spacer"></div>



<p>¡Excelente! Hemos creado un Endpoint Proxy con API Gateway, son tocar la implementación, con la funcionalidad esperada y todos los beneficios que tenemos en el servicio Amazon API Gateway.</p>



<h2 class="wp-block-heading">Conclusiones y pensamientos finales</h2>



<p>Hoy en este tutorial hemos visto como podemos implementar un Endpoint Proxy con API Gateway, un requerimiento que viene a partir de una migración al estilo Rehost del cliente que no desea entrar en temas de modificación a sus aplicaciones.</p>



<p>Presentamos dos escenarios, un proxy para un API público, que es infrecuente, y, un proxy a un API privado que si es muy frecuente y en ambos casos el servicio Amazon API Gateway nos permite implementar tal necesidad.</p>



<p>Nuestra arquitectura es solo una posibilidad de implementación del requerimiento, sin embargo en nuestra opinión es la más simple y rápida para dar una respuesta adecuada.</p>



<p>Vimos un concepto &#8220;VPC Link&#8221; que es importantísimo a la hora de integrar un API HTTP con recursos privados en la VPC, y en nuestro caso, nos integramos a un ABL o Aplication Load Balancer, sin embargo podríamos habernos integrado por ejemplo a AWS Cloud Map.  Dado esto, no es la única forma de integración que podrían usar.</p>



<p>El ALB nos habilita todas las ventajas que tenemos de un Load Balancer por ejemplo resiliencia o escalamiento horizontal, y aunque representa un costo adicional es justificable frente a un lineamiento SRT (Server Response Time) del negocio.</p>



<p>Evidentemente, falta muchas configuraciones complementarias a una arquitectura de este estilo, como por ejemplo lo relacionado a las decisiones de stages del API, las seguridades, el monitoreo y la trazabilidad.  Además la buena práctica es conectar este API Gateway a un dominio o subdominio apropiado de su empresa para facilidad de uso y estrategias de contingencia, entre otros.</p>


		<div data-elementor-type="wp-post" data-elementor-id="2262" class="elementor elementor-2262">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-c716dfe elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="c716dfe" data-element_type="section" data-e-type="section" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-fe781c2" data-id="fe781c2" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-3d599a0 elementor-widget elementor-widget-text-editor" data-id="3d599a0" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><strong>Las empresas en su Industria ya están innovando</strong>.  El Lead Time y el Time to Market son la diferencia entre las empresas que perdurarán en el mercado.  Conozca que posibilidades le ofrece AWS para su Transformación Digital en un <strong>entrenamiento gratuito</strong> para usted y su equipo de TI.</p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-e9a0648 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="e9a0648" data-element_type="section" data-e-type="section" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-014da33" data-id="014da33" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-d893d0c elementor-widget elementor-widget-html" data-id="d893d0c" data-element_type="widget" data-e-type="widget" data-widget_type="html.default">
				<div class="elementor-widget-container">
					<div class="wp-block-button is-style-fill" style="text-align: center"><a class="wp-block-button__link has-black-color has-luminous-vivid-amber-background-color has-text-color has-background" href="https://cloudiostrategy.com/entrenamiento-gratuito-transformacion-digital-en-aws/" target="_blank" rel="noopener"><strong>Registrarme al Entrenamiento Gratuito: Transformación Digital en AWS</strong></a></div>				</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		
]]></content:encoded>
					
					<wfw:commentRss>https://cloudiostrategy.com/endpoint-proxy-con-api-gateway/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Casos de uso de las instancias EC2 tipo T</title>
		<link>https://cloudiostrategy.com/casos-de-uso-de-las-instancias-ec2-tipo-t/</link>
					<comments>https://cloudiostrategy.com/casos-de-uso-de-las-instancias-ec2-tipo-t/#respond</comments>
		
		<dc:creator><![CDATA[Fernando Paz]]></dc:creator>
		<pubDate>Thu, 25 May 2023 13:30:05 +0000</pubDate>
				<category><![CDATA[Tecnologías]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[Computación en la Nube]]></category>
		<category><![CDATA[ec2]]></category>
		<guid isPermaLink="false">https://cloudiostrategy.com/?p=2986</guid>

					<description><![CDATA[El servicio Amazon EC2 ofrece varios tipos o familias de instancias a los usuarios, y comienzan con letras como T, M, C, I, etc., por eso aquí presentamos los casos […]]]></description>
										<content:encoded><![CDATA[
<p>El servicio Amazon EC2 ofrece varios tipos o familias de instancias a los usuarios, y comienzan con letras como T, M, C, I, etc., por eso aquí presentamos los casos de uso de las instancias EC2 tipo T.</p>



<p>Las instancias EC2 tipo T están en el grupo de propósito general, lo cual significa que su configuración es la más estándar posible y podría usarse para cargas de trabajo (workloads) que impliquen un balanceo moderado de recursos, tanto de CPU, memoria, red y acceso al almacenamiento.</p>



<p>Concretamente los siguientes son los casos de uso de las instancias EC2 tipo T recomendados por Amazon Web Services:</p>



<ol class="wp-block-list">
<li>En desarrollo y pruebas: ¿necesitas un lugar para probar nuevas ideas sin estresar tus principales servidores? las instancias tipo T pueden ser la respuesta, ya que manejan a la perfección picos ocasionales de CPU.</li>



<li>En sitios Web y aplicaciones de bajo tráfico: ¿tu sitio Web o aplicación no tiene tráfico masivo 24/7? las instancias tipo T podrían ser tu solución ideal, ya que tienen un costo más económico (especialmente la Txg), y puedes servir ese sistema ERP, CRM, etc. con una inversión moderada.</li>



<li>En microservicios: si tus microservicios necesitan un picos ocasionales para manejar tareas intensivas de CPU, las instancias tipo T están listas y pueden ayudar. Aunque hay otras opciones de cómputo, puedes usar este esquema y pasar a otro si la carga es intensiva o impredecible.</li>



<li>Para pequeñas bases de datos: para bases de datos que no necesitan siempre estar a pleno rendimiento, una instancia tipo T podría ser una opción eficiente y económica.  Cabe señalar que si tienes muchos I/O en el disco es recomendable combinar esta instancia con volúmenes #AmazonEBS de tipo io2.</li>



<li>Para servidores de respaldo: ¿tienes servidores que están en stand-by la mayoría del tiempo?, es decir están ahí para planes de continuidad. Las instancias tipo T son ideales gracias a su modelo de rendimiento &#8220;burstable&#8221; que ayudarán hasta reactivar tu esquema principal.</li>
</ol>



<p>Hay que tomar en cuenta que las instancias tipo T no son las más adecuadas para cargas de trabajo que requieren un alto rendimiento constante de CPU (ahí necesitaras instancias tipo C o M). pero para muchas otras tareas, son excelentes.</p>



<p>Hay otros tipos de instancias de propósito general y puedes ver más información en <a href="https://cloudiostrategy.com/tipos-de-instancias-ec2-en-aws/" target="_blank" rel="noreferrer noopener">Tipos de instancias EC2 en AWS</a>., donde encontrarás sus variantes como T4g, T3, T3a y T2.</p>



<p>Cada variante tienen unas características de hardware específicas, así T4g significa que usa el procesador <a href="https://cloudiostrategy.com/aws-y-sus-procesadores-graviton/" target="_blank" rel="noreferrer noopener">Graviton</a> o T3a significa que usa el procesador <a href="https://en.wikipedia.org/wiki/List_of_AMD_processors" target="_blank" rel="noreferrer noopener nofollow">AMD</a>.</p>


		<div data-elementor-type="wp-post" data-elementor-id="2262" class="elementor elementor-2262">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-c716dfe elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="c716dfe" data-element_type="section" data-e-type="section" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-fe781c2" data-id="fe781c2" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-3d599a0 elementor-widget elementor-widget-text-editor" data-id="3d599a0" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><strong>Las empresas en su Industria ya están innovando</strong>.  El Lead Time y el Time to Market son la diferencia entre las empresas que perdurarán en el mercado.  Conozca que posibilidades le ofrece AWS para su Transformación Digital en un <strong>entrenamiento gratuito</strong> para usted y su equipo de TI.</p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-e9a0648 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="e9a0648" data-element_type="section" data-e-type="section" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-014da33" data-id="014da33" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-d893d0c elementor-widget elementor-widget-html" data-id="d893d0c" data-element_type="widget" data-e-type="widget" data-widget_type="html.default">
				<div class="elementor-widget-container">
					<div class="wp-block-button is-style-fill" style="text-align: center"><a class="wp-block-button__link has-black-color has-luminous-vivid-amber-background-color has-text-color has-background" href="https://cloudiostrategy.com/entrenamiento-gratuito-transformacion-digital-en-aws/" target="_blank" rel="noopener"><strong>Registrarme al Entrenamiento Gratuito: Transformación Digital en AWS</strong></a></div>				</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		
]]></content:encoded>
					
					<wfw:commentRss>https://cloudiostrategy.com/casos-de-uso-de-las-instancias-ec2-tipo-t/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>WordPress en AWS</title>
		<link>https://cloudiostrategy.com/wordpress-en-aws/</link>
					<comments>https://cloudiostrategy.com/wordpress-en-aws/#respond</comments>
		
		<dc:creator><![CDATA[Fernando Paz]]></dc:creator>
		<pubDate>Thu, 16 Mar 2023 17:18:14 +0000</pubDate>
				<category><![CDATA[Artículos]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[Amazon Lightsail]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[Wordpress]]></category>
		<guid isPermaLink="false">https://cloudiostrategy.com/?p=2784</guid>

					<description><![CDATA[Más del 43% del sitios web en el mundo tienen como tecnología a WordPress, y en Ecuador más del 68% de sitios web son construidos con WordPress, por lo que […]]]></description>
										<content:encoded><![CDATA[
<p><a href="https://w3techs.com/technologies/overview/content_management" target="_blank" rel="noreferrer noopener nofollow">Más del 43% del sitios web en el mundo tienen como tecnología a WordPress,</a> y <a href="https://trends.builtwith.com/cms/country/Ecuador" target="_blank" rel="noreferrer noopener nofollow">en Ecuador más del 68% de sitios web son construidos con WordPress</a>, por lo que es evidente que esta tecnología al día de hoy es la plataforma líder en CMS en el mundo, y es el porque debemos saber como implementar WordPress en AWS de forma correcta.</p>



<p>En este articulo vamos a presentar los aspectos más importantes a considerar al implementar WordPress en AWS, de forma que tengamos una instalación segura escalable y con tolerancia a fallos.</p>



<div class="wp-block-rank-math-toc-block"><h2>Contenido</h2><nav><ul><li class=""><a href="#arquitectura-wordpress">Arquitectura WordPress</a><ul><li class=""><a href="#plugins">Plugins</a></li><li class=""><a href="#wp-content">wp-content</a></li></ul></li><li class=""><a href="#implementando-wordpress-en-aws-en-5-minutos">Implementando WordPress en AWS en 5 minutos</a></li><li class=""><a href="#habilitando-vpc-peering-en-amazon-lightsail">Habilitando VPC Peering en Amazon Lightsail</a></li><li class=""><a href="#conectando-wordpress-con-amazon-rds">Conectando WordPress con Amazon RDS</a><ul><li class=""><a href="#habilitacion-el-grupo-de-seguridad">Habilitación el Grupo de Seguridad</a></li><li class=""><a href="#usando-amazon-rds-con-wordpress">Usando Amazon RDS con WordPress</a></li></ul></li><li class=""><a href="#externalizando-el-sistema-de-archivos-wordpress-en-amazon-efs">Externalizando el sistema de archivos WordPress en Amazon EFS</a><ul><li class=""><a href="#habilitacion-el-grupo-de-seguridad-1">Habilitación el Grupo de Seguridad</a></li><li class=""><a href="#conectar-la-unidad-amazon-efs-con-el-servidor-wordpress">Conectar la unidad Amazon EFS con el servidor WordPress</a></li></ul></li><li class=""><a href="#habilitando-wordpress-con-amazon-elastic-load-balancer-elb">Habilitando WordPress con Amazon Elastic Load Balancer (ELB)</a></li><li class=""><a href="#resumen-de-la-arquitectura-wordpress-en-aws">Resumen de la arquitectura WordPress en AWS.</a></li><li class=""><a href="#video-implementacion-wordpress-en-aws">Video implementacion WordPress en AWS</a></li><li class=""><a href="#recomendaciones">Recomendaciones</a></li></ul></nav></div>



<h2 class="wp-block-heading" id="arquitectura-wordpress">Arquitectura WordPress</h2>



<p>Lo primero a considerar es que WordPress es un sistema monolítico, por lo que el despliegue de nuevas versiones, su performance y la estrategia de alta disponibilidad debe ser concebida como un todo, y, no esta en un paradigma distribuido como es la propuesta de la <a href="https://softwareevolutivo.com.ec/arquitectura-de-microservicios/" target="_blank" rel="noreferrer noopener nofollow">Arquitectura de Microservicios</a>.</p>



<p>El segundo aspecto es que hablamos de una arquitectura en tres capas: presentación, lógica y datos.  La capa de presentación esta compuesta por archivos HTML, CSS, JS y PHP, la capa lógica esta compuesta por archivos PHP, y, la capa de datos esta administrada por el gestor de base de datos MySQL.</p>



<p>Explicado esto, dichos componentes están distribuidos en el sistema de archivos de la siguiente forma:</p>



<ul class="wp-block-list">
<li><strong>wp-admin</strong>: Ejecutables de las herramientas de administración del sitio.</li>



<li><strong>wp-content</strong>: Todos los archivos que no son parte del CORE de WordPress y que son adicionados o eliminados de acuerdo a las decisiones del webmaster.</li>



<li><strong>wp-includes</strong>: Todos los archivos CORE para que el sitio web funcione, y ejecute funcionalidad como publicaciones, páginas, widgets y otras características.</li>



<li><strong>wp-config.php</strong>: Archivo maestro de credenciales de conexión y configuraciones principales de funcionamiento.</li>
</ul>



<p>En esta lista faltan otros archivos, que han sido omitidos porque no son importantes para esta implementación de WordPress en AWS.</p>



<h3 class="wp-block-heading" id="plugins">Plugins</h3>



<p>Como es de dominio público, WordPress trae la funcionalidad básica de un CMS, pero al mismo tiempo es fácil extender su funcionalidad a través de plugins.</p>



<p>Los plugins añaden características al CMS como protecciones de seguridad, gestión avanzada de usuarios, integración con plataformas de terceros e incluso funcionalidad de tiendas en línea (e-commerce) o plataformas educativas online.</p>



<p>Adicionalmente, a través de plugins se puede incrementar plantillas gráficas o temas gráficos, que modifican la apariencia del sitio de acuerdo a lo deseado por el cliente.</p>



<p>Todos los archivos que forman parte de estas extensiones de funcionalidad son almacenados en la carpeta <strong>wp-content/plugins</strong> o <strong>wp-content/themes</strong>, y son gestionados por el administrador del CMS.</p>



<h3 class="wp-block-heading" id="wp-content">wp-content</h3>



<p>Cabe señalar aparte este directorio, ya que como se explico en la arquitectura, allí se almacenan los archivos de la funcionalidad no estándar de WordPress.</p>



<p>Además en la carpeta <strong>wp-content/uploads</strong>, se almacenan los archivos multimedia del CMS (fotos, video y documentos).</p>



<p>Entonces, es de especial importancia entender que su contenido es dinámico, y que por lo tanto su contenido debería ser el mismo en caso de tener dos o más servidores que provean funcionalidad como un solo CMS.</p>



<p>Más adelante, veremos que es necesario externalizar esta carpeta, para permitir un escalamiento del CMS WordPress con más de un servidor.</p>



<h2 class="wp-block-heading" id="implementando-wordpress-en-aws-en-5-minutos">Implementando WordPress en AWS en 5 minutos</h2>



<p>Para implementar WordPress en AWS, inicialmente desde un punto de vista monolítico, vamos a utilizar el servicio de AWS llamado <a href="https://cloudiostrategy.com/amazon-lightsail-un-esquema-de-costo-fijo-aws/" target="_blank" rel="noreferrer noopener">Amazon Lightsail</a> (https://lightsail.aws.amazon.com/ls/webapp/home), porque nos da las herramientas más adecuadas para este primer paso.</p>



<p>Una vez dentro del servicio, creamos una instancia (https://lightsail.aws.amazon.com/ls/webapp/create/instance).</p>



<p>Luego seleccionamos el blueprint WordPress</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="642" height="743" src="https://cloudiostrategy.com/wp-content/uploads/2023/03/image.png" alt="" class="wp-image-2801" srcset="https://cloudiostrategy.com/wp-content/uploads/2023/03/image.png 642w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-259x300.png 259w" sizes="(max-width: 642px) 100vw, 642px" /></figure>



<p>Selecciona el <strong>plan mínimo</strong> (instance plan) para esta prueba y da finalizar.</p>



<p>En 5 minutos tendrás la instancia lista.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="720" src="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-1-1024x720.png" alt="" class="wp-image-2802" srcset="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-1-1024x720.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-1-300x211.png 300w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-1-768x540.png 768w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-1.png 1255w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Deberías ver el servidor aprovisionado en la región Ohio Zone A.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="539" height="411" src="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-18.png" alt="" class="wp-image-2835" srcset="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-18.png 539w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-18-300x229.png 300w" sizes="(max-width: 539px) 100vw, 539px" /></figure>



<p>Adicionalmente para los siguientes pasos, requieres saber que versión exacta de MySQL o MariaDB tienen instalado.  Para esto puedes ir a la página http://&lt;servidor-ip&gt;/wp-admin/site-health.php?tab=debug y en la pestaña &#8220;Database&#8221; encontrarás esa información.</p>



<p>El usuario es &#8220;user&#8221; y el password lo puedes saber consultando el archivo &#8220;/home/bitnami/bitnami_credentials&#8221; mediante el terminal (icono siguiente).</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="50" height="47" src="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-28.png" alt="" class="wp-image-2861"/></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="799" height="468" src="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-27.png" alt="" class="wp-image-2858" srcset="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-27.png 799w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-27-300x176.png 300w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-27-768x450.png 768w" sizes="(max-width: 799px) 100vw, 799px" /></figure>



<h2 class="wp-block-heading" id="habilitando-vpc-peering-en-amazon-lightsail">Habilitando VPC Peering en Amazon Lightsail</h2>



<p>En primer lugar debemos habilitar el VPC Peering entre Amazon Lightsail y los recursos aprovisionados fuera de este servicio, como es el caso de una base de datos Amazon RDS MySQL o unidad de red NFS gestionada con el servicioAmazon EFS.</p>



<p>Para esto ve a Amazon Lightsail (https://lightsail.aws.amazon.com/ls/webapp/home).</p>



<p>En la esquina superior derecha encontraras el menú &#8220;Account&#8221;, allí selecciona la opción también llamada &#8220;Account&#8221;.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="266" height="77" src="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-19.png" alt="" class="wp-image-2836"/></figure>



<p>En la pestaña &#8220;Advanced&#8221; vas a encontrar las opciones &#8220;VPC Peering&#8221; donde debes habilitarlo para los recursos aprovisionados fuera de Amazon Lightsail (en mi caso en Ohio).</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="833" height="564" src="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-21.png" alt="" class="wp-image-2838" srcset="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-21.png 833w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-21-300x203.png 300w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-21-768x520.png 768w" sizes="(max-width: 833px) 100vw, 833px" /></figure>



<p>Listo, ahora desde Amazon Lightsail podrás ver a nivel de red (exactamente de VPC) los recursos desplegados en la region de Ohio.</p>



<h2 class="wp-block-heading" id="conectando-wordpress-con-amazon-rds">Conectando WordPress con Amazon RDS</h2>



<p>El primer paso para poder aspirar a un esquema altamente disponible y resiliente es separar la base de datos.</p>



<p>En la implementación de WordPress en AWS usando un blueprint de Amazon Lightsail, el servidor resultante tiene tanto WordPress como la base de datos.  Eso no es escalable dado que, a la base de datos, no podríamos ponerla en un esquema de alta disponibilidad sin afectar el todo.</p>



<p>Vamos a externalizar la base de datos con Amazon RDS, que nos permitirá en su modalidad Multi-AZ implementar este requerimiento.</p>



<p>Primero vamos a aprovisionar la base de datos en Amazon RDS (https://us-east-1.console.aws.amazon.com/rds/home).</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="411" height="185" src="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-2.png" alt="" class="wp-image-2805" srcset="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-2.png 411w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-2-300x135.png 300w" sizes="(max-width: 411px) 100vw, 411px" /></figure>



<p>En la parte superior derecha asegúrate que estas en la misma región donde creaste el servidor en Amazon Lightsail (en mi caso, si miras el gráfico es en Ohio Zona A)</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="363" height="153" src="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-3.png" alt="" class="wp-image-2806" srcset="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-3.png 363w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-3-300x126.png 300w" sizes="(max-width: 363px) 100vw, 363px" /></figure>



<p>Para la configuración elige las siguientes opciones:</p>



<ul class="wp-block-list">
<li>Creación estándar.</li>



<li>Engine MariaDB con la versión 10.6.12 de acuerdo a lo identificado al crear el servidor en Amazon Lghtsail.</li>



<li>Template Dev/Test para permitir Multi-AZ.</li>



<li>Coloca una clave maestra (solo caracteres alfanuméricos).</li>



<li>Tipo de instancia db.m6g.large por ser la menos costosa al día de esta publicación.</li>



<li>Opción &#8220;Multi-AZ DB instance&#8221; para despliegue, creando una instancia standby.</li>



<li>En configuraciones adicionales, crear una base de de datos inicial, como por ejemplo &#8220;wordpress&#8221;.</li>



<li>Las demás opciones por defecto</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="779" height="733" src="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-29.png" alt="" class="wp-image-2866" srcset="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-29.png 779w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-29-300x282.png 300w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-29-768x723.png 768w" sizes="(max-width: 779px) 100vw, 779px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="781" height="381" src="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-30.png" alt="" class="wp-image-2867" srcset="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-30.png 781w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-30-300x146.png 300w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-30-768x375.png 768w" sizes="(max-width: 781px) 100vw, 781px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="774" height="603" src="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-31.png" alt="" class="wp-image-2868" srcset="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-31.png 774w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-31-300x234.png 300w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-31-768x598.png 768w" sizes="(max-width: 774px) 100vw, 774px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="773" height="224" src="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-32.png" alt="" class="wp-image-2869" srcset="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-32.png 773w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-32-300x87.png 300w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-32-768x223.png 768w" sizes="(max-width: 773px) 100vw, 773px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="771" height="240" src="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-33.png" alt="" class="wp-image-2870" srcset="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-33.png 771w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-33-300x93.png 300w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-33-768x239.png 768w" sizes="(max-width: 771px) 100vw, 771px" /></figure>



<p>La creación de una base de datos Multi-AZ va a tomar entre 10 a 20 minutos, por lo que deberás esperar antes de poder seguir al siguiente paso.</p>



<p>Aprovisionar una base de datos en Amazon RDS es fácil, pero configurarla apropiadamente de acuerdo a tu requerimiento real requiere conocer más este servicio.  Esto tanto para no incurrir en gastos como para no subestimar o sobrestimar la instancia apropiada.</p>



<p>Si deseas conocer mas de este servicios te invito a visitar la <a href="https://cloudiostrategy.com/introduccion-a-las-bases-de-datos-relacionales-en-amazon-rds/" target="_blank" rel="noreferrer noopener">Introducción a las bases de datos relacionales en Amazon RDS</a>.</p>



<p>Por último obtén el endpoint de tu nueva base de datos, en el detalle de la base de datos creada.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="383" src="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-34-1024x383.png" alt="" class="wp-image-2872" srcset="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-34-1024x383.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-34-300x112.png 300w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-34-768x287.png 768w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-34.png 1038w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1009" height="662" src="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-35.png" alt="" class="wp-image-2874" srcset="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-35.png 1009w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-35-300x197.png 300w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-35-768x504.png 768w" sizes="(max-width: 1009px) 100vw, 1009px" /></figure>



<h3 class="wp-block-heading" id="habilitacion-el-grupo-de-seguridad">Habilitación el Grupo de Seguridad</h3>



<p>La habilitación del VPC Peering anterior permite la conexión entre la VPC de la región de Amazon Lightsail con la VPC por defecto de la región Ohio para nuestra cuenta.</p>



<p>Sin embargo, no existe una regla que permita el acceso al puerto de la base de datos Amazon RDS aprovisionada.  Esto se debe hacer modificando el el grupo de seguridad al que pertenece la base de datos.  En mi caso el sg-238da74a:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="182" height="130" src="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-36.png" alt="" class="wp-image-2877"/></figure>



<p>Así que dando click en el mismo, puedes ir al grupo y adicionar un &#8220;Inbound rule&#8221; con la IP interna del servidor WordPress en Lightsail, de forma que pueda acceder al puerto 3306 a cualquier instancia que este en ese grupo.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="543" src="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-37-1024x543.png" alt="" class="wp-image-2878" srcset="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-37-1024x543.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-37-300x159.png 300w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-37-768x407.png 768w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-37-1536x814.png 1536w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-37.png 1622w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading" id="usando-amazon-rds-con-wordpress">Usando Amazon RDS con WordPress</h3>



<p>Bien, una vez que tenemos la base de datos creada, el grupo de seguridad configurado y habilitado el VPC Peering, podemos iniciar el proceso de conexión de nuestra instalación WordPress con esta base de datos.</p>



<p>Este es un tema más bien relacionado a DBAs, pero vamos a dejar las principales ideas de la migración y conexión:</p>



<p>En la consola de Amazon Lighsail identifica la instancia creada y da clic en el icono de linea de comandos &#8220;Terminal&#8221;.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="474" height="166" src="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-22.png" alt="" class="wp-image-2847" srcset="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-22.png 474w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-22-300x105.png 300w" sizes="(max-width: 474px) 100vw, 474px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="50" height="47" src="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-23.png" alt="" class="wp-image-2848"/><figcaption class="wp-element-caption">En la línea de comando debes respaldar las base de datos con un comando como:</figcaption></figure>



<pre class="wp-block-code"><code>mysqldump -u root -p bitnami_wordpress &gt; /tmp/backup.sql</code></pre>



<p>Para encontrar el password consulta el siguiente archivo:</p>



<pre class="wp-block-code"><code>cat bitnami_application_password</code></pre>



<p>Restaura los datos en el endpoint de tu nueva base de datos Amazon RDS, por ejemplo con:</p>



<pre class="wp-block-code"><code>mysql -u dbmasteruser -p dbwordpress -h ls-cee65cedbb6cf04dde8adaebc6723f90c1471ab8.cygwzfiaau2b.us-east-2.rds.amazonaws.com &lt; /tmp/backup.sql</code></pre>



<p>Detén la base de datos local con:</p>



<pre class="wp-block-code"><code>sudo /opt/bitnami/ctlscript.sh stop mariadb</code></pre>



<p>Modifica el archivo wp-config.php en la sección de conexión para que tu WordPress apunte a la instancia Amazon RDS.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1015" height="460" src="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-26.png" alt="" class="wp-image-2855" srcset="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-26.png 1015w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-26-300x136.png 300w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-26-768x348.png 768w" sizes="(max-width: 1015px) 100vw, 1015px" /></figure>



<p>Normalmente este archivo está en: &#8220;/home/bitnami/stack/wordpress&#8221; y debes editarlo como root.</p>



<p>Reinicia el servidor apache:</p>



<pre class="wp-block-code"><code>sudo /opt/bitnami/ctlscript.sh restart apache</code></pre>



<p>Excelente, en este punto tu servidor WordPress ya esta trabajando en conjunto con Amazon RDS.</p>



<h2 class="wp-block-heading" id="externalizando-el-sistema-de-archivos-wordpress-en-amazon-efs">Externalizando el sistema de archivos WordPress en Amazon EFS</h2>



<p>Para independizar los archivos que son dinámicos en WordPress, es necesario externalizar idealmente toda la carpeta wp-content.</p>



<p>Sin embargo, muchos archivos de plugins PHP son ejecutados en tiempo real cuando los usuarios del sitio Web acceden al contenido del CMS.  Por esta razón se debe combinar esta estrategia con otras técnicas de memoria cache de dichos archivos, de forma que su ejecución sea en memoria o no acudiendo al fuente del sistema de archivos.</p>



<p>En este tutorial de WordPress en AWS no vamos a tomar en cuenta la configuración de cache, pero es un tema que debes considerar en una implementación de estas características.</p>



<p>El primer paso es crear una unidad de disco en el servicio Amazon EFS (https://us-east-1.console.aws.amazon.com/efs/home).</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="413" height="167" src="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-10.png" alt="" class="wp-image-2819" srcset="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-10.png 413w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-10-300x121.png 300w" sizes="(max-width: 413px) 100vw, 413px" /></figure>



<p>Asegúrate que estés el la misma región del servidor en Amazon Lightsail.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="363" height="153" src="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-3.png" alt="" class="wp-image-2806" srcset="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-3.png 363w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-3-300x126.png 300w" sizes="(max-width: 363px) 100vw, 363px" /></figure>



<p>A continuación, selecciona la opción personalizada (Customize) al crearlo y configura los siguiente:</p>



<ul class="wp-block-list">
<li>Ubica un nombre para tu unidad</li>



<li>Selecciona &#8220;Enhanced&#8221; en las opciones de Performance y deja la sub opción &#8220;Elastic&#8221;.</li>



<li>Deja todas las demás opciones por defecto hasta finalizar la creación.</li>
</ul>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="695" src="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-11-1024x695.png" alt="" class="wp-image-2820" srcset="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-11-1024x695.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-11-300x204.png 300w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-11-768x521.png 768w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-11.png 1364w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Verás la lista de unidades EFS  una vez creada la unidad.  Selecciona de la lista la unidad que acabas de crear y ingresa a la edición de la misma.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="667" height="307" src="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-12.png" alt="" class="wp-image-2821" srcset="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-12.png 667w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-12-300x138.png 300w" sizes="(max-width: 667px) 100vw, 667px" /></figure>



<p>En el detalle selecciona la pestaña &#8220;Access points&#8221; y crea uno para que a través de este puedan conectarse tus servidores WordPress.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="682" src="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-13-1024x682.png" alt="" class="wp-image-2822" srcset="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-13-1024x682.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-13-300x200.png 300w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-13-768x512.png 768w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-13.png 1274w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Deja todas las opciones por defecto y crea el Access point.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="830" height="824" src="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-14.png" alt="" class="wp-image-2823" srcset="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-14.png 830w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-14-300x298.png 300w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-14-150x150.png 150w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-14-768x762.png 768w" sizes="(max-width: 830px) 100vw, 830px" /></figure>



<p>Una vez creado ingresa al Access point  y a continuación da clic en &#8220;Attach&#8221; para ver las instrucciones de como montar esta unidad EFS en los servidores.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="850" height="305" src="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-15.png" alt="" class="wp-image-2824" srcset="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-15.png 850w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-15-300x108.png 300w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-15-768x276.png 768w" sizes="(max-width: 850px) 100vw, 850px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="179" src="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-16-1024x179.png" alt="" class="wp-image-2825" srcset="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-16-1024x179.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-16-300x53.png 300w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-16-768x134.png 768w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-16-1536x269.png 1536w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-16.png 1588w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="277" src="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-42-1024x277.png" alt="" class="wp-image-2889" srcset="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-42-1024x277.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-42-300x81.png 300w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-42-768x208.png 768w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-42-1536x415.png 1536w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-42.png 1895w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Toma nota de ese comando que lo necesitaremos más adelante.</p>



<h3 class="wp-block-heading" id="habilitacion-el-grupo-de-seguridad-1">Habilitación el Grupo de Seguridad</h3>



<p>Del mismo modo que al aprovisionar la base de datos, al crear una unidad de almacenamiento en red Amazon RDS, vas a necesitar crear una regla &#8220;Inbound rule&#8221; para permitir que el servidor de Amazon Lightsail pueda ver dicho recurso.</p>



<p>El VPC Peering no va a ser suficiente ya que te garantiza que exista una camino para que las redes se vean, pero no para acceder al recurso específico.</p>



<p>Entonces, lo primero es identificar a que grupo de seguridad pertenece esta unidad, y eso se lo puede ver en la pestaña networking al visualizar la unidad Amazon EFS.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="522" src="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-38-1024x522.png" alt="" class="wp-image-2883" srcset="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-38-1024x522.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-38-300x153.png 300w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-38-768x391.png 768w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-38-1536x783.png 1536w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-38.png 1591w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>En mi caso es el mismo al que pertenece la base de datos, el sg-283da74a.  Sobre este adicionamos la regla para permitir el acceso desde la IP privada del servidor Amazon Lightsail al puerto 2049 que es el usado por el servicio Amazon EFS.</p>



<p>Ve entonces a los grupos de seguridad (https://us-east-2.console.aws.amazon.com/ec2/home?region=us-east-2#SecurityGroups:) y ubica el mismo.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="185" src="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-40-1024x185.png" alt="" class="wp-image-2885" srcset="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-40-1024x185.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-40-300x54.png 300w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-40-768x139.png 768w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-40-1536x278.png 1536w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-40.png 1636w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Adiciona la regla.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="177" src="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-43-1024x177.png" alt="" class="wp-image-2897" srcset="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-43-1024x177.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-43-300x52.png 300w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-43-768x132.png 768w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-43-1536x265.png 1536w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-43.png 1629w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Listo, con esto tu servidor puede acceder a la unidad de red.</p>



<h3 class="wp-block-heading" id="conectar-la-unidad-amazon-efs-con-el-servidor-wordpress">Conectar la unidad Amazon EFS con el servidor WordPress</h3>



<p>La tarea aún no ha finalizado, pues debemos montar esta unidad en nuestro servidor Amazon Lightsail y redireccionar el contenido de wp-content en la instalación a esta unidad Amazon EFS.</p>



<p>A continuación , vamos a ingresar al servidor a través de la línea de comandos.</p>



<p>Una vez allí ejecutamos los siguientes comandos:</p>



<pre class="wp-block-code"><code>sudo apt-get install -y netcat
sudo apt-get install -y nfs-common
sudo apt-get install -y nfs-common</code></pre>



<pre class="wp-block-code"><code>nc -zv &lt;ip-access-point&gt; 2049
sudo mkdir /mnt/efs
sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport &lt;ip-access-point&gt;:/ /mnt/efs</code></pre>



<p>Ve al directorio de instalación de WordPress, normalmente en &#8220;/home/bitnami/stack/wordpress&#8221;.</p>



<p>Sincronizar directorio wp-content en /mnt/efs/wp-content/ (&#8216;sudo rsync -a &#8211;progress wp-content/ /mnt/efs/wp-content/&#8217;)</p>



<p>Renombra los directorios: wp-content a wp-content_old (&#8216;sudo mv wp-content wp-content_old&#8217;)</p>



<p>Elimina el directorio antiguo y crea un symlink al nuevo para wp-content</p>



<pre class="wp-block-code"><code>sudo rm -Rf ./wp-content
sudo ln -s /mnt/efs/wp-content/ ./wp-content</code></pre>



<p>Desactiva y desinstala el plugin jetpack (por un tema de cache), y a continuación reinicia el servidor apache:</p>



<pre class="wp-block-code"><code>sudo wp plugin deactivate jetpack
sudo wp plugin uninstall jetpack
sudo /opt/bitnami/ctlscript.sh restart apache</code></pre>



<p>Felicitaciones, has conectado exitosamente tu instalación de WordPress con Amazon EFS, y de esta forma has externalizado tus archivos dinámicos.</p>



<p></p>



<h2 class="wp-block-heading" id="habilitando-wordpress-con-amazon-elastic-load-balancer-elb">Habilitando WordPress con Amazon Elastic Load Balancer (ELB)</h2>



<p>Para implementar WordPress en AWS en alta disponibilidad y con tolerancia a fallos necesitamos más de un servidor que atienda las peticiones de los clientes.</p>



<p>Para esto AWS nos proveer de balanceadores de carga, que direccionarán las peticiones a el servidor menos cargado y que este disponible.</p>



<p>El primer paso es ir a la consola de Amazon Lightsail en la pestaña de opciones &#8220;Networking&#8221; (https://lightsail.aws.amazon.com/ls/webapp/home/networking).</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="604" height="854" src="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-44.png" alt="" class="wp-image-2904" srcset="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-44.png 604w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-44-212x300.png 212w" sizes="(max-width: 604px) 100vw, 604px" /></figure>



<p>Creamos un balanceador con un nombre apropiado para nuestra instalación.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="467" height="249" src="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-45.png" alt="" class="wp-image-2905" srcset="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-45.png 467w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-45-300x160.png 300w" sizes="(max-width: 467px) 100vw, 467px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="753" height="822" src="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-47.png" alt="" class="wp-image-2907" srcset="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-47.png 753w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-47-275x300.png 275w" sizes="(max-width: 753px) 100vw, 753px" /></figure>



<p>Al crear el balanceador, el siguiente paso es adicionar el servidor WordPress a este balanceador.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="976" height="872" src="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-48.png" alt="" class="wp-image-2908" srcset="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-48.png 976w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-48-300x268.png 300w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-48-768x686.png 768w" sizes="(max-width: 976px) 100vw, 976px" /></figure>



<p>Ahora, ya tendrás publicado el balanceador y podrás acceder a tu sitio web a través de tu endpoint del mismo.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="753" height="77" src="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-49.png" alt="" class="wp-image-2909" srcset="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-49.png 753w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-49-300x31.png 300w" sizes="(max-width: 753px) 100vw, 753px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="724" src="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-50-1024x724.png" alt="" class="wp-image-2910" srcset="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-50-1024x724.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-50-300x212.png 300w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-50-768x543.png 768w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-50.png 1364w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Implementando Alta Disponibilidad (HA) en WordPress</p>



<p>Finalmente vamos a crear un servidor adicional del mismo WordPress para adicionarlo a la configuración y obtener el beneficio de alta disponibilidad en caso de muchas peticiones y tolerancia a fallos en caso de que falle el original.</p>



<p>El primer paso es ingresar a la consola Amazon Lightsail (https://lightsail.aws.amazon.com/ls/webapp/home/instances) y ingresar a la edición del servidor actual de WordPress.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="486" height="396" src="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-51.png" alt="" class="wp-image-2911" srcset="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-51.png 486w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-51-300x244.png 300w" sizes="(max-width: 486px) 100vw, 486px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="689" height="712" src="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-52.png" alt="" class="wp-image-2912" srcset="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-52.png 689w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-52-290x300.png 290w" sizes="(max-width: 689px) 100vw, 689px" /></figure>



<p>En la pestaña &#8220;Snapshots&#8221; creamos un snapshot del servidor.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="978" height="371" src="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-53.png" alt="" class="wp-image-2913" srcset="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-53.png 978w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-53-300x114.png 300w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-53-768x291.png 768w" sizes="(max-width: 978px) 100vw, 978px" /></figure>



<p>Creado el snapshot vamos a lanzar un servidor con este como template.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1004" height="482" src="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-54.png" alt="" class="wp-image-2914" srcset="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-54.png 1004w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-54-300x144.png 300w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-54-768x369.png 768w" sizes="(max-width: 1004px) 100vw, 1004px" /></figure>



<p>Asegúrate que el servidor a aprovisionar este en la misma región (en mi caso Ohio) y sea el mismo tipo de instancia.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="746" height="762" src="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-55.png" alt="" class="wp-image-2915" srcset="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-55.png 746w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-55-294x300.png 294w" sizes="(max-width: 746px) 100vw, 746px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="563" height="691" src="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-56.png" alt="" class="wp-image-2916" srcset="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-56.png 563w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-56-244x300.png 244w" sizes="(max-width: 563px) 100vw, 563px" /></figure>



<p>Deja las demás opciones por defecto y dar &#8220;Crear Instancia&#8221;.</p>



<p>Ingresa a este nuevo servidor, a la línea de comandos.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="503" height="291" src="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-57.png" alt="" class="wp-image-2917" srcset="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-57.png 503w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-57-300x174.png 300w" sizes="(max-width: 503px) 100vw, 503px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="50" height="47" src="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-23.png" alt="" class="wp-image-2848"/></figure>



<p>Identifica la IP privada del servidor.</p>



<pre class="wp-block-code"><code>ip addr</code></pre>



<p>Añade la IP (en mi caso 172.26.14.214) con &#8220;Inbound Rule&#8221; al grupo de seguridad sg-238da74a, de la siguiente forma:</p>



<ul class="wp-block-list">
<li>Una regla para acceso al puerto donde se accede a la unidad Amazon EFS.</li>



<li>Una regla para acceso al puerto donde se accede a la base de datos Amazon RDS.</li>
</ul>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="307" src="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-59-1024x307.png" alt="" class="wp-image-2922" srcset="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-59-1024x307.png 1024w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-59-300x90.png 300w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-59-768x230.png 768w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-59-1536x461.png 1536w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-59.png 1624w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Monta la unidad Amazon EFS en el nuevo servidor con el mismo comando inicial del servidor original.</p>



<pre class="wp-block-code"><code>sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport 172.31.3.222:/ /mnt/efs</code></pre>



<p>Listo, tu servidor esta lito para adicional al stack de servidores gestionados por el balanceador.</p>



<p>A continuación ve a Amazon Lightsail en la pestaña &#8220;Networking&#8221; (https://lightsail.aws.amazon.com/ls/webapp/home/networking), e ingresa al balanceador.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="507" height="506" src="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-60.png" alt="" class="wp-image-2925" srcset="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-60.png 507w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-60-300x300.png 300w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-60-150x150.png 150w" sizes="(max-width: 507px) 100vw, 507px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="987" height="814" src="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-61.png" alt="" class="wp-image-2926" srcset="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-61.png 987w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-61-300x247.png 300w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-61-768x633.png 768w" sizes="(max-width: 987px) 100vw, 987px" /></figure>



<p>Adiciona el nuevo servidor al stack.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="708" height="466" src="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-62.png" alt="" class="wp-image-2927" srcset="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-62.png 708w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-62-300x197.png 300w" sizes="(max-width: 708px) 100vw, 708px" /></figure>



<p>¡FELICITACIONES! haz implementado WordPress en AWS en alta disponibilidad y tolerancia a fallos.</p>



<h2 class="wp-block-heading" id="resumen-de-la-arquitectura-wordpress-en-aws">Resumen de la arquitectura WordPress en AWS.</h2>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="896" height="675" src="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-63.png" alt="Wordpress en AWS" class="wp-image-2928" srcset="https://cloudiostrategy.com/wp-content/uploads/2023/03/image-63.png 896w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-63-300x226.png 300w, https://cloudiostrategy.com/wp-content/uploads/2023/03/image-63-768x579.png 768w" sizes="(max-width: 896px) 100vw, 896px" /><figcaption class="wp-element-caption">WordPress en AWS Arquitectura</figcaption></figure>



<p>Acabamos de implementar WordPress en AWS en una arquitectura de alta disponibilidad y tolerancia a fallos.  Los punto a destacar son:</p>



<ul class="wp-block-list">
<li>Tenemos una base de datos redundante gracias a el aprovisionamiento en Amazon RDS Multi-AZ.</li>



<li>Tenemos resiliencia en el sistema de archivos dinámico de WordPress gracias a la unidad aprovisionada en Amazon EFS.</li>



<li>Tenemos alta disponibilidad y tolerancia a fallos, con dos servidores que entregan el servicio y un balanceador que gestiona las peticiones; esto gracias a Amazon Lightsail.</li>
</ul>



<h2 class="wp-block-heading" id="video-implementacion-wordpress-en-aws">Video implementacion WordPress en AWS</h2>



<p>Si deseas seguir este tutorial paso a paso en video puedes verlos aquí:</p>



<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/ye6iNLPJurY" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>



<h2 class="wp-block-heading" id="recomendaciones">Recomendaciones</h2>



<ul class="wp-block-list">
<li>Esta arquitectura es referencial, y por supuesto en una real hay muchas cosas que se pueden mejorar como el tema de cache, dimensionamiento de los tipos de instancias y adición de un CDN por ejemplo.</li>



<li>Un tema delicado es Amazon EFS, puesto que la capacidad de I/O va a ser fundamental en el desempeño del todo.  Por esto es importante optimizarla y monitorearla de forma contante.</li>



<li>Hay que tomar en cuenta que la base de datos, en mi experiencia, es un 50% del desempeño del sitio.  Al tener este recurso en Amazon RDS no obliga a pensar en las capacidades que tiene que tener, en red en I/O y el afinamiento de performance.  Además al estar en un esquema Multi-AZ, cualquier cambio puede tardar más de 20 minutos, por lo tanto en importante seleccionar las opciones de este recurso con cuidado y a vista de un 50% adicional de rendimiento.</li>



<li>Hay temas omitidos acá, como los certificados SSL, que son un no negociable en un esquema de producción.</li>



<li>Adicionar un CDN es una fantástica idea, por dos motivo principales: uno el performance que se ba a ganar en la solicitud de recursos de imágenes y multimedia, y, la más importante es que nos va a ayudar a minimizar múltiples ataques de red previamente a la solicitud al servicio WordPress.</li>



<li>Exite un whitepaper dedicado a las mejores prácticas de este caso de uso, lo puedes mirar en <a href="https://d1.awsstatic.com/whitepapers/wordpress-best-practices-on-aws.pdf" target="_blank" rel="noreferrer noopener nofollow">Mejores prácticas para WordPress en AWS</a>.</li>
</ul>


		<div data-elementor-type="wp-post" data-elementor-id="2262" class="elementor elementor-2262">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-c716dfe elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="c716dfe" data-element_type="section" data-e-type="section" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-fe781c2" data-id="fe781c2" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-3d599a0 elementor-widget elementor-widget-text-editor" data-id="3d599a0" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><strong>Las empresas en su Industria ya están innovando</strong>.  El Lead Time y el Time to Market son la diferencia entre las empresas que perdurarán en el mercado.  Conozca que posibilidades le ofrece AWS para su Transformación Digital en un <strong>entrenamiento gratuito</strong> para usted y su equipo de TI.</p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-e9a0648 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="e9a0648" data-element_type="section" data-e-type="section" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-014da33" data-id="014da33" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-d893d0c elementor-widget elementor-widget-html" data-id="d893d0c" data-element_type="widget" data-e-type="widget" data-widget_type="html.default">
				<div class="elementor-widget-container">
					<div class="wp-block-button is-style-fill" style="text-align: center"><a class="wp-block-button__link has-black-color has-luminous-vivid-amber-background-color has-text-color has-background" href="https://cloudiostrategy.com/entrenamiento-gratuito-transformacion-digital-en-aws/" target="_blank" rel="noopener"><strong>Registrarme al Entrenamiento Gratuito: Transformación Digital en AWS</strong></a></div>				</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		



<p>Esperamos que sea útil esta tutoríal para implementar WordPress en AWS en HA y Failover y les animamos para que dejen sus comentarios y opiniones para aprender en comunidad.</p>



<p></p>



<p></p>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://cloudiostrategy.com/wordpress-en-aws/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Como parchear servidores en AWS</title>
		<link>https://cloudiostrategy.com/como-parchear-servidores-en-aws/</link>
					<comments>https://cloudiostrategy.com/como-parchear-servidores-en-aws/#respond</comments>
		
		<dc:creator><![CDATA[Fernando Paz]]></dc:creator>
		<pubDate>Wed, 06 Apr 2022 18:00:05 +0000</pubDate>
				<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[Computación en la Nube]]></category>
		<category><![CDATA[ec2]]></category>
		<guid isPermaLink="false">https://cloudiostrategy.com/?p=2634</guid>

					<description><![CDATA[La respuesta corta a esta pregunta es a través de su servicio AWS Systems Manager (con la abreviatura SSM) y en concreto con la funcionalidad Patch Manager. Mira el proceso aquí.]]></description>
										<content:encoded><![CDATA[
<p>Una de las principales dudas de los equipos TI en relación con el aprovisionamiento de infraestructura en la Nube AWS o cualquier Nube en realidad, es como parchear servidores en AWS y más específicamente las instancias EC2.</p>



<p>La respuesta corta a esta pregunta es a través de su servicio AWS Systems Manager (con la abreviatura SSM) y en concreto con la funcionalidad <a href="https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-patch.html" rel="nofollow noopener" target="_blank">Patch Manager</a>.</p>



<p>Sin embargo, hay que mencionar que la solución AWS Systems Manager no solamente nos ayuda con la aplicación de parches a nivel del Sistema Operativo y a nivel del Software instalado, también nos ofrece una administración y monitorización completa de los recursos desplegados en AWS e incluso de los recursos On-premises que deseemos adicionar a su gestión.</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="400" height="400" src="https://cloudiostrategy.com/wp-content/uploads/2022/04/Arch_AWS-Systems-Manager_64@5x.png" alt="AWS Systems Manager" class="wp-image-2638" srcset="https://cloudiostrategy.com/wp-content/uploads/2022/04/Arch_AWS-Systems-Manager_64@5x.png 400w, https://cloudiostrategy.com/wp-content/uploads/2022/04/Arch_AWS-Systems-Manager_64@5x-300x300.png 300w, https://cloudiostrategy.com/wp-content/uploads/2022/04/Arch_AWS-Systems-Manager_64@5x-150x150.png 150w" sizes="(max-width: 400px) 100vw, 400px" /><figcaption>AWS Systems Manager</figcaption></figure></div>



<p>Es realmente impresionante el nivel de gestión que se puede alcanzar con esta herramienta para toda tu infraestructura, te animo mirar todas las posibilidades en la página <a href="http://aws.amazon.com/es/systems-manager/features" target="_blank" rel="noreferrer noopener nofollow">Características de AWS Systems Manager</a>. Por supuesto, si deseas tener una versión resumida de esta herramienta, me dejas saber en los comentarios <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> .</p>



<h2 class="wp-block-heading">Aplicando parches en instancias EC2 en AWS</h2>



<p>Vale resaltar que no es lo mismo parchear 2 o 3 instancias EC2 que parchear decenas, cientos o miles de instancias distribuidas en varias regiones a lo largo de AWS.</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="389" height="356" src="https://cloudiostrategy.com/wp-content/uploads/2022/04/Ejemplo-esquema-operacional-de-aplicacion-de-parches-en-AWS.png" alt="Ejemplo esquema operacional de aplicación de parches en AWS" class="wp-image-2640" srcset="https://cloudiostrategy.com/wp-content/uploads/2022/04/Ejemplo-esquema-operacional-de-aplicacion-de-parches-en-AWS.png 389w, https://cloudiostrategy.com/wp-content/uploads/2022/04/Ejemplo-esquema-operacional-de-aplicacion-de-parches-en-AWS-300x275.png 300w" sizes="(max-width: 389px) 100vw, 389px" /><figcaption>Ejemplo esquema operacional de aplicación de parches en AWS (Blog Aplicación de parches a sus instancias de Windows EC2 con AWS Systems Manager Patch Manager de Stefan Minhas)</figcaption></figure></div>



<p>A continuación vamos a describir un conjunto de pasos para poder aplicar los parches en instancias EC2 en AWS:</p>



<p>El <strong><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color">primer paso</mark></strong>, y parte de las buenas prácticas de aprovisionamiento de recursos en AWS, es marcar los mismos a través de AWS Tags, que son etiquetas asociadas a los recursos aprovisionados en AWS que nos permitirán identificarlos y clasificarlos de acuerdo a nuestra estrategia de Gobierno TI.</p>



<p>Ya ingresando al servicio AWS Systems Manager o SSM, el <strong><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color">segundo paso</mark></strong> es usar una Línea Base (Baseline) predefinida en la opción Patch Manager de este servicio; esta es una definición de Sistema Operativo y criticidad de actualizaciones preestablecida, y que es aplicable a nuestras instancias EC2.</p>



<p>Claro que tú puedes crear tu propia Línea Base, si tienes algún requerimiento especial que no encuentres en las múltiples opciones que encontrarás predefinidas allí.</p>



<p>Luego, como <strong><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color">tercer paso</mark></strong>, y que mi criterio es muy recomendado, especialmente si tienes desde decenas de servidores o un nivel de continuidad de negocio que lo exige, es crear Grupos para Parches (Patch groups) en tu definición de Línea Base. La idea es identificar con una etiqueta a un grupo de instancias a parchear que contengan esa definición en sus AWS Tags.</p>



<p>¡Ten cuidado!, y por esto es importante tener definidos Grupos para Parches, ya que AWS no prueba los parches antes de ponerlos a disposición en Patch Manager, porque pertenecen en su mayoría a los fabricantes del Software.</p>



<p class="has-text-align-center has-medium-font-size"><strong>AWS no prueba los parches antes de ponerlos a disposición en Patch Manager</strong>.</p>



<p>La definición de una ventana de cambios (Maintenance Windows) viene a ser el <strong><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color">cuarto paso</mark></strong>, y se la define a través del servicio AWS Systems Manager. Aquí vamos a especificar el horario, la duración y la recurrencia en la cual se va a ejecutar las acciones asociadas a la misma.</p>



<p>El <strong><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-ast-global-color-0-color">quinto paso</mark></strong>, y el más largo, es asociar la ventana de mantenimiento con la Línea Base y el Grupo para Parches, aunque también podrías asociarla con instancias específicas EC2 lo cual no sería recomendado y práctico.</p>



<p>El comando objetivo para correr la Línea Base definida es “AWS-RunPatchBaseline” y lo observarás en las opciones correspondientes en Patch Manager.</p>



<p><strong>Patch Manager no admite actualizaciones de versiones principales (major versions) de Sistemas Operativos como ir de Windows Server 2019 a 2022 o RHEL 7 a RHEL 8.</strong></p>



<p>¡Listo!, una vez realizado estos pasos, está automatizado el proceso de aplicación de parches en tus instancias EC2 en AWS y lo podrás monitorizar desde la opción Managed Instances en el servicio AWS Systems Manager.</p>



<p>Te recomiendo ver una versión más detallada de este proceso en el Blog <a href="https://aws.amazon.com/es/blogs/mt/patching-your-windows-ec2-instances-using-aws-systems-manager-patch-manager/" target="_blank" rel="noreferrer noopener nofollow">Aplicación de parches a sus instancias de Windows EC2 con AWS Systems Manager Patch Manager de Stefan Minhas</a> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> .</p>



<h3 class="wp-block-heading">Conclusiones</h3>



<p>Es completamente posible automatizar la aplicación de parches en los recursos en AWS incluso en instancias On-premises que han sido asociadas al servicio AWS Systems Manager.</p>



<p>AWS Systems Manager es un servicio para la gestión y monitorización de los recursos en AWS que nos permite mantener una administración adecuada de la Nube.</p>



<p>Patch Manager nos provee de Líneas Base predefinidas para mantener actualizados a nuestros servidores de forma automática, pero es importante comprender que AWS no prueba estás actualizaciones previamente ya que en su mayoría son de terceros, por lo que debemos considerarlo en nuestra estrategia de gestión.</p>



<p>Patch Manager maneja solamente actualizaciones menores (minor versions), no está pensado para hacer migraciones de versiones principales.</p>



<p>Hay muchas otras opciones de Patch Manager que no se han visto en esta guía de como parchear los servidores en AWS, como notificaciones, reportes y evaluación de cumplimiento; sin embargo, son muy útiles ya en un escenario empresarial y deberían considerarse.</p>


		<div data-elementor-type="wp-post" data-elementor-id="2262" class="elementor elementor-2262">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-c716dfe elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="c716dfe" data-element_type="section" data-e-type="section" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-fe781c2" data-id="fe781c2" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-3d599a0 elementor-widget elementor-widget-text-editor" data-id="3d599a0" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><strong>Las empresas en su Industria ya están innovando</strong>.  El Lead Time y el Time to Market son la diferencia entre las empresas que perdurarán en el mercado.  Conozca que posibilidades le ofrece AWS para su Transformación Digital en un <strong>entrenamiento gratuito</strong> para usted y su equipo de TI.</p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-e9a0648 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="e9a0648" data-element_type="section" data-e-type="section" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-014da33" data-id="014da33" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-d893d0c elementor-widget elementor-widget-html" data-id="d893d0c" data-element_type="widget" data-e-type="widget" data-widget_type="html.default">
				<div class="elementor-widget-container">
					<div class="wp-block-button is-style-fill" style="text-align: center"><a class="wp-block-button__link has-black-color has-luminous-vivid-amber-background-color has-text-color has-background" href="https://cloudiostrategy.com/entrenamiento-gratuito-transformacion-digital-en-aws/" target="_blank" rel="noopener"><strong>Registrarme al Entrenamiento Gratuito: Transformación Digital en AWS</strong></a></div>				</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		
]]></content:encoded>
					
					<wfw:commentRss>https://cloudiostrategy.com/como-parchear-servidores-en-aws/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
