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 • Equip 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?

Juga una estona abans de marxar

ELS NOSTRES SERVEIS

Com et podem ajudar

Intel·ligència artificial

Agents d'IA, chatbots i assistents intel·ligents que automatitzen tasques i atenen els teus clients 24/7 per millorar l'eficiència del teu negoci.

Més info

Desenvolupament de programari

Aplicacions web, mòbils i d'escriptori, intranets, e-commerce, SaaS i plataformes de gestió dissenyades per a les necessitats concretes de la teva empresa.

Més info

Serveis cloud

Migració, infraestructura, hosting gestionat, alta disponibilitat i seguretat en Microsoft Azure i Amazon Web Services perquè el teu negoci escali sense límits.

Més info

Ciberseguretat i pentesting

Auditories de seguretat, test d'intrusió (pentesting) i protecció d'aplicacions, dades i infraestructura on-premise i cloud, amb hacking ètic i compliment normatiu.

Més info

Business Intelligence

Quadres de comandament i anàlisi de dades amb Power BI: integrem les teves fonts, dissenyem dashboards i KPIs i convertim les teves dades en decisions.

Més info

Automatització de processos

Automatitzem tasques repetitives i connectem les teves aplicacions amb n8n, Power Automate, Make i RPA, eliminant treball manual i augmentant la productivitat.

Més info

Formació per a empreses

Formem els teus equips en tecnologia amb criteri: desenvolupament web, bases de dades, Git, bones pràctiques i seguretat, automatització amb n8n, intel·ligència artificial per a empreses i creació de solucions d'IA amb Azure AI Foundry.

Més info

Auditoria de codi

Auditem el codi que creguis tu, el teu equip o una IA: et diem què està bé i què millorar, el securitzem i el deixem llest per a producció, web o app.

Més info

Generació d'imatges amb IA

Creem per tu les imatges que necessita el teu negoci amb intel·ligència artificial: producte, xarxes, publicitat, il·lustració i avatars. Tu ens dius què vols i t'ho lliurem llest per fer servir.

Més info

Generació de vídeos amb IA

Creem per tu vídeos amb intel·ligència artificial: promocionals, per a xarxes, presentadors virtuals, doblatge i animacions. Ens comptes la idea i t'ho lliurem muntat i llest per publicar.

Més info

Avatars conversacionals amb IA

Creem avatars conversacionals amb IA —humans digitals amb cara i veu— que atenen els teus clients i equips amb el coneixement de la teva empresa, a la teva web, monitors interactius, WhatsApp o Teams.

Més info

Màrqueting Online i IA

Google Ads, Meta Ads, LinkedIn Ads i posicionament en motors d'IA (GEO/AEO): captem clients i fem que la teva marca aparegui on et busquen, també a ChatGPT, Gemini i Perplexity.

Més info

Tens un projecte en ment?

Explica'ns la teva visió i la convertim en una solució de programari. Sigui quin sigui l'abast, fem realitat la teva idea.

Live Chat