Практическое введение для начинающих

В этом руководстве мы узнаем, как создать стек Dynamo DB с помощью AWS CDK Toolkit вместе с Java и Gradle, а также синтезировать шаблон AWS CloudFormation. И мы также увидим, как развернуть ваше приложение в вашей учетной записи.

Что такое AWS Cloud Development Kit (CDK)?

AWS Cloud Development Kit »или, вкратце, AWS CDK - это среда разработки программного обеспечения с открытым исходным кодом от AWS с единственной целью - упростить и увлекательно определить облачную инфраструктуру на вашем любимом языке программирования и развернуть ее с помощью AWS CloudFormation.

Подготовка облачных приложений может быть сложным процессом, требующим выполнения действий вручную, написания пользовательских сценариев, поддержки шаблонов или изучения языков, специфичных для предметной области. AWS CDK использует знакомые и выразительные возможности языков программирования для моделирования ваших приложений. Он предоставляет вам высокоуровневые компоненты, называемые конструкциями, которые предварительно настраивают облачные ресурсы с проверенными значениями по умолчанию, поэтому вы можете создавать облачные приложения, не будучи экспертом.

Приложение AWS CDK может быть написано на TypeScript, JavaScript, Python, Java или C #, которое использует AWS CDK для определения инфраструктуры AWS. Приложение определяет один или несколько стеков. Стеки (эквивалентные стекам AWS CloudFormation) содержат конструкции, каждая из которых определяет один или несколько конкретных ресурсов AWS, таких как корзины Amazon S3, функции Lambda, таблицы Amazon DynamoDB и т. Д.

Чтобы установить CDK, выполните следующую команду в cmd.

npm install -g aws-cdk

AWS CDK Важные команды

Синтезируйте шаблон из своего приложения

Приложения AWS CDK фактически представляют собой всего лишь определение вашей инфраструктуры с помощью кода. Когда приложения CDK выполняются, они создают (или «синтезируют», говоря языком CDK) шаблон AWS CloudFormation для каждого стека, определенного в вашем приложении.

Чтобы синтезировать приложение CDK, используйте команду синтезатора CDK. В нашем проекте мы добавим эту команду в файл сценария сборки Gradle.

cdk synth

Загрузка среды

Многие создаваемые вами стеки AWS CDK будут включать активы: внешние файлы, которые развертываются вместе со стеком, например образы Docker для функций AWS Lambda. AWS CDK загружает их в корзину Amazon S3 или другие контейнеры, чтобы они были доступны AWS CloudFormation во время развертывания. Для развертывания необходимо, чтобы эти контейнеры уже существовали в учетной записи и в регионе, в котором выполняется развертывание. Их создание называется начальной загрузкой.

При первом развертывании приложения AWS CDK в среде (учетной записи / регионе) вам потребуется установить «стек начальной загрузки». Этот стек включает ресурсы, необходимые для работы инструментария. Например, стек включает корзину S3, которая используется для хранения шаблонов и ресурсов в процессе развертывания.

Вы можете использовать команду начальной загрузки CDK, чтобы установить стек начальной загрузки в среду. В нашем проекте мы добавим эту команду в файл сценария сборки Gradle.

cdk bootstrap

Затем мы можем использовать CDK deploy для развертывания приложения CDK:

cdk deploy 

Что такое Dynamo DB?

Amazon DynamoDB - это база данных «ключ-значение» и документов, которая обеспечивает производительность в миллисекундах, измеряемую одним числом, в любом масштабе. Это полностью управляемая, многорегиональная, многоактивная, надежная база данных со встроенными функциями безопасности, резервным копированием и восстановлением, а также кэшированием в памяти для приложений интернет-масштаба. DynamoDB может обрабатывать более 10 триллионов запросов в день и может поддерживать пики более 20 миллионов запросов в секунду.

Предпосылки

Для выполнения этого руководства вы должны обладать знаниями начального или среднего уровня программирования на Java 8/11, знакомством с Gradle, а также иметь общее представление о сервисах AWS.

