文档

使用Terraform创建API Destination

更新时间:

本文介绍通过Terraform创建API Destination的前提条件、操作步骤和结果验证。

背景信息

HashiCorp Terraform是一个IT基础架构自动化编排工具,可以用代码来管理维护IT资源。Terraform的命令行接口(CLI)提供一种简单机制,可以将配置文件部署到阿里云或其他任意支持的云上,并对其进行版本控制。阿里云的大多数产品(包括事件总线EventBridge)都支持使用Terraform,使得跨多云部署基础设施变得简单。更多信息,请参见什么是Terraform

API Destination定义了API的元数据,您在创建事件规则时可以引用不同的API Destination以访问不同的第三方SaaS系统或自建系统,不同规则也可以引用同一个API Destination。多个规则向同一个目标服务API进行事件投递时,一旦需要修改某个参数,需要修改所有的规则,但如果将目标服务的API定义成API Destination,那么只需要修改API Destination的配置,则所有引用这个API Destination的规则,将同步自动更新。

本文将演示如何通过Terraform在事件总线EventBridge控制台创建API Destination。

前提条件

操作步骤

  1. 创建terraform.tf文件,声明API Destination、自定义总线、自定义事件源、连接器配置、自定义事件源的规则。

    provider "alicloud" {
      # AccessKey ID和AccessKey Secret请参照前提条件在阿里云控制台的AccessKey管理页面获取。
      # Region Id为您创建API Destination的目标地域,例如"cn-hangzhou"。
      access_key = "<your AccessKey Id>"
      secret_key = "<your AccessKey Secret>"
      region     = "<Region Id>"
    }
    # 声明API Destination的名称。
    variable "terraform_api_destination_name" {
      default = "terraform-api_destination-name-api-key"
    }
    # 声明连接配置名称。
    variable "terraform_connection_name" {
      default = "terraform_connection_name-api-key"
    }
    # 声明自定义事件总线的名称。
    resource "alicloud_event_bridge_event_bus" "default" {
      event_bus_name = "my-tf-EventBus-api-key-test"
    }
    # 声明事件源的名称、类型及配置。
    resource "alicloud_event_bridge_event_source" "default" {
      event_bus_name         = "my-tf-EventBus-api-key-test"
      event_source_name      = "tf-test-api-key"
      description            = "tf-test-api-key"
      linked_external_source = true
      external_source_type   = "MNS"
      external_source_config = {
        QueueName = "test-tf"
      }
    }
    
    resource "alicloud_event_bridge_connection" "defaultConnection" {
      connection_name = var.terraform_connection_name
      description     = "test-connection-api-key-pre"
      network_parameters {
        network_type      = "PublicNetwork"
      }
      auth_parameters {
        authorization_type = "API_KEY_AUTH"
        api_key_auth_parameters {
          api_key_name  = "<使用API_KEY_AUTH鉴权方式的用户名>"
          api_key_value = "<使用API_KEY_AUTH鉴权方式的Value>"
        }
      }
    }
    
    resource "alicloud_event_bridge_api_destination" "default" {
      description = "test-api-destination-connection"
      http_api_parameters {
        # endpoint为API端点的接入点地址,其中xxxx填写您的服务端地址的IP或域名。
        endpoint = "http://xxxx:8080/putEventsByAPiKey"
        method   = "POST"
      }
      api_destination_name = var.terraform_api_destination_name
      connection_name = alicloud_event_bridge_connection.defaultConnection.connection_name
    }
    # 声明事件规则,将事件投递至API Destination。
    resource "alicloud_event_bridge_rule" "default" {
      event_bus_name = "my-tf-EventBus-api-key-test"
      rule_name      = "tf-rule-test-api-key"
      description    = "test-api-key"
      filter_pattern = "{\n \"source\": [\n \"tf-test-api-key\"\n ]\n}"
      targets {
        target_id = "sadsadsss"
        endpoint  = "acs:api-destination:<Region ID>:<阿里云账号ID>:name/terraform-api_destination-name-api-key"
        type      = "acs.api.destination"
        param_list {
          resource_key = "Name"
          form         = "CONSTANT"
          value        = "terraform-api_destination-name-api-key"
        }
        param_list {
          resource_key = "QueryStringParameters"
          form         = "TEMPLATE"
          value        = "{\"queryKey1\":\"id\",\"queryValue1\":\"$.data.name\"}"
          # ${}用于声明EventBridge中的变量,$${}用于在Terraform文件中声明变量。
          template     = "{\"$${queryKey1}\":\"$${queryValue1}\"}"
        }
      }
    }
  2. 在命令行窗口执行初始化命令terraform init。出现以下结果则表示初始化成功:

    Terraform has been successfully initialized!
  3. 执行预览变更命令terraform plan。在结果中可以预览到即将被创建的资源。

    alicloud_event_bridge_api_destination.default will be created
    alicloud_event_bridge_connection.defaultConnection will be created
    alicloud_event_bridge_event_bus.default will be created
    alicloud_event_bridge_event_source.default will be created
    alicloud_event_bridge_rule.default will be created
  4. 执行应用变更命令terraform apply。出现以下结果则表示资源被创建成功:

    Apply complete! Resources: 5 added, 0 changed, 0 destroyed.

结果验证

  1. 登录事件总线EventBridge控制台,验证资源是否被成功创建。

    • 在左侧导航栏,单击事件总线,查看自定义事件总线及事件规则是否成功创建。

    • 在左侧导航栏,选择集成中心 > API端点,查看API端点和连接配置是否创建。

  2. 在自定义事件总线页面,单击右上角的发布事件,选择自定义事件源为已创建的事件源,单击确认

  3. 在自定义事件总线页面的左侧导航栏,单击事件追踪,查询事件投递结果。image.png

相关文档

  • 本页导读 (1)
文档反馈