介绍
本指南将介绍如何使用 AWS App Runner 部署容器化应用程序。AWS App Runner 是一项完全托管的服务,使开发人员能够快速大规模地部署容器化 Web 应用程序和 API,而无需任何基础设施经验。您可以从源代码或容器镜像开始。App Runner 会自动构建和部署 Web 应用程序,并通过加密实现流量负载均衡。App Runner 还会根据您的流量需求自动扩展或缩减资源。.
先决条件
- AWS账户
- 请确保您已正确配置 AWS CDK。
步骤 1 – 创建 CDK 应用程序
首先,请确保您已下载并解压本指南简介页面中提到的示例代码(而不是……)。示例代码的地址作为参考,以及(替换为相应的文件名):
wget <EXAMPLE_CODE_URL>
unzip <DOWNLOADED_FILE_NAME>
cd getting-started-containers-app-runner-main接下来,请确保您已安装 CDK v2。
cdk --version现在我们使用 TypeScript 作为首选语言来创建 CDK 框架应用程序:
mkdir infra
cd infra
cdk init app --language typescript这将产生以下输出:
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!生成资源栈的代码
请打开 lib/infra-stack.ts 文件。您可以在这里编写要创建的资源堆栈的代码。资源堆栈是一组云基础设施资源(在本例中为所有 AWS 资源)的集合,这些资源已在特定账户中配置。您可以在堆栈中配置这些资源的账户/区域。.
在此类别中,您需要创建以下资源:
- 应用运行器服务:这是容器运行的方式。.
- 输出:此处显示您的服务网址。.
部署容器服务
要部署您的服务,您必须首先导入正确的模块(而不是在下面的代码片段中,替换为您之前检索到的 CDK 版本。.
npm i @aws-cdk/aws-apprunner-alpha@<CDK_VERSION>-alpha.0然后编辑 lib/infra-stack.ts 文件,在文件顶部添加依赖项:
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 paths这些模块提供了对部署 Web 应用程序所需所有组件的访问权限。.
接下来,您需要通过创建 App Runner 服务来指定要使用的容器。在本教程中,我们将使用示例应用程序提供的容器镜像 SampleApp 构建容器,并由 CDK 处理容器的构建、上传和部署。我们还将创建一个空的 IAM 角色,以便在后续教程中将其与服务关联。要创建服务和 IAM 角色,请添加以下代码:
// 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"
});在上面的代码中,您使用 App Runner 创建了一个服务,用于运行 CDK 根据 SampleApp 目录中的 Dockerfile 构建的容器。在使用 CDK 之前,您需要对其进行引导——这将创建 CDK 管理您帐户中基础架构所需的必要基础架构:
cdk bootstrap您应该看到类似如下的输出:
⏳ Bootstrapping environment aws://0123456789012/<region>...
✅ Environment aws://0123456789012/<region> bootstrapped引导程序启动完成后,运行 CDK 来部署所有必需的基础架构:
cdk deploy您应该看到类似以下内容的输出:
CDK 会在创建基础架构之前提示您,因为它将创建基础架构并更改安全配置——在本例中,是通过创建 IAM 角色和安全组。要部署,请按 y,然后按 Enter 键。CDK 现在将部署您定义的所有基础架构。此过程需要几分钟才能完成。运行后,您将看到如下更新:
完成后,您将看到输出结果,其中包含一个指向公共 URL 的链接,用于访问您的服务,如下所示:

第二步——清理资源
淘汰基于云的基础设施
AWS CDK 让您只需一条命令即可轻松移除基础设施。要移除所有已创建的基础设施,请使用 `cdk kill` 命令——此命令只会移除本教程中创建的基础设施。.
您将看到确认信息:
cdk destroy
Are you sure you want to delete: InfraStack (y/n)? 按下 y 键并回车后,CDK 将开始移除所有基础架构并提供更新。完成后,您将看到以下内容:
Are you sure you want to delete: InfraStack (y/n)? y
InfraStack: destroying...
✅ InfraStack: destroyed结果
您已完成使用 AWS App Runner 部署 Web 应用程序的教程。.












