Гид по технологиям

Создание SQS-очереди в AWS с помощью Terraform (регион eu-west-3)

• 4 min read • DevOps • Обновлено 18 Nov 2025
SQS с Terraform в eu-west-3
SQS с Terraform в eu-west-3

Коротко о задаче

В этой статье мы создадим стандартную очередь SQS с помощью Terraform в регионе eu-west-3 и прикрепим к ней политику, которая разрешит отправку сообщений. Предполагается, что у вас уже есть базовые знания по SQS и Terraform. Если вам нужен пример подписки SQS на SNS — это выходит за рамки этой статьи.

В примере используется стандартная очередь. Для подробного списка аргументов и свойств ресурса Terraform для SQS см. официальную документацию Terraform (этот материал не содержит всех возможных опций).

Важно: в примере политика разрешает Principal “*” для действия “sqs:SendMessage” — это опасная конфигурация для production. См. раздел безопасности ниже.

Предварительные требования

  1. Базовое понимание Terraform.
  2. Установленный Terraform.
  3. Аккаунт AWS.
  4. access_key и secret_key пользователя IAM AWS с правами на создание и удаление SQS очередей.

Что мы сделаем

  1. Напишем конфигурационные файлы Terraform для SQS.
  2. Создадим очередь SQS через Terraform.
  3. Удалим созданную очередь через Terraform.

1. Конфигурация Terraform для SQS

Создайте файл main.tf, где описан ресурс очереди и политика. В этом примере регион задан как eu-west-3 — при желании поменяйте на другой регион.

Исходный код доступен в репозитории автора (ссылка в оригинале).

File: main.tf
provider "aws" {
    access_key = "${var.access_key}"
    secret_key = "${var.secret_key}"
    region = "eu-west-3"
}

resource "aws_sqs_queue" "my_first_sqs" {
  name = var.sqs_name
}

resource "aws_sqs_queue_policy" "my_sqs_policy" {
  queue_url = aws_sqs_queue.my_first_sqs.id

  policy = <

Здесь:

  • name: значение задаётся в файле variables.tf.
  • queue_url: идентификатор берётся из ресурса aws_sqs_queue.my_first_sqs.

Добавьте access_key и secret_key в файл terraform.tfvars (этот пользователь должен иметь достаточно прав для операций SQS).

File: terraform.tfvars
access_key = ""
secret_key = ""

Создайте файл variables.tf чтобы не хардкодить значения в main.tf. При желании замените значение переменной sqs_name.

File: variables.tf
variable "access_key" {
        description = "Access key of AWS IAM User with the required permissions for SQS Queue creation and deletion"
}
variable "secret_key" {
        description = "Secret key of AWS IAM user with the required permissions for SQS Queue creation and deletion"
}


variable "sqs_name" {
        description = "Name of the sqs queue to be created. You can assign any unique name for the Queue"
        default = "my-first-sqs"
}

Здесь sqs_name по умолчанию = my-first-sqs — замените при необходимости.

Иллюстрация: пример конфигурации SQS в Terraform

2. Создание очереди (команды Terraform)

После подготовки main.tf, terraform.tfvars и variables.tf можно выполнять команды Terraform в каталоге с этими файлами.

Инициализация рабочего каталога (загружаются провайдеры и плагины):

terraform init

Вывод команды terraform init

Создание плана — посмотреть, какие ресурсы будут созданы/изменены:

terraform plan

Результат terraform plan

Применение плана — создание очереди и политики в AWS:

terraform apply

Результат terraform apply

После успешного применения можно проверить очередь в AWS SQS-консоли.

Созданная очередь в AWS SQS

3. Удаление очереди

Когда очередь больше не нужна, её можно удалить командой:

terraform destroy

Эта команда попросит подтверждение и удалит все ресурсы, управляемые конфигурацией. После удаления очередь восстановить нельзя — будьте внимательны.

Вывод terraform destroy

Безопасность и потенциальные риски

  • Политика с “Principal”: “*” открывает возможность отправлять сообщения любой сущности в интернете. Это может привести к спаму, дополнительным затратам и нарушению безопасности. В production используйте явные IAM-пользователи, роли или ограничьте адреса/учётные записи.
  • Никогда не храните access_key/secret_key в публичных репозиториях. Для CI/CD используйте переменные окружения, секреты или AWS IAM роли для EC2/контейнеров.
  • Проверьте политики SQS на предмет минимально необходимого набора действий (принцип least privilege).

Альтернативные подходы

  • AWS Console: можно создать очередь вручную через веб-интерфейс.
  • CloudFormation / CDK: инфраструктура как код другими инструментами.
  • Использовать aws_iam_role и aws_iam_policy для более точного управления доступом вместо глобальной очередной политики.

Когда это не сработает (типичные ошибки)

  • Неправильные или отсутствующие AWS credentials — ошибка авторизации.
  • Регион задан неверно: создаёте в одном регионе, смотрите в другом.
  • Имя очереди уже занято (для FIFO-очередей или в некоторых сценариях): проверяйте уникальность.
  • Ограничения аккаунта/квоты в AWS.

Краткая методология (мини-алгоритм)

  1. Подготовьте variables.tf и terraform.tfvars с безопасным хранением ключей.
  2. Напишите main.tf с aws_sqs_queue и aws_sqs_queue_policy.
  3. terraform init -> terraform plan -> terraform apply.
  4. Проверка в консоли AWS SQS.
  5. terraform destroy при необходимости удалить ресурсы.

Чек-лист по ролям

  • DevOps:
    • Убедиться, что доступы хранятся в секретном хранилище.
    • Настроить backend для Terraform state (S3 + DynamoDB для блокировок).
  • Разработчик:
    • Проверить, что имя очереди и её политика соответствуют требованиям приложения.
  • Инженер по безопасности:
    • Проверить политику доступа, закрыть Principal “*” и задокументировать риск.

Критерии приёмки

  • Очередь SQS создана и видна в консоли AWS в регионе eu-west-3.
  • Политика прикреплена и её ARN соответствует созданной очереди.
  • terraform apply завершился успешно без ошибок.
  • terraform destroy корректно удаляет созданные ресурсы.

Справочные команды (cheat sheet)

  • Инициализация: terraform init
  • План: terraform plan
  • Применение: terraform apply
  • Удаление: terraform destroy

Глоссарий (1 строка)

  • SQS: сервис очередей сообщений AWS для асинхронной передачи данных между компонентами.
  • Terraform: инструмент «инфраструктура как код» для определения и управления облачными ресурсами.

Резюме

Мы создали стандартную SQS-очередь в регионе eu-west-3 с помощью Terraform, рассмотрели файлы main.tf, variables.tf и terraform.tfvars, выполнили команды init/plan/apply и показали удаление через terraform destroy. Особое внимание уделено безопасности политики доступа — в большинстве случаев Principal “*” недопустим.

Важно: перед размещением в production пересмотрите политику доступа и способ хранения AWS-ключей.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро