Desplegando Go en Docker para AWS App Runner

Guía práctica para desplegar una app Go con MongoDB en EC2 y publicarla con AWS App Runner, usando ECR, GitHub Actions y OIDC, con buenas prácticas de seguridad y redes en AWS y Azure.

7 sept 2025 • 5 min de lectura • Equipo Q2BSTUDIO

Inteligencia-Artificial-

AWS App Runner es un servicio completamente gestionado de aplicaciones en contenedor de Amazon Web Services diseñado para simplificar el ciclo de vida de construir, desplegar y escalar aplicaciones web y APIs. En esta guía práctica desplegaremos una aplicación Go containerizada con una base de datos MongoDB ejecutándose en EC2, y la publicaremos en App Runner. Además, te mostraremos buenas prácticas de redes y seguridad, y cómo esto encaja con un enfoque moderno de servicios cloud aws y azure.

En Q2BSTUDIO acompañamos a empresas en su viaje cloud y de modernización de aplicaciones a medida e inteligencia artificial, con foco en ciberseguridad, automatización y servicios inteligencia de negocio. Si buscas un partner para llevar tu arquitectura al siguiente nivel, descubre nuestros servicios cloud en AWS y Azure y nuestro enfoque de software a medida y aplicaciones a medida.

Paso 1 Clonar el repositorio del proyecto. Usaremos el repo tasky una app de gestión de tareas en Go que persiste en MongoDB disponible en GitHub.

Paso 2 Construir y publicar la imagen en Amazon ECR con GitHub Actions. El repositorio ya incluye un Dockerfile. Crea el repositorio ECR y añade este flujo en tu repo ajustando variables y sin usar credenciales de larga duración.

name: Build and Push to ECR

on:

push:

branches: [main]

env:

AWS_REGION: eu-west-1

ECR_REPOSITORY: tasky

ACCOUNT_ID: tu_id_de_cuenta

ROLE_NAME: github-actions-role

permissions:

id-token: write

contents: read

jobs:

build-and-push:

runs-on: ubuntu-latest

steps:

- name: Checkout

uses: actions/checkout@v4

- name: Configure AWS credentials

uses: aws-actions/configure-aws-credentials@v4

with:

role-to-assume: arn:aws:iam::${{ env.ACCOUNT_ID }}:role/${{ env.ROLE_NAME }}

role-session-name: github_action_session

aws-region: ${{ env.AWS_REGION }}

- name: Login to Amazon ECR

id: login-ecr

uses: aws-actions/amazon-ecr-login@v2

- name: Build and push image

env:

ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}

run: docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:latest . && docker push $ECR_REGISTRY/$ECR_REPOSITORY:latest

Paso 3 Configurar OIDC para GitHub Actions en AWS. AWS recomienda OIDC frente a claves de acceso de larga duración. Crea el proveedor OIDC y una IAM Role de asunción web para tu repositorio.

Crear proveedor OIDC con AWS CLI

aws iam create-open-id-connect-provider --url https://token.actions.githubusercontent.com --client-id-list sts.amazonaws.com --thumbprint-list 6938fd4d98bab03faadb97b34396831e3780aea1

Crear la role github-actions-role con política de confianza que permita sts AssumeRoleWithWebIdentity desde el proveedor oidc token.actions.githubusercontent.com con condición de aud igual a sts.amazonaws.com y sub igual a repo usuarioGitHub tasky ref refs heads main. Asigna permisos mínimos para ECR como ecr GetAuthorizationToken ecr PutImage ecr InitiateLayerUpload y ecr CompleteLayerUpload entre otros.

Haz push a main y verifica en ECR que la imagen tasky latest está disponible.

Paso 4 Desplegar MongoDB en EC2. Lanza una instancia t3.micro con Ubuntu en la misma región y VPC donde App Runner tendrá salida. En el Security Group abre TCP 27017 solo para la red interna de tu VPC o para el conector VPC de App Runner. Evita 0.0.0.0 0 en producción.

Instalación de MongoDB 7 en Ubuntu

curl -fsSL https://pgp.mongodb.com/server-7.0.asc | sudo gpg --dearmor -o /usr/share/keyrings/mongodb-server-7.0.gpg

echo deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list

sudo apt update

sudo apt install -y mongodb-org

mongod --version

sudo systemctl start mongod

sudo systemctl enable mongod

sudo systemctl status mongod

Paso 5 Crear usuario administrador en MongoDB y habilitar autenticación. Conecta con mongosh, cambia a la base admin y crea un usuario con rol userAdminAnyDatabase y readWriteAnyDatabase. Después edita etc mongod.conf para permitir conexiones externas controladas y activa authorization enabled. Reinicia con sudo systemctl restart mongod.

Ejemplo de red en mongod.conf

net:

port: 27017

bindIp: 0.0.0.0,::

security:

authorization: enabled

Paso 6 Crear el servicio de App Runner. En la consola de App Runner elige From container registry, selecciona la imagen de ECR y configura las variables de entorno. Para MONGODB_URI usa el Private IP de la instancia EC2 y no el Public IP. La aplicación Go expone el puerto 8080, así que ajusta el puerto de la app en App Runner a 8080. Ejemplo de MONGODB_URI mongodb://admin:contraseña_privada@private_ip_ec2:27017 admin o la base correspondiente con opciones de auth si aplican.

Paso 7 Red y conectividad. En Networking selecciona Custom VPC y crea o reutiliza un VPC Connector que apunte a subredes privadas con rutas hacia la instancia EC2. Asegúrate de que el Security Group del conector puede hablar con el SG de la instancia en el puerto 27017 y que hay rutas adecuadas. Con esto App Runner podrá acceder a MongoDB mediante la IP privada.

Paso 8 Despliegue y prueba. Lanza el servicio. Cuando esté en estado Running copia el Default domain de App Runner, regístrate en la aplicación, crea tareas y verifica que los datos persisten. Puedes cerrar sesión y volver a iniciar para comprobar la persistencia en MongoDB.

Limpieza. Elimina el servicio de App Runner y termina la instancia EC2 cuando acabes para evitar costes innecesarios. Si quieres, borra la imagen del repositorio ECR.

Buenas prácticas y seguridad

- Limita el puerto 27017 a orígenes internos SG a SG en lugar de 0.0.0.0 0

- Usa secretos gestionados para credenciales por ejemplo AWS Secrets Manager integrándolos como variables en App Runner

- Implementa políticas IAM de mínimo privilegio y OIDC con condiciones de sub al repositorio rama y entorno adecuados

- Monitorea con CloudWatch logs y métricas, añade alarmas y activa auto scaling de App Runner

En Q2BSTUDIO combinamos cloud nativo con software a medida, ia para empresas, agentes IA y ciberseguridad para acelerar la entrega de valor. También diseñamos cuadros de mando con power bi y servicios inteligencia de negocio para extraer insights accionables. Si necesitas diseñar una plataforma escalable, segura y preparada para IA, cuenta con nosotros.

Recursos recomendados

- Documentación de AWS App Runner

- Guías de instalación de MongoDB en Ubuntu

- Mejores prácticas de IAM con OIDC en GitHub Actions

Palabras clave recomendadas aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA, power bi.

¿UNA PAUSA?

Juega un momento antes de irte

NUESTROS SERVICIOS

Cómo podemos ayudarte

Inteligencia artificial

Agentes de IA, chatbots y asistentes inteligentes que automatizan tareas y atienden a tus clientes 24/7 para mejorar la eficiencia de tu negocio.

Más info

Desarrollo de software

Aplicaciones web, móviles y de escritorio, intranets, e-commerce, SaaS y plataformas de gestión diseñadas para las necesidades concretas de tu empresa.

Más info

Servicios cloud

Migración, infraestructura, hosting gestionado, alta disponibilidad y seguridad en Microsoft Azure y Amazon Web Services para que tu negocio escale sin límites.

Más info

Ciberseguridad y pentesting

Auditorías de seguridad, test de intrusión (pentesting) y protección de aplicaciones, datos e infraestructura on-premise y cloud, con hacking ético y cumplimiento normativo.

Más info

Business Intelligence

Cuadros de mando y análisis de datos con Power BI: integramos tus fuentes, diseñamos dashboards y KPIs y convertimos tus datos en decisiones.

Más info

Automatización de procesos

Automatizamos tareas repetitivas y conectamos tus aplicaciones con n8n, Power Automate, Make y RPA, eliminando trabajo manual y aumentando la productividad.

Más info

Formación para empresas

Formamos a tus equipos en tecnología con criterio: desarrollo web, bases de datos, Git, buenas prácticas y seguridad, automatización con n8n, inteligencia artificial para empresas y creación de soluciones de IA con Azure AI Foundry.

Más info

Auditoría de código

Auditamos el código que creas tú, tu equipo o una IA: te decimos qué está bien y qué mejorar, lo securizamos y lo dejamos listo para producción, web o app.

Más info

Generación de imágenes con IA

Creamos por ti las imágenes que necesita tu negocio con inteligencia artificial: producto, redes, publicidad, ilustración y avatares. Tú nos dices qué quieres y te lo entregamos listo para usar.

Más info

Generación de vídeos con IA

Creamos por ti vídeos con inteligencia artificial: promocionales, para redes, presentadores virtuales, doblaje y animaciones. Nos cuentas la idea y te lo entregamos montado y listo para publicar.

Más info

Avatares conversacionales con IA

Creamos avatares conversacionales con IA —humanos digitales con cara y voz— que atienden a tus clientes y equipos con el conocimiento de tu empresa, en tu web, monitores interactivos, WhatsApp o Teams.

Más info

Marketing Online e IA

Google Ads, Meta Ads, LinkedIn Ads y posicionamiento en motores de IA (GEO/AEO): captamos clientes y hacemos que tu marca aparezca donde te buscan, también en ChatGPT, Gemini y Perplexity.

Más info

¿Tienes un proyecto en mente?

Cuéntanos tu visión y la convertimos en una solución de software. Sea cual sea el alcance, hacemos realidad tu idea.

Live Chat