Необходимые инструменты и технологии:

  1. AWS CLI
  2. Учетная запись и пользователь AWS
  3. Node.js
  4. IDE для вашего языка программирования
  5. Набор инструментов AWS CDK
  6. Java 8/11
  7. Весенний ботинок
  8. Gradle

Шаг 01: Настройка инструментария AWS CDK с помощью Gradle

Чтобы начать работу с этим проектом, сначала нам нужно установить Node.js на ваш компьютер. AWS CDK использует Node.js (›= 10.3.0). Чтобы установить Node.js, посетите сайт node.js. Windows: если в вашей системе установлена ​​старая версия Node.js, может потребоваться запустить установку .msi от имени администратора. Если у вас уже установлен Node.js, убедитесь, что у вас есть совместимая версия:

Настройка проекта

Создайте проект Gradle для загрузки Spring и импортируйте его в предпочитаемую среду IDE. В этом руководстве мы будем создавать наше приложение в подмодуле Deploy services. Вы можете удалить файл src основного проекта. Создайте еще один модуль с именем deploy-services, импортируйте его в файл settings.gradle основного проекта и обновите.

Модуль Deploy-Services

Модуль Deploy Services будет содержать основную точку входа в приложение. Сначала мы создадим два файла Java CdkDeployApp.java и CdkDeployStack.java в каталоге основного проекта для кода Java в приложении. Затем мы создадим в корне файлы cdk.json и cdk.context.json.

  • ~/CdkWorkshopApp.java - это точка входа для приложения CDK, оно загружает стек, определенный в ~/CdkWorkshopStack.java
  • ~/CdkWorkshopStack.java - это место, где определяется основной стек вашего приложения CDK. Это файл, с которым мы будем проводить большую часть времени.
  • cdk.json сообщает набору инструментов, как запускать ваше приложение.
  • cdk.context.json - это место, где AWS CDK кэширует значения контекста, полученные из вашей учетной записи AWS.

Затем мы собираемся перенести нашу логику сборки с Groovy на Kotlin, чтобы написать несколько узловых команд, которые будут объяснены позже в руководстве.

Файлы сценария Groovy DSL используют расширение имени файла .gradle, а файлы сценария Kotlin DSL используют расширение имени файла .gradle.kts. Чтобы активировать Kotlin DSL, просто переименуйте файл Gradle Build Script (build.gradle) в расширение .gradle.kts.

Настройка build.gradle.kts

Перед тем, как приступить к реализации, давайте настроим наш файл build.gradle.kts. Сначала удалите существующие исходные коды в файле сценария сборки. Импортируйте NodeExtension & NpxTask и настройте версию узла.

Что касается основного шага, нам нужно определить наш основной класс как точку входа в приложение. Следовательно, мы должны добавить наш основной класс внутри блоков приложения.

Переменная с именем env должна быть объявлена ​​,, которая будет использоваться позже для добавления имени при развертывании нашего приложения (например, prod / dev / stg).

Затем мы настроим наши команды CDK в файле Gradle как;

task<NpxTask>(“synth”) { 
description = “Generate CDK artifacts”
command = “cdk” 
args = listOf(“synth”, “-c”, “env=$env”)}
task<NpxTask>(“deploy”) { 
description = “Deploy CDK components” 
command = “cdk” 
args = listOf(“deploy”, “*”, “-c”, “env=$env”) 
doFirst { 
   “Deploying env:$env” }
}
task<NpxTask>(“destroy”) { 
description = “Destroy CDK components” 
command = “cdk” 
args = listOf(“destroy”, “$env”, “-c”, “env=$env”, “ — force”) doFirst { 
   “Destroying platform for env:$env” }
}

Затем необходимо добавить важные зависимости в файл сценария, который является ядром AWS CDK и динамической базой данных. Готовый файл сценария сборки можно найти ниже.

Шаг 02: Создание приложения

Точка входа в приложение

Давайте создадим ~/CdkWorkshopApp.java

