Рубрики
Без рубрики

Концепция того, как использовать Apigateway StageVariables, Lambda версию, псевдоним, переменная среды, все вместе

В предыдущей части этой серии мы знаем, как установить переменные среды внутри нашей Lambda. В этом… Tagged с помощью AWS, CDK, Serverless, Python.

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

В этой части я расскажу о том, как мы можем использовать переменные сцены API Gateway, лямбда -версию, псевдоним, переменная среды.

Мы должны сначала понять, как работает весь процесс, тогда мы можем легко создать это с помощью кода CDK.

Давайте представим этот сценарий

  • У вас есть API, который будет использовать функцию лямбды
  • Вы делаете функцию лямбды
  • Эта функция будет в производстве, используемом пользователем реального мира
  • Но вы также хотите отредактировать эту лямбду или постоянно разрабатывать новые вещи для этого Лямбда
  • А что, если у вас есть ошибка при редактировании кода Lambda?

Тогда это повлияет на вас, пользователь реального мира, верно? Приложение будет сбоем, а затем уйдет пользователь, даст вам несколько неприятных отзывов. НЕ ХОРОШО! Можете ли вы представить, как больно и стресс при развитии таких вещей?

Тогда поэтому лямбда -версия и псевдоним пригодится.

Как Lambda версия Работа? Представьте себе:

  • Вы делаете функцию лямбды
  • По умолчанию, каждая функция лямбда имеет $ Последнее Версия, именно здесь вы продолжаете редактировать/разрабатывать свой код, это только использование вами.
  • Когда все в порядке, вы публикуете новый Версия Для функции, давайте скажем Версия: 1 Анкет Пользователь Real World будет доступ к этому Версия: 1 Анкет
  • Мы будем продолжать повторять процесс, который является кодом редактирования в $ Последнее , опубликовать новый Версия Каждый раз, когда все в порядке для производства.

Делая это, вы продолжаете редактировать код в $ Последнее , любые изменения в $ Последнее не будет влиять на Версия: 1 , поэтому любая ошибка не будет раздражать вашему пользователю реального мира.

Теперь у вас есть 2 Версия Для твоей лямбды, $ Последнее и Версия: 1 , тогда как мы можем установить, что пользователь производства будет получить доступ к Версия: 1 и разработчик (США) будет получить доступ $ Последнее ?

Вот почему Лямбда псевдоним пригодиться.

Процесс псевдоним и версия Похоже:

  • Теперь нам нужно создать 2 псевдоним Для нашего Lambda по имени девчонка и продлевать
  • Dev псевдоним -> указывать на -> $ Последнее версия
  • Prod псевдоним -> указывать на -> Версия: 1 (или 2,3,4,5, зависит)

Псевдоним сделан, но теперь ваше приложение для фронта по -прежнему не знает, какая лямбда Версия Чтобы получить доступ.

Вот почему apigateway StageVariables Приходите в игру.

Теперь мы можем создать 2 Стадия Для вашего API по имени девчонка и продлевать

Это даст нам 2 URL, которые выглядят так:

  • https://{app-id} .execute-api. {aws-region} .amazonaws.com/dev
  • https://{app-id} .execute-api. {aws-region} .amazonaws.com/prod

Теперь установите Переменные сцены Для каждой стадии API как:

  • Dev Стадия: Lambdaalias: Dev
  • Prod Стадия: Lambdaalias: Prod

Тогда весь процесс будет выглядеть так:

API dev stage -> Lambda dev alias -> Lambda `$Latest` version

API prod stage -> Lambda prod alias -> Lambda `version:1`

Затем внутри функции Lambda мы вернем StageVariables и используйте его с переменные среды что мы встроили в предыдущая часть :

import boto3
import os

def MyFirstLambdaHandler(event, context):
    client = boto3.client('dynamodb')

    # Get the stageVariable lambdaAlias
    stage = event['stageVariables']['lambdaAlias']

    # Get the environment variable depends on stage variable
    if stage == 'prod':
        tableName = os.environ['production_db_url']

    if stage == 'dev':
        tableName = os.environ['development_db_url']

    # Then here you can access different table depends on environment

Теперь мы соединяем точки:

API dev -> Lambda dev alias -> Lambda version:$Latest -> environment variables 

API prod -> Lambda prod alias -> Lambda version:1 -> environment variables

Для резюме: TLDR, все в разработке остается в разработке, что не повлияет на производство.

Теперь у вас есть базовая концепция для лямбды Версия , Псевдоним , Apigateway Переменные сцены и переменные среды.

Теперь вы знаете, как постоянно разрабатывать свою лямбду, но в то же время не будет fu ** ked Весь производственное приложение, когда при разработке произошла некоторая ошибка.

В следующей части сериала я расскажу:

  • Как создать лямбда -версию с использованием cdk
  • Как создать псевдоним лямбда и нажмите на разные версии лямбда с помощью CDK
  • Как создать разные стадии развертывания шлюза API и установить переменные стадии с помощью CDK

Если вы не можете дождаться так долго, вот моя предыдущая работа по этой теме:

Прежде чем уйти, Если вам нравится этот сериал или вы найдете это полезным, чтобы купить мне кофе 😊🤞 за 5 долларов США или более. Я подготовлю репо Github для всей этой серии учебных пособий и договоримся от отдельного коммита для каждой части. Это будет доступно только для моего сторонника, потому что я потратил много времени, чтобы подготовить это. В любом случае, я ценю вас здесь. Хорошего дня.

Кричать мне в Твиттере: @upupkenchoong

Оригинал: “https://dev.to/upupkenchoong/concept-to-use-apigateway-stagevariables-lambda-version-alias-environment-variable-all-together-h8j”