Как создать собственную шину событий в AWS Event Bridge?

Я не могу найти в Интернете документацию или пример модуля Terraform.

Как создать собственную шину событий в AWS Event Bridge?

2 ответа

Решение

На момент написания этой статьи создание EventBridge Event Bus еще не поддерживалось Terraform Provider для AWS.

Нам пришлось использовать шину событий по умолчанию или создать ее с помощью интерфейса командной строки AWS или консоли.

Предостережения: в EventBridge прямо сейчас есть пара серьезных пробелов в IAM: вы не можете ограничить, какие шины участник IAM может публиковать события, и он использует участника службы вместо участника роли, связанной со службой, для доступа к таким вещам, как ключи KMS, используемые для шифрования автобусов.

Вы можете использовать провайдер null_resource в качестве обходного пути для отсутствующего ресурса поставщика (это предполагает, что вы используете переменные среды или профиль экземпляра IAM для аутентификации вашего поставщика AWS):

resource "null_resource" "custom_event_bus" {
  triggers = {
    event_bus_name = var.event_bus_name
  }

  provisioner "local-exec" {
    command = "aws events create-event-bus --name ${var.event_bus_name}'"
  }
}

Если вы используете именованный профиль конфигурации AWS вместо переменных среды, вам необходимо указать это с помощью --profile profile_name так же, как если бы вы запустили его в своей оболочке.

С недавним обновлением AWS Terraform Provider стиль EOF template_body, упомянутый в другом ответе, больше не является предпочтительным способом указания стека CloudFormation. Вот пример фрагмента кода, использующего новый стиль объявления STACK, который выполняет то же самое (предоставляет настраиваемую шину EventBridge):

resource "aws_cloudformation_stack" "eventbridge_bus" {
  name = "eventbridge-bus"

  template_body = <<STACK
{
  "Resources" : {
    "bus" : {
      "Type" : "AWS::Events::EventBus",
      "Properties" : {
        "Name": "bus-name"
      }
    }
  }
}
STACK
}

Существует билет, касающийся отказа от поддержки моста событий в terraform: https://github.com/terraform-providers/terraform-provider-aws/issues/9330

Цитируя пользователя github https://github.com/mwarkentin, который заслуживает похвалы за следующий фрагмент, можно сказать, что существует облачная формация в terraform hack, позволяющая объявить мост событий в terraform:

resource "aws_cloudformation_stack" "eventbridge_bus" {   
  name = "eventbridge-bus"
  template_body = <<EOF 
Resources:
  EventBus:
    Type: AWS::Events::EventBus
    Properties:
      Name: bus-name
EOF
}
Другие вопросы по тегам