使用 AWS App Runner 运行 Web 应用程序

0 股票
0
0
0
0

介绍

本指南将介绍如何使用 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 应用程序的教程。.

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

您可能也喜欢