POLITICA DE COOKIES

Q2BSTUDIO.COM utiliza cookies técnicas, analíticas, de sesión y de publicidad con la finalidad de prestar un mejor servicio. No obstante, necesitamos su consentimiento explícito para poder utilizarlas. Así mismo puede cambiar la configuración de las cookies u obtener más información aquí .

Desplegando Go en Docker para AWS App Runner

Guía práctica: Desplegar una app Go en AWS App Runner con MongoDB en EC2, seguridad de red y buenas prácticas para AWS y Azure

Publicado el 07/09/2025

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.

Fin del artículo, inicio de la diversión
Construyendo software juntos

Dando vida a tus ideas desde 2008

Diseñamos aplicaciones móviles y de escritorio innovadoras que cumplen con tus requisitos específicos y mejoran la eficiencia operativa.
Más info
Cuéntanos tu visión
Sea cual sea el alcance, podemos convertir tu idea en realidad. Envíanosla y charlemos sobre tu proyecto o una colaboración futura.
Contáctanos
artículos destacados
Live Chat
Enviado correctamente.

Gracias por confiar en Q2BStudio