Этот код загружает и создает экземпляр класса CdkDeployStack из файла ~/CdkDeployStack.java. Он также содержит данные учетной записи AWS.

Значения полей AWS-ACCOUNT и AWS-REGION в файлах JSON следует заменить соответствующими данными вашей учетной записи.

Основной стек

Давайте создадим основной стек нашего приложения. В этом суть нашего приложения.

Единица развертывания в AWS CDK называется стеком. Все ресурсы AWS, определенные в рамках стека, прямо или косвенно, предоставляются как единое целое.

Поскольку стеки AWS CDK реализуются через стеки AWS CloudFormation, они имеют те же ограничения, что и AWS CloudFormation.

В приложении AWS CDK можно определить любое количество стеков. Здесь мы создали DynamoDbStack.

Создание класса Util

Давайте настроим нашу переменную env, которую мы определили в файле сценария сборки.

Класс CDK Util просто добавляет значение переменной env, которое мы предоставляем, к содержимому приложения. После развертывания нашего приложения мы должны указать значение переменной env.

Создание стека Dynamo DB

Помимо использования существующих конструкций, таких как ведро S3, мы также можем писать наши собственные конструкции. В AWS CDK все конструкции равны. Конструкция AWS CDK, такая как s3.Bucket или sns.Topic, ведет себя так же, как конструкция, импортированная из сторонней библиотеки, которую кто-то опубликовал через NPM или Maven, или во внутренний репозиторий пакетов вашей компании.

Чтобы объявить новую конструкцию, мы расширили базовый класс Construct. Эта библиотека включает конструкции, которые представляют все ресурсы, доступные на AWS. Например, класс s3.Bucket представляет корзину Amazon S3, а класс dynamodb.Table представляет таблицу Amazon DynamoDB. Объявив конструкцию, мы создали таблицу в Dynamo DB.

Эти конструкции разработаны, чтобы помочь вам выполнять общие задачи в AWS, часто с использованием нескольких видов ресурсов.

Переходя к методам получения PK и SK,

Первичные ключи определяют где и как ваши данные будут храниться в разделах. Схема Key может состоять из двух ключей:

  • Ключ раздела (PK) также известен как HASH.
  • Ключ сортировки (SK) также известен как ДИАПАЗОН.

Уникальность ключа заключается в следующем:

  • При создании простого первичного ключа значение PK может быть уникальным
  • При создании составного первичного ключа комбинированные PK и SK должны быть уникальными

При использовании ключа сортировки записи в разделе логически группируются в порядке возрастания.

Настройка cdk.json и cdk.context.json

Значения полей AWS-ACCOUNT, AWS-ACCOUNT-REGION, VPC-ID и VPC-SUBNET-ID в файлах JSON следует заменить соответствующими данными вашей учетной записи.

В файле cdk.json значение «app» содержит команду сборки. Для Windows его следует использовать как есть, но для Linux его следует изменить на,

“app”: “cd ../ && ./gradlew deploy:run”

Развертывание нашего приложения

Чтобы развернуть наше приложение, откройте cmd / Git Bash из корневой папки проекта и введите

./gradlew clean build deploy -Penv=<env>

Значение для ‹env› должно быть указано с командой сборки, и оно может быть основано на среде. В нашем случае он задается как «dev», поэтому он будет добавлен ко всем именам стека, которые мы создаем.

После успешной сборки вы можете просмотреть стеки, созданные в вашей учетной записи AWS.

Войдите в Консоль AWS и перейдите в CloudFormation. Здесь был создан наш стек.

Далее заходим в DynamoDB. Здесь была создана наша таблица с заданным нами именем и добавленной к нему переменной env.

Если вы дочитали эту статью до конца, теперь у вас будет опыт работы со всеми основными ингредиентами для использования AWS CDK с Java и Gradle, а также научитесь успешно создавать стек DynamoDB.

Надеюсь, вам понравилась эта статья. Спасибо за прочтение!

Увидимся в следующей статье! ✌🏼

Больше контента на plainenglish.io