Как настроить AWS TypeScript CDK и развернуть сервис калькулятора в AWS Lambda через API Gateway.
В этом кратком руководстве будут показаны шаги по развертыванию лямбда-выражения TypeScript, который развертывается за API-шлюзом и может использоваться для вычисления суммы двух чисел.
Это вводное руководство, и потребуется дополнительная работа, чтобы подготовить его к работе, но мы надеемся, что это руководство поможет вам в этом.
Шаг 1. Установите AWS CLI
Следуйте инструкциям на следующей странице AWS, чтобы установить AWS: https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html
Если установка AWS CLI прошла успешно, выполнение следующей команды должно дать результаты
aws --version
Это должно привести к результатам, подобным приведенным ниже (в зависимости от вашей ОС и установленной версии AWS CLI). Если AWS CLI не установлен успешно, вы получите предупреждающее сообщение.
aws-cli/2.1.16
Шаг 2. Настройте интерфейс командной строки AWS
Следуйте инструкциям на следующей странице AWS, чтобы настроить интерфейс командной строки AWS: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config
Это важно, поскольку он сообщает интерфейсу командной строки AWS, какую учетную запись AWS и регион использовать.
Шаг 3. Установите Node.js
Требуется Node.js, поскольку это проект TypeScript, и мы будем использовать TypeScript CDK.
Установите Node.js, следуя инструкциям на сайте Node.js - https://nodejs.org/en/
Выполнение следующей команды:
node --version
Должен дать результаты, подобные следующим (в зависимости от вашей ОС и установленной версии узла)
v14.17.3
Шаг 4. Установите AWS CDK
Для работы с CDK требуется AWS TypeScript CDK.
Выполните следующую команду, чтобы установить CDK
npm install -g aws-cdk
Чтобы убедиться, что CDK установлен правильно, выполните следующую команду
cdk --version
Это должно дать результаты, подобные следующим (в зависимости от вашей ОС и установленной версии CDK)
1.115.0 (build f0ca40f)
Шаг 5. Настройте проект CDK
Выполните следующую команду, чтобы создать новую папку и cd в нее
mkdir calculator-lambda && cd calculator-lambda
Выполните следующую команду, чтобы запустить проект CDK
cdk init app --language typescript
В отдельном окне терминала запустите команду watch, которая будет отслеживать изменения по мере их внесения в проект.
npm run watch
Шаг 6. Установите Lambda Construct
Конструкция AWS CDK Lambda требуется, поскольку мы хотим развернуть Lambda в наших учетных записях AWS.
Чтобы установить конструкцию aws-lambda, выполните следующую команду
npm install @aws-cdk/aws-lambda
Шаг 7. Создайте лямбда-калькулятор
Создайте папку в корне вашего проекта (на том же уровне, что и bin и lib) под названием lambda.
Добавьте в папку лямбда файл с именем Calculator.js (lambda / Calculator.js).
Внутри Calculator.js добавьте следующий контент
exports.handler = async function (event) { let num1 = 5; let num2 = 10; let operation = "addition"; let result = 0; if (event.queryStringParameters && event.queryStringParameters.num1) { console.log("num1: " + event.queryStringParameters.num1); num1 = parseInt(event.queryStringParameters.num1); } if (event.queryStringParameters && event.queryStringParameters.num2) { console.log("num2: " + event.queryStringParameters.num2); num2 = parseInt(event.queryStringParameters.num2); } if (event.queryStringParameters && event.queryStringParameters.operation) { console.log("operation: " + event.queryStringParameters.operation); operation = event.queryStringParameters.operation; } switch (operation) { case "multiplication": { result = num1 * num2; break; } case "division": { result = num1 / num2; break; } case "subtraction": { result = num1 - num2; break; } case "addition": { result = num1 + num2; break; } default: { result = num1 + num2; break; } } console.log("Result: " + result); return { statusCode: 200, headers: { "Content-Type": "text/plain" }, body: result }; };
Этот код предназначен исключительно для демонстрации функциональности, предлагаемой CDK, и развертывания лямбда-выражения. Если никакая операция не передана, выполняется операция сложения. Если числа не переданы, используются числа по умолчанию 5 и 10. Опять же, требуется дополнительная работа, чтобы подготовить этот код.
Шаг 8. Добавьте Lambda в стек
Теперь мы добавили наш лямбда-код, но пока он не будет получен CDK.
В вашем любимом текстовом редакторе откройте файл lib / Calculator-lambda-stack.ts.
Вверху файла добавьте импорт конструкции aws-lambda под импортом aws-cdk / core, добавив эту строку
import * as lambda from '@aws-cdk/aws-lambda';
Заменить строку:
// The code that defines your stack goes here
Со следующим кодом:
const calculator = new lambda.Function(this, 'CalculatorHandler', { runtime: lambda.Runtime.NODEJS_14_X, code: lambda.Code.fromAsset('lambda'), handler: 'calculator.handler' });
Этот код сообщает CDK о развертывании ранее созданной лямбды в нашей учетной записи AWS.
Шаг 9. Установите API Gateway
API-шлюз используется для вызова функций калькулятора из наших браузеров или из таких инструментов, как Postman.
Чтобы иметь возможность использовать API-шлюз, нам необходимо установить конструкцию cdk для API-шлюза.
Это можно установить, выполнив следующую команду
npm install @aws-cdk/aws-apigateway
В вашем любимом текстовом редакторе откройте файл lib / Calculator-lambda-stack.ts.
Вверху файла добавьте импорт конструкции aws-apigateway под импортом aws-lambda, добавив эту строку
import * as apigw from '@aws-cdk/aws-apigateway';
Чтобы CDK можно было развернуть на шлюзе API, нам нужно указать его в файле Calculator-lambda-stack.ts.
Ниже, где мы определили лямбда-функцию калькулятора - добавьте следующий код.
new apigw.LambdaRestApi(this, 'Endpoint', { handler: calculator });
Окончательная версия Calculator-lambda-stack.ts должна выглядеть так
import * as cdk from '@aws-cdk/core'; import * as lambda from '@aws-cdk/aws-lambda'; import * as apigw from '@aws-cdk/aws-apigateway'; export class CalculatorLambdaStack extends cdk.Stack { constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) { super(scope, id, props); const calculator = new lambda.Function(this, 'CalculatorHandler', { runtime: lambda.Runtime.NODEJS_14_X, code: lambda.Code.fromAsset('lambda'), handler: 'calculator.handler' }); new apigw.LambdaRestApi(this, 'Endpoint', { handler: calculator }); } }
Шаг 10. Настройте среду AWS для CDK
В самый первый раз, когда вы устанавливаете стек CDK в среду AWS, вам необходимо настроить его с помощью стека начальной загрузки.
Этот стек можно установить, выполнив следующую команду
cdk bootstrap
Шаг 11. Разверните лямбда-выражение калькулятора в аккаунте AWS
На этом шаге весь код, с которым мы только что работали, будет развернут в нашей учетной записи AWS.
Нам просто нужно просто запустить следующую команду, чтобы сообщить CDK о развертывании наших изменений.
cdk deploy
Когда будет предложено принять изменения - введите y
Если развертывание прошло успешно - вы должны увидеть результат, подобный следующему (URL-адреса будут разными для каждого пользователя)
Outputs: CalculatorLambdaStack.Endpoint8024A810 = https://cm8mcvb9g4.execute-api.us-east-1.amazonaws.com/prod/
Обратите внимание на CalculatorLambdaStack.Endpoint, поскольку он будет использоваться в следующем разделе для тестирования.
Шаг 12. Проверьте работоспособность
В этом разделе мы будем использовать конечную точку API Gateway, полученную на последнем шаге. Следующие шаги требуют, чтобы вы
По умолчанию: операция не указана, num1 или num2 - будет использоваться операция сложения, num1 = 5 и num2 = 10.
‹ApiGatewayEndpoint /›
например, https://cm8mcvb9g4.execute-api.us-east-1.amazonaws.com/prod/
Дополнение: ‹apiGatewayEndpoint /› ? операция = сложение & num1 = 10 & num2 = 20
например: https://cm8mcvb9g4.execute-api.us-east-1.amazonaws.com/prod?operation=addition&num1=10&num2=20
Вычитание: ‹apiGatewayEndpoint /› ? operation = subtraction & num1 = 30 & num2 = 14
например, https://cm8mcvb9g4.execute-api.us-east-1.amazonaws.com/prod?operation=subtraction&num1=30&num2=14
Умножение: ‹apiGatewayEndpoint /› ? operation = multiplication & num1 = 30 & num2 = 14
например: https://cm8mcvb9g4.execute-api.us-east-1.amazonaws.com/prod?operation=multiplication&num1=30&num2=14
Подразделение: ‹apiGatewayEndpoint /› ? operation = Division & num1 = 30 & num2 = 6
например: https://cm8mcvb9g4.execute-api.us-east-1.amazonaws.com/prod?operation=division&num1=30&num2=6
Шаг 13. Удалите ресурсы AWS
Теперь, когда это руководство завершено, вы можете удалить ресурсы, чтобы поддерживать порядок в своей учетной записи AWS.
Чтобы удалить все сгенерированные ресурсы AWS из вашей учетной записи, выполните следующую команду
cdk destroy
Когда будет предложено подтвердить, что вы хотите удалить ресурсы, введите y
Заключение
В этом руководстве показано, как настроить AWS TypeScript CDK и развернуть сервис калькулятора в AWS Lambda, который обслуживается шлюзом API.
Как упоминалось в начале, этот код не готов к работе и представляет собой всего лишь вводное руководство.
Если вы хотите просмотреть код этого руководства - он доступен здесь -
Больше контента на plainenglish.io