4

我在网上找不到文档或示例 Terraform 模块。

如何在 AWS Event Bridge 中创建自定义事件总线?

4

3 回答 3

4

随着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
}
于 2020-09-09T17:29:29.230 回答
4

在撰写本文时,Terraform Provider for AWS 尚不支持创建 EventBridge 事件总线。

我们必须使用默认事件总线或使用 AWS CLI 或控制台创建它。

注意事项: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就像在 shell 中运行它一样。

于 2020-05-10T17:40:48.830 回答
3

有一张票是指不支持 terraform 中的事件桥: https ://github.com/terraform-providers/terraform-provider-aws/issues/9330

通过引用 github 用户https://github.com/mwarkentin值得称赞的以下片段,在 terraform hack 中有一个 cloudformation 可以在 terraform 中声明一个事件桥:

resource "aws_cloudformation_stack" "eventbridge_bus" {   
  name = "eventbridge-bus"
  template_body = <<EOF 
Resources:
  EventBus:
    Type: AWS::Events::EventBus
    Properties:
      Name: bus-name
EOF
}
于 2020-07-20T12:55:49.423 回答