Как настроить 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