Создание SQS-очереди в AWS с помощью Terraform (регион eu-west-3)
Коротко о задаче
В этой статье мы создадим стандартную очередь SQS с помощью Terraform в регионе eu-west-3 и прикрепим к ней политику, которая разрешит отправку сообщений. Предполагается, что у вас уже есть базовые знания по SQS и Terraform. Если вам нужен пример подписки SQS на SNS — это выходит за рамки этой статьи.
В примере используется стандартная очередь. Для подробного списка аргументов и свойств ресурса Terraform для SQS см. официальную документацию Terraform (этот материал не содержит всех возможных опций).
Важно: в примере политика разрешает Principal “*” для действия “sqs:SendMessage” — это опасная конфигурация для production. См. раздел безопасности ниже.
Предварительные требования
- Базовое понимание Terraform.
- Установленный Terraform.
- Аккаунт AWS.
- access_key и secret_key пользователя IAM AWS с правами на создание и удаление SQS очередей.
Что мы сделаем
- Напишем конфигурационные файлы Terraform для SQS.
- Создадим очередь SQS через Terraform.
- Удалим созданную очередь через Terraform.
1. Конфигурация Terraform для SQS
Создайте файл main.tf, где описан ресурс очереди и политика. В этом примере регион задан как eu-west-3 — при желании поменяйте на другой регион.
Исходный код доступен в репозитории автора (ссылка в оригинале).
File: main.tfprovider "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.tfvarsaccess_key = " "
secret_key = " "Создайте файл variables.tf чтобы не хардкодить значения в main.tf. При желании замените значение переменной sqs_name.
File: variables.tfvariable "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 — замените при необходимости.

2. Создание очереди (команды Terraform)
После подготовки main.tf, terraform.tfvars и variables.tf можно выполнять команды Terraform в каталоге с этими файлами.
Инициализация рабочего каталога (загружаются провайдеры и плагины):
terraform init
Создание плана — посмотреть, какие ресурсы будут созданы/изменены:
terraform plan
Применение плана — создание очереди и политики в AWS:
terraform apply
После успешного применения можно проверить очередь в AWS SQS-консоли.

3. Удаление очереди
Когда очередь больше не нужна, её можно удалить командой:
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.
Краткая методология (мини-алгоритм)
- Подготовьте variables.tf и terraform.tfvars с безопасным хранением ключей.
- Напишите main.tf с aws_sqs_queue и aws_sqs_queue_policy.
- terraform init -> terraform plan -> terraform apply.
- Проверка в консоли AWS SQS.
- 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-ключей.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента