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 read • Q2BSTUDIO Team

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.

A BREAK?

Play for a moment before you go

OUR SERVICES

How we can help you

Artificial intelligence

AI agents, chatbots, and intelligent assistants that automate tasks and serve your customers 24/7 to improve the efficiency of your business.

More info

Software Development

Web, mobile, and desktop applications, intranets, e-commerce, SaaS, and management platforms designed for your company's specific needs.

More info

Cloud services

Migration, infrastructure, managed hosting, high availability, and security on Microsoft Azure and Amazon Web Services to help your business scale without limits.

More info

Cybersecurity and pentesting

Security audits, penetration testing and protection of applications, data and infrastructure on-premise and cloud, with ethical hacking and regulatory compliance.

More info

Business Intelligence

Dashboards and data analysis with Power BI: we integrate your sources, design dashboards and KPIs and turn your data into decisions.

More info

Process automation

We automate repetitive tasks and connect your applications with n8n, Power Automate, Make, and RPA, eliminating manual work and increasing productivity.

More info

Training for Companies

We train your teams in technology with criteria: web development, databases, Git, best practices and security, automation with n8n, artificial intelligence for companies and creation of AI solutions with Azure AI Foundry.

More info

Code Auditing

We audit the code that you, your team or an AI create: we tell you what is good and what to improve, we secure it and make it ready for production, web or app.

More info

AI Image Generation

We create for you the images that your business needs with artificial intelligence: product, networks, advertising, illustration and avatars. You tell us what you want and we deliver it ready to use.

More info

AI Video Generation

We create videos with artificial intelligence for you: promotional, networking, virtual presenters, dubbing and animations. You tell us the idea and we will deliver it assembled and ready to publish.

More info

AI Conversational Avatars

We create conversational avatars with AI – digital humans with a face and voice – that serve your customers and teams with the knowledge of your company, on your website, interactive monitors, WhatsApp or Teams.

More info

Online Marketing and AI

Google Ads, Meta Ads, LinkedIn Ads and AI Engine Positioning (GEO/AEO): we attract customers and make your brand appear where they search for you, also on ChatGPT, Gemini and Perplexity.

More info

Do you have a project in mind?

Tell us your vision and we'll turn it into a software solution. Whatever the scope, we make your idea real.

Live Chat