Ускорьте разработку на местном уровне: отладка и тестирование AWS SAM с помощью Terraform

Вы устали от утомительного процесса отладки и тестирования приложений AWS SAM (модель бессерверных приложений)? Не смотрите дальше! В этой статье блога мы рассмотрим, как можно ускорить рабочий процесс локальной разработки, объединив возможности интерфейса командной строки AWS SAM и Terraform. Так что хватайте свой любимый напиток и вперед!

Прежде чем мы начнем, давайте кратко обсудим, что такое интерфейс командной строки AWS SAM и Terraform. AWS SAM CLI — это инструмент командной строки, который позволяет локально создавать, тестировать и отлаживать бессерверные приложения, определенные с использованием спецификации AWS SAM. С другой стороны, Terraform — это инструмент «инфраструктура как код», который позволяет вам определять и предоставлять ресурсы инфраструктуры различным поставщикам облачных услуг, включая AWS.

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

Метод 1: использование локального выполнения AWS SAM CLI

CLI AWS SAM предоставляет локальную среду выполнения, имитирующую среду выполнения AWS Lambda. Вы можете использовать эту функцию для локального запуска приложений AWS SAM и быстрого внесения изменений в код. Вот пример использования интерфейса командной строки AWS SAM для локального вызова функции Lambda:

sam local invoke MyFunction --event event.json

Метод 2: объединение Terraform и AWS SAM CLI

Чтобы воспользоваться преимуществами Terraform и AWS SAM CLI, вы можете использовать Terraform для предоставления необходимых ресурсов AWS для вашего приложения SAM. Такой подход позволяет вам определить код вашей инфраструктуры и приложения в одной конфигурации Terraform. Вот пример того, как вы можете использовать Terraform для развертывания приложения SAM:

resource "aws_sam_application" "my_app" {
  name                   = "my-app"
  template_file          = "template.yaml"
  package_type           = "Image"
  image_repository_type  = "ECR"
  image_repository       = "my-ecr-repo"
}
resource "aws_sam_function" "my_function" {
  function_name    = "MyFunction"
  package_type     = "Image"
  image_uri        = aws_sam_application.my_app.package_image_uri
  timeout          = 10
}

Метод 3. Локальное тестирование с помощью Terraform и AWS SAM CLI

Для проведения локального тестирования вы можете использовать функцию поставщика Terraform вместе с интерфейсом командной строки AWS SAM. Это позволяет автоматизировать процесс развертывания необходимых ресурсов инфраструктуры, развертывания приложения SAM и проведения его тестов. Вот пример того, как вы можете использовать поставщика local-execв Terraform для выполнения команд AWS SAM CLI:

resource "aws_sam_application" "my_app" {
  # ... SAM application configuration ...
}
resource "aws_sam_function" "my_function" {
  # ... Lambda function configuration ...
}
resource "null_resource" "test_resource" {
  provisioner "local-exec" {
    command = "sam local invoke MyFunction --event event.json"
    working_dir = "${path.module}"
  }
  depends_on = [
    aws_sam_application.my_app,
    aws_sam_function.my_function
  ]
}

Объединив Terraform с интерфейсом командной строки AWS SAM, вы сможете автоматизировать настройку, развертывание и тестирование бессерверных приложений, что сделает процесс локальной разработки более простым и эффективным.

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