<?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>Docker &#8211; Cloud IO Strategy</title>
	<atom:link href="https://cloudiostrategy.com/tag/docker/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=7.0</generator>

<image>
	<url>https://cloudiostrategy.com/wp-content/uploads/2023/06/cropped-favicon-32x32.png</url>
	<title>Docker &#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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">Prueba la aplicación en tu navegador con: </p>



<p class="wp-block-paragraph"><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 class="wp-block-paragraph"><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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph"><strong>IMPORTANTE:</strong> A la fecha de creación de este artículo, puedes usar Python 3.11 máximo.</p>



<p class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">Encuentra cómo hacerlo <a href="https://github.com/aws/aws-elastic-beanstalk-cli-setup" rel="nofollow noopener" target="_blank">aquí</a>.</p>



<p class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">Ve a la carpeta del proyecto (donde se descargó).</p>



<p class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph"><strong>Ignorando archivos con .ebignore</strong></p>



<p class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph"><strong>Configuración avanzada con .ebextensions</strong></p>



<p class="wp-block-paragraph">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 class="wp-block-paragraph">¿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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph"><strong>Trabajando con aplicaciones del tipo Docker</strong></p>



<p class="wp-block-paragraph">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 class="wp-block-paragraph">Muy simple y claro, y que será incluido en el archivo <code>.zip</code> gracias a nuestro archivo <code>.ebignore</code>.</p>



<p class="wp-block-paragraph">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 class="wp-block-paragraph"><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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph"><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 class="wp-block-paragraph">Prueba tu aplicación visitando precisamente el url de la salida:</p>



<p class="wp-block-paragraph"><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 class="wp-block-paragraph">Finaliza el despliegue <strong>IMPORTANTE</strong> <strong>IMPORTANTE</strong> <strong>IMPORTANTE</strong></p>



<p class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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>
	</channel>
</rss>
