Введение
В этом руководстве вы узнаете, как развернуть контейнеризированное приложение с помощью AWS App Runner. AWS App Runner — это полностью управляемый сервис, который позволяет разработчикам быстро развертывать контейнеризированные веб-приложения и API в масштабе, не требуя предварительного опыта работы с инфраструктурой. Начните с исходного кода или образа контейнера. App Runner автоматически собирает и развертывает веб-приложение, а также распределяет нагрузку трафика с использованием шифрования. 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Теперь мы создадим каркас приложения CDK, используя TypeScript в качестве языка программирования:
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), которые развертываются в определенной учетной записи. Учетная запись/регион, где развертываются эти ресурсы, можно настроить в стеке.
В этой категории вам потребуется создать следующие ресурсы:
- Сервис запуска приложений: так запускается ваш контейнер.
- Результат: Отображается URL-адрес вашей службы.
Разверните службу контейнеров.
Для развертывания сервиса необходимо сначала импортировать соответствующие модули (вместо...). В приведенном ниже фрагменте кода замените версию 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Эти модули предоставляют доступ ко всем компонентам, необходимым для развертывания веб-приложения.
Далее необходимо указать, какой контейнер использовать, создав службу 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 собирает из Dockerfile в каталоге SampleApp. Прежде чем использовать 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 и Enter CDK начнет удаление всей инфраструктуры и предоставление обновлений. После завершения вы увидите следующее:
Are you sure you want to delete: InfraStack (y/n)? y
InfraStack: destroying...
✅ InfraStack: destroyedРезультат
Вы завершили руководство по развертыванию веб-приложения с помощью AWS App Runner.












