Introducción
En esta guía, aprenderá a implementar una aplicación en contenedores con AWS App Runner. AWS App Runner es un servicio totalmente administrado que permite a los desarrolladores implementar rápidamente aplicaciones web y API en contenedores a escala sin necesidad de experiencia previa en infraestructura. Comience con el código fuente o una imagen de contenedor. App Runner compila e implementa automáticamente la aplicación web y equilibra la carga del tráfico mediante cifrado. App Runner también escala automáticamente para satisfacer sus necesidades de tráfico.
Requisitos previos
- Una cuenta de AWS
- Asegúrese de haber configurado correctamente su AWS CDK.
Paso 1: Crear la aplicación CDK
Primero, asegúrese de haber descargado y extraído el código de muestra para esta guía al que se hace referencia en la página de introducción (en lugar de La dirección del código de muestra como referencia, y Reemplazar con el nombre de archivo correspondiente):
wget <EXAMPLE_CODE_URL>
unzip <DOWNLOADED_FILE_NAME>
cd getting-started-containers-app-runner-mainA continuación, asegúrese de tener instalado CDK v2.
cdk --versionAhora creamos la aplicación esqueleto CDK usando TypeScript como nuestro lenguaje de elección:
mkdir infra
cd infra
cdk init app --language typescriptEsto tendrá el siguiente resultado:
Applying project template app for typescript
# Welcome to your CDK TypeScript project!
This is a blank project for TypeScript development with CDK.
The `cdk.json` file tells the CDK Toolkit how to execute your app.
## Useful commands
* `npm run build` compile typescript to js
* `npm run watch` watch for changes and compile
* `npm run test` perform the jest unit tests
* `cdk deploy` deploy this stack to your default AWS account/region
* `cdk diff` compare deployed stack with current state
* `cdk synth` emits the synthesized CloudFormation template
Executing npm install...
✅ All done!Generar el código para la pila de recursos
Vaya al archivo lib/infra-stack.ts. Aquí es donde escribe el código para la pila de recursos que desea crear. Una pila de recursos es un conjunto de recursos de infraestructura en la nube (en este caso, todos los recursos de AWS) que se aprovisionan en una cuenta específica. La cuenta o región donde se aprovisionan estos recursos se puede configurar en la pila.
En esta categoría, querrás crear los siguientes recursos:
- Servicio App Runner: así es como se ejecuta su contenedor.
- Salida: Esto muestra la URL de su servicio.
Implementar el servicio de contenedor
Para implementar su servicio, primero debe importar los módulos correctos (en lugar de En el fragmento de código a continuación, reemplace la versión de CDK que recuperó anteriormente.
npm i @aws-cdk/aws-apprunner-alpha@<CDK_VERSION>-alpha.0Luego edita el archivo lib/infra-stack.ts para agregar las dependencias en la parte superior del archivo:
import apprunner = require('@aws-cdk/aws-apprunner-alpha'); // Allows working with App Runner resources
import { DockerImageAsset } from 'aws-cdk-lib/aws-ecr-assets'; // Allows building the docker image and uploading to ECR
import * as path from "path"; // Helper for working with file pathsEstos módulos proporcionan acceso a todos los componentes necesarios para implementar una aplicación web.
A continuación, debe especificar el contenedor que se usará mediante la creación de un servicio App Runner. En este tutorial, compilaremos la imagen del contenedor proporcionada con la aplicación de ejemplo en SampleApp y dejaremos que el CDK se encargue de la compilación, la carga y la implementación del contenedor. También crearemos un rol de IAM vacío para asociarlo con el servicio en futuros tutoriales. Para crear el servicio y el rol de IAM, agregue el siguiente código:
// The code that defines your stack goes here
//If you are running on a Mac using the new M1 chip, please change `../SampleApp` to `../../SampleApp`.
const imageAsset = new DockerImageAsset(this, 'ImageAssets', {
directory: path.join(__dirname, '../SampleApp'),
});
const service = new apprunner.Service(this, 'Service', {
source: apprunner.Source.fromAsset({
imageConfiguration: { port: 80 },
asset: imageAsset
})
});
new cdk.CfnOutput(this, "apprunner-url", {
exportName: "apprunner-url",
value: service.serviceUrl,
description: "URL to access service"
});En el código anterior, creaste un servicio con App Runner para ejecutar un contenedor que CDK compila desde un Dockerfile en el directorio SampleApp. Antes de poder usar el CDK, debes iniciarlo; esto crea la infraestructura necesaria para que el CDK administre la infraestructura en tu cuenta.
cdk bootstrapDebería ver un resultado similar a este:
⏳ Bootstrapping environment aws://0123456789012/<region>...
✅ Environment aws://0123456789012/<region> bootstrappedUna vez completado el arranque, ejecute el CDK para implementar toda la infraestructura necesaria:
cdk deployDebería ver un resultado similar al siguiente:

El CDK le avisará antes de crear la infraestructura, ya que creará la infraestructura que modificará la configuración de seguridad; en este caso, mediante la creación de roles de IAM y grupos de seguridad. Para implementar, presione "y" y luego Intro. El CDK implementará toda la infraestructura que definió. Tardará unos minutos en completarse. Una vez que se esté ejecutando, verá actualizaciones como esta:

Una vez completado, verás el resultado con un enlace a la URL pública para acceder a tu servicio, como se muestra a continuación:

Paso 2 – Limpiar recursos
Eliminar la infraestructura basada en la nube
AWS CDK facilita la eliminación de su infraestructura con un solo comando. Para eliminar toda la infraestructura creada, use el comando cdk kill; esto solo eliminará la infraestructura creada en este tutorial.
Verás una confirmación:
cdk destroy
Are you sure you want to delete: InfraStack (y/n)? Tras pulsar "y" y Enter, CDK comenzará a eliminar toda la infraestructura y a proporcionar actualizaciones. Una vez completado, verá lo siguiente:
Are you sure you want to delete: InfraStack (y/n)? y
InfraStack: destroying...
✅ InfraStack: destroyedResultado
Ha completado el tutorial Implementar una aplicación web con AWS App Runner